From 3587d5c4d731943514fa8310aeb6f5e5e1d3ceaf Mon Sep 17 00:00:00 2001 From: Shay Date: Sat, 23 May 2026 15:29:17 -0700 Subject: [PATCH] fix: migrate missed _resolve_value callsites in _build_compare_additive + dual-unit extractor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Two remaining sites that used _resolve_value() as a raw numeric operand: 1. _build_compare_additive (line 924): `delta_value = _resolve_value(delta_value_raw)` passed a _ResolvedValue to Quantity, swallowed by the try/except — caused 7 G.2 additive-comparative tests to silently return zero candidates. 2. Dual-unit initial extractor (line 1385): `_resolve_value(value_raw).value` with type: ignore — replaced with explicit rv = ...; if rv is None: return [] pattern for clarity. Regenerates G2 comparatives report.json (24/24 pass, wrong=0 unchanged). --- generate/math_candidate_parser.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/generate/math_candidate_parser.py b/generate/math_candidate_parser.py index 448090d3..fbb58300 100644 --- a/generate/math_candidate_parser.py +++ b/generate/math_candidate_parser.py @@ -921,8 +921,11 @@ def _build_compare_additive( reference_canon, reference_head = _resolve_reference_token(reference_raw) if reference_canon == actor: return None # self-reference; constructor would refuse anyway - delta_value = _resolve_value(delta_value_raw) - unit = _canonicalize_unit(unit_raw) + rv = _resolve_value(delta_value_raw) + if rv is None: + return None + delta_value = rv.value + unit = rv.unit_override if rv.unit_override is not None else _canonicalize_unit(unit_raw) try: op = Operation( actor=actor, @@ -1377,12 +1380,15 @@ def _conj_object_candidates(sentence: str) -> list[CandidateInitial]: (v1_raw, u1_raw, u1), (v2_raw, u2_raw, u2), ): + rv = _resolve_value(value_raw) + if rv is None: + return [] try: out.append( CandidateInitial( initial=InitialPossession( entity=entity, - quantity=Quantity(value=_resolve_value(value_raw).value, unit=unit), # type: ignore[union-attr] + quantity=Quantity(value=rv.value, unit=unit), ), source_span=sentence, matched_anchor=anchor,