core/generate/derivation
Shay 4ecc17c5ec feat(adr-0176-ms1): question-targeting
MS-1 of multi-step composition. Turns the question into a Target = what the
problem asks for, the search's pruning signal + stopping criterion (MS-3).

Lexeme-level only (ADR-0165): the existing question parser returns nothing on
these GSM8K questions, and 0165 forbids new question-shape grammar regex. Three
robust signals:
- quantities: numbers stated IN the question (0033's 'when she is 25') via the
  body's lexeme extractor — they participate in the derivation.
- aggregation: presence of an aggregation lexeme (total/altogether/combined/sum/
  'in all'/'in total') — soft hint the final step is a sum.
- units: asked units resolved by INTERSECTION with the body's known units
  (precise lexeme match, e.g. 'jumping'). Superordinates (weight<->pounds) are
  NOT faked — deferred to a curated superordinate-units pack; until then the unit
  signal is precise-but-incomplete and the search leans on completeness.

Refuse-preferring: empty target field is not an error, just a weaker prune.
generate/derivation/target.py: Target + extract_target(question, known_units=()).

12 MS-1 tests (question-quantity, aggregation, body-unit intersection,
superordinate-not-faked, determinism, frozen). Verified: derivation suite 57/57;
ruff clean; smoke 67. Not wired into serving (Target ready for MS-2/MS-3).
2026-05-28 16:21:40 -07:00
..
__init__.py feat(adr-0176-ms1): question-targeting 2026-05-28 16:21:40 -07:00
comparatives.py feat(adr-0176): en_core_comparatives_v1 pack + comparative-scalar extraction 2026-05-28 16:07:35 -07:00
extract.py feat(adr-0175-phase3b): bounded multiplicative search in the sealed practice lane 2026-05-28 15:29:08 -07:00
model.py feat(adr-0175-phase3a): self-verification gate (built before the search) 2026-05-28 15:19:02 -07:00
search.py feat(adr-0175-phase3b): bounded multiplicative search in the sealed practice lane 2026-05-28 15:29:08 -07:00
target.py feat(adr-0176-ms1): question-targeting 2026-05-28 16:21:40 -07:00
verify.py Update generate/derivation/verify.py 2026-05-28 15:57:04 -07:00