Tightens the ADR-0250 increment 2 multi-word phrase grounding relaxation to verify that the matched words appear as a contiguous substring in the original source, preserving the strict wrong=0 gate while admitting the 0148 conversion. Includes graph dump as proof of conversion.
Commits the WIP parser integration and recognizer logic left by previous session. Updates graph logic, refusal taxonomy filters, roundtrip token matching, and recognizer_match patterns to formally support mass-noun comparatives.
Passes exact holdout_dev/v1 261-case measurement and full smoke validation.
Updates has_numeric_token to preserve comparative sentences containing only multiplier anchors like 'twice' by adding _COMPARE_MULT_ANCHOR_TOKENS_RE.
Updates _COMPARE_MASSNOUN_RE to allow an optional prepositional prefix before the subject.
Increment 2, target 0148. _COMPARE_MASSNOUN_RE + wiring in
_compare_multiplicative_candidates: 'the [total] number of <unit> counted on
<A> was twice the total number counted on <B>' -> A = factor x B. Verified:
extracts 0148's statement correctly (actor='the first day', ref='the second
day', factor=2.0, forward); fail-closed (additive 'N more than' -> 0 cands;
off-shape -> 0 cands; possessive frame unaffected). Regression-safe: 76
comparative/compare/q-diff tests pass, tune wrong=0 PARSED=3.
NOT yet converting 0148: discovered parse_and_solve parses these day-entity
sentences via a DIFFERENT reader path (produces title-case 'First Day'/'Second
Day' entities) — both extract_operation_candidates + extract_initial_candidates
return [] for the possessive compare + seed, yet the full reader solves rung-1.
Next: locate that path, wire the mass-noun frame into it with matching entity
canonicalization; then passive-seed + prepositional-lead; then the 3-part proof.