From 5dd6180308ec64ac61347d007c55acd85f226e5a Mon Sep 17 00:00:00 2001 From: Shay Date: Fri, 24 Jul 2026 16:05:11 -0700 Subject: [PATCH] =?UTF-8?q?chore(config):=20RATIFY=20deduction=5Fserving?= =?UTF-8?q?=5Fenabled=20=E2=80=94=20default=20ON=20(ADR-0256)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ratified by Shay 2026-07-24. Default flipped False -> True. Evidence at ratification: - 25 shape-bands, each holding SERVE at 720/720 wrong=0 on the SHA-sealed ratified ledger (theta_SERVE=0.99, n >= 657 committed per band); - deduction-serve lane 166/166 wrong=0 across six hand-authored splits; - commit gate narrow by construction — a sentence-initial "therefore" IS an argument, so the composer cannot claim turns that are not one; - an unearned shape is still served DISCLOSED, never asserted. Blast radius verified, not assumed: core test --suite deductive 268 passed with the flag ON by default; a live default-config ChatRuntime decides real English and existential arguments through grounding_source="deduction" while ordinary turns still fall through to pack grounding; lane pins 10/11 match — unchanged by the flip (the single miss is the pre-existing public_demo drift documented for Tier S). Rollback is flipping this back: flag-off remains byte-identical to pre-arc dispatch and leaves no residue, pinned by test_flag_off_preserves_pack_token_gloss_byte_identity. curriculum_serving_enabled stays OFF — every curriculum band is unearned, and the Sonnet brief now records the explicit bar for revisiting it. --- core/config.py | 14 ++++++++++++-- .../BRIEF-S-sonnet-low-tier.md | 13 ++++++++++++- tests/test_deduction_surface.py | 16 +++++++++++----- 3 files changed, 35 insertions(+), 8 deletions(-) diff --git a/core/config.py b/core/config.py index 30ce8c18..2aafa6a9 100644 --- a/core/config.py +++ b/core/config.py @@ -383,8 +383,18 @@ class RuntimeConfig: # argument is served AUTHORITATIVELY only when its shape-band holds a SERVE # license on the committed, SHA-sealed reliability ledger # (chat/deduction_serve_license); an unearned band is served DISCLOSED - # (hedged). OFF by default: flag-off is byte-identical to pre-arc dispatch. - deduction_serving_enabled: bool = False + # (hedged). + # + # RATIFIED ON 2026-07-24 by Shay — default flipped False -> True. The + # evidence at ratification: 25 shape-bands each holding SERVE at 720/720 + # wrong=0 on the SHA-sealed ledger (theta_SERVE=0.99, n >= 657 committed), + # the deduction-serve lane at 166/166 wrong=0 across six hand-authored + # splits, and a commit gate (`looks_like_deductive_argument`) narrow by + # construction — a sentence-initial "therefore" IS an argument, so the + # composer cannot claim turns that are not. Rollback is flipping this back: + # flag-off remains byte-identical to pre-arc dispatch and leaves no residue + # (pinned by ``test_flag_off_preserves_pack_token_gloss_byte_identity``). + deduction_serving_enabled: bool = True # Generalization arc, Phase 2 (ADR-0262) — when on, ``chat/curriculum_surface.py`` # answers exam-shaped polar questions ("Does force cause acceleration?") from the diff --git a/docs/handoff/generalization-2026-07/BRIEF-S-sonnet-low-tier.md b/docs/handoff/generalization-2026-07/BRIEF-S-sonnet-low-tier.md index aa4d6ced..040bf8fb 100644 --- a/docs/handoff/generalization-2026-07/BRIEF-S-sonnet-low-tier.md +++ b/docs/handoff/generalization-2026-07/BRIEF-S-sonnet-low-tier.md @@ -56,7 +56,18 @@ commit; push when the server is repaired. `docs/research/math-reader-phase-4-1-status-2026-07-24.md`. Phase 4 should be re-pointed at the reader arc's own live recommendation (increment-2 case-first on cases 0000/0001/0148/0082). -3. **No curriculum band can earn a SERVE license from present data.** A band +3. **`deduction_serving_enabled` is RATIFIED and ON** (2026-07-24). Flag-off + byte-identity is still pinned, so rollback stays one line with no residue. + S1's packet is now a *record* of that decision plus the standing evidence, + not an input to it. + **`curriculum_serving_enabled` stays OFF until verified.** The bar is + explicit: a `(subject × relation family)` band earning SERVE on the sealed + ledger — n≥657 committed with a genuine outcome mix. NOTHING in Tier S + closes that; it closes only when ratified curriculum content grows (see + S6). Do not flip it, and do not propose flipping it on "almost verified" + grounds — the bands are at ZERO earned, not near a threshold. + +4. **No curriculum band can earn a SERVE license from present data.** A band needs n≥657 with a real outcome mix; physics teaches 7 causal + 9 modal relations, so at most 16 questions in the whole subject can ever come back ENTAILED. A balanced band needs ≈219 taught relations per subject × family. diff --git a/tests/test_deduction_surface.py b/tests/test_deduction_surface.py index 94052766..a8ce5105 100644 --- a/tests/test_deduction_surface.py +++ b/tests/test_deduction_surface.py @@ -2,9 +2,11 @@ The contract these tests pin: - - ``deduction_serving_enabled`` is OFF by default; flag-off ``chat()`` - output is byte-identical to pre-arc behavior for argument-shaped text - (the pack-token-gloss fallback, unchanged). + - ``deduction_serving_enabled`` is ON by default since its ratification + (2026-07-24); flag-OFF ``chat()`` output remains byte-identical to + pre-arc behavior for argument-shaped text (the pack-token-gloss + fallback, unchanged), which is what keeps rollback a one-line, no-residue + operation. - Flag-on: a sentence-initial "therefore" conclusion clause commits the turn to ``chat/deduction_surface.py``; every committed turn returns a surface (never a silent fall-through to a different composer). @@ -310,8 +312,12 @@ def test_flag_off_preserves_pack_token_gloss_byte_identity() -> None: assert "Pack-resident tokens" in resp.surface -def test_flag_is_off_by_default() -> None: - assert RuntimeConfig().deduction_serving_enabled is False +def test_flag_is_on_by_default_after_ratification() -> None: + """RATIFIED 2026-07-24 (ADR-0256): the default flipped False -> True on 25 + bands at 720/720 wrong=0 and a 166/166 serve lane. The off-path above stays + pinned because rollback must remain byte-identical, not because it is the + default.""" + assert RuntimeConfig().deduction_serving_enabled is True # ---------------------------------------------------------------------------