core/docs/analysis/gsm8k-capability-strike-batch2-lookback-2026-06-17.md
Shay 708f27a240
feat(derivation): capability strike batch 2 bracelet-yield lift (#811)
* feat(derivation): capability strike batch 2 bracelet-yield lift

Gate A2c adds container_of_product composition for "N bags of M unit"
acquisition statements and yield_question binding that injects unit_partition
from a conditional per-unit rate clause. Live ephemeral train_sample moves
7/43/0 → 8/42/0 with wrong=0 preserved; case 0008 admitted.

* chore(derivation): normalize A2c test formatting

* chore(analysis): normalize batch2 lookback EOF

* test(derivation): guard A2c pronoun ambiguity
2026-06-17 19:32:42 -07:00

2.3 KiB

GSM8K Capability Strike Batch 2 — Lookback (2026-06-17)

Selected target

  • Primary case: gsm8k-train-sample-v1-0008 (Marnie bead bracelets)
  • Family: container_of_product (stmt) + yield_question (question) composing into existing unit_partition

Before / after (live ephemeral)

Metric Before (#810) After (this branch)
correct 7 8
refused 43 42
wrong 0 0

Newly admitted: 0008
Preserved admissions: 0002, 0014, 0018, 0024, 0029, 0038, 0042

Implementation slice

  1. _bags_of_product_candidatesN <container> of M <unit> under closed acquisition verbs; conjoined sum when units match.
  2. _pattern_yield_question_candidateshow many <product> will <entity> be able to make with rate inferred from If N <unit> are used to make one <product>.
  3. CandidateUnknown yield fields — graph-build injects unit_partition (reuses Gate A2a solver path; no new op kind).
  4. _bind_parser_pronoun_actor — extended to bind pronoun entities on CandidateInitial (She → Marnie via discourse prior).

Anti-overfit evidence

  • Sibling synthetics: Tom/marbles→displays (6), Alice/coins→charms (5).
  • Confusers refuse: mismatched conjunct units, missing rate clause, product/rate mismatch, non-integer quotient.
  • Regression: 0042 embedded-quantifier conditional-op path still admits 30.
  • No case-id branches; no hardcoded answers.

Hazards reviewed

Hazard Mitigation
Confuse bags-of with embedded-quantifier (in each) Separate regex; 0042 regression test
Ingredient vs product count unit_partition requires exact integer quotient; mismatched units refuse
Pronoun entity vs question entity Discourse binding on initials + named entity in question
Completeness false-positive on "one" Rate tokens (n, "one") on question candidate

Non-goals

  • report.json untouched
  • Sealed lanes untouched
  • No determine() / FrameVerdict paths
  • No broad DCS widening

Files changed

  • generate/math_candidate_parser.py
  • generate/math_candidate_graph.py
  • tests/test_math_candidate_graph_container_of_product.py (new)
  • tests/test_gsm8k_post_gate_a1_frontier_microscope.py (live-count fixture update)