clay-borg/history/260731-game-kernel-response.md

82 lines
4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 2026-07-31 — response to adversarial challenge: CB-RES-0001 (T04)
One round, per InnerLoop §Step 2. Each finding answered with evidence or
conceded. New measurements were run before answering B1/S1/S4; harness
gained `--disable-undo` and `--single-run` flags.
## B1 (blocking) — "architectural, not a tuning artifact": **partially conceded, empirically resolved**
The reviewer was right that the claim was untested and the `disableUndo`
flag unacknowledged. We reran the harness both ways:
| moves | with undo (moves/s) | disableUndo (moves/s) |
|---:|---:|---:|
| 5,000 | 1,4391,930* | 1,118 |
| 10,000 | 1,605 | 1,076 |
| 20,000 | 870 | 942 |
| 40,000 | — | 733 |
| 100,000 | DNF @300 s | **DNF @240 s** |
\* run-to-run variance on this machine is large (1,930 vs 1,439 for the
same config); now noted in the survey's risks.
Verdict on the finding: the undo stack **is** the dominant superlinear term
at small N (concede: it is a documented one-line flag, and the original
"not a tuning artifact" sentence was an overclaim — retracted). But
degradation **persists with undo disabled** (34% from 5k→40k, RSS
100→232 MB, and 100k still does not finish), consistent with the client's
unbounded redux log/deltalog, which has no client-side off switch in
0.50.2. The survey now reports both datasets and attributes the two
mechanisms separately. The D3-scaling row is restated against the
disableUndo (best-case) configuration: 0.66× at 40k vs 5k.
## S1 (significant) — memory methodology: **conceded, fixed**
`--single-run` mode now measures RSS immediately after the main run in a
fresh process with no warmup/determinism clients. New indicative figures:
100 MB RSS after 5k moves (disableUndo, isolated) rising to 232 MB after
40k. The old 224 MB row is withdrawn; memory rows are labeled *indicative*
(raw RSS includes Node baseline; heap delta not isolated).
## S2 (significant) — omitted candidates: **conceded, added**
OpenSpiel and Ludii added as cited candidates; BGA Studio and Colyseus
added as one-line secondary references. The verdict's "what none of them
do" paragraph was re-checked against OpenSpiel specifically and reworded:
OpenSpiel *does* cover simultaneous-move + imperfect-information semantics
with deterministic replay via action histories — what it lacks is the
production layer (client visibility projections, networking, snapshots,
embeddable boundary), and that is now stated precisely instead of the
blanket claim.
## S3 (significant) — unsourced D3 ceiling: **conceded, relabeled**
The 10⁵10⁶ events/s range stays as an *estimate* flag, and the headline
≥100k events/s + flat-scaling figure is now explicitly labeled a
**stipulated engineering target**, not a competitor-derived baseline. A
measured Rust comparator remains an open follow-up (noted in the survey);
until then, parity-cap applies to any evidence row leaning on that number.
## S4 (significant) — `updatePlayerID` in the timed loop: **answered with a control**
Measured in isolation: ~466,000 calls/s (~2 µs/call) vs ~5001,100 µs per
applied move — contamination < 0.5%. Left in the loop (it is part of
driving multi-player turns through one client); provenance note added.
## M1M4 (minor) — all conceded
- M1: traceability row demoted from baseline table to an observation.
- M2: LOC corrected to ~36 and marked gameable/secondary.
- M3: provenance now states hidden-info (`playerView`) and hand depletion
are unexercised by the workload; commit/reveal shape only.
- M4: maturity figures kept with the npm-checkable fact primary.
## Net effect on the survey
Status remains draft **approved** (per this round's disposition:
"approvable with corrections", all corrections applied). The central
comparative conclusions survive: boardgame.io is the closest semantic
comparator but inactive, heavyweight for what it does, and degrades with
history even in its best configuration; the surpass opportunity is the
combination of production projection/networking, flat-cost replay, and an
embeddable boundary now stated with OpenSpiel explicitly in view.