Ultra-review: muse-stability math/physics review docs
Reviewer: claude-reviewer. Date: 2026-10-21.
Method: the /ultra-review chain, adapted for documents and pinned to sha256 hashes rather than a git commit (the files are untracked in the repo root):
6 perspective finders (evidence, math, scope, transfer, priority, omissions), then a dedup pass, then 1 adversarial refuter per finding, then a synthesis.
24 agents in total; 0 errors.
This is stage 1 only, a same-family (Claude) review. It is not a cross-family verdict. Stages 2 and 3 (the cross-family swarm) were not run, and on this Mac they reach only 2 families.
Subject (pins verified):
MATH-PHYSICS-CRITICAL-REVIEW-2026-10-21.mdsha256 46e039810813e2aac863a00f73f0dfa2ce406adac4b2ca2cc30ce339f3bd18a8MATH-PHYSICS-SCOPED-ANALYSIS-S1-S6-2026-10-21.mdsha256 0eb6d170d678bc1659d4a106dc5c89072973bab00b4d85bd29d9230c4ffba8d4
Triage (actual counts):
- 42 findings raised; 24 unique after dedup.
- 16 sent to verification (cap 16): 16 confirmed, 0 refuted.
- 8 were not verified because of the cap. They are retained in the raw result and are not relied on below unless I checked them myself.
Full raw result: ~/.cache/claude-scratch/ultra-review-docs-result.json.
Workflow journal: wf_f9aeac71-b4a.
Verdict on the docs
The useful lessons are real, but the headline "all six validated with line-level evidence — 3 present / 2 gaps / 1 deferred" is not supported as written:
- S2 (poker) has no code evidence. It says "source out of reach", but the poker source is on disk:
learning-games/matiz/table.js,matiz/engine.js. - The deferred item is S5, not S2.
- The scoped doc's own synthesis lists five gaps, not two.
- S6 was swapped. The parent document asked for a substrate register. S6 delivered a vmath
require()observation instead, so the register was never produced. - S1 and S4 were only partly delivered.
- The ANN open-work picture is out of date.
ANN-E3-DIAGNOSTIC-FULLSHAPE-PROBE.v1already ran the real JS producer at full shape. It matched the frozen NumPy reference (MATCH at about 3e-14 against a 1e-10 tolerance) and covered: - ties;
- partial masks;
- zero mass;
- the [2000,0,5] underflow case.
So "M2 needs estate compute" and "M1/L1 open" should be re-baselined.
Checked by me: the probe directory exists and NUMPY-RESULT.json contains 5 MATCH entries.
These are advisory docs, and nothing in code is broken by them. The tally is a delivery-honesty overclaim, and it should be corrected before anyone relies on it.
Key areas of focus to take forward (ranked)
1. ANN: substrate and clock-domain admission for the successor run
This is the substrate register the parent document asked for and S6 never delivered. It is the one live failure class here: run 87952 died on substrate, through a battery sleep and a sleep-excluding uptime clock.
Next steps, all before admission:
- close sensor fix A1 (the "AC power but discharging" case is accepted as on AC);
- state each budget's clock domain and suspend semantics;
- record both clocks and add the INFRA_SUSPEND class;
- add the AC and disk preflight.
All of this goes into the existing successor packet, not a new lane.
Owner: the Codex ANN recovery lane; claude-reviewer reads back.
Tracked: partly, in the 8879 review (A1) and the operator receipt.
2. ANN: re-baseline the numerics; the real open items are the actual-data readback and F1
The full-shape probe closes M1, M2 and L1 synthetically. Two items remain open:
- (a) the persisted readback of the 15 actual initializations;
- (b) the F1 legacy actual-data fit path (
persistE3Preparation/runPreparedE3Arm/runPreparedE3Campaign), which must be refused or gated, with a negative test.
Item (a) runs after item 1, on powered compute.
3. ANN: variance cancellation, where the risk is |mean|/std, not n·ε
e3-diagnostic-reference-v1.py:109 computes std as sqrt(E[z²] − mean²).
My own check: n = 1,198,080, σ = 0.83, sequential summation (as in JS), compared with an exact two-pass result. The error grows with the mean, and the tolerance is about 1.83e-10 throughout:
| mean (μ) | error |
|---|---|
| 0 | 3.0e-15 |
| 10 | 3.1e-12 |
| 100 | 1.44e-10 (at the tolerance) |
| 1000 | 8.6e-9 (about 47× over) |
The workflow's "6e-8 to 9e-8" overstates the size, but its conclusion stands. The full-shape probe stressed only small means.
Fix:
- use two-pass or Welford variance in both the producer and the reference, or add a guard on |mean|/std;
- add one large-mean synthetic panel;
- keep 1e-10 fixed and never widen it after a mismatch.
4. Poker: selection fails open, and equity is non-deterministic
Checked by me: learning-games/matiz/table.js:290-298. sample() returns a uniformly random legal action whenever the legal mass is not > 0, so NaN or −∞ inputs make the bot play randomly with no signal.
matiz/engine.js:117-137: equity() defaults to an unseeded Math.random. The doc's L1 "argmax tie" probe does not apply, because poker samples from the distribution and never takes an argmax.
Next steps:
- make selection fail closed and log non-finite or zero-mass inputs, with tests for NaN, −∞ and [2000,0,5];
- add a seeded rng with a same-seed-twice test for
equity(); - echo the tolerance wherever equity is compared.
Record these in the poker versioned-benchmark track.
5. Correct the docs' record before relying on them
This is for muse-stability:
- Replace the headline with a per-item table: requested / delivered / evidence / open.
- Mark S6 (the substrate register) as not started; it feeds focus item 1.
- Cite the full-shape probe and the harness register IDs.
- Move the PW14 and bridge cells under Games.
- Save the smoke command, its exit code and the vmath sha256 to durable disk, not
/tmp. - State the panel's family mix.
6. Master Mind: fold S3, S4 and S6 into the existing harness register; no new lanes
- S3: the sink file list and the
+=regex gap already sit under K1 / H32 / N03 / K3. - S4: the kit2 quarantine latch and its tests already exist. The only new case is: remove the newer save, retry in the same visit, and stay refused, plus the player-switch flag reset. It goes under H42 / N05, at P3.
- vmath: add a note under H44 (orphaned module: fix the header or rename it to
.cjs).of()must refuse unsafe or non-decimal Numbers before vmath is used as a model for a float-free ledger.
7. Cross-cutting: discipline for determinism and evidence
The same weakness shows up in all three programs:
- MM H02 (P1) produced a false pipeline pass;
- poker
equity()is unseeded; - this review's own smoke evidence was saved only in
/tmp.
Every gate that consumes randomness or time needs:
- a pinned seed or clock;
- a same-seed-twice check;
- the command, exit code and input digest saved to durable disk.
Apply this first to MM H02 and the poker equity tests.
Deprioritise
- Running the M2 at-scale probe on estate compute. The full shape is already MATCH; run only the large-mean panel, and only behind items 1 and 2.
- The poker argmax-tie probe. Replace it with the
sample()fail-closed check. - New S1–S6 claim lanes, a new S20 expansion gate, or a fourth tracker. Route each item to the ANN packets, the MM harness register or the poker benchmark track.
- Calling the F2 tamper-restore test a new top gate. It is one P3 probe case.
- Refining the L2 sign-flip estimate, or recounting copies of the reference script. Both are cosmetic.
- Nothing in this review displaces MM P1 kid-safety work (H04–H07) or r8g/C3 (H11/H12). Those stay ahead.
Residual risk
- Single-family review.
- 8 findings over the cap were not verified.
- The poker and ANN fixes are proposals only; nothing was run against the live programs.
Follow-through (operator request: update the documents)
Both reviewed docs were revised in place as revision 2, applying the findings above, with muse-stability kept as the author:
MATH-PHYSICS-CRITICAL-REVIEW-2026-10-21.mdsha256 6e86727e9429b22f065c9c4c0ab92a7fe174961f5326244c31c8a936028332b2MATH-PHYSICS-SCOPED-ANALYSIS-S1-S6-2026-10-21.mdsha256 b9da5f1c094f851fc2981a5bef47324ad1bbe4d69eb3522498e5e4412359d68a
Revision 1 originals are archived at ~/.cache/claude-scratch/MATH-PHYSICS-*-2026-10-21.v1-<sha8>.md.