- Shipped
- 27 Juni 2026, 00:48 UTC
- Author
- Kamo
- Commit
- 4cc1af2
The FINAL scenario/pricing sub-slice (doc 02 §6.3/§8.1) — completes the §6.3 scenario/pricing entity inventory. A rate lock taken on a priced result + its append-only event log. - MlosLockRecord = PARTIAL-mutability WORM (MlosBulletin idiom): @PostLoad snapshots the frozen locked terms **************** anchors/rate_lock_uid), @PreUpdate throws if any change but WHITELISTS status (validated by the RateLockStatus lifecycle table) + lock_expiration (monotonic-forward — never shortens the committed window). - MlosLockStatus mirrors locked RateLockStatus EXACTLY (NO FLOATING/CANCELLED); rate_lock_uid = UUID soft FK -> locked RateLock.id (mixed-PK trap), DB-UNIQUE (1:1 lock<->record; WORM legal ledger, no supersedes_id). - rate_sheet + lock_policy version FK non-null, guideline nullable. - MlosLockEvent = append-only total-block WORM; event_type incl CANCEL (borrower withdrawal, distinct from lender BREAK); price_delta(9,4). - NEVER add columns to the locked RateLock; RCE writes it via LoanPricingService.createLock stamping lockedByMemberId from the actor. - 14 tests green. All indexes entity-declared (no KamoInitializer DDL). Grounded by code-verified locked facts (RateLock.id=UUID, RateLockStatus constants) + adversarial 2-agent review (SHIP-AS-IS; applied all 5 should-consider: monotonic expiration, unique rate_lock_uid, CANCEL event, frozen-price doc, test coverage).