# Issue 23701 evidence capture

Captured 2026-10-22 UTC within the 21:24–21:54 budget. Server-only visual matrix `[]`; rows 0/0. No screenshots or recordings required. Environment: real Node/Vite server on Linux, parent-owned browser. Evidence agent did not start, stop, or drive servers/browser.

Local implementation before/base ef92441313; after/head 171fec973b8029810b4a4a56491314f82a6cddbc, unpublished branch fix/issue-23701. Worktree remained clean.

Fixture: private scratch [#1](https://github.com/juliusmarminge/triage-23701-fs38/pull/1), docs-only head [6074dd4](https://github.com/juliusmarminge/triage-23701-fs38/commit/6074dd48ff94323e1d2fb47c7ba1691c296a48a6). Workflow `pull_request` ignores `docs/**`. Independent successful GitHub read at capture time returned that head, OPEN, and `statusCheckRollup: []`. This read is independent corroboration, not instrumentation of the reactor's transport.

Recorded red step (provided, not independently rerun): red-test revision ada4c39bca against base ef92441313; runtimeLayer.test.ts “wakes once when no checks report on the head, without saying they passed” failed: AssertionError “one wake for a head with no checks”, expected +0 to equal 1. The supplied baseline establishes initial silence only, not an elapsed-15-minute negative proof.

Fresh green execution: `vp test run apps/server/src/orchestration-v2/runtimeLayer.test.ts -t 'wakes once when no checks report on the head, without saying they passed'`, started 21:28:07; 1 test passed, 83 skipped, exit 0. This test also guards false empty reads after pending checks. No live credential-failure simulation was attempted.

Runtime transcript:

- Watch started 21:02:05.970; head persisted 21:04:05.266, passed=false, no notice.
- Sequence 115602 at 21:09:59.186 persisted checksAwaitedSince=21:09:57.433Z. The same waiting clock survived subsequent fixture sync/reload state.
- Sequence 115605 at 21:28:15.154 cleared the clock to null while retaining passed=false and the same head.
- Sequence 115611 at 21:28:15.167 persisted exactly one monitor message, ID message:pr-watch:1020d887-bd5a-49ac-a93c-0da9450356e8. Summary: “#1: no checks reported”; outcome: updated. Body: “No checks have reported on 6074dd4 after 18 minutes. None may be configured to run on this change.” No claim that checks passed/completed.
- Parent rewatched at 21:29:08.113; persisted same head and null clock. Parent restarted at 21:29:25, reported a healthy sweep at 21:29:33 and notice count 1 at 21:30:28.890. Independent read-only snapshot at 21:32:21 still counted exactly one unique monitor notice.

Timing limitation: parent reports a dev-server reload at 21:28:12 immediately before the wake. Therefore this proves actual elapsed time plus delivery after reload, not an uninterrupted 30-minute quiet-fingerprint cadence. The evidence agent ran the focused test beginning 21:28:07; no repository files were edited, and the cause of the reload was not established. No timer/cache/read cadence was patched or shortened. Parent's restart record proves startup/sweep survival without a duplicate; it does not separately instrument a successful reactor host reread.

What else changed: server notice only. Evidence capture added temporary files under /tmp/triage-23701-fs38/evidence, ran one focused test, performed read-only fixture database and GitHub reads, and registered the scratch PR with this thread. No repository edits, commits, assets, comments, or pushes.

FRICTION timing|reload occurred just before notice, earlier than the estimated normal quiet reread|report observed timestamps and reload provenance; never claim uninterrupted cadence.
FRICTION provenance|red execution was supplied without an independently captured raw red log|label recorded red step and retain the exact supplied assertion.
FRICTION transport|database events do not expose the reactor's raw successful host response|include independent successful empty GitHub read and distinguish it from transport instrumentation.
FRICTION tooling|artifact fetch returned 403 with Python's default user-agent|fetch using curl with a browser user-agent; no credentials required.

Generated by gpt-6.1-sol through the Codex harness; ghdrop skill used for evidence publishing.
