MlosBasePriceGrid + NoteRateLadder priceable cells (Phase-2 Slice 3)

Featurekamo-shared-library
Shipped
June 26, 2026 at 5:57 PM UTC
Author
Kamo
Commit
780e29f

The priceable rate/price cells — first catalog entity to FK BOTH a rate-sheet version (Slice 1) AND a product (Slice 2); the base of the §8.1 price assembly. - MlosBasePriceGrid (mlos_base_price_grid): rateSheetVersionId FK, productId FK, noteRate, lockPeriodDays, basePrice (price-to-100), basePoints, min/maxLoanAmount, ioFlag. Composite UNIQUE (version, product, note_rate, lock_period_days, io_flag) entity-declared (io_flag NOT NULL → full unique, no raw DDL). - NoteRateLadder (ungated @Component): par = cell nearest price-to-100; nearestToPrice(target); ties -> lower note rate (doc 02 §8.1 step 5). 5 NoteRateLadderTest green. CODE-VERIFIED CORRECTION: doc 02 §6 says EmbMoney/EmbPercent, but the locked LoanPricingSnapshot (the reproducibility anchor) uses RAW BigDecimal — interestRate DECIMAL(9,6), points DECIMAL(9,4), no embeddables; EmbPercent(9,4) can't match a 6-decimal rate. So snapshot-mirrored grid pricing numbers use raw BigDecimal matching LoanPricingSnapshot (note_rate 9,6 / base_price+points 9,4 / loan amounts 18,2). No KamoInitializer code change (catalog repo pkg registered Slice 1; unique index entity-declared) — re-run only.

All changes

Like what you see shipping?

Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.

Start Free ForeverView Pricing