- Shipped
- June 27, 2026 at 1:40 AM UTC
- Author
- Kamo
- Commit
- 2890340
The immutable child of AiDecision that makes every decision deterministically replayable (doc 03 §2.1). Unblocked by the now-complete catalog/scenario/pricing inventory — DecisionInput FK-pins the immutable rule/fact/version PKs. - Total-block WORM (AiDecision idiom: @PreUpdate throws, no @PostLoad, no DB trigger). 11 exactly-one-non-null soft-UUID FK columns (the InputKind discriminator selects which); only ai_decision_uid is a hard FK. - InputKind(11)/InputRole(3) enums. scoreContribution numeric(8,4); testLoan (CORE, mirrors StewardFeedback — WORM can't retrofit the flag). - HMDA firewall (doc 03 §3.3) — CODE-VERIFIED the doc's CHECK is architecturally impossible: locked VerifiedFact has no factClass/HMDA_DEMOGRAPHIC column, demographics live in a SEPARATE BORROWER_HMDA table, CRDB CHECK can't subquery, no triggers. Firewall is STRUCTURAL (table segregation; this entity has no fact-read path) + deferred app-layer rules. NO HMDA DDL ships (a non-working CHECK would mislead an examiner). - The single-non-null + kind↔column coherence CHECKs are KamoInitializer DDL. - 4 tests green; decision repo pkg already in @EnableJpaRepositories. Grounded by a research Workflow (code-verified VerifiedFact/HMDA) + adversarial 2-agent review (SHIP-AS-IS; shipped the kind↔column coherence CHECK).