mirror of
https://github.com/MBombeck/HealthLog.git
synced 2026-11-14 22:50:51 +00:00
Replace the untyped magnitude bag in the Coach numeric verifier with a typed tokenizer and a normal-form reconciler, and narrow the outbound risk and dose banks so correct figures and correct refusals stop being blocked while every fabrication shape still blocks. Grounding verifier (coach-prose-grounding.ts): - Classify each prose number before grading — ISO/written dates, clock times, bare years, ordinals, list markers, hyphenated time spans, ranges, percents, thousands-separated integers, unit-suffixed measurements. Benign types are never graded or stripped; ranges decompose into per-endpoint magnitudes. - Grade against typed authoritative entries (value + kind + aggregation). Sign-insensitive, canonical rounding, ratio to percent in percent space, and minutes to hours widen the match only for an aggregate, kinded entry; kind scoping stops a weight value grounding a blood-pressure claim. - Thousands/decimal separators follow the reply language. - Boundary-safe strip so a flagged token never clips a larger grounded number. Outbound screen (outbound-screen.ts): - Risk bank requires an asserted figure or a categorical engine result; a bare engine or horizon mention (education/refusal) passes. Spelled-out percents count as figures. No refusal-context exemption. EN + DE. - Dose bank keeps a maintenance-continuation restatement, voided by any change stem. Taper suffix fixed. Route + fenced-chat thread the reply locale into the verifier.