Parent: #13032 · Epic: #13012
The reusable measurement & comparison machinery for the Harness Endurance Benchmark — the falsifier scaffold #13032 needs before it can render a calibrated verdict. Split out from #13032 so the machinery can land now while #13032 stays open for the load-calibration → conclusive verdict → published numbers it still tracks.
Scope (what this delivers)
examples/harnessEndurance/shared/LoadProfile.mjs — deterministic, seeded (mulberry32) load: zero-dep markdown-append stream + keystroke cadence, byte-identical per {seed, config} so both subjects + the runner consume the IDENTICAL sequence.
- Subject A (
examples/harnessEndurance/neo/) — the Neo transcript surface (off-thread parse/diff via Neo.component.markdown.Component), self-driving the append stream.
- Subject B (
examples/harnessEndurance/comparator/) — an honest single-main-thread vanilla comparator (full re-parse each tick), at security parity (hostile input rendered inert).
- Runner (
test/playwright/e2e/HarnessEnduranceBenchmark.spec.mjs) — drives both subjects under the same load + samples main-thread event-loop lag (per-tick re-anchored; NOT rAF, which free-runs without vsync in headless Chromium) + heap, logging the cross-subject delta.
Acceptance Criteria
Out of scope (remains on #13032)
- Load-calibration → the conclusive cross-subject verdict (no p-hacking-to-Neo-win).
- Published numbers + methodology on public surfaces (negative result publishes with equal prominence).
- keystroke→echo / frame-time / task-queue-depth metric layers.
Delivered by PR #13066.
Parent: #13032 · Epic: #13012
The reusable measurement & comparison machinery for the Harness Endurance Benchmark — the falsifier scaffold #13032 needs before it can render a calibrated verdict. Split out from #13032 so the machinery can land now while #13032 stays open for the load-calibration → conclusive verdict → published numbers it still tracks.
Scope (what this delivers)
examples/harnessEndurance/shared/LoadProfile.mjs— deterministic, seeded (mulberry32) load: zero-dep markdown-append stream + keystroke cadence, byte-identical per{seed, config}so both subjects + the runner consume the IDENTICAL sequence.examples/harnessEndurance/neo/) — the Neo transcript surface (off-thread parse/diff viaNeo.component.markdown.Component), self-driving the append stream.examples/harnessEndurance/comparator/) — an honest single-main-thread vanilla comparator (full re-parse each tick), at security parity (hostile input rendered inert).test/playwright/e2e/HarnessEnduranceBenchmark.spec.mjs) — drives both subjects under the same load + samples main-thread event-loop lag (per-tick re-anchored; NOT rAF, which free-runs without vsync in headless Chromium) + heap, logging the cross-subject delta.Acceptance Criteria
Out of scope (remains on #13032)
Delivered by PR #13066.