# Controlled runtime evidence driver

Scope: isolated `/home/ubuntu/wt/issue-25636/.t3`, final head `8cee7bba3b7cf899a7cfe00bf30547cddcbeb5ce`. No live home writes, projection writes, production timeout changes, retry parameter changes, source commits or PR.

1. With dev stopped, back up HEAD worker and run `python3 /tmp/issue-25636/inject-only.py`. The only source delta must be `return Effect.never;` before the delegated stop executor. This bypasses only `threads.stopDelegatedTasks`; the worker's real boundExecution remains active.
2. With dev stopped, run `python3 /tmp/issue-25636/seed-stop.py`. This deletes/reinserts only `effect:repro:stop`, at pending attempt 0, on the existing app-created thread. Old provider-start rows remain intact.
3. Start `vp run dev` with output retained outside the checkout. Retain its execution session for Ctrl-C. Ports here: server 14498, web 6458. Pair the owned Browser panel using the startup token privately. Never upload raw startup logs.
4. Run `observe.py` into a transcript. It reads outbox state read-only once per second and emits changed snapshots; this is a runtime evidence recorder, not a test. Transient states shorter than the sample interval can be missed; warning logs corroborate timeout transitions.
5. Fresh: submit `Reply with exactly FIXED_FRESH. Do not use tools.` through web while stop is running attempt 1. Wait through five production 30s attempts and normal exponential backoff. Capture final state with `capture-state.py`; verify failed stop, succeeded provider-start, real provider events/assistant reply and checkpoint. Stop dev via retained session.
6. Restart at attempt 2: seed pending attempt 0 again while stopped; start dev, capture running attempt 1, then Ctrl-C. Restart without database mutation. Recovery requeues the stop and claims attempt 2. Submit `Reply with exactly FIXED_REPLAY_TWO. Do not use tools.` after recovery. Record attempts 2–5, failed stop, provider start success and actual reply. Old unstarted process-bound starts may be cancelled on restart; no revival is claimed.
7. Stop all owned dev/observer sessions. Restore worker from fixed HEAD backup and verify it matches `git show HEAD:apps/server/src/orchestration-v2/EffectWorker.ts`. Run focused tests on restored source. For independently captured red results only, temporarily use the base worker with final regression tests while dev is stopped; restore fixed HEAD immediately afterwards.

A preliminary AFTER restart reused the baseline's running attempt-2 row, so recovery began at attempt 3. It is retained as supplemental evidence (`after-replay-*`), not the exact attempt-2 comparison.

This is a controlled interruptible downstream hang. The original Codex completion/stop cause is unknown. It does not establish behavior for uninterruptible code, blocking synchronous calls or interruption finalizers that themselves hang.
