pcbjam/tests/kicad/utils
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Istvan Matejcsok 0b8e7186d4 findings(E-1,E-2,E-3,E-6): ngspice service generations + credit-bounded event transport
Adapted from codex/asyncify-execution-owner-core 3753320. Service side mirrors
the occ-service shape (E-1 watchdogs, E-2 fail-all + boot-death fix — onerror
now rejects the in-flight boot waiter instead of stranding it, E-3
onmessageerror terminal, Blob URL revoked, per-generation evtQueue cleared on
retirement).

E-6 transport bounds (worker hunks re-applied inside the emscripten-6
em-pthread else-branch — the codex file predates that split, so this is a
re-application, not a cherry-pick):
- batch cut at 512 lines / 1 MiB exact JSON-UTF-8 bytes, measured before a
  line is retained; a single line > 1 MiB flushes the accepted prefix then
  stops the event stream terminally (never retained);
- posting gated by a 64-frame / 8 MiB unacked credit window; each frame
  carries { eventSequence, eventBytes } and is released only by an exact
  { sequence, bytes } ack; any mismatched ack is terminal;
- the service mirrors the same 64-frame / 8 MiB bound on its pre-handler
  queue, acks after handing a frame to __ngspiceOnEvent, and retires the
  generation on invalid credit; { fatal } frames retire the worker.

Tests: ngspice-service.test.ts (11, ported) — watchdogs, crash/bootError/
decode-fault settlement + recovery, out-of-order ids, sync postMessage throw,
stale-generation event drops, fatal-frame retirement. tests/tools/
ngspice-worker-batch-unit.ts (node:vm over the production worker source;
`npm run ngspice:worker-batch`) — bounded ordered chunks, byte-pressure
flush, 100k-chunk credit storm, over-limit line, exact ack lease. e2e harness
twin updated to speak the ack protocol (adds __ngspiceServiceTestHooks).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-31 18:18:02 +02:00
..
board-ready.ts tests: load-pcb e2e for microwave + pic_programmer demos 2026-05-29 09:51:18 +02:00
fs-inject.ts bench: JSPI vs asyncify A/B — harness + results 2026-08-14 11:53:06 +02:00
ngspice-service.ts findings(E-1,E-2,E-3,E-6): ngspice service generations + credit-bounded event transport 2026-08-31 18:18:02 +02:00
occ-service.ts findings(E-1,E-2,E-3,E-4): occ-service generations/watchdogs/messageerror + abortable model prefetch 2026-08-31 18:18:02 +02:00
pcbnew-ready.ts test(determinism): deterministic waits + stableShot screenshots; drop blind sleeps/ifs/retries 2026-07-07 10:50:24 +02:00
perf-utils.ts build+perf: wasm-opt the shipped wasm, and measure real frames in CI 2026-08-22 12:53:00 +02:00
screenshot-compare.ts tests: dark-mode spec diffs against a per-engine light-mode reference 2026-08-28 23:24:20 +02:00
threed-viewer.ts test(determinism): deterministic waits + stableShot screenshots; drop blind sleeps/ifs/retries 2026-07-07 10:50:24 +02:00
trio.ts tests(trio): settleConverged names the diverging tab + first differing line 2026-08-24 19:35:52 +02:00
wait-beacons.ts jspi cleanup: remove the asyncify-era residue — dead code, conditionals, pipeline scaffolding, stale prose 2026-08-14 09:25:32 +02:00