# Exact round-2 invocations

All files are scratch outside either checkout. Run the final uploaded scripts, not the superseded create-replay.py generator. Synthetic fixtures enter the unmodified app through RPC, ACP and the real thread-scoped T3 MCP transport; there is no projection or DOM injection.

## Server commands and environment

Base checkout: 30654b3e91a51937d1dba18fc83af19d8003f5ca. Head checkout: a5c3df8b2124ce221e4162332eaffa6090779812. Both databases were initially missing and created by their own build, with seeding disabled. Dependencies: global vp install in base; head already installed.

```sh
cd /home/ubuntu/wt/pr-29141-base
T3CODE_DEV_SEED=0 vp run dev --home-dir /tmp/lead-29141-r2/evidence-capture-2/base-home
# Actual web/server ports: 7218 / 15258
cd /home/ubuntu/wt/pr-29141
T3CODE_DEV_SEED=0 vp run dev --home-dir /tmp/lead-29141-r2/evidence-capture-2/head-home
# Actual web/server ports: 6290 / 14330
# Later restart, for the authorized native client:
T3CODE_DEV_SEED=0 vp run dev --host 0.0.0.0 --home-dir /tmp/lead-29141-r2/evidence-capture-2/head-home
```

Inherited VM environment uses its standard proxy/provider configuration. No new API key was needed for these protocol replays. Auth cookies, pairing tokens and MCP authorization are omitted; T3 passes the ACP subprocess its thread-scoped MCP endpoint/authorization. No secret values are in this file. The original real-Hermes round-1 command and trace remain linked separately.

After P01 and before the clean P02/P03 fixture creation, projects.mutate project.update set the first synthetic project title to Proof workspace and workspaceRoot to /tmp/lead-29141-r2/evidence-capture-2/synthetic-workspace (empty, outside Git). P01 retained the default server project title on both sides. This avoids shared Git checkpoint refs between checkouts. Normal app thread.settle was used to clear finished synthetic threads from the active sidebar before P04; it does not alter the fixture's tool data.

## P01 protocol replay of the real Hermes trace

Load seed-driver.js, then seed-replay.js into each paired app with preview_evaluate. Exact calls:

```js
await seedReplay('base', 'P01', 'proof-p01-replay'); // base app
await seedReplay('head', 'P01', 'proof-p01-replay'); // head app
```

This registers acp-replay-shim.py with exactly one command argument base/head, label Hermes protocol replay; title ACP render test; prompt P01 protocol replay of recorded Hermes HTML render. The shim reads P01-after-acp-trace.jsonl, retains the recorded tool_call / text-only tool_call_update shape and original mcp__editor_t3_code_345963c4__html_render title, and inserts only its freshly published MCP attachment reference into the textual result. There is no rawOutput. Both sides have the same canonical capabilities timing control, calls at +2.2/+4.2 seconds, final Done. at +12.2 seconds; both final labels are Worked for 13s. Apply capture-conditions.js after navigation, collapse activity, hide both side panels, park pointer x1/y500. Capture W=1440x900 and N=390x844 in light and dark, plus 1280x800/light and additional crop. The browser Date is frozen; server times and IDs are truthful. Final shim source is authoritative.

## P02 terminal recapture

Load seed-driver.js, seed-controlled.js and seed-harness.js. Both apps execute:

```js
await registerProofProvider('proof-terminal-clean','terminal-v4');
await seedHarness('proof-p02-clean','P02','proof-terminal-clean');
```

Release terminal-v4-p02-single, repeated, mixed, pending, running, then interrupt by normal thread.stop while terminal-v4-p02-interrupt.ready exists. Each release is touch /tmp/lead-29141-r2/evidence-capture-2/<name>.release; wait for the corresponding ready marker and the visible settled phase. Both subprocesses consume the same markers. Final 1280x800 light stills use the same neutral pointer and collapsed work summaries, no timestamp hover. Inspector clips start after opening/layout settles, hold readable JSON, then attempt close. Stopped inspector clips are a held-readable excerpt; do not infer a successful close from them. Original live-phase clips remain linked separately. p02-actions.json and p02-more-actions.json give actual close offsets.

## P03 exact uploaded seeder (this replaces the rejected metadata variant)

Load the exact uploaded seed-driver.js, seed-controlled.js, seed-harness.js. Both apps execute exactly:

```js
await registerProofProvider('proof-shim-v2','p03-recapture');
await seedHarness('proof-p03-recapture','P03');
```

Command path /tmp/lead-29141-r2/evidence-capture-2/acp-proof-shim.py, commandArgs ["p03-recapture"], provider label Pproof-shim-v2 synthetic ACP driver, composer initials PS; title P03 — labelled synthetic ACP fixture; prompt P03 synthetic fixture; final Synthetic ACP fixture complete. No title, prompt or initials were manually substituted. Browser navigation is /<environment-id>/proof-p03-recapture. Start recording while p03-recapture-p03-repeat.ready holds, then release repeat, structured and ambiguous in order. The actual release instants are in p03-exact-actions.json: repeat +4.432s/+3.101s, structured +7.532s/+6.201s, ambiguous +10.631s/+9.300s (base/head). Each seeder runs once against each side's fresh isolated database. Marker files must be absent for a new run; use a new prefix/directory instead of reusing a released fixture.

