# Server-only evidence: issue 22656

Scope: [#22661](https://git.cafe/pingdotgg/t3code/pull/22661), only [#22656](https://git.cafe/pingdotgg/t3code/issues/22656).

Before: [4f651cb10d](https://git.cafe/pingdotgg/t3code/commit/4f651cb10d2a885be82748e22a280eeef591200f) (`4f651cb10d2a885be82748e22a280eeef591200f`). After: [b2c65dcc8a](https://git.cafe/pingdotgg/t3code/commit/b2c65dcc8a92f1e97fa5ef235419d2e00ed07fca) (`b2c65dcc8a92f1e97fa5ef235419d2e00ed07fca`). Both production source files were byte-compared to git show before execution. Source SHA256 before `22f09e55d95dd076520984703147536dbf28c77a0a424688134b1561a8ca5add`, after `366cb2773253f64e70b612c6aa09252d6d9b58e8d0cc764f8b090b11152e593e`.

Environment: Linux x86_64; Node v24.21.0; actual OpenCode 2.1.2 listening on parent-owned 127.0.0.1:42256; bundled client 2.0.28; no browser/emulation/DPR/font scaling/viewport applicable. No UI paths changed; screenshots, pixel diffs, themes, viewport, and device settings are N/A. No browser or server was started. Existing sessions were read only. No source edits, commits, PR edits/comments, or other forge writes were performed. App-owned PR registration was performed.

## Exact-head observations

[results.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6d47c5b89c2f62e8/results.json) contains every before/after request's full revision, production module hash, fixture hash, timestamp, status, method/path, decoded output or structured schema error, and expected per-request exit status. Capture command exited 0; expected decoder failures are recorded as exitStatus 1 per case. [manifest.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2861070493c34698/manifest.json) binds commands, versions, fixture provenance and hashes. [assertions.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/01a7715a674933d4/assertions.json) records 30 passing semantic assertions.

The actual server still retains the natural compaction after parent rollback. Read-only actual HTTP GETs returned the same body hash before/after: native has eight current messages (the original five plus parent-added location/system/idle records), legacy has 90. Base fails at native data[3].recent and legacy data[89].recent. Head decodes 8 and 90. The immutable original five-message native response is additionally replayed through both actual service modules using an HTTP-response transport, explicitly not a new real-server session.

## Matrix (16 original rows, none omitted)

All Before columns use `4f651cb10d2a885be82748e22a280eeef591200f`; all After columns use `b2c65dcc8a92f1e97fa5ef235419d2e00ed07fca` except the expressly prior-head R2 execution. All paired decoder captures are in [results.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6d47c5b89c2f62e8/results.json). Seven rows fully capture their listed minimal input combinations (N1/N2/N3/L1/L2/P1/V1); seven have partial runtime capture plus explicit gaps (V2/M1/U1/U2/G1/G2/R1); H1 is source-reviewed only; R2 is qualified prior-head execution. This is not a blanket 16/16 runtime pass.

| ID | Before | After | Evidence and limits |
| --- | --- | --- | --- |
| N1 | Real HTTP 200, missing data[3].recent | Real HTTP decodes 8; immutable original replay decodes 5; recent empty | Real natural compaction, not synthetic. IDs/order/count and complete cursor preserved; both live response bodies and original fixture linked below. |
| N2 | running/completed keepID fail missing recent | Both decode empty recent; keepID never copied | Two response-transport replays. |
| N3 | running/completed without metadata fail missing recent | Both decode empty recent | Two response-transport replays, plus real completed N1. |
| L1 | Actual base service, real HTTP missing data[89].recent | Real HTTP decodes 90; exact metadata.recent lifted | Synthetic history imported into actual OpenCode, not natural legacy-model output. IDs/order/cursor assertions pass. |
| L2 | running/completed legacy recent (empty/nonempty) fail missing recent | All four decode exact metadata string, including empty | Response-transport replay. |
| P1 | running/completed valid top-level recent decode | Same top-level recent wins over conflicting metadata | Response-transport replay; no metadata absence variant separately run. |
| V1 | number/null/object top-level recent schema errors | Same schema errors despite available valid fallback | Three response-transport replays. |
| V2 | Invalid reason/status/missing ID schema errors | Same downstream errors | Executed these three. Other required fields and malformed non-compaction remain source-reviewed, unexecuted. |
| M1 | Null metadata errors at metadata; numeric metadata.recent errors at recent | Null metadata still errors at metadata; numeric metadata.recent decodes with empty recent | Running/completed replay. Correction to matrix expectation: generated schema rejects metadata:null downstream. Scalar metadata and other non-object shapes unexecuted. |
| U1 | Empty page/ordinary synthetic message decode | Same output; no inserted recent | Executed two cases. Pending/failed/user/assistant/idle variants not individually replayed; native real history includes user/assistant/idle. |
| U2 | Base blocked on affected compaction | Same IDs/count/order and full previous/next cursor after decode | Four fixture assertions. Multi-page pagination and desc/limit1 execution remain unverified; no multi-page claim. |
| G1 | Unchanged guard/source; auth test in suite | Auth test passes | No POST/non-200/unrelated URL/transport-failure replay; source-reviewed only for those cases. |
| G2 | Non-array data and malformed cursor schema errors | Same downstream schema errors | Executed two. Malformed JSON and missing data not replayed. |
| H1 | Original source response | Eligible page source removes content-length and preserves other headers/status | Source-reviewed only. Fixture supplied both headers, decoding succeeded; transformed headers were not observed, so no experimental header assertion. |
| R1 | Actual-base history failure prevents reaching revert in that path | Parent's b2 native rollback outbox succeeded once; matching stage then commit | [native-dev-rollback.log](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a938179ff5b80c05/native-dev-rollback.log). Captured current real native history; final target retained/deleted boundary assertion remains parent's responsibility. No new rollback initiated. |
| R2 | Actual-base legacy history failure | Prior-head rollback succeeded and second run rolled_back | [dev-server-after-proof.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/00bb463ba497ee91/dev-server-after-proof.json) is explicitly `85b023d15164fc2aaea620cd65b2dc986aed746c`, not b2. Qualification: prior/head both copy metadata.recent when missing top-level on this completed valid legacy fixture; b2 adds running/completed status guard and native empty fallback. Exact-head legacy HTTP revalidated. No exact-head legacy rollback rerun or final boundary assertion. |

## Tests

[tests.log](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9c42558180dd5a14/tests.log): 9/9 pass, one focused file, final head. Includes authorization, running/completed native keepID, running/completed native no metadata, completed legacy, running top-level, invalid recent, invalid reason. Exact production and test source hashes are in its header. No repo-wide check, lint, typecheck, or unrelated tests were run by this capture agent.

## What else changed

Observed intended decoder differences: missing top-level recent now becomes metadata.recent or empty string on running/completed compactions. Present malformed recent, invalid reason/status/missing ID, null metadata, malformed page data and malformed cursor retain schema errors. Valid top-level recent wins. Captured IDs/order/count and cursors are unchanged. No visual differences apply. The live native response has three additional parent-created records compared with the immutable original five-message fixture; these are labelled and not attributed to the patch. Nothing beyond these captured semantic comparisons is claimed byte-identical. The earlier PR-description errors are corrected in the parent's supplied pr-body.md; this agent did not edit the forge.

## Reproduction assets and raw captures

Replay imports production modules and reads existing fixture paths; dependency resolution uses the existing worktree node_modules. Password is read locally for read-only live calls and never printed or embedded. For an offline response replay, use the replay section before the live-HTTP comment; no network listener is started. Saved immutable fixtures preserve the original model-created shape and synthetic legacy shape. Recreate source modules from their linked SHAs or the copies below. No credential-bearing raw logs or databases are published.

- [results.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6d47c5b89c2f62e8/results.json)
- [tests.log](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9c42558180dd5a14/tests.log)
- [manifest.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2861070493c34698/manifest.json)
- [assertions.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/01a7715a674933d4/assertions.json)
- [capture.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f65ebcd23c9d49d4/capture.mjs)
- [package-evidence.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1ad2f74f1cd357ca/package-evidence.py)
- [native-history.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a672f1395abe3000/native-history.json)
- [history.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/af9f38a41a216caf/history.json)
- [native-compaction.log](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3478d40deaeb5ada/native-compaction.log)
- [native-dev-rollback.log](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a938179ff5b80c05/native-dev-rollback.log)
- [dev-server-after-proof.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/00bb463ba497ee91/dev-server-after-proof.json)
- [OpenCode2Client-before.ts](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c58613374ed2377d/OpenCode2Client-before.ts)
- [OpenCode2Client-after.ts](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d980aea47cfa42ed/OpenCode2Client-after.ts)
- [OpenCode2Client.test.ts](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ab0ce641a7277418/OpenCode2Client.test.ts)
- [live-native-before.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0ce7025fda706f28/live-native-before.json)
- [live-native-after.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/12239f28d6976c1f/live-native-after.json)
- [live-legacy-before.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/907513b95338503a/live-legacy-before.json)
- [live-legacy-after.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0573553922f45753/live-legacy-after.json)

## Unverified / handoff

No full runtime pass for U1/U2/G1/G2/H1 beyond the cases expressly listed. No exact-head R2 real rollback execution; no final native/legacy retained-message boundary certification (parent handles). No file restoration, nonzero checkpoint native rollback, desktop, mobile, relay, or tunnel execution. These gaps do not become passing claims through tests or source review. No claim that accepted command alone proves rollback: R1 uses persisted succeeded outbox plus actual provider stage/commit.

Parent owns all servers; none were stopped. Worktree remained clean at the stated final head. This capture does not assess merge readiness or CI/review status.
