# Evidence index for [#32880](https://git.cafe/pingdotgg/t3code/pull/32880)

**14 / 14 matrix rows have before/after runtime captures.** This includes every required missing row R03–R07, with warm scan → recentThreads and independent cold recentThreads in all three required transcripts. The final set contains 30 successful invocations across 15 fixtures. R01/R02 were also recaptured as controls in the composite fixture; the original real app-server evidence remains in the PR body.

Environment: Node v26.12.1; Linux 6.8.0-117-generic x86_64; **synthetic Codex home, schema per Codex 0.163.0**. Installed binary: codex-cli 0.163.0. Viewport/theme: N/A; server-only runtime transcripts.

Before: [fa2f4ff2a2](https://git.cafe/pingdotgg/t3code/commit/fa2f4ff2a2bac5ac92e07749f6b83b0003d642a0) (`fa2f4ff2a2bac5ac92e07749f6b83b0003d642a0`). After: [df3ffc1249](https://git.cafe/pingdotgg/t3code/commit/df3ffc1249ca06ef43aaebe6a534f96034354700) (`df3ffc1249ca06ef43aaebe6a534f96034354700`). Scanner blobs: `dc67bd9387` → `1b32de22a8878fdf07db29403cd9cedb9692ea7d`; full provenance is printed in every invocation.

The real isolated Codex app-server initialized and accepted a turn, then failed with 401 Unauthorized because the synthetic home has no credentials. No real Codex home was read. Its freshly created state database supplied the exact three-table schema used by the synthetic seed. No T3 preview database was read, copied or seeded, and no dev server was started.

| Row | Before outcome | After outcome | Transcript |
|---|---|---|---|
| R01 | Direct P control imports; scan P:1. | Direct P control imports; composite P:5 includes additional mapped files. | [M1-R01-R05-R14.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/228b32c0df8ba281/M1-R01-R05-R14.md) |
| R02 | Assigned scratch contributes no outcome. | Assigned scratch imports under P; no rollout cwd rewrite. | [M1-R01-R05-R14.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/228b32c0df8ba281/M1-R01-R05-R14.md) |
| R03 | Unassigned scratch absent from all candidates and outcomes. | Unassigned scratch remains absent; control survives. | [M1-R01-R05-R14.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/228b32c0df8ba281/M1-R01-R05-R14.md) |
| R04 | Q:1; imports only for Q. | Q:1; imports only for Q despite assignment P. | [M1-R01-R05-R14.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/228b32c0df8ba281/M1-R01-R05-R14.md) |
| R05 | Scratch rewind files excluded. | Three files count under P; one logical import + two Duplicate; six inherited/current messages, no abandoned text. | [M1-R01-R05-R14.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/228b32c0df8ba281/M1-R01-R05-R14.md) |
| R06 | Corrupt DB ignored; P:1 and only direct control imports. | Same P:1 and control-only import; no scanner failure. | [M2-R06-R14.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/81fd8dacb1651126/M2-R06-R14.md) |
| R07 | No candidates or recent outcomes. | Only P:1 and P imports; Q empty despite its row being inserted first. | [M3-R07-R14.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e3a428b159d17666/M3-R07-R14.md) |
| R08 | Relative/excluded/symlink-to-excluded mappings have no outcomes. | Same empty scan and recent results for all three variants. | [supplemental-R08-R14.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ca366af578b22895/supplemental-R08-R14.md) |
| R09 | Absent/file/linked-worktree destinations have no outcomes. | Scan omits all three; direct recent(destination) imports; P stays empty, so later valid root is not fallback. | [supplemental-R08-R14.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ca366af578b22895/supplemental-R08-R14.md) |
| R10 | Claude P:1 and Pi Q:1 remain; scratch Codex chats absent. | P:2 and Q:2; same UUID imports with distinct Codex owners/mappings; alias adds no count, disabled home absent; Claude/Pi unchanged. | [supplemental-R08-R14.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ca366af578b22895/supplemental-R08-R14.md) |
| R11 | Mapped scratch variants excluded. | Scan counts old/cutoff/future; recent accepts only exact cutoff. Thread beyond 100000 joined rows stays excluded without truncation flag. | [supplemental-R08-R14.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ca366af578b22895/supplemental-R08-R14.md) |
| R12 | Mapped scratch files excluded across all calls. | Importable + Duplicate; completed replay AlreadyImported + Duplicate; changed file reparses with appended message. | [supplemental-R08-R14.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ca366af578b22895/supplemental-R08-R14.md) |
| R13 | All scratch/no-cwd/malformed/subagent/no-conversation inputs excluded. | Only valid-cwd non-importable files add P:2, then two Skipped; no-cwd/malformed/subagent remain absent. | [supplemental-R08-R14.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ca366af578b22895/supplemental-R08-R14.md) |
| R14 | No scratch membership in warm or cold calls. | Warm and cold agree in every fixture. Mapping mutation remains cached at P, then rescan moves membership to Q. Persisted symlink root identity retained initially. | [supplemental-R08-R14.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ca366af578b22895/supplemental-R08-R14.md) |

Each transcript contains exact fixtures, commands and side-by-side outputs under both pinned SHAs. Outputs include complete candidate objects and explicit recent(P)/recent(Q) arrays, tags, IDs, titles and messages. R09 additionally calls recent(destination). The read-only DB inspection prints fixture thread rows and root insertion order. R05 contains the complete two-rewind chain and exact inherited byte offsets.

The driver verifies that the cold scanner is a distinct service instance and that its first call is recentThreads(P). The packager verifies exact warm/cold equality, fixture SHA-256 equality between sides, and fixture restoration after every invocation. Mutation sequences for R12/R14 preserve ordered inputs and outputs. [runtime-receipts.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e6ef90abdd70cd26/runtime-receipts.json) contains all final events, command receipts, source provenance and fixture hashes. These are runtime captures of the real scanner, not unit-test substitutes.

## What else changed

No behavioral difference outside the intended mapped-session rows was observed. The composite P count rises from 1 to 5 because the moved chat and three rewind files become discoverable; this also advances P’s last activity and moves P ahead of Q. The three rewind files yield one logical Importable and two Duplicate outcomes. Q and the direct control remain identical. Source SHA/blob provenance differs by design.

## Unverified scope

No entire matrix row or required row is missing. Each row above has the stated representative runtime fixture. The following additional variants are not claimed verified:

- R03: malformed filename UUIDs, blank/non-string join rows and missing-root joins; the capture uses a null project assignment, and R11 captures the joined-row cap. These are supplemental equivalents.
- R04: a chat originally started in an ordinary linked Git worktree; the capture uses an ordinary real Q directory.
- R06: missing DB, older schema and an exclusive SQLite lock; corrupt DB is the deterministic fallback representative.
- R09: native Git worktree creation; the labelled harness creates the .git pointer/commondir/config structure the real scanner reads.
- R10: per-instance CODEX_HOME environment overrides; distinct configured homePath values, a symlink alias and a disabled instance are captured.
- R11: discovery, import, byte and record budget limits; the captured boundary variants are old/future/exact-cutoff mtimes and the 100000 joined-row cap. These inherited budget branches were not additional runtime gates in the supplied matrix.
- R12: persistence through the importer RPC; the requested service capture exercises completedSources, duplicates and changed file identity directly.
- macOS Codex Desktop, Windows path handling, remote transports and relocated sqlite_home: the capture is Linux service-level evidence with isolated synthetic homes.

## Scripts and schema

- [app-server-probe.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6e61019a6a7a2d08/app-server-probe.mjs)
- [codex-0.163.0-schema.sql](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3b73d50081bf61c3/codex-0.163.0-schema.sql)
- [scanner-driver.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/27882131b6e5a931/scanner-driver.mjs)
- [seed-fixtures.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1c1f48617398c514/seed-fixtures.py)
- [run-captures.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/13496a7d5738c47b/run-captures.py)
- [package-evidence.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e4c8c6ab816b9fcc/package-evidence.py)

All six script/schema files are uploaded. Private runtime model identifiers were checked against the probe response and are absent from all published artifacts. Every home path in capture output is redacted to `<fakehome>`.

## Cleanup

155 captured scanner/probe PIDs exited. Both evidence worktrees removed. The supplied PR worktree and main checkout remain clean and unchanged. No application code was edited or committed. The two evidence worktrees were removed with the requested commands:

```sh
git -C /home/user/t3code worktree remove --force /home/user/wt/pr-32880-before
git -C /home/user/t3code worktree remove --force /home/user/wt/pr-32880-after
```

Final free disk: 108 GB; the 5 GB stop condition never occurred. Evidence and raw attempt logs remain only beneath the designated scratch directory. Failed setup/harness attempts were retained locally; final published scanner receipts are all successful.

```text
FRICTION:
infra | Isolated app-server turn returned 401 without synthetic-home credentials; used the authorized schema fallback | A credential configured only for the synthetic home
tool | One install started before checkout creation finished and needed rerunning | Await worktree-add completion before installing
tool | CJS resolution rejected an ESM-only package and the Node shim downloaded into fake HOME | Import-condition resolution and the pinned Node executable
other | Harness needed exact mtime writes, byte-for-byte DB restoration and explicit delegation of Clock prototype methods | Use the final uploaded seed and driver from the outset
```

AI-assisted; verified with the tests and tools listed above.
