feat(adr-0250): 2b certified summation turn — full GSM8K dev holdout 50/50 wrong=0 #73

Merged
core-labs merged 1 commit from feat/adr-0250-t2b-summation into main 2026-07-18 21:33:58 +00:00
Owner

Third phase of the Tier-2 arc (spike #71, T2a #72 merged). Adds the certified summation turn — and with it, the corridor now solves the entire real GSM8K dev holdout.

Headline

Tier-1 (26) + T2a single-entity (18) + summation (6) = 50/50 on the real dev holdout, wrong = 0. Pinned as a capstone test.

What it does

A total-like unknown (unknown.entity is None, "how many altogether") is no longer refused — it compiles to a certified summation over all registers. The distinction is the explicit typed signal (a None unknown the reader emitted), never an inferred op-sequence pattern. Per ruling #1 the summation stays in the substrate: each addition is a certified relaxation turn (T_v on the running accumulator), never a Python sum().

Chain of custody (Shay's Q, now implemented)

Each summation turn's operand is the decode of a certified register state, and the record carries operand_source_digest (the same psi_digest byte convention). Deterministic re-execution reproduces the state and its decode, so the Python layer cannot tamper with the intermediate value — no trusted-Python assumption. The field is added conditionally to the record payload, so the already-merged T2a (non-summation) record digests stay byte-identical.

Honest test update

The one T2a test that asserted the total-unknown refusal now asserts it sums to 8 — the behavior changed for the better (2b removes that refusal), and the test reflects it.

Governance

Off-serving (A-04); no gate activated; ratified contracts reused; conservation pin + atomicity unchanged. Every phase smoke-gated green.

Tests

tests/test_adr_0250_summation.py (new, 5) + tests/test_adr_0250_multi_register.py (11, one updated) — 16/16 green, including the full-holdout 50/50 wrong=0 capstone and the summation chain-of-custody / tamper pins.

Next

Extend the generalized-lift instrument's arithmetic-chain domain to the multi-entity subset (recorded coverage 26 → 50), then ADR-0250 (Proposed) + acceptance evidence. No self-Accept.

[Verification]: uv run python -m pytest tests/test_adr_0250_multi_register.py tests/test_adr_0250_summation.py -q → 16 passed; uv run core test --suite smoke -q → 176 passed.

Third phase of the Tier-2 arc (spike #71, T2a #72 merged). Adds the certified summation turn — and with it, the corridor now solves the **entire** real GSM8K dev holdout. ## Headline Tier-1 (26) + T2a single-entity (18) + **summation (6)** = **50/50 on the real dev holdout, wrong = 0.** Pinned as a capstone test. ## What it does A total-like unknown (`unknown.entity is None`, "how many altogether") is no longer refused — it compiles to a **certified summation over all registers**. The distinction is the explicit typed signal (a `None` unknown the reader emitted), never an inferred op-sequence pattern. Per ruling #1 the summation stays in the substrate: each addition is a certified relaxation turn (`T_v` on the running accumulator), never a Python `sum()`. ## Chain of custody (Shay's Q, now implemented) Each summation turn's operand is the decode of a **certified register state**, and the record carries `operand_source_digest` (the same `psi_digest` byte convention). Deterministic re-execution reproduces the state and its decode, so the Python layer cannot tamper with the intermediate value — no trusted-Python assumption. The field is added **conditionally** to the record payload, so the already-merged T2a (non-summation) record digests stay byte-identical. ## Honest test update The one T2a test that asserted the total-unknown *refusal* now asserts it *sums* to 8 — the behavior changed for the better (2b removes that refusal), and the test reflects it. ## Governance Off-serving (A-04); no gate activated; ratified contracts reused; conservation pin + atomicity unchanged. Every phase smoke-gated green. ## Tests `tests/test_adr_0250_summation.py` (new, 5) + `tests/test_adr_0250_multi_register.py` (11, one updated) — **16/16 green**, including the full-holdout 50/50 wrong=0 capstone and the summation chain-of-custody / tamper pins. ## Next Extend the generalized-lift instrument's `arithmetic-chain` domain to the multi-entity subset (recorded coverage 26 → 50), then ADR-0250 (Proposed) + acceptance evidence. No self-Accept. [Verification]: `uv run python -m pytest tests/test_adr_0250_multi_register.py tests/test_adr_0250_summation.py -q` → 16 passed; `uv run core test --suite smoke -q` → 176 passed.
core-labs added 1 commit 2026-07-18 21:28:55 +00:00
A total-like unknown (unknown.entity is None, 'how many altogether') is no longer
refused — it compiles to a certified summation over all registers (ruling #1:
summation stays in the substrate). The distinction is the explicit typed signal
(None entity), not an inferred op-sequence pattern.

Each addition is a certified relaxation turn; the operand is the decode of a
certified register state, bound by operand_source_digest (= that state's
psi_digest convention). Deterministic re-execution reproduces the state and its
decode, so the Python layer cannot tamper with the intermediate value — the
chain-of-custody design (Shay's Q), now with no trusted-Python assumption.
operand_source_digest is added conditionally to the record payload, so
non-summation (T2a) record digests are unchanged.

Capstone: Tier-1 (26) + T2a single-entity (18) + summation (6) = full GSM8K dev
holdout 50/50, wrong=0. The reader->Hamiltonian compiler now solves the entire
dev holdout by chained certified relaxation, zero wrong answers.

16/16 pins green (11 multi-register updated + 5 summation incl. capstone).

[Verification]: uv run python -m pytest tests/test_adr_0250_multi_register.py tests/test_adr_0250_summation.py -q
core-labs merged commit 3c3dcdbe8f into main 2026-07-18 21:33:58 +00:00
core-labs deleted branch feat/adr-0250-t2b-summation 2026-07-18 21:34:00 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: core-labs/core#73
No description provided.