← Commit history

plan: phase 5 live on ConfRoomROG; recorder finding filed

John Lauer ·89abcc3113 ·27d ago ·parent ef5a17a
1 file changed +1
docs/rust-port-plan.md+1
@@ -18,6 +18,7 @@ Written 2026-09-11 from a full audit of the 0.9.350 source, the Adom Bridge (ab) | 2026-09-11 | Phase 3 complete: alpha.3 (94 verbs: show family, progress registry with `kicad_progress`, `kicad_verb_times` and the `operations` block on status, `kicad_upgrade` with the silent NSIS install behind the platform trait, `kicad_rescan_libraries`, the retired plugin verbs answering honestly). Full verb runner on ConfRoomROG against the native binary: 72 pass, 3 fail, 15 skip, zero foreground steals; the Python baseline on the same box was 72, 1, 15. The three failures: `kicad_demo` (phase 5) and the two retired plugin verbs, which returned an honest error where the runner expects a status (now they answer success with `retired:true`). 180 tests. Phase 4 (etiquette loop) and phase 5 (tour) start next, on a trait surface fixed in advance so the two run in parallel. | | 2026-09-11 | Phase 4 landed and is live on ConfRoomROG: the etiquette loop runs inside the binary (a 120 ms sentinel thread and a WinEventHook thread on EVENT_SYSTEM_FOREGROUND and EVENT_OBJECT_SHOW feeding one tested decision table; the once-per-window ledger; the owned-pid ledger with the parent-chain walk, persisted in the Python's file format; the 60 s spawn watch; sanctioned foregrounds; user-click and alt-tab detection; the idle rule; the 20 s and 60 s heals). Two judgement calls recorded in the code: WS_EX_NOACTIVATE is never set (John's 0.9.181 rule), and the idle rule ranks below the guards so an unattended run still bounces self-raises. First boot on the box: both hooks armed, the launched project manager registered and pushed back exactly once. The tour input primitives (SendInput mouse, wheel, key; MCI audio) exist behind the trait and refuse unless the target window is the measured foreground. | | 2026-09-11 | Gate with the loop running, ConfRoomROG: 73 pass, 2 fail, 15 skip. The two: `kicad_demo` (phase 5, in progress) and one foreground note on `open_board`. The loop's own event log shows exactly what happened there: the new PCB editor frame took the foreground and was bounced once by the hook within milliseconds, its "Load PCB" progress dialog took it and was bounced once, and the frame's load-complete self-raise a moment later was left alone under the "background once, then hands off" rule, which is the Python's rule and the Python's behaviour on this box. Kept as is. |+| 2026-09-11 | Phase 5 landed and ran on ConfRoomROG: the six-beat tour on the native bridge, twice, background job with the panel, captions and narration, every beat opened and five of six verified on the second run in 187 s. Three fixes came out of the first run: the ab client no longer skips stop and cleanup calls during its backoff and no longer starts a backoff on a timeout; the tour input tolerates a sub-second foreground flicker before refusing a gesture; a beat whose editor sits on an unpainted canvas gets a zoom-to-fit through the native View menu before it is judged (the footprint beat then painted and animated). The one unverified beat on run two was the board: a Chrome window from another session took the foreground during it and the tour, by rule, raises each beat exactly once. Recording: ab's native recorder drops any 4K take longer than about a minute (stop times out, 0-byte file), reproduced from the CLI with no bridge involved and filed as [adom/adom-bridge#187](https://wiki.adom.inc/adom/adom-bridge/issues/187); short takes finalise. 96 verbs, 199 tests. |  ## The goal in one sentence