Skip to content

Commit 551e2a8

Browse files
proggeramlugRalph Küpper
andauthored
docs(engine-plan): step 7 is a measured backlog; sequence the JSON workstream (#7479)
* docs(engine-plan): step 7 is a measured backlog; sequence the JSON workstream The step cited two traps that are both resolved (#7395 closed, #7396 closed as fixed-by-#7421). Replace it with the measured backlog from the 2026-08-06 public-baseline sweep, worst-first, with the JSON workstream sequenced behind its correctness gate: #7477 (DirectParser float divergence -- node agrees with the tape) before #7478 (reparse-on-materialize). Records the win to protect (roundtrip 194 ms vs bun 221) and the measured dead ends so they are not re-walked. Explicitly parallel with the GC-correctness layers: no dependency in either direction, and agent-delegable because every claim checks against the node oracle. * docs: changelog fragment for 7479 --------- Co-authored-by: Ralph Küpper <ralph@skelpo.com>
1 parent c1f0b6f commit 551e2a8

2 files changed

Lines changed: 40 additions & 6 deletions

File tree

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
- **`docs/engine-plan.md` step 7 replaced with the measured performance backlog** from the 2026-08-06 public-baseline sweep (its previous contents — #7395/#7396 — are both resolved). The JSON workstream is sequenced with #7477 (DirectParser float divergence, a correctness gate) before #7478 (tape reparse-on-materialize), with the roundtrip win and the measured dead ends recorded. (#7479)

docs/engine-plan.md

Lines changed: 39 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -742,12 +742,45 @@ landed (#7314) and became *reachable* (#7339) and *selectable* (#7340). The spin
742742
default-on for **peak RSS −69%**. What remains is the re-derivation under the
743743
statepoint default rather than the shadow stack.
744744

745-
7. **Performance now has a measured starting point, and two traps in front of
746-
it.** `bench_fibonacci`/`bench_bitwise` measure nothing (#7395) — fix or
747-
retire them before any performance claim cites them. `bench_array_ops` is
748-
4.5× behind Node with the array-store guard and growth path dominating
749-
(#7396). **Measure on a quiet host**: a first fix attempt was reverted because
750-
host load hit 55 and its disassembly check matched an absent symbol.
745+
7. **Performance now has a MEASURED BACKLOG, not a starting point** (updated
746+
2026-08-06). The earlier traps are resolved: #7395 closed, #7396 closed as
747+
already-fixed by #7421 (re-measured at 2.32×, and the inline write tier
748+
A/B'd at 13.8× via prototype pollution). The public-baseline sweep
749+
(quiet host, pinned Node v22.23.1 / Bun 1.3.14, 11 runs/cell) produced the
750+
backlog, worst-first vs bun:
751+
752+
| row | ratio | workstream |
753+
|---|--:|---|
754+
| `json_parse_1mb` | 6.27× | **JSON parser speed** (shared with tape) |
755+
| `map_1m` | 5.74× | Map internals |
756+
| `batch` | 5.29× | app-pattern batch |
757+
| `field_access` (json_polyglot) | 13× vs bun | **JSON tape scan** (#7478) |
758+
| `string_template_interp` | 3.09× | string building |
759+
| `json_stringify_1mb` | 2.62× | JSON stringify |
760+
761+
And one **win to protect**: JSON roundtrip 194 ms vs bun 221 / node 384 —
762+
the tape's memcpy path. Any tape change must keep it (#7476 pins the
763+
numbers).
764+
765+
**The JSON workstream is sequenced, with a correctness gate in front:**
766+
#7477 first — the DirectParser parses floats differently from the tape
767+
materializer *and node agrees with the tape*, which is silently wrong for
768+
every <1 KB and >16 MB parse today and hard-blocks the tape fix. Then
769+
#7478 — reparse-on-materialize inside `force_materialize_lazy` (projected
770+
~1500 ms field_access from 2981 while keeping the roundtrip win). The
771+
dead ends are recorded in #7478 so they are not re-walked: batch-flip
772+
trigger tuning measured time-neutral and RSS-negative (180→213 MB);
773+
per-element merge-scope overhead measured neutral. The per-element
774+
materializer being ~2.3× the batch parser is the entire cost.
775+
776+
This workstream runs **in parallel** with the GC-correctness layers — no
777+
dependency in either direction — and is agent-delegable because every
778+
claim in it is checkable against the node oracle (`PERRY_JSON_TAPE=0/1`
779+
checksum parity).
780+
781+
**Measure on a quiet host**: a first fix attempt was reverted because
782+
host load hit 55 and its disassembly check matched an absent symbol; the
783+
sweep's own gate (≤25% CPU for 60 s, AC power) is the standard.
751784

752785
8. **CI hygiene is a correctness input, not housekeeping.** Three of four RS4GC
753786
arms had never executed (#7393). Before citing any matrix as platform

0 commit comments

Comments
 (0)