Reverts the c3aed13b parser change (frame-anchored comparative regexes +
verb-free connector + _COMPARE_POLARITY_BLOCK + 'as much'); the reader stays
on the _comparison_anchor_verb() whitelist (fail-closed). Increment 1 ships
the compiler tier + the funnel finding only.
Three reasons on record: (1) frame-anchoring converts 0 of 500 official cases
— zero measured benefit today; (2) its consumer is rate-frame admission, a
later increment — the next increment (seeding-sentence injection) is a shared
layer that doesn't touch it; (3) the polarity blocklist is fail-OPEN — an
unenumerated depletion verb in a complete frame is a coherent-but-inverted
graph = a wrong on the run-once sealed arbiter (round-trip guards parse
consistency, not gold-correctness), a trade the fail-closed doctrine never
takes for zero gain.
Verified before revert-merge: with the whitelist reader, the 5 real compare
parses are non-divergent — test_real_compare_cases_solved_wrong_zero still
sees 5, solves 5, wrong 0 (corridor real-reach 0->5/500 preserved).
Frame-anchoring recorded as an OPEN DESIGN TASK owned by the rate-frame
increment: frame + POSITIVE polarity determination (neutral-polarity allowlist
or small polarity classifier), not assume-safe-unless-blocklisted. Detail in
docs/research/compare-increment-funnel-2026-07-18.md.
Increment 1 reader half. Re-anchor the two multiplicative-comparison frame
regexes on the closed-class frame ('<factor> as many/much <unit> as <REF>')
instead of the _comparison_anchor_verb() whitelist: the verb slot becomes a
verb-free bounded connector, 'as much' joins 'as many'. Admission is now
open-class for safe verbs (scored/wrote/caught/taught/…), gated by the frame.
One closed class is NOT frame-neutral — polarity-inverting/depletion verbs
(lose/spend/give/sell/win/donate/pay/eat/drop/lend): in a compare frame they
make the compared quantity a loss, so actor=factor×reference reads backwards
→ wrong>0. _COMPARE_POLARITY_BLOCK excludes exactly that set (the sanctioned
fallback; the frame is the gate for every other verb). Pins the wrong=0
guards in test_adr_0131_G2a + test_recognizer_comparative_inject.
Develop-on-tune / measure-once held. Footprint over 500 official cases: tune
byte-identical (0 divergences, wrong=0, PARSED=3); measure 1 divergence
(0441 'Zig wrote four times as many books as Flo') which advances
frame-refusal -> question-refusal (sanctioned delta) but does not solve — the
binding wall is the shared summation-question layer. X=15 measured delta=0.
Ruling per the funnel-conditioned escalation rule: mass is in shared layers,
so the next increment is shared-layer (summation-question reader), not a
practice escalation and not more compare frames. wrong=0 held on tune (261),
measure (239), smoke (176).
Pre-registration before the shared-layer edit (PR ruling), all in the record:
1. Refusal-histogram baseline (tune, n=261): 'no injection' = 196/261 (75%) —
a SHARED bottleneck across every family, not a compare defect; 48 statement,
9 question, 3 PARSED (compare). Pinned; assert stable-or-explained after —
only sanctioned delta = compare 'no injection' -> PARSED, disclosed.
2. Funnel-conditioned escalation rule (pre-committed): X=15 miss read via the
funnel — compare-specific mass -> practice ruling; shared-layer mass ->
shared-layer design increment (NOT practice). Load-bearing: practice cannot
learn past a deterministic wall (better candidates still cross the same
pipeline), so shared bottlenecks are design work regardless of X.
3. Reframe recorded: compare is the first slice of a larger reader project
(reader parses ~1% of real GSM8K; 'no injection' 75% is a shared wall).
Not scope creep — the arc seeing its true size.
Code archaeology before treating 'no injection' as a defect: it is a DELIBERATE
narrowing, not broken code. recognizer_anchor_inject.py's discrete-count injector
refuses comparative surfaces with the explicit comment 'Refuse here until a real
compare_multiplicative operation can be emitted' (~L324) and 'does not create any
new admitting path' (~L460). The lockstep thesis of the arc in the code's own
history: the reader refused compare shapes to protect wrong=0 + ADR-0191
completeness because nothing downstream could compile them. The compiler tier
this increment shipped IS that operation -> the fix is LIFTING a now-obsolete
guard whose reason has shipped, not patching injection.
Instrument-first (PR #76 ruling): before touching the parser, measure where the
61 compare-marked TUNE cases die. Funnel: 57/61 die pre-enumeration; of those,
**45 at the injection layer** ('recognizer matched but produced no injection'),
8 'no admissible candidate for statement', 3 'expected exactly one question
sentence'; 3 solve today.
Finding: the leverage is INJECTION (45/61), not the candidate regexes (which
fire on clean clauses but the real multi-clause sentences never reach them) nor
segmentation writ large. Injection is an EMITTER, so the sanctioned fix is
making it inject compare candidates the recognizer already matches — never
loosening the round-trip gate. Fix order by measured mass: injection (45) ->
statement-admissibility (8) -> question-sentence (3). Tune-only development;
single measure run at the end with refusal-by-reason + delta.
Four amendments (Shay, #76 review) folded:
1. Summation registers-driven (NEW CODE): summation orders by program.seeds
(initial_state) today, so a compare-DEFINED register (no seed) is silently
excluded from the total — all 5 real cases are totals. Fix: sum all registers
at solve time, deterministic order (seed order then definition order);
compile-side validation admits defined entities as answer targets with unit
propagation from the reference. Pin: defined register in the certified sum.
2. Compare record spec: record identifies the reference entity + binds the
reference state digest via the existing conditional operand_source_digest
(non-compare/non-summation digests unchanged); deterministic re-verification
reconstructs the dilation's source register from records alone.
3. Tune/measure split pinned deterministically (sha256(id)-ordered) FIRST,
before any grammar work, documented + fixed in advance.
4. 'N times more than' pinned to N× as a disclosed convention; gold mismatches
tracked as recorded findings, never silent wrongs.
X = 15 ratified as the arc escalation threshold (spike §7.3 updated). §6 risks
reclassified (risk 4 -> new code §3.1; risk 1 -> pinned convention §4). Build
proceeds under this ruling — no separate re-ruling.
First increment of the reader design-first arc (dev2 spike §7). Design-first,
for ruling before build.
Ground truth (5 real holdout_dev compare parses): one entity seeded, the other
DEFINED by actor = factor x reference (Comparison, direction times/fraction);
unknown = total -> existing 2b summation closes them once compare is solvable.
Compiler tier: cross-register affine definition actor := factor x reference
(dilate reference STATE by -ln factor, write to actor register). Two new bits
designed explicitly: reads-one-register-writes-another; actor is DEFINED not
seeded (compare introduces the register). NO conservation pin (compare creates,
doesn't move — transfers conserve, compare doesn't). fraction direction folded
in; compare_additive is a later increment. Immediate effect: corridor real-reach
0/500 -> the compare parses that already exist (loop-works proof).
Reader grammar family: reader emits compare for ~5/500 (narrow phrasings);
incidence ~20% (~100/500) -> broaden compare templates; most of the delta.
Measurement: holdout_dev only, wrong=0 floor, sealed untouched, tuned/measured
DISJOINT split, delta vs X=15. Risks: 'N times more' ambiguity, garbled entity
spans, ordering, defined-register-in-summation.
Nothing built; increment PR ships after this plan is ruled on.
Supersedes the practice-loop recommendation (§7/§10): the arc is the reader,
DESIGN-FIRST — per-family increments, grammar family + compiler tier in LOCKSTEP
(§2 proves they can't move separately: the 5 real compare_multiplicative parses
die at the affine compiler today). Each increment = own smoke-gated PR with a
measured holdout_dev delta, wrong=0 floor, sealed test untouched.
- Increment order: compare_multiplicative FIRST (reader already emits it →
0/500 to >0 immediately, cheapest end-to-end proof), then §3 frequency order
(rate → fraction → compare_additive → partition).
- Escalation threshold X PROPOSED = 15 new-correct/holdout_dev per full family
increment (Shay rules with the merge); below it → practice-lane ruling.
Rationale: families carry 20-31% incidence, a paying design converts far more.
- Practice loop demoted to PAPER-DESIGN backup (§7.4) with leverage analysis:
verifier = Tier-1/2 compiler stack, audit = certificate chains, consolidation
= prepare→validate→commit generalized, hygiene = ADR-0119 sealing; genuinely
new = candidate generator + consolidation store. Four §7 constraints carry
over verbatim.
- Design-first work IS the backup's curriculum (§7.6): refusal taxonomies,
tagged incidence, labeled (parse,compile,execute,gold) tuples are artifacts.
§5 floors/scoreboard + §6 sequencing affirmed unchanged; errata merge with this.
Folds in Shay's rulings on the spike:
- ERRATA sections added to ADR-0249, ADR-0250, and both acceptance-evidence docs
(statuses stay Accepted): corpus label 'real GSM8K dev holdout' -> 'CORE-authored
GSM8K-style corpus (ADR-0119.2)'. Mechanism claims (wrong=0, PARITY, conservation,
atomicity, chain-of-custody, 200/200) all stand; reframe not retraction. Covers the
#74 review comment that repeated the label. (Also fixed ADR-0250 evidence status ->
RATIFIED, which the ratification housekeeping missed.)
- Two instruments named + never-blended scoreboard: authored = mechanism-correctness
(200/200 stands as that); official holdout = generalization (5/500 symbolic / 0/500
corridor). public/dev-1 floors relabeled MECHANISM floors, composition-disclosed.
- Censored-incidence fix: parse-INDEPENDENT tagging of 100 official cases (documented
heuristic). 70/100 carry frontier markers (rate 31, fraction 28, compare_mult 20) ->
(c) refuted, frontier COMMON not rare; the table is the reader-arc curriculum by
real-world frequency.
- Reader-practice-loop design with the four non-negotiable constraints (real held-out
data only; wrong=0 gates consolidation; sealed test untouched; holdout_dev split
disjoint from the measured metric). Sequencing: capability->practice->calibration->
serve; reader is the critical path for all three; serve-landing de-prioritized (0/500).
Spike verdict for ruling; nothing built.
Headline correction: evals/gsm8k_math/dev + public are CORE-AUTHORED GSM8K-style
(ADR-0119.2), NOT real GSM8K. The compiler's 200/200 is on authored, mostly
depth-1, frontier-free problems — a mechanism validation, not real-GSM8K
capability. ADR-0249/0250 'real GSM8K' language needs correcting.
Draw-protocol trace: train_sample + holdout_dev + sealed-test = real GSM8K
(deterministic seeded draws); dev/public = authored.
Real measurement (end-to-end on 500 real holdout_dev): Reader A parses 5/500
(1%, refuses 495); my compiler solves 0/500; the 5 parsed are all
compare_multiplicative (frontier), refused by the affine compiler. Corroborates
holdout_dev's historical 'real GSM8K capability 0%'.
Verdict: (a) DOMINANT — frontier + real GSM8K are READER-gated (99% parse-refusal);
(b) confirmed as authoring bias in dev/public; (c) refuted — frontier is common,
not rare. Sequencing: reader is the biggest bucket; more compiler tiers = capability
without inputs; serve-landing premature. Reader-practice-loop NAMED as leading
next-arc (reader = first learnable component; attempt-parse->compile->execute->
gold-check, wrong=0-gated on held-out real data; generalization-preserving).
Public-seal approved with authored-not-real + composition (depth/kinds) disclosure.
Spike verdict for ruling; nothing built.
Composition = certified turn sequences: compile problems into turn programs
of small relation-Hamiltonians chained through the Ring-2 path ledger, not
one big matrix (the ≤5-atom ceiling IS the 32-blade basis). Quantity kernel:
conformal line embedding + translator/dilator transport, verified exact
in-tree against algebra/cl41.py (dilator sign convention + projective decode
pinned). All bindings verified: ProblemHamiltonian contract, reader IRs
(MathProblemGraph, meaning_graph→to_deductive_logic), governing ADRs
(0243 §2.2/§4.2, 0244 §2.7-2.8, 0245 §2.2-2.4/§3, 0012, 0175/0191-0193),
prior art reconciled (ADR-0217 R2 front-end, field wedge INV-27 intact).
Next ADR number: 0249. Implementation P1-P5 gated on §8 rulings.
Orthogonal doc-only correction: the merged copy's Phase-4 header lacked its
DONE marker (sed pattern mismatch) and the Status line predated ratification.
[Verification]: Smoke suite passed locally (139s, 176 passed) on 31f1a824.
Claim-by-claim adjudication of the two Google Spark audit PDFs against
main @ 54659b76 (most claims closed by the 2026-07-17 waves; two
recommendations rejected as doctrine violations), plus the phased
homestretch plan (S1-S3 seams, generalized-lift instrument, ADR-0246/47/48
acceptance evidence). Source PDFs included for provenance.
A parallel session re-implemented the ADR-0241/0242 memo reference sketches
as 'production-ready' files and requested a commit, unaware the repo carries
the ratified implementations (Accepted 2026-07-15). Assessment: two genuine
defects in the memo SKETCH (index overflow; bracket-collapse ratio — now
pinned in the committed memo copy's §4 audit note), one wrong-math 'fix'
(diag[8:16] pseudo-reversion), one self-refuting verification claim (the
submitted orchestrator contains a syntax error and cannot import), and a
new module violating no-scipy-as-truth / P7-retired-polar / zero-fabrication
/ T1-T2. No live checkout was touched (verified). Recommendations: dispatch
briefs point at repo + living summary §12 before Drive docs; Accepted ADRs
get extensions, never re-implementations; unverifiable green claims are red.
[Verification]: docs-only; tree code byte-identical to gated main.
Executes the explicit in-session 'Ratify' ruling on the D10 acceptance
packet (docs/audit/adr-0241-0242-acceptance-packet-2026-07-15.md §8 ruling
record added):
- ADR-0241 status: Proposed → Accepted (P7 demote-with-proof accepted as
honest per the #19 precedent; T1/T2 serve-boundary reconciliation
ratified; chiral sign-gate enforced on the accepted state via PR #41).
- ADR-0242 status: Proposed → Accepted (memo fidelity slice closed with no
new defects; V5 anyons remain claim-quarantined/not built; V2 production
promotion stays benchmark-gated).
- CRDT determinism ruling (PR #42) ratified: single-writer bit-exact now;
CRDT behind an explicit multi-writer gate.
- Checklist header, fidelity-ledger §12 status, and living summary §12
updated to the ratified state.
Post-Accept work remains tracked (W5 backlog + packet §7 carry items);
none are conditions of this Accept.
Builds the one missing safeguard from the 4-blueprint integration audit:
the mirror-inversion protection (core_ha §5.2: sgn(∫⟨ψ I₅ ψ̃⟩₀) = const).
The chiral charge was a verified non-vacuous READOUT, but goldtether took
abs(), discarding the sign — orientation was measured, never enforced.
- core/physics/chiral_gate.py: ChiralOrientationGate latches sgn(Q) on the
first non-vacuous reading (|Q| >= 0.1 floor); a materially re-emerging
flip raises ChiralOrientationError (fail-closed; a sign flip is
unreachable under rotor transport, so it evidences corruption).
Even field-states stay vacuous — no orientation fabricated, no #19
revival; the gate is behaviorally inert on today's serve path.
- goldtether_residual now feeds the SIGNED charge to the gate; the
residual term keeps magnitude-only semantics byte-identical (pinned).
- Docs: integration-plan missing-piece row -> BUILT; fidelity ledger §12
gains the failable pin row.
TDD RED->GREEN. [Verification]: smoke suite passed locally (141s, 175
passed); gate suite 7 passed; goldtether-consumer regression 99 passed.
- Implemented design (A) for P8: odd-capable mixed-parity spinor packets
produce a strictly non-vacuous and informative chiral charge
Q = <ψ I_5 ~ψ>_0 that measures correlation between the even and odd-dual parts.
- Proved via TDD that Q is non-vacuous on mixed-parity spinors and strictly
conserved under left unitary rotor multiplication.
- Updated wave_manifold.py docstrings to clarify that while Q is structurally
vacuous for even field-states (retiring #19), it is fully functional for
general spinors.
- Flipped W4 in the fidelity scorecard to GREEN and updated ADR-0241.
- Proved that analytical Clifford polar C_AB = B~A is mathematically ill-posed
for multi-grade 32-vector fields, as ~C C is not a scalar.
- Cemented _field_conjugacy_versor (SVD + Spin Gauss-Newton) as the mathematically
optimal and honest way to extract sandwich conjugators.
- Updated ADR-0241 to demote the polar claim and favor the thin wrap.
- Updated third-door-blueprint-fidelity.md to flip W3 to GREEN (honest demotion).
- Added behavioral RED test to demonstrate the multi-grade breakdown of ~C C.
- Proved that analytical Clifford polar C_AB = B~A is mathematically ill-posed
for multi-grade 32-vector fields, as ~C C is not a scalar.
- Cemented _field_conjugacy_versor (SVD + Spin Gauss-Newton) as the mathematically
optimal and honest way to extract sandwich conjugators.
- Updated ADR-0241 to demote the polar claim and favor the thin wrap.
- Updated third-door-blueprint-fidelity.md to flip W3 to GREEN (honest demotion).
- Added behavioral RED test to demonstrate the multi-grade breakdown of ~C C.
Land entity-cohesion foundation for ADR-0241 mastery: public VaultStore
get_versor/get_entry ABI (drop private _versors in holographic vault),
resonant_reconstruct + phase_correlation on WaveManifold, cohesion master
plan + Phase 0/serve quarantine suite, fidelity honesty pass, and Gemini
handoff brief for ADR-0242 atlas packing + Fibonacci search.
Implement promotion_eligible (closed ∧ drift≤ε), promote live
closure/drift refuse even when authorized, require_proof, and
prune(mode=principal_axes) keeping primals + highest principal-energy
non-primals (differs from FIFO). Proof fields never trusted as truth.
Ledger #18 flipped green; ADR-0092 reviewer service remains external.
Finding #20 (Super-Blueprint §3.2). surprise_residual was Euclidean Gram-Schmidt
on flat 32-coefficient vectors — metric-blind (it ignored the (+,+,+,+,-)
signature and the blade grade structure), so "inside the admissible span" was
judged by the wrong geometry.
Operator math (core/physics/surprise.py):
- Exact metric-orthogonal projection: solve the normal equations G c = r
(G_ij = cga_inner(b_i,b_j), r_i = cga_inner(b_i,x)) via lstsq, under cga_inner
(32-vec) / eta (5-vec).
- Fail-closed (typed SurpriseResidualError) on a metric-degenerate span, keyed on
rank(G) < rank(B) — a null direction with no reciprocal (lone n_o). Refines the
literal "rank(G) < k": mere linear dependence among non-null columns is admitted
(lstsq projects onto the span), so a redundant live basis [1, source] and the
non-degenerate pair {n_o, n_inf} are admitted; only a lone n_o is refused. The
disclosure names the Gram null-space direction (not just zero-diagonal columns).
- Reconciled productivity polarity: productive_transfer = low Procrustes AND low
surprise (was `sur_norm >= 0.0`, always true). High surprise routes to discovery
(split follow-up). Corrects the ledger's transfer/discovery conflation.
Adversarial verification (3 independent lenses) found, and this fixes:
- HIGH soundness hole: sur_norm was the reversion pseudo-norm, which VANISHES on
a nonzero metric-null residual (the n_o/n_inf light cone) -> false-zero surprise
-> an out-of-span light-cone probe was wrongly admitted as in-span. Now the
DEFINITE (Euclidean) norm of the residual: the projection stays metric-exact,
the magnitude is 0 iff nothing is unexplained.
- HIGH regression: the analogical-transfer harness called surprise_residual
OUTSIDE its try/except, so a degenerate source crashed the whole run. Now
guarded: records a refused case and continues.
- grade-support `allowed` -> exact-nonzero (removes a spurious-leak edge under
coefficient amplification of sub-tolerance grade dust).
DiscoveryCandidate wiring into the contemplation loop is split to its own
follow-up (a distinct cross-cutting surface). Off-serving (nothing in
serving/runtime imports core.physics.*). Tests: 15 behavioral tests
(metric-vs-Euclidean divergence, null-cone regression, null refusal +
combination-degenerate disclosure, 5-vector branch, polarity); 139-test physics
sweep green; ruff clean.
The Super-Blueprint §3.3 "grade-5 pseudoscalar alignment anchor" is
mathematically vacuous in odd-dimensional Cl(4,1) and cannot be built as
specified (3-agent R&D convergence — Opus/Grok/Terra — ratified):
- I₅ is central in odd dim → V·I₅·Ṽ = ±I₅ for every versor; orientation is
invariant by construction (nothing to block).
- Field-state versors are even → F[31] ≡ 0; the gated ⟨F·F̃⟩₅ = 0 for the
source and target of every transition. The gate compares 0 == 0.
- The "even-versor parity gate" repair is equally vacuous (even subalgebra is
closed under the sandwich; odd-grade mass ≡ 0 on the sanctioned path).
Removes the namesake rather than leaving it masking an absence:
- Delete _PSEUDOSCALAR_IDX + all F[31] reads (dead `ps` history element and
CoherenceResidual.pseudoscalar — both structural zeros).
- Rename telemetry channel pseudoscalar_floor → autonomy_floor (it was always
self.floor, the earned-autonomy ceiling).
- Bump telemetry schema goldtether_coherence_v1 → v2 (shape changed).
The integrity-anchor role is subsumed by versor closure + GoldTether harmonized
residual (#24) + biography/identity holonomy. Ledger §5 rewritten with the
vacuity proof, subsumption, and the reusable "would this gate ever fire on the
sanctioned construction path?" meta-criterion.
No serving/runtime path touched (core.physics.* is off-serving). Tests: 33 pass
/ 1 xfail (Cartan #2) across goldtether + fidelity + miner + transfer suites;
ruff clean.
Master honest ledger for the ADR-0238/0239/0240 skeleton: per-operator
blueprint spec, actual landed code, precise gap, reproducible evidence, and
what 'done right' requires. Tracks follow-ups #16-#21. Replaces the Mastery
Report framing with a verifiable spec-vs-impl record.