The exact-seeder clips show retained-input A, repeated completion preserving one A, structured B, then the no-match C and ambiguous D tool rows. Additional exact-no-match-inspector/exact-ambiguous-inspector clips revisit this same thread; they begin already expanded/settled and hold the JSON. Synthetic stored-item exports and actual MCP publish trace connect the ACP call IDs to references. Both final durations are 35s. A later thread.settle adds a truthful settled footer in inspector clips.

## P04 priority and wait controls

Load seed-driver.js and seed-advanced.js, then seedAdvanced('P04') for the first approval-then-input sequence. For the reversed arrival sequence load seed-priority.js and call seedPriority(); source is acp-priority-reversed.py with prefix priority-rev and acp-proof-shim.py with wait-child-rev. Expand the native Working section before recording. Actual wall-clock releases are in p04-actions.json and p04-reversed-actions.json. First sequence: approval then input (the later input replaces the badge on both SHAs). Primary sequence: async, missing mode, ordinary tool, thread wait, concurrent ordinary tool, wait-mode delegate with actual tracked child, input, approval, approve, submit input, waiting, completion. p04-input-before-approval.release causes approval to arrive; normal Approve and Submit UI actions resolve the requests. Both SHAs show approval when it arrives last. This is an order-sensitive observation, not proof of unconditional approval > input precedence.

## P05/P06 same-driver web base anchors

Load seed-driver.js and seed-anchors.js, call seedAnchor('P05') or seedAnchor('P06') in both apps. P05 uses parent-anchor and child-anchor; release parent-anchor-p05-controls, child-anchor-p05-child-complete, then parent-anchor-p05-finish. Open real child card and return using its parent breadcrumb. P06 uses native-anchor and the claude-agent-acp symlink to acp-proof-shim.py (native protocol v2). Release native-anchor-p06-child-v3, open native child, expand work, return parent, release native-anchor-p06-finish-v3. Each release is the .release marker under scratch. Recording actions are in p05-anchor-actions.json / p06-anchor-actions.json. These supplemental videos retain truthful unequal server duration counters and background sidebar counts; they are same-driver behavioral anchors, not pixel-matched still comparisons. Original accepted head captures remain authoritative for their complete branch coverage.

## P07 original responsive HTML and canonical base control

Same replay seeder/shim, using P07-responsive-input.json verbatim. Calls: seedReplay('canonical-original','P07','proof-p07-original-html') on base; seedReplay('head','P07','proof-p07-original-html') on head. Base replaces the renamed title with mcp__t3-code__html_render, deliberately exercising an ordinary canonical call. All other output/content/timing is identical. Final duration 12s both. This is a viewer control, not a same-tool-name parser comparison. No rerun during recording. Wide/light1440x900 -> wide/dark; wait 8s; settle two identical frames 650ms apart ->390x844dark; wait3s; settle again. p07-original-actions.json is the exact timing record. Earlier P07-responsive.mp4 shorter-page clips demonstrate the pre-existing light-iframe/dark-shell transient on both revisions.

## Native commands (head P04)

```sh
vp run mobile:install ios --prepare
agent-device connect proxy --daemon-base-url "$SIMLOCK_AGENT_DEVICE_URL" --session proof29141r2
agent-device open --platform ios --device 'iPhone 17 Pro' --session proof29141r2
vp run mobile:install ios --session proof29141r2
# apps/mobile; dev:client already supplies --lan
CI=1 vp run dev:client
agent-device settings appearance dark --session proof29141r2
agent-device settings text-size large --session proof29141r2
agent-device record start /tmp/lead-29141-r2/evidence-capture-2/run-20261103T0218Z/P04-after-ios-badges-dark.mp4 --session proof29141r2
agent-device record stop --session proof29141r2
```

Pairing used the repo pair-client.sh with the head server's isolated home. Native framebuffer1206x2622, logical402x874,DPR3,iPhone17Pro,large text. Raw native recording is sparse HEVC; H264 copy is a direct fps10 transcode for playback, with no edits/retiming. The pool hosted this lease on simbox-2; commands stayed on this VM. Close session at cleanup.

## Stills, diffs, sheets

capture-conditions.js waits for fonts and freezes browser Date; preview lacks reduced-motion/network-idle emulation. Before each accepted still, screenshots >=600ms apart must be pixel-identical. make-diffs.py generates amplified binary-magenta Diff0 (any RGB delta) and DiffT16 (maximum channel delta>16/255), laid over a whitened before. sheets-r2.py makes the labelled 2x2 sheets. review-videos.py samples actual recordings; these contact sheets are navigation aids, never substitute for recordings or settled stills. No repo-wide checks or code tests were run for this capture-only task.

P04 supplemental exit: the first primary reversed clip ends held in Waiting; its shim approval release marker was still held after the UI resolved requests. At 02:59 UTC release priority-rev-p04-approval.release (input release already exists) to complete the parent. P04-before/after-web-wait-to-complete.mp4 show Waiting/Working -> Done with identical final21m41s labels; see p04-exit-actions.json. The native lease had expired before that supplemental exit capture.

Native recovery: after one minute reconnect the same proxy session and reopen the same iPhone17Pro, reinstall cached client, accept system Open alert, and run pair-client.sh again. The supplemental exact calls on both apps are registerProofProvider("proof-wait-exit","exit-0305"); seedHarness("proof-p04-exit","P04","proof-wait-exit"). Record expanded native Working section; release exit-0305-p04-wait, concurrent, release, done in sequence. The native recovery clip begins at the held Waiting state and shows the row leaving Working after completion; it does not claim to show the earlier async/approval milestones. See p04-recovered-actions.json. Both leases were closed.
