# Notification capture driver

Run the scenario on current main with `vp run scenarios:prove`, selecting the supplied base and head commits. The scenario uses a 350-line, text-only replay response and opens its finished transcript after checking the notification surface.

The supplemental driver uses Playwright against the real web app. Put `manual-proof.mjs`, `start-app.ts`, and `shell.ts` together, with `node_modules` resolving the dependencies installed in current main’s `scripts` package. Install dependencies in each target checkout with `vp i` first.

Usage: `node manual-proof.mjs <checkout> <before|after> <port> <output-directory>`.

Each invocation creates an isolated, fresh T3 home and synthetic git project. It enables in-app notifications in Settings, keeps Other thread focused, then snoozes four first-run replay threads for one hour while their numbered responses stream. The first three produce an approval, an input request, and a planned replay failure. The fourth completes while application WebSocket messages are held; heartbeat replies continue. The driver advances the client clock by 3,601,000 ms and fires the existing one-hour deadline callbacks before releasing those messages, exercising completion processed after wake without waiting a literal hour. It opens the final transcript afterward. Screenshots require identical frames 500 ms apart. Pointer position is identical on both sides.

The replay transcript and planned-failure fixture adjustment are restored when the driver exits. Notification implementation code is unchanged. Videos published with this proof omit authentication and initial setup screens; reproduction interactions and waiting retain their original speed.
