pcbjam/docs/features
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Gergő Törcsvári 80468e7c5b
Phase B: main-thread sleep parks its context; the real D blocker is DOM entries
wasm/shims/context_sleep.cpp: a main-thread nanosleep whose frame stands on a
scheduler context that OWNS the stack arms a mailbox wake and yield_parks that
context instead of suspending the stack in place. It lives in the sleep
primitive rather than in tool_manager.cpp on purpose - KiCad and the wx core
stay untouched (CLAUDE.md's fork rule) and the whole K7 class moves at once,
not just TOOL_MANAGER::RunSynchronousAction's spin loop.

MEASURED AT D-ON, and it is NOT what unblocks Phase D. The four canvas-tool
specs still fail, but the trace now names a different cause: the fatal swap is
old=<libcontext ROOT> new=<tool coroutine> with mouseEventHandlerFunc above it
- a DOM mouse handler entering wasm DIRECTLY on the main stack, bypassing the
tick. So one coroutine is entered two ways: by the tick through the dispatch
context as a STAR TRANSFER, and by DOM handlers as a DIRECT SYMMETRIC SWAP. A
capture written by one path cannot be rewound by the other -> index out of
bounds in doRewind. That is section 7 rule 5 (partial migration is worse than
none) in its purest measured form, and it is why the harness stays green: its
coroutines are only ever entered from one place.

So the next increment is the DOM event entries (mouse/key/wheel/resize must
hand their events to the dispatch context as the tick does), not another park
site. It subsumes the one-root work too: with no dispatch on the main stack,
resolve_root_identity() always answers "the running context".

Landing state: STAR_DISPATCH=0, kicad 139 passed / 1 (pre-existing occ-probe)
= baseline, with the sleep shim in and inert.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LBjomQfKyRa3jBdeAKpmTw
2026-08-10 10:14:19 +02:00
..
3d-raytracer fix: 🐛 raytrace deadlock - pre-warm 2N+8 pthread Workers 2026-07-02 13:01:02 +02:00
archive docs: ✏️ cleanup and organize docs 2026-06-05 12:16:13 +02:00
async Phase B: main-thread sleep parks its context; the real D blocker is DOM entries 2026-08-10 10:14:19 +02:00
asyncify-arbiter test(asyncify): red-green race harness + ablation flags, unwind-catch shim, spec tightening, decisions docs 2026-06-12 17:02:59 +02:00
browser-tools config: 🔧 move submodules to ee 2026-06-05 13:36:44 +02:00
editor-unification docs(wasm): Part 2 record — rebase onto main done, 3d-viewer drag deadlock resolved (7630c7e pool pre-warm), rerun green 2026-07-02 17:56:02 +02:00
fix-asyncify-O2-and-modal-promise-rejection docs: ✏️ cleanup and organize docs 2026-06-05 12:16:13 +02:00
fork-cleanup eeschema simulator: lazy ngspice_service worker — static sharedspice (XSPICE registry + CIDER), init_dll ifdef, e2e both engines 2026-07-19 15:59:21 +02:00
gerbview docs: ✏️ cleanup and organize docs 2026-06-05 12:16:13 +02:00
hoist-cpp-catches-simplification docs(hoist): pass-simplification dossier; bump binaryen (FindAll/BranchUtils refactor) 2026-07-01 16:52:17 +02:00
libraries docs: library management feature design notes 2026-06-11 07:50:57 +02:00
ngspice-split eeschema simulator: lazy ngspice_service worker — static sharedspice (XSPICE registry + CIDER), init_dll ifdef, e2e both engines 2026-07-19 15:59:21 +02:00
occ-split feat(wasm): occ-split — lazy occ_service worker; kicad_editor drops OCC (−31%) 2026-07-03 12:39:58 +02:00
perf feat(wasm-eh): migrate the WASM build to native wasm exceptions (+ 3D viewer default-on) 2026-06-30 09:40:26 +02:00
pl-editor docs: ✏️ cleanup and organize docs 2026-06-05 12:16:13 +02:00
schematic docs: ✏️ cleanup and organize docs 2026-06-05 12:16:13 +02:00
symbol-editor docs: ✏️ cleanup and organize docs 2026-06-05 12:16:13 +02:00
threading feat(wasm-eh): migrate the WASM build to native wasm exceptions (+ 3D viewer default-on) 2026-06-30 09:40:26 +02:00
wasm-exceptions docs(wasm-eh): add native-EH vs JS-EH runtime benchmark report 2026-07-01 14:43:54 +02:00
web-e2e-rot e2e/CI: dual-engine suites, per-engine screenshots, SwiftShader retired, prod web suite, CI-coverage gate 2026-07-17 12:21:54 +02:00
web-init docs: ✏️ cleanup and organize docs 2026-06-05 12:16:13 +02:00
wx-dom-port fix: 🐛 kicad aui resize 2026-06-22 08:49:22 +02:00
wx-parity-bugs e2e/CI: dual-engine suites, per-engine screenshots, SwiftShader retired, prod web suite, CI-coverage gate 2026-07-17 12:21:54 +02:00
ysync-review feat(collab): local-ops-only undo — remote applies skip the undo stack (ysync miss 09) 2026-07-08 11:09:26 +02:00