Owns: the repricing recommendation engine — recommend2().
rrpCeiling must re-assert after rounding (applyRoundingUp/Down) — or we ship above-RRP or $0 prices.rrpCeiling only applies when rrp > 0.?rec filter, the badge, and export all use recDirection (the math), not the branch label.Stub — the invariants above are load-bearing (hardened by the 2026-06-20 adversarial review). Expand the case matrix before the next change.