Legacy cleanup: state mode is the only debate path; text gate, claim sweep, report exporter, metric categories and 29 unused modules removed; LLM stage override replaced by a deterministic GAAP-distortion test; unused dependencies dropped
ADR facts survive re-classification (FPI on a US exchange is ADS-quoted); PM structured triggers survive the synthesis parser; name and target-price parsing no longer false-positive; qualified signal phrases not re-flagged; impossible implied margin names its inconsistent input
Boundary normalization of model forecasts (filing currency → USD, or withheld); ADS basis resolved before metrics; scenario/trigger objects carried through the report data; signals built pre-debate; engine terminology policed in valuation context only; peer multiple removal warns; intrinsic-value and price claims registered
Semantic types: normalized metrics (currency/scale/ADS basis) with gated derivations; engine-owned labels and methodology; one ScenarioSet and immutable object ids; reliability controls weight, language and persona visibility; structured thesis triggers with causal polarity; separate intrinsic/pricing/momentum signals; claim-registry render audit; 8 publication gates; 95 tests