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 # ---------------------------------------------------------------------------