# Server evidence for [#29535](https://git.cafe/pingdotgg/t3code/pull/29535)

**Additional behavior outside the skill-attachment fix: R15 does not meet its no-late-prompt expectation. A prompt is sent after Stop persisted. The comparable before control also exhibits it; this capture does not establish a new regression. Route that Stop-ordering finding to Julius.**

Captured **14 / 19 matrix rows**, comprising **15 paired scenarios** because R14 has two variants: **30 timestamped transcripts and 15 normalized text diffs**. R01–R04 and R06–R14 meet their expectations. R15 is captured with a failed expectation. **R05 is unverified (conditional native partial scan); R16–R19 are the matrix's four source-only boundaries.** No required unconditional row was omitted or replaced by a unit test.

Before: [9bcf75335f](https://git.cafe/pingdotgg/t3code/commit/9bcf75335f9b2a8af877e1317c809b72a070b280). After: [f23933f39b](https://git.cafe/pingdotgg/t3code/commit/f23933f39b4f1635dac2d82c2418fa44bcd89fa7). Branch `fix/issue-29513`. The head worktree was read-only. The disposable before checkout retained base production code; only the authorized head test file was copied into it for focused test execution.

Environment E1: **OpenCode 2.2.5 Linux x64**, binary SHA256 **8d060e1d2fbb9bb44cf09ae6ed1f3f6a7cff070b5227e2f90970132b23a92050**; **Node v26.12.1**; **Linux fs-25 6.1.102 x86_64**; model **openai/gpt-5.4** (115 models in inventory). Server surface only, WebSocket RPC; viewport/theme/settled frames/image diffs N/A. Both revisions ran their real server source from their own checkouts on fresh isolated databases, `T3CODE_DEV_SEED=0`, separate private HOME and OpenCode storage per side. Both used the same synthetic git fixture at `/tmp/lead-29535-r1/evidence-capture-1/fixture`, with identical greet/other skills. Within each side, OpenCode storage and proxy port were preserved across the native restart. No live T3 database was read, seeded, or written. No browser was started.

The selected final run directories are `before-2026-11-02T20-14-00.836Z` and `after-2026-11-02T20-13-59.686Z`. Earlier runs in the archive are explicitly exploratory setup/capture attempts; they are not substituted for the final pairs below.

## Matrix and recordings

Each capture includes the environment line, exact revision, scripted steps, real timestamps, complete request/response data with credential values redacted, persisted thread events, and the T3 runtime log for that turn window. `HTTP:L`, `DRIVER:L`, and `T3:L` identify actual source-file line numbers in the archived logs. Captures concern outgoing prompt payloads; ordinary turns are stopped after the prompt. No claim is made about model obedience, skill-content use, or successful assistant completion.

| Row | Before | After | Diff | Expected versus observed |
|---|---|---|---|---|
| R01 (E1) | [R01-before.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/695f90fe725f0207/R01-before.md)<br>[9bcf75335f](https://git.cafe/pingdotgg/t3code/commit/9bcf75335f9b2a8af877e1317c809b72a070b280) | [R01-after.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0ed2256c22e1600f/R01-after.md)<br>[f23933f39b](https://git.cafe/pingdotgg/t3code/commit/f23933f39b4f1635dac2d82c2418fa44bcd89fa7) | [R01.diff.txt](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f9db90265aa68b70/R01.diff.txt) | PASS: hello sends P(-), no resolution S/M on either revision. Normalized requests identical. |
| R02 (E1) | [R02-before.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6a0a28cc0416b3f0/R02-before.md)<br>[9bcf75335f](https://git.cafe/pingdotgg/t3code/commit/9bcf75335f9b2a8af877e1317c809b72a070b280) | [R02-after.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2fc29cb935e561f3/R02-after.md)<br>[f23933f39b](https://git.cafe/pingdotgg/t3code/commit/f23933f39b4f1635dac2d82c2418fa44bcd89fa7) | [R02.diff.txt](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3a6de076471d6443/R02.diff.txt) | PASS: warm greet/other inventory; one S, no M/S2; repeated greet deduplicated, P(greet,other) on both. Normalized requests identical. |
| R03 (E1) | [R03-before.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0b974edf478e7fbf/R03-before.md)<br>[9bcf75335f](https://git.cafe/pingdotgg/t3code/commit/9bcf75335f9b2a8af877e1317c809b72a070b280) | [R03-after.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2b9898f5a2a6780c/R03-after.md)<br>[f23933f39b](https://git.cafe/pingdotgg/t3code/commit/f23933f39b4f1635dac2d82c2418fa44bcd89fa7) | [R03.diff.txt](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e121b75ec70caf64/R03.diff.txt) | PASS: fixture-directory initialization M completes before S1 with greet, P(greet) on both. Host-workspace catalog refresh interleaving differs; it is not a resolution barrier. |
| R04 (E1) | [R04-before.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b12d57e8ddf3ab7b/R04-before.md)<br>[9bcf75335f](https://git.cafe/pingdotgg/t3code/commit/9bcf75335f9b2a8af877e1317c809b72a070b280) | [R04-after.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/092d3a04e6d4eaab/R04-after.md)<br>[f23933f39b](https://git.cafe/pingdotgg/t3code/commit/f23933f39b4f1635dac2d82c2418fa44bcd89fa7) | [R04.diff.txt](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3f9b8c6b9c5af044/R04.diff.txt) | PASS / NATIVE: tracked OpenCode PID restart under the still-open T3 thread gives S1=[] on both. Before P(-). After M completes, S2 has greet, P(greet). Later native before R08 inventory independently confirms greet exists. |
| R05 | Unverified | Unverified | N/A | Conditional native partial-first-read fixture not observed. Native first reads were either empty or contained built-in skills without either requested fixture skill. No `$greet $other` run with exactly one requested ID was captured; no native partial-scan claim is made. R04 and R08 cover recovery/union semantics separately. |
| R06 (E1) | [R06-before.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f1f1f21aec1d2ea4/R06-before.md)<br>[9bcf75335f](https://git.cafe/pingdotgg/t3code/commit/9bcf75335f9b2a8af877e1317c809b72a070b280) | [R06-after.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3478ddc7038bba50/R06-after.md)<br>[f23933f39b](https://git.cafe/pingdotgg/t3code/commit/f23933f39b4f1635dac2d82c2418fa44bcd89fa7) | [R06.diff.txt](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b86a3c9d22050d79/R06.diff.txt) | PASS / NATIVE: HOME absent in every actual inventory. Before S1 then P(-); after S1, completed M, S2, P(-). Extra reads and their completion timestamps are recorded. |
| R07 (E1) | [R07-before.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d347c0ed88451458/R07-before.md)<br>[9bcf75335f](https://git.cafe/pingdotgg/t3code/commit/9bcf75335f9b2a8af877e1317c809b72a070b280) | [R07-after.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/50dcab3b82611db8/R07-after.md)<br>[f23933f39b](https://git.cafe/pingdotgg/t3code/commit/f23933f39b4f1635dac2d82c2418fa44bcd89fa7) | [R07.diff.txt](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/69e86ac37e6078c1/R07.diff.txt) | PASS / NATIVE: greet found / HOME absent. Before S1 then P(greet); after S1, completed M, S2, P(greet), no HOME skill. |
| R08 (E1) | [R08-before.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/eb3d441ae99dd8ad/R08-before.md)<br>[9bcf75335f](https://git.cafe/pingdotgg/t3code/commit/9bcf75335f9b2a8af877e1317c809b72a070b280) | [R08-after.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f9f6b1030039c1dc/R08-after.md)<br>[f23933f39b](https://git.cafe/pingdotgg/t3code/commit/f23933f39b4f1635dac2d82c2418fa44bcd89fa7) | [R08.diff.txt](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/bc0ad38db6622da1/R08.diff.txt) | PASS / HARNESS: after S2 is injected empty, first-read greet is retained. Before never issues S2, so its injection rule remains unused. |
| R09 (E1) | [R09-before.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/94ccfb0a48dc0a42/R09-before.md)<br>[9bcf75335f](https://git.cafe/pingdotgg/t3code/commit/9bcf75335f9b2a8af877e1317c809b72a070b280) | [R09-after.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9c43fe20d89cc559/R09-after.md)<br>[f23933f39b](https://git.cafe/pingdotgg/t3code/commit/f23933f39b4f1635dac2d82c2418fa44bcd89fa7) | [R09.diff.txt](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1bdcd393d008abc3/R09.diff.txt) | PASS / HARNESS: after S2 returns injected HTTP 500, first-read greet is retained. Before never issues S2. |
| R10 (E1) | [R10-before.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4157ed460e88e3cf/R10-before.md)<br>[9bcf75335f](https://git.cafe/pingdotgg/t3code/commit/9bcf75335f9b2a8af877e1317c809b72a070b280) | [R10-after.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5229a1680f9eb57c/R10-after.md)<br>[f23933f39b](https://git.cafe/pingdotgg/t3code/commit/f23933f39b4f1635dac2d82c2418fa44bcd89fa7) | [R10.diff.txt](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b0bf9af3a82ef928/R10.diff.txt) | PASS / HARNESS: after S2 is held until client cancellation at its five-second inventory timeout, then P(greet). Before never issues S2. |
| R11 (E1) | [R11-before.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/008a28c5c7c1af28/R11-before.md)<br>[9bcf75335f](https://git.cafe/pingdotgg/t3code/commit/9bcf75335f9b2a8af877e1317c809b72a070b280) | [R11-after.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/981e6d0eaefc165f/R11-after.md)<br>[f23933f39b](https://git.cafe/pingdotgg/t3code/commit/f23933f39b4f1635dac2d82c2418fa44bcd89fa7) | [R11.diff.txt](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/460077314b5e753e/R11.diff.txt) | PASS / HARNESS: injected first S HTTP 500. Before P(-); after completed M, native S2 with greet, P(greet). |
| R12 (E1) | [R12-before.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/891622ad3809f296/R12-before.md)<br>[9bcf75335f](https://git.cafe/pingdotgg/t3code/commit/9bcf75335f9b2a8af877e1317c809b72a070b280) | [R12-after.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d4c4af61604c9375/R12-after.md)<br>[f23933f39b](https://git.cafe/pingdotgg/t3code/commit/f23933f39b4f1635dac2d82c2418fa44bcd89fa7) | [R12.diff.txt](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/900f2470a4912d44/R12.diff.txt) | PASS / HARNESS: first S held through its five-second inventory timeout. Before P(-); after completed M, native S2 with greet, P(greet). |
| R13 (E1) | [R13-before.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/322ee9888d4d55b7/R13-before.md)<br>[9bcf75335f](https://git.cafe/pingdotgg/t3code/commit/9bcf75335f9b2a8af877e1317c809b72a070b280) | [R13-after.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9fa5caad9b6579b9/R13-after.md)<br>[f23933f39b](https://git.cafe/pingdotgg/t3code/commit/f23933f39b4f1635dac2d82c2418fa44bcd89fa7) | [R13.diff.txt](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f2a75d4c73347d0a/R13.diff.txt) | PASS / HARNESS: resolution M returns injected HTTP 500; the T3 runtime logs the cause, ignores it, rereads injected empty S2, retains greet. Before has no resolution M. |
| R14-found (E1) | [R14-found-before.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0f1ffb2dc89bab14/R14-found-before.md)<br>[9bcf75335f](https://git.cafe/pingdotgg/t3code/commit/9bcf75335f9b2a8af877e1317c809b72a070b280) | [R14-found-after.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/76cd43403d43fde4/R14-found-after.md)<br>[f23933f39b](https://git.cafe/pingdotgg/t3code/commit/f23933f39b4f1635dac2d82c2418fa44bcd89fa7) | [R14-found.diff.txt](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/83043ee8bdfc6ccf/R14-found.diff.txt) | PASS / HARNESS: injected S1 empty, resolution M held through its five-second timeout; T3 logs timeout, then native S2 finds greet and P(greet). Before P(-), no M. |
| R14-empty (E1) | [R14-empty-before.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f2a89d71829541d4/R14-empty-before.md)<br>[9bcf75335f](https://git.cafe/pingdotgg/t3code/commit/9bcf75335f9b2a8af877e1317c809b72a070b280) | [R14-empty-after.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5e8c5a94b7e83932/R14-empty-after.md)<br>[f23933f39b](https://git.cafe/pingdotgg/t3code/commit/f23933f39b4f1635dac2d82c2418fa44bcd89fa7) | [R14-empty.diff.txt](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/20141291be1db4b7/R14-empty.diff.txt) | PASS / HARNESS: injected S1 empty, resolution M held through its five-second timeout; T3 logs timeout, then injected S2 empty and P(-). Before P(-), no M. Recovery is best effort. |
| R15 (E1) | [R15-before.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8e28ff2931994b7f/R15-before.md)<br>[9bcf75335f](https://git.cafe/pingdotgg/t3code/commit/9bcf75335f9b2a8af877e1317c809b72a070b280) | [R15-after.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c6fe8d18f46a3aff/R15-after.md)<br>[f23933f39b](https://git.cafe/pingdotgg/t3code/commit/f23933f39b4f1635dac2d82c2418fa44bcd89fa7) | [R15.diff.txt](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/da20886976a52710/R15.diff.txt) | CAPTURED / EXPECTATION FAILED: Stop is persisted while head M is pending; releasing a valid successful empty model response still produces P(greet), then provider interrupt. The comparable before control (Stop during held original S1) also sends a late P(-). This demonstrates an existing app Stop-ordering limitation across pre-prompt waits, not proof that this patch introduced it. |
| R16 | SOURCE ONLY<br>[9bcf75335f](https://git.cafe/pingdotgg/t3code/commit/9bcf75335f9b2a8af877e1317c809b72a070b280) | SOURCE ONLY<br>[f23933f39b](https://git.cafe/pingdotgg/t3code/commit/f23933f39b4f1635dac2d82c2418fa44bcd89fa7) | N/A | Matrix boundary: unchanged recognized native command bypass; no runtime capture required by the supplied matrix. |
| R17 | SOURCE ONLY<br>[9bcf75335f](https://git.cafe/pingdotgg/t3code/commit/9bcf75335f9b2a8af877e1317c809b72a070b280) | SOURCE ONLY<br>[f23933f39b](https://git.cafe/pingdotgg/t3code/commit/f23933f39b4f1635dac2d82c2418fa44bcd89fa7) | N/A | Matrix boundary: unchanged exact /compact bypass; no runtime capture required by the supplied matrix. |
| R18 | SOURCE ONLY<br>[9bcf75335f](https://git.cafe/pingdotgg/t3code/commit/9bcf75335f9b2a8af877e1317c809b72a070b280) | SOURCE ONLY<br>[f23933f39b](https://git.cafe/pingdotgg/t3code/commit/f23933f39b4f1635dac2d82c2418fa44bcd89fa7) | N/A | Matrix boundary: unchanged active steering separate direct prompt path; no runtime capture required by the supplied matrix. |
| R19 | SOURCE ONLY<br>[9bcf75335f](https://git.cafe/pingdotgg/t3code/commit/9bcf75335f9b2a8af877e1317c809b72a070b280) | SOURCE ONLY<br>[f23933f39b](https://git.cafe/pingdotgg/t3code/commit/f23933f39b4f1635dac2d82c2418fa44bcd89fa7) | N/A | Matrix boundary: unchanged attachment / unknown-command fallthrough into the same resolver; no runtime capture required by the supplied matrix. |

## What else changed

- **Stop ordering outside the title's skill fix:** R15 head Stop persisted at `2026-11-02T20:14:51.245Z`, released M completed at `.252Z`, and P(greet) started at `.260Z`; provider interrupt started at `.296Z`. The before S1-gate control likewise persisted Stop at `20:14:36.054Z`, then sent P(-) at `.058Z`, followed by interrupt at `.081Z`. The no-P expectation fails on both comparable waits.
- Missing mentions add one model read and one skill reread, including permanently unknown `$HOME`. R06/R07 change request count and pre-prompt latency while retaining the same prompt text and skills payload. No HOME ID is attached.
- R04, R11, R12 and R14-found newly attach greet after a missing/failed first read. R08–R10 and R13 preserve first-read greet despite an empty/error/timed-out reread. R14-empty still sends no skills. Those are the matrix's expected payload differences.
- R01 and R02 have no normalized request or payload difference. R03's host-workspace background catalog `/api/model` and `/api/provider` calls interleave on opposite sides of the attempt boundary; both full runs perform those catalog calls and return the same 115-model inventory. Fixture initialization still completes before its first skill read on both revisions.
- Raw timestamps, ports, PIDs, generated project/thread/run/session/message IDs, and the UUID embedded in per-session `t3-code-*` permissions differ because these are separate fresh environments. The diffs normalize those IDs and host/fixture paths. No other request or prompt-payload change remains in the final diffs.
- Harness rules differ only where the row explicitly calls for them. Before does not issue the new M/S2 requests, so its second-read/model fault rules stay unused. R15's before comparison gates S1 because the base has no resolution M. R15 release returns a valid successful empty inventory/model response, not a transport failure.

Instrumentation caveat: the proxy records `request.cancelled` on a held response's `close` event even after an explicit successful release. In R15 it immediately follows the recorded 200 `response.end` and means connection closure, not a timeout. The timeout rows have no response.end for the held request and show cancellation at approximately five seconds. SSE events retain the attempt label from subscription creation; chronological time windows, native session IDs, and run ordinals associate later events. Do not count SSE subscription labels as per-turn resolver requests.

## Focused tests

Exact invocations and interpretation: [test-invocations.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b9fc0adc8e8d4dc8/test-invocations.md).

| Test | Base production + head test file | Head |
|---|---|---|
| T1: missing skill becomes available after scan | [T1-before.log](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5ae304cec437fe82/T1-before.log): 1 selected, failed (prompt lacks skills; replay expected model.list) | [T1-after.log](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6c004ed4e2b13948/T1-after.log): 1 selected, passed |
| T2: first-read greet retained after empty reread | [T2-before.log](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/75e4a266870e10f0/T2-before.log): 1 selected, failed because the strict replay expects the new model.list but base sends prompt immediately | [T2-after.log](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a297cabedb6dad47/T2-after.log): 1 selected, passed |

T2 base failure is a request-sequence mismatch, not evidence that base drops greet. The before runtime R08 transcript shows its existing P(greet) behavior. Initial unescaped `$skill` selectors selected zero tests and are not counted as red/green proof. These test executions supplement the runtime captures; they do not replace any required recording.

## Reproduction and raw artifacts

- HTTP proxy and fault gates: [proxy.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/dfb697b3868bb79d/proxy.mjs).
- Real server / WebSocket RPC driver: [driver.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/17a4f49d1cf22425/driver.mjs).
- Synthetic git fixture generator: [fixture-project.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7670bcf182adb660/fixture-project.mjs); exact generated fixture: [synthetic-fixture.tar.gz](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0503889f9fce27bb/synthetic-fixture.tar.gz).
- Transcript/diff packaging and credential redaction: [package-evidence.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0e87dcb34523c805/package-evidence.py).
- Recording assertions: [audit-evidence.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6037ca7f695ed27c/audit-evidence.py); results including the R15 failed expectations: [evidence-audit.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/50f5bfe9f3ed792a/evidence-audit.json).
- Structured observed sequences: [observations.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4f35aede355e80ff/observations.json).
- Full final and exploratory logs: [raw-recordings.tar.gz](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/33a18dabf6d33635/raw-recordings.tar.gz). Archive contains HTTP, driver, OpenCode, available-models and sanitized T3 logs only. No HOME, config file, database, auth session, environment file or credentials is uploaded. Credential values and startup pairing links/QRs are redacted; source line numbers are preserved.

The driver takes `before` or `after`, creates a new timestamped run directory, chooses the available model, starts real OpenCode behind the proxy, starts the correct real T3 checkout with an isolated `--base-dir`, authenticates locally, creates the project/thread through RPC, sends each exact matrix prompt, restarts only its captured OpenCode PID for R04, injects labelled faults, stops turns and shuts down its owned children. It does not edit tracked production files. Paths are intentionally pinned to the authorized scratch/checkouts in this brief. To rerun before after cleanup, recreate that detached checkout at the exact base and install dependencies first.

## Cleanup and limits

All 28 captured child PIDs across exploratory and final runs were checked and are gone. The disposable `/home/ubuntu/wt/pr-29535-before` worktree was removed. The head checkout is clean. Scratch evidence remains at `/tmp/lead-29535-r1/evidence-capture-1`. Free disk after cleanup: 12 GB. No commits, PR edits, pushes, comments, browser work, fleet access, or live service changes were made. CI checks and remote reviews were not queried; this task is evidence capture only.

Unverified: R05's conditional native partial-first-read pair only. Source-only and not runtime-certified: R16–R19. Failed observed expectation: R15 no-late-prompt suppression. No other required capture is missing.

FRICTION:
tool | Initial test selectors treated `$skill` as a regex anchor and selected zero tests; corrected selectors escaped the dollar and selected one test each. | Document `-t` as a regex and escape the dollar.
tool | Initial proxy implementation needed gzip decoding and aborted-SSE propagation; initial readiness probe used the wrong endpoint. These were corrected before selected captures. | Use the uploaded proxy and `/api/info` readiness endpoint.
runbook | RPC Stop receipt is not provider-interrupt completion; the integrated app still sent a late prompt after persisted Stop in both gated controls. | Distinguish command commitment from adapter interruption when specifying expected Stop evidence.
