# Rebuild the evidence

Use two clean worktrees at base 8ee7183e6c8a1c22a6698f4909ef7e2a423bec3a and head 624285956d002c052b69ea966efed2fa8982a81d. Install each with `vp i`. Start each with `T3CODE_DEV_SEED=0 vp run dev --host 0.0.0.0`, retaining its process and output. Never copy a live database. Pair each web app with its own startup pairing URL. Use a 1280 by 800 viewport and dark appearance. Close the thread details panel for the primary recording.

Load driver.js in the paired app's page context (through preview_evaluate or the browser console). On the initial empty project thread call `await setupEvidence()`. Start a browser recording, then call `runEvidence()` without awaiting the long-running promise in the tool transport. This sends the exact report prompt through the real app's RPC command, observes Running sleep in the real DOM, waits ten seconds, and sends the exact BANANA steer through the same command. Record through completion. The title is explicitly fixed to Pi steer evidence on both sides.

For Stop, create an empty thread with `await newEvidenceThread()`, navigate to its returned URL, reload driver.js, and call `await setupEvidence('--no-approve')`. The extra launch argument suppresses the unrelated project-trust warning. Record `runEvidence(true)`: identical prompt and steer timing, then interrupt through the app's normal command ten seconds after steer submission. The warning that Stop cleared an unread Pi message already exists on base; the new cancelled user-message status appears only on head.

For native evidence use the same server and synthetic thread, the cached dev client installed by `vp run mobile:install`, and Metro from that side's checkout. Pair the native client to the corresponding isolated backend and open the synthetic thread. The native recordings use iPhone 17 Pro, 402 by 874 points, light appearance. Create an empty thread with newEvidenceThread(), navigate to it in web, inject driver.js and call setupEvidence('--no-approve'). Open that same thread in the native Chats list. Start agent-device record before calling runEvidence() from the paired web page, then record through the BANANA reply. Use the same workspace directory for connect, open, install, pairing, recording, and close so the pool session ownership agrees. Switch Metro to the other checkout before recording the other side; do not present web at a phone viewport as native evidence.

Run `python3 provenance.py before=CHECKOUT_BASE after=CHECKOUT_HEAD` to record actual HEAD and tree SHAs, clean status, and selected synthetic projection rows read-only. No provider identifiers or message payloads are exported. Run verify-runtime.py before=CHECKOUT_BASE,SERVER_PORT_BASE after=CHECKOUT_HEAD,SERVER_PORT_HEAD while both servers are running. It resolves each listener through ss and /proc, asserts its working directory belongs to the intended checkout, and emits the actual checkout and tree SHAs without exporting paths. runtime-provenance.json records the successful verification.

Published web videos are scaled to 1280 by 800, cropped to the conversation, and have a 40-pixel commit/environment header added. Primary crop: 1024 by 640 at x=256,y=0. Stop crop: 728 by 640 at x=256,y=0. These exclude provider controls and machine-specific workspace details. Native videos are scaled to 402 by 874, cropped to 402 by 665 at x=0,y=120, and have a 48-pixel commit/device/theme header added. This excludes the environment subtitle and provider controls while keeping the command, steer badge, and response. No speed changes. Stopped-state stills were captured twice, at least 500 ms apart, with identical SHA-256 hashes, then cropped the same way. Review the full recordings and images before upload.

Upload the captures, driver.js, provenance.py, provenance.json, verify-runtime.py, runtime-provenance.json, observations.json, artifact-manifest.json, and this recipe with `ghdrop upload -m`. Every uploaded file is public. Do not upload raw dev logs, connection URLs, tokens, or provider model identifiers.

AI-assisted; verified with the tests and tools listed above. No tests were used as visual evidence.
