# Independent evidence audit — pass 2

**Evidence sufficient for the requested final-diff server proof.** This is an evidence verdict, not merge authorization or a full merge-readiness audit. No confirmed code defect found within this proof audit.

Reviewed PR [#23456](https://git.cafe/pingdotgg/t3code/pulls/23456), mirrored as [#23456](https://github.com/pingdotgg/t3code/pull/23456), exact head [dca0af89a8](https://git.cafe/pingdotgg/t3code/commit/dca0af89a8b60ae4a5dd81859fa5ee06c7544aaf), full SHA `dca0af89a8b60ae4a5dd81859fa5ee06c7544aaf`, base [96bae5465b](https://git.cafe/pingdotgg/t3code/commit/96bae5465bc5dfaedc890998a7a71672fb470ae2). Supplied branch `fix/issue-20348`; actual review checkout is detached at the exact head and clean. Read the entire two-file diff (163 additions / 33 deletions), manager attachment/detachment context, projection query and Codex unsubscribe implementation, pass 1, retained before/after/red/green artifacts, capture matrix/commands, diagnostic and transport scripts, protocol/diagnostic traces, projections, persisted results, provenance and module records. No browser or screenshot work applies.

## Row-by-row decision

| Row | Decision | Independent assessment |
| --- | --- | --- |
| A | Retain accepted sequential proof | Before shows child unsubscribed, subsequent native PONG, but app run left running. After shows same-child READY, parent settlement, no target unsubscribe, then native PONG and durable completed child run. Retained artifacts are byte-identical to pass 1. A was not rerun. Historical process provenance remains unavailable; do not claim otherwise. |
| U | Sufficient | U-before maps provider-native origin, parent subagent, child app owner, provider-thread ID and native ID `01a1631f-7783-7d31-95f4-e01a0de72916`; only parent attached. Cleanup rechecks empty attachments with same runtime at 10:20:30.145, real native unsubscribe is acknowledged before unload ends .158. Parent cleanup also completes .161. This closes the unmapped-old-ID gap from pass 1 with a new, explicitly mapped fixture. |
| C1 | Sufficient | Cleanup from the real parent pauses before acquiring the delegated child's owner lock at 10:23:13.616. Normal application send resumes that child at 10:23:24.319–.638; C1_PONG run completes 10:23:27.649. Release at 10:23:44.952 permits the actual owner attachment recheck at .955, which sees the child attached and skips unload. No target native unsubscribe occurs through the follow-up; C1_AFTER_CLEANUP message is persisted at 10:23:59.522 and run completes .811. This tests the actual changed parent-projection loop, not merely a child detaching itself. |
| C2 | Sufficient | Parent cleanup acquires child owner lock request 3 at 10:25:39.805, sees no attachment and performs real native unsubscribe. After acknowledgement, gate enters .811 while unload effect has not returned. Normal app attach requests the identical key as request 4 at 10:25:40.383; attached and loaded maps remain empty. Gate releases .383, unload ends .386, cleanup finishes .405, and attach acquires .413. Actual native thread/resume follows; C2_PONG message persists 10:25:44.053 and run completes .236. This proves real manager serialization and reload. |
| P | Sufficient for the combined final-diff proof, with historical limit | Instrumented PID 604978 records original manager bytes matching exact head, cwd/argv/runtime identity and clean disk source. Observation-only PID 636010 records unchanged module bytes; I independently compared all 971 loaded project files to exact-head Git blobs. FINAL_HEAD_PONG is persisted 10:26:54.403 and its run completes .681 after that server starts at 10:26:40.947. This attests the new executions, not the historical A process. Provenance-backed C1 additionally demonstrates attached-child preservation and post-cleanup follow-up in one instrumented server session, so the combined case does not depend solely on an unattestable old executable. |

## Instrumentation semantics and claim boundaries

The diagnostic loader changes executed manager source; calling U/C1/C2 byte-identical or entirely unmodified runtime would be wrong. Its changes expose service references, log identity/state, and insert awaited diagnostic gates. The actual owner key, `withLock`, session identity check, attached-owner check, unload call, timeout and error handling remain in place. C1 delays before the owner lock/recheck, which permits a legitimate attachment-first ordering. C2 wraps the actual exposed unload effect with a post-success gate and wraps the actual existing keyed-lock method for request/acquisition observation. It does not substitute a fake adapter, forge attachment state, or manually acquire/release the lock under test.

I independently applied the supplied loader to the exact-head manager: transformed SHA256 matches the captured `7ab3e47521a5eb7e4aa69d35ce0a3bd9f7c4ac8a5796ef34d965272e828bddb7`. Original manager SHA256 is `2424f84d8cebaf64133f5d915127f0752e22e146d2fa5498c50fcc2e8c6d70f3`. This makes the source transformation reviewable and correlated with the captured run.

C2's 572ms gate is after native acknowledgement and before manager unload returns; it stays inside the existing 10-second timeout and held owner lock. It does not establish wire-in-flight overlap or naturally occurring contention. Those stronger claims are unnecessary for the requested manager-ordering proof: extending the real unload effect preserves precisely the critical section whose serialization changed. No demand for nondeterministic timing remains.

These are instrumented service-harness captures of real application/provider traffic, not unit tests or UI runs. Fixture creation/message intake uses shipped app CLI, settlement shim calls existing MCP `t3_thread_organize`, protocol records show Codex unsubscribe/resume/turn completion, and durable app projections contain matching runs/messages. The readiness shim changes only client stdin readiness signaling. Native child U is provider-owned; C1/C2 use explicitly mapped `app_owned` T3 delegation because provider-owned children reject normal app messages. The projection query includes both origins without filtering, and the changed loop is shared. No claim of independently testing OpenCode, other providers, desktop/mobile, relay/tunnel, or pixels is warranted.

## Independent execution and artifact checks

Executed supplied `python3 /tmp/pr-23456-capture/verify-evidence.py`: PASS. It verifies C1 recheck/no-unsubscribe/follow-up, C2 lock order/completion, final-head completion, retained bytes and reported module matches. Its module section trusts precomputed booleans, and it does not assert U; I independently filled those gaps by comparing raw module records against exact-head Git blobs (971 matches), validating U ownership and real unsubscribe request/ack pairs, checking C2's actual subsequent native resume, and correlating all four marker messages with completed runs on the same app thread. This is an independent reproduction of recorded-evidence verification, not a new runtime fixture. No additional runtime reproduction was needed; accepted A was preserved.

All 68 public-manifest hashes match local files. Evidence archive has 65 members. The retained 43-pass unit log and red attached-child failure are supportive historical evidence; no new application tests were run or claimed. Raw private server logs/database were removed by the capturer, so trace completeness cannot now be re-extracted. Selected records, reproducible transformations, ownership maps and independent hash checks are sufficient for this bounded proof audit, not cryptographic attestation of every historical event.

Key SHA256 values:

- Retained before: `f41d52bc8aa21ec94b8fdcd585014c64bd813a35b94f633ed891a25e3b67211d`
- Retained after: `46eb81d301e78d4382a3bf11142814d42b2c5e0fe4b7d2621bdbfb641d1a9243`
- Diagnostic loader: `d9fa049c6375ebb5b92fced4bcc54ca28a45eb38bac14cd7d92f1325af6744e9`
- Diagnostic trace: `c58ec51fb934275d3bdeaebc959a134bc0e738db4c7d6a95b2da9955f3c58318`
- Protocol trace: `3a66f184b6b3e13438643ad25adf27b34b0c642de0d2130499d43474f0036f85`
- Verification script: `5277e5167f3ea2ea69acce73c5f19cd57c69c9d84e7454e17fc9a3695cca035f`
- Archive: `411a063f8b7602d69c120104c2eb3408a49a61ab3998b48017a38d85ef6a39fb`

## Exact head / checks — one Cafe read

One `cafe pr status 23456` after checking origin returned the exact supplied head and base: **34 successful, 0 pending, 0 failing checks**. Conflict readiness remains pending: stored conflict snapshot uses base `8d3b061121fe65669d5d43d011b48cd3027a4108` and `current:false`; Cafe reports `requires-native-check` / waiting. This is not a green merge-readiness claim. No polling or second forge read.

## FRICTION

No auth, verification or upload blocker. Historical A process/checkout cannot be reconstructed; supplemental provenance does not rewrite that fact. Supplied verifier writes its existing scratch result JSON, despite otherwise read-only audit scope; it does not alter repository/app state. Large combined output initially truncated; focused reads and independent structured checks covered the relevant material. No code changes, PR edits/comments, watches, pushes, merges, new agents, live database access, or server starts. Required T3 PR registration is app bookkeeping, not a forge edit or watch. Only audit scratch report and existing scratch verification output were written. Used pr-audit, cafe-cli, cafe-pr and ghdrop skills. Model/harness: gpt-6.1-sol through Codex in T3 Code.

VERDICT: SUFFICIENT
