# Presenter replay: challenge the build

From the repository root, serve files with `python3 -m http.server 8765`, then open `http://127.0.0.1:8765/vertex-man/`. Use a desktop viewport and keep all four builds in separate tabs.

1. **Set the promise.** Open A or B. Click **Advance update** twice, pausing at each mode. The same shapes change role while gravity and projectile rules change. Say: “The brief requires existing behavior and live state to survive those updates.”
2. **Challenge the candidate.** Open C and D in the same desktop viewport. In each, click **Restart**, click **Advance update** twice quickly to freeze targets, then click the first target near the left side of the room. At a 1280 × 720 viewport, `[430, 312]` was the matched click: C remained `3/3`, D changed to `2/3` and showed a ragdoll. Target placement and viewport size matter, so aim at the visible target if your screen differs.
3. **Challenge a different promise.** In C, click **Restart** from Time Fracture. The world returns to Normal while the top HUD still says Time Fracture at `00:00`. Repeat in D; both now say Normal. The code review found the pointer bug; browser play found this separate UI state leak.
4. **State the fair conclusion.** “The builder's ‘done’ was a candidate. An independent reviewer tried to break the contract, a browser replay proved failures, and the repaired build passed those exact replays.” A and B also loaded and switched modes. The separate planning pass did not make Luna's first pass better in this run.

The full 180-second automatic cycle and the exact live-bullet reversal were not independently verified in the browser. Avoid describing them as passed on stage.
