- Shipped
- July 5, 2026 at 2:25 PM UTC
- Author
- Kamo
- Commit
- 3726482
Replaces the M2 last-write-wins mergeOverlay placeholder (which silently discarded the authoritative baseline on any org override) with a recursive JSON deep-merge: org overrides supply only the keys they change, nested objects recurse, arrays replace wholesale, and a malformed override fails safe to the baseline. Locks the ProgramRuleset contract ahead of the server-authoritative scorer (§9 Phase 2) that will delete the client scorer. Program/ProgramService javadoc repointed. 3 tests green.