GB-2 first increment (ADR-0178). compose_sequential() adds the structure the blunt MS-3 shapes couldn't reach: a same-unit quantity LIST sums (additive cue), and any stated comparative scales the sum (sum-then-scale, 0024-family). Op-per-step from text structure (list => add; comparative => scale); operands are text quantities (grounded) + comparative steps (cue-grounded) on the flat left-fold — no derived- intermediate model needed (running value is the intermediate). Deliberately narrow: same-unit lists only. A stated comparative is ALWAYS applied (no bare-vs-scaled self-disagreement). A product base over the same list is added WITHOUT a comparative tail purely as a disagreement-safety candidate -> a same-unit list that also carries a mult cue (ambiguous) REFUSES. Product-of-all/cross-unit products stay MS-3's job (avoids the product x comparative blowups a blunt all-bases composer produced: 0024 -> 4.3M). Clean-case capability proven: 8 tests (list-sum, sum-then-double/triple, mixed-units refuse, ambiguous-disagreement refuse, determinism). Honest practice result: 3/2/45 — NO new flips (extraction wall: real cases like 0024 extract non-uniform units '36 on' so they aren't seen as same-unit lists), 2 sealed eliminations (0037/0039: list-sum was the wrong structure -> learning signal). Coverage gated by extraction richness + cue precision, as predicted. Sealed; serving untouched. Full derivation surface 53/53; ruff clean; smoke 67. Continuation: richer relational ops (per/each->multiply, more/older->add), branch/ DAG (0033), and the extraction richness (uniform-unit extraction) that unblocks this on real cases.
55 lines
1.6 KiB
Python
55 lines
1.6 KiB
Python
"""ADR-0175 Phase 3 — grounded derivation search + self-verification gate.
|
|
|
|
Phase 3a (this surface): the self-verification gate — grounded operands ∧
|
|
grounded operation cues ∧ unit consistency ∧ uniqueness. The wrong=0-critical
|
|
guard that keeps the (Phase 3b) bounded search honest.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from generate.derivation.clauses import (
|
|
ClauseResult,
|
|
clause_local_results,
|
|
segment_clauses,
|
|
)
|
|
from generate.derivation.compose import compose_sequential
|
|
from generate.derivation.comparatives import (
|
|
ComparativeScalar,
|
|
comparative_step,
|
|
extract_comparative_scalars,
|
|
)
|
|
from generate.derivation.extract import extract_quantities
|
|
from generate.derivation.model import GroundedDerivation, Quantity, Step, VALID_OPS
|
|
from generate.derivation.multistep import search_chain
|
|
from generate.derivation.search import MULTIPLICATIVE_CUES, search_multiplicative
|
|
from generate.derivation.target import Target, extract_target
|
|
from generate.derivation.verify import (
|
|
Resolution,
|
|
SelfVerification,
|
|
select_self_verified,
|
|
self_verifies,
|
|
)
|
|
|
|
__all__ = [
|
|
"ClauseResult",
|
|
"ComparativeScalar",
|
|
"GroundedDerivation",
|
|
"MULTIPLICATIVE_CUES",
|
|
"Quantity",
|
|
"Resolution",
|
|
"SelfVerification",
|
|
"Step",
|
|
"Target",
|
|
"VALID_OPS",
|
|
"clause_local_results",
|
|
"compose_sequential",
|
|
"comparative_step",
|
|
"extract_comparative_scalars",
|
|
"extract_quantities",
|
|
"extract_target",
|
|
"search_chain",
|
|
"search_multiplicative",
|
|
"segment_clauses",
|
|
"select_self_verified",
|
|
"self_verifies",
|
|
]
|