- Shipped
- June 26, 2026 at 2:24 PM UTC
- Author
- Kamo
- Commit
- 19c46f8
New com.kamo.z.shared.mlos.config tenant-config foundation (doc 04 §3): - LenderProfile (root, UNIQUE per MORTGAGE marketId) — soft-FKs locked Organization (Long) + CommerceMarket (UUID) by id. NOTE marketId is UUID (CommerceMarket.id is gen_random_uuid; doc 04's 'Long FK' is a code-verified error, same case as AiDecision.loanFileId). profileVersion for replay. - LicensingEntry (per-state COMPANY licensing, distinct from member StewardLicense) — licenseType 8-value enum; stateCode ISO-3166-2; NO stored status, computed from effective/expiry dates via isEffectiveOn() (doc 04 §7.3). - LicensingResolver @Component (gated mlos.config.enabled): isTenantLicensed( profile, state, type) date-based; uncovered jurisdiction => false (act blocked). - Config-entity base pattern: manual @Id UUID + @Embedded EmbRecordState (NOT BaseUuidEntity — its timestamps would collide; doc 04 §3). 4 LicensingResolverTest green (TDD). Indexes entity-declared (UNIQUE market_id). Deferred: **************** singletons; MlosActivationService + SecurityService boot self-heal.