mailbox S6: shutdown() in the shim + unit gates; bump wxwidgets

Shim shutdown: dead latch, queue rejection/drop with beacons, pump
stops, idempotent. Gates: shim units 11/11, asyncify 9/9, coroutine
39/39, wx modal-heavy 45/45, kicad 6/6 — all on DEFAULT-injected glue
(docker postprocess -> setup:kicad now yields scheduler builds
without manual conversion).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TfxKn5utcntBSnxz4ZnYKs
This commit is contained in:
Gergő Törcsvári 2026-08-05 17:46:28 +02:00
commit 9bc4da89ff
No known key found for this signature in database
GPG key ID: 8E75F2CDE64E5322
4 changed files with 92 additions and 1 deletions

View file

@ -290,6 +290,18 @@ rollback = the `WX_SCHEDULER=0` build + a per-step tag.
> consume-once layer is the backstop, not a replacement.
- **S6 · Lifetime (few d).** Cleanup ordering vs the scheduler; teardown deferred to
unload/explicit exit; `ScheduleExit` → scheduler wake (12 §phase-4).
> **Work log 2026-08-05 — S6 LANDED.** The scheduler latches DEAD when the main loop
> exits (DoRun's top-level return → `shutdown("main loop exited")`): queued mutators
> reject, queued messages/wakes drop, pumps stop — stranded work beacons
> (`shutdown ... stranded:`) instead of surfacing as a post-teardown UAF.
> `wxWasmMailboxDeliver` gained ProcessEvents' `!wxTheApp` teardown parity. Unit-gated
> (scheduler-shim.test.ts 4/4 incl. shutdown; 11/11 with WasmMailbox) + full battery
> (asyncify 9/9, coroutine 39/39, wx modal-heavy 45/45) + kicad 6/6 — all on
> DEFAULT-injected glue: the docker postprocess → setup:kicad pipeline now produces
> scheduler builds with no manual conversion. Deferred with the ledger: OnExit/
> wxEntryCleanupReal-to-unload reshaping (12 §phase-4's fuller lifetime) — the current
> quit flow (wxAppTopWindowClosed → loop exit → cleanup) plus the DEAD latch covers the
> teardown-delivery hazard the step exists for.
**Effort: ≈ 57 weeks** (doc 12 said 46 for the runtime alone; the added week is §3's test
work, which is where the safety comes from). S1 and S2 each end in a shippable state; S4 is the