- Shipped
- June 26, 2026 at 8:55 PM UTC
- Author
- Kamo
- Commit
- 7f1aa3d
The investor lock-policy layer — third effective-dated WORM version spine (after rate-sheet + guideline), keyed per investor; feeds the future RateLock/RateCommitmentEngine. - MlosLockPolicyVersion (mlos_lock_policy_version, WORM): investorId FK, productId(null=all), effective_from/until, sequence_no, supersedes_id self-FK, status, source_document_id FK, + worst_case_window_days, relock_allowed, relock_worst_case, floatdown_allowed, floatdown_fee_price, floatdown_min_improvement_bps, cutoff_time. Same @PostLoad/@PreUpdate partial-mutability WORM. - MlosLockPeriodOption (mlos_lock_period_option): lock_period_days, default_flag (one default per policy via partial-unique). MlosLockExtensionFee (mlos_lock_extension_fee): extension_days, fee_price (raw BigDecimal), increment_type (FeeIncrementType), max_cumulative_days. Value-children. - LockPolicyVersionStatus + FeeIncrementType enums. 3 repos. LockPolicyVersionResolver (gated mlos.catalog.enabled): point-in-time window, never latest-row, throws on overlap (mirrors EffectiveVersionResolver). 17 tests green (6 resolver + 11 WORM). KamoInitializer adds ux_lock_policy_version_active (one open ACTIVE per org+investor) + ux_lock_period_default (one default lock period per policy). No review workflow (faithful mirror of the already-reviewed Slice-1/7 WORM+resolver spine).