# ADR-0136.S.3 — Compound Initial-Mutation Extractor **Status:** Accepted — *regex patterns scheduled for removal under [ADR-0164](./ADR-0164-incremental-comprehension-reader.md) Phase 3; closed-set vocabulary preserved as lexicon seed* **Parent:** ADR-0136 (Statement Layer Corridor) — see [ADR-0136 §Amendment 2026-05-26](./ADR-0136-statement-layer-corridor.md) **Date:** 2026-05-23 ## Context The v2 refusal taxonomy (ADR-0136.S.2) identified 6 cases with `compound_statement` as primary barrier. These cases contain two operations fused into a single sentence. S.3 targets exactly one canonical shape — the initial-mutation form: ``` had [initially], but [then] . ``` This is the simplest compound shape: a single derived `InitialPossession(entity, N ± M, unit)` candidate, same topology as `_CONJ_EMBEDDED_RE`'s SUM-emission pattern. Other compound shapes (fraction-of-remainder, percentage-of, age-multiplier, verb-conjunction) are structurally different and out of scope. ## Decision ### One shape, not "all of compound_statement" The 6 compound_statement cases represent at least 5 distinct structural shapes. S.3 ships one extractor for the initial-mutation form only. Bundling multiple shapes would conflate distinct parser risks and violate the one-shape-per-PR discipline. ### Closed verb sets Past-tense only (the "had N, but then verb M" form requires past tense): **Subtract:** lost, gave, gave away, used, spent, ate, dropped, sold **Add:** gained, got, received, found, earned, picked up, bought No wildcards. Verbs not in either set cause the sentence to refuse (not wrong). ### No short-circuit path Per ADR-0137's subsumption directive, the extractor produces a `CandidateInitial` that flows through the existing graph machinery. No new bypass route was added. ### Negative-result refusal If N - M < 0, the extractor refuses. Emitting a negative quantity would violate the solver's non-negative invariant. ## Per-Case Impact | Case | v2 Barrier | S.3 Effect | Post-S.3 Barrier | Why | |---|---|---|---|---| | 0010 | compound_statement | **Shifted** | fraction_operand | Sentence 1 now parses (Yun, 8, paperclips); sentence 2 "1/4 more than" blocks | | 0012 | compound_statement | No change | compound_statement | "his fish ate half of them" = compound + fraction + coreference | | 0013 | compound_statement | No change | compound_statement | "uploads 10 one-hour videos each day" = nested embedded quantifier | | 0016 | compound_statement | No change | compound_statement | "2 more than 5 miles" = comparative arithmetic, not init-mutation | | 0032 | compound_statement | No change | compound_statement | "draws and colors 10 pictures" = verb conjunction, not init-mutation | | 0033 | compound_statement | No change | compound_statement | "7 times her age" = multiplier, not init-mutation | ## GSM8K Admission Count | Metric | Pre-S.3 | Post-S.3 | |---|---|---| | Admitted (correct) | 3 | 3 | | Wrong | 0 | 0 | | Refused | 47 | 47 | | Barrier shifted (v2 → v3) | — | 1 (gsm8k-0010) | Direct admission delta: **0**. gsm8k-0010's sentence 1 now extracts cleanly but sentence 2's fraction_operand blocks the case from admitting. ## Axis Lane 24 curated cases at `evals/math_capability_axes/S3_compound_initial_mutation/v1/`: | Category | Count | Gate | |---|---|---| | subtract_canonical | 4 | answer == expected | | subtract_synonym | 7 | answer == expected | | add_canonical | 4 | answer == expected | | add_synonym | 5 | answer == expected | | refusal_negative_result | 2 | answer is None | | refusal_verb_miss | 2 | answer is None | All 24 pass, wrong = 0. ## Cross-Lane Regression - S.1 rate_events: 20/20 pass, wrong = 0 - S.3 axis lane: 24/24 pass, wrong = 0 - GSM8K admission set: {0014, 0018, 0042} (unchanged) ## Deferred Every other compound shape from the 6 cases: - **0012**: "his fish ate half of them" — compound + fraction + coreference - **0013**: "uploads 10 one-hour videos each day" — nested embedded quantifier + temporal - **0016**: "2 more than 5 miles" — comparative arithmetic expression - **0032**: "draws and colors 10 pictures" — verb conjunction (single object, multiple verbs) - **0033**: "7 times her age" — age-multiplier compound ## Evidence - Parser addition: `generate/math_candidate_parser.py` (`_INIT_MUTATION_RE`, `_init_mutation_candidates`) - Axis lane: `evals/math_capability_axes/S3_compound_initial_mutation/v1/` - Tests: `tests/test_adr_0136_S3_compound_initial_mutation.py`