- Shipped
- June 26, 2026 at 5:30 PM UTC
- Author
- Kamo
- Commit
- fe1a655
The product spine of the catalog (doc 02 §6.3): everything priceable downstream (base price grids, eligibility matrices, guideline rules) FKs to MlosProduct.uid. - MlosProduct (mlos_product): per-investor product — investorId FK, productCode, amortizationType (REUSES locked URLA AmortizationType), termMonths, armFixedPeriodMonths, armIndexId FK, loanClass, documentationType, conforming, losProgramCode (REUSES locked 17-value LoanProgramCode, §6.4), guidelineVersionPointer (real FK-by-id to future MlosGuidelineVersion.uid, nullable), active. assertStructurallyValid(): arm_fixed_period_months set IFF amortization_type=ARM. - MlosArmIndex (mlos_arm_index): indexName, marginBps, initial/periodic/lifetime caps + floor as EmbPercent (doc 02 §6 rate-via-EmbPercent), adjustMonths. - 2 new enums LoanClass / DocumentationType (catalog-specific; DocumentationType is the §3.5 non-QM doc-program class, distinct from Slice-1 MlosDocType). 2 repos. Base = BaseUuidEntity; orgId=Long @JsonSerialize(ToString). 5 MlosProductInvariantTest green. KamoInitializer adds the mlos_product ARM-consistency DB CHECK (catalog repo pkg already registered in Slice 1). Deferred: price **************** + the writer.