CORE now decides natural-English deductive arguments end-to-end: 'If it rains then the ground is wet. It rains. Therefore the ground is wet.' -> ENTAILED, rendered over the user's own clauses. Both of ADR-0256's documented boundary cases (multiword conditional, nested- negation contraposition) are now decided; their lane gold updated declined->entailed. - generate/proof_chain/english.py (new): closed function-word grammar over OPAQUE clause-atoms (minted ids); if/then, [either] or, and, three negation forms (leading not / sentential / copular incl. contractions); typed refusals; honesty caps. Soundness: positive verdicts are substitution-closed; UNKNOWN is scoped + guarded (quantifier-led, is-a membership, unnormalizable negation refuse out of the opaque band). - render_entailment_english: verdicts quoted back verbatim; UNKNOWN phrasing explicitly scoped to the opaque reading. - chat/deduction_surface.py: v2-EN fallback tier AFTER v1/v1b — monotone widening, byte-identical on previously-served arguments. - Four en_* shape-bands EARN SERVE via the ADR-0199 arena (720/band, wrong=0, reliability 0.99087 >= 0.99); 9-band ledger re-sealed. - evals/deduction_serve/v2_en: 26 hand-authored real-English cases (content disjoint from the synthetic lexicon), wrong=0; report re-pinned. - realizer guard (ADR-0075): deduction surfaces exempt — quoted templates are not slot-composed articulations (pack 'open'=VERB was rejecting an honest quoted 'the door is not open'); pinned cold+warm in e2e. [Verification]: deductive 84 passed; smoke 180 passed; cognition 122 passed 1 skipped; arena 9x720 wrong=0 all SERVE; lanes v1 28/28, v2_en 26/26.
7.6 KiB
ADR-0257 — English-clause argument band (Band v2-EN): opaque-atom propositional serving
- Status: Proposed
- Date: 2026-07-23
- Relates to: ADR-0256 (deduction-serve earned license), ADR-0201 (ROBDD keystone), ADR-0218 (proof-carrying substrate), ADR-0175/0199 (calibrated learning / arena), ADR-0253 (dual-pack serve boundary — grc/he)
1. Context
ADR-0256 shipped the first end-to-end reasoning workflow: core chat decides
propositional and categorical arguments, flag-gated, behind an earned per-band
SERVE license. Its two documented boundary cases were natural-English inputs:
"If it rains then the ground is wet. It rains. Therefore the ground is wet."→ declined (reserved_word_in_np);"If p then q. Therefore if not q then not p."(contraposition) → declined (nested negation).
Both declines came from the SHARED comprehension reader
(generate/meaning_graph/reader.py), whose single-token atom floor and
reserved-word guard are load-bearing for seven other lanes' wrong=0. The
deductive engine itself (generate/proof_chain/entail.py) never was the
limit: it is sound+complete over arbitrary propositional structure with
opaque atoms. The gap was purely a reading band.
2. Decision
Add a dedicated English-clause argument reader
(generate/proof_chain/english.py) used ONLY by the deduction serving path,
as a fallback tier after Band v1 (propositional) and v1b (categorical):
- Whole English clauses become opaque atoms: one minted id (
a0,a1, …) per distinct normalized clause; identity is normalized exact text. Clause content is never interpreted — only quoted back in the surface. - Structure is recognized by a closed function-word grammar:
if <A> then <B>(junctions allowed on both sides),[either] <A> or <B>(n-ary), top-leveland(premise splits / conjunctive conclusions), and three negation forms — leadingnot, sententialit is not the case that, and copular<L> is|are|was|were not <R>(normalized to~atom(<L> is <R>), contractionsisn't/aren't/… expanded). - The same verified ROBDD engine decides; deterministic templates render the
verdict over the user's own clause text
(
generate/proof_chain/render.py::render_entailment_english). - Four new shape-bands —
en_conditional_single,en_conditional_chain,en_disjunctive,en_atomic— each earning its own SERVE license through the ADR-0199 arena at n=720/band, wrong=0 (sealed into the same ratified ledger; unlicensed ⇒ automatically hedged, per ADR-0256).
The shared reader is untouched. The composer tries v1/v1b first, so every previously-served argument is served byte-identically; this band only widens.
3. Why the opaque reading is sound (the load-bearing argument)
Propositional entailment is closed under uniform substitution of formulas for atoms. Therefore, for verdicts computed over opaque clause-atoms:
- ENTAILED, REFUTED, and inconsistent-premises verdicts remain true under ANY deeper reading of the clauses — refine a clause into internal structure, or identify two clauses we kept distinct, and the verdict stands. These are served at full strength.
- UNKNOWN ("doesn't settle") is the ONE verdict that is not
substitution-safe: internal clause structure this band did not read could
settle the argument. Two mitigations, both mandatory:
- Scoped phrasing — the UNKNOWN surface states its reading explicitly: "Reading each clause as one indivisible claim, your premises don't settle whether …". True of the reading, disclosed as such.
- Structural guards — clauses whose surface form ANNOUNCES structure
this band cannot read refuse out of the band entirely (typed):
quantifier-led categorical clauses (
all/no/some/every/…— a valid syllogism must never flatten into a misleading "doesn't follow"),is a|anmembership clauses (reserved for a futuremember_chainband), and unnormalizable negation (never,cannot,doesn't, … — a negation must never hide inside an opaque atom).
Genuinely ambiguous English (mixed top-level and+or, nested conditionals)
refuses rather than guessing a scope. Honesty caps (16 premises, 24 atoms)
refuse rather than truncate.
4. What the earned licenses certify
Per ADR-0256, a band's license certifies READER fidelity per shape — hence the
en_ namespace: same engine, different reader, so the English reader earns its
own record. The arena corpus is synthetic copular clauses ON PURPOSE (the
reader is content-blind; the license certifies structural fidelity); the eval
lane (evals/deduction_serve/v2_en/, 26 hand-authored REAL-English cases,
content disjoint from the synthetic lexicon) keeps that claim honest against
natural prose — the synthetic-corpus-overfit lesson applied in design.
Corpus gold is authored by construction and cross-checked against the independent truth-table oracle with NO reader in the loop (the template's intended logical form is checked directly) — stronger independence than the v1 path, INV-25 preserved.
5. Tri-language extension contract (grc / he)
CORE's three foundational languages are a capability asset precisely where English is structurally weak, and this band is built to receive them:
- What is language-neutral (reused as-is): the opaque-atom table, the substitution-soundness argument (§3), the caps, the refusal discipline, the license machinery, the engine. None of it knows English.
- What is language-specific (the thin layer a sibling band replaces): the
structural lexicon (
if/then/or/and/not/either/therefore, copulas, contractions, quantifier leads) and the clause-order conventions. - Honest wrinkle, recorded so we don't build a hollow abstraction: a pure
lexicon swap does NOT read real Greek — ἄρα is postpositive (second
position), and case-driven word order changes clause segmentation. A
grc_*/he_*band is a sibling reader module + its own earned licenses, entering through pack ratification (ADR-0253: draft he/grc trees are not serve imports). No premature parameterization is introduced now. - The trigger (per the ratified pack-expansion doctrine): when en-band
refusal telemetry shifts from mechanism (
ambiguous_and_or— English genuinely ambiguous) to coverage, that is the evidence that the morphologically explicit languages pay — they read cleanly exactly where English refuses.
6. Scope-outs (deliberate)
member_chainband (membership + quantified premises — "Socrates is a man. All men are mortal. Therefore Socrates is mortal."): guarded out (membership_shape_out_of_band), reserved as the next band; needs a per-individual propositional lowering (same pattern asgenerate/proof_chain/categorical.py).- Verb-phrase negation de-conjugation ("doesn't start" → "starts"):
refuses today (
internal_negation_unread); English morphology work, or the tri-language path (§5). - Proof-step recap in the surface: unchanged from ADR-0256 scope-out.
- Flag posture unchanged: the band rides
deduction_serving_enabled(default off); no new flag.
7. Verification
uv run core test --suite deductive -q— 83 passed (reader contract, surfaces, license, both lane splits, e2e throughChatRuntime).- Practice arena: 9 bands × 720 = 6,480 cases, wrong=0, every band
reliability 0.99087 ≥ θ_SERVE=0.99 → SERVE licensed; ledger re-sealed
(
chat/data/deduction_serve_ledger.json, self-verifyingcontent_sha256). - Eval lane: v1 28/28 (the two former boundary declines now decided —
entailed), v2_en 26/26, wrong=0; report re-pinned
(
scripts/verify_lane_shas.py::deduction_serve_v1).