Pricing run + result + applied-adjustment (Phase-2 Slice 12b)
The immutable priced-quote record (doc 02 §6.3/§7.2/§8.1): MlosPricingRun -> MlosPricedProductResult -> MlosAppliedAdjustment, written in one tx by the PPE. - ...
Scenario identity — MlosLoanScenario + MlosScenarioBorrower (Phase-2 Slice 12a)
Opens the doc-02 §6.3/§7 scenario/pricing layer (first of 3 sub-slices). The priceable-scenario aggregate root the PPE hangs off + its borrowers. - FK-don't-re...
Ingestion entities — MlosExtractionTemplate + MlosDocumentSegment (Phase-2 Slice 11)
Opens the doc-02 §6.3 ingestion side: the per-investor format map the parser reads + one classified, reviewable region of a source document. Four grounded enums...
Bulletins + bulletin-change provenance + effective-basis applicability (Phase-2 Slice 10)
Closes the doc-02 §6.3 catalog entity inventory. Bulletins are the investor change announcements that spawn new catalog versions and supersede predecessors (§6....
Lock-policy version (WORM) + period options + extension fees (Phase-2 Slice 9)
The investor lock-policy layer — third effective-dated WORM version spine (after rate-sheet + guideline), keyed per investor; feeds the future RateLock/RateComm...
Guideline rules + conditions + evaluator, sharing the LLPA predicate engine (Phase-2 Slice 8)
The guideline-rule predicate conjunct of §8.1 step-2. Critically, REUSES the reviewed Slice-4 condition evaluator instead of duplicating the safety-critical pre...
Guideline-version no-overlap partial-unique index (Phase-2 Slice 7)
SchemaCleanupRunner: ux_guideline_version_active partial-unique ON mlos_guideline_version (organization_id, product_id) WHERE status='ACTIVE' AND effective_unti...
MlosGuidelineVersion (WORM) + GuidelineVersionResolver (Phase-2 Slice 7)
The immutable effective-dated guideline VERSION — the container eligibility matrices **************** and future guideline rules hang off. Faithful replication ...
Eligibility matrix + cells + cell matcher (Phase-2 Slice 6)
The §8.1 step-2 eligibility-first filter substrate (the cell conjunct; guideline_rule + AUS gate AND in later). - MlosEligibilityMatrix (mlos_eligibility_matri...
MlosMarginSchedule + MarginScheduleResolver (Phase-2 Slice 5)
The investor margin layer — the "+ margin_schedule" term of §8.1 step-4 price assembly. - MlosMarginSchedule (mlos_margin_schedule): rateSheetVersionId FK, pro...
Value-set platform-owned ownership CHECK (Phase-2 Slice 4)
SchemaCleanupRunner: ADD CONSTRAINT mlos_value_set_ownership_chk CHECK (platform_owned = (organization_id IS NULL)) — doc 02 §6.2: a platform taxonomy is platfo...
LLPA adjustments + value sets + condition evaluator (Phase-2 Slice 4)
The LLPA/adjustment layer + the deterministic predicate engine for §8.1 step-4 matching ("an adjustment matches iff ALL its conditions are satisfied"). - MlosP...
MlosBasePriceGrid + NoteRateLadder priceable cells (Phase-2 Slice 3)
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. -...
Mlos_product ARM-consistency CHECK (Phase-2 Slice 2)
SchemaCleanupRunner: ADD CONSTRAINT **************** CHECK ((amortization_type = 'ARM') = (arm_fixed_period_months IS NOT NULL)) — a fixed period is declared IF...
MlosProduct + MlosArmIndex product-taxonomy layer (Phase-2 Slice 2)
The product spine of the catalog (doc 02 §6.3): everything priceable downstream (base price grids, eligibility matrices, guideline rules) FKs to MlosProduct.uid...
Register catalog repos + rate-sheet-version no-overlap index (Phase-2 Slice 1)
- @EnableJpaRepositories += com.kamo.z.shared.mlos.catalog (the new MlosInvestor/ **************** repos; entities already covered by @EntityScan). - SchemaCl...
Catalog provenance + effective-dated versioning spine (Phase-2 Slice 1)
Smallest shippable slice of the Phase-2 catalog (doc 02 §6): the provenance chain ImgDat -> MlosSourceDocument -> MlosRateSheetVersion and the immutable effecti...
Per-tenant confidence-threshold gate overload (config↔gate wiring)
Additive DecisionGate.evaluate(stage, confidence, legallyRequiresHuman, BigDecimal tenantThresholdOverride) — the autonomy-tuned per-tenant wall resolved by ***...
Partial unique indexes + servicing invariants (Phase-1 config completion)
SchemaCleanupRunner DDL for the new mlos.config domains (mlos.config already in @EnableJpaRepositories; Hibernate ddl-auto:update creates the tables): - one-act...
Complete Phase-1 config domains + MlosActivationService (Slice 5)
Completes doc 04's config entity inventory **************** - Policy singletons (one-active-per-profile, effective-dated/append-only): PricingPolicy (ppeSour...
Channel Applicability engine (Phase-1 Slice 4)
The deterministic most-restrictive resolver (doc 04 §8) — Product x Channel x Investor -> {ALLOWED|DISALLOWED, executionPath, authorityModel, fundingBehavior}. ...
AuthorityConfig (underwriting authority + govt delegations) — Phase-1 Slice 3
- AuthorityConfig (singleton per LenderProfile): underwritingAuthority DELEGATED/NON_DELEGATED/HYBRID + manualUwAllowed + govtDelegation Set {FHA_DE,VA_SAR_...
AI autonomy config + safety-floor resolver (Phase-1 Slice 2)
- AiAutonomyConfig (singleton per LenderProfile; autonomyLevel **************** globalDefaultThreshold DECIMAL(4,3), autoExecuteEnabled) + AutonomyStageOver...
Register mlos.config repo pkg (Phase-1 Slice 1)
Add com.kamo.z.shared.mlos.config to @EnableJpaRepositories so KamoInitializer creates mlos_lender_profile + mlos_licensing_entry. Indexes (incl. UNIQUE market_...
LenderProfile + LicensingEntry config foundation (Phase-1 Slice 1)
New com.kamo.z.shared.mlos.config tenant-config foundation (doc 04 §3): - LenderProfile (root, UNIQUE per MORTGAGE marketId) — soft-FKs locked Organization (...
DaemonService compliance-timer SLA sweep (timer adopter)
First adopter of the MLOS compliance timers: a Quartz job (every 5 min) calls **************** to flip ARMED-but-past-deadline ECOA (AdverseActionTimer) + Reg X...
**************** for the DaemonService SLA sweep
Flips every ARMED-but-past-deadline AdverseActionTimer + RegXTimer to EXPIRED (the durable escalation signal the Compliance steward screen surfaces; event emiss...
Wire license-aware assignment into DecisionSpine (Slice 2b-ii)
DecisionSpine.record() now stamps StewardTask.assignedMemberId from the StewardAssigner when a routed decision carries the loan's jurisdiction: - DecisionReque...
License-aware StewardAssigner (decision-spine Slice 2b-ii)
Adds the license-aware steward selector (doc 03 §3.2; doc 01 §6 #9) — picks a steward whose MLOS StewardLicense is valid TODAY for the act's required license ty...
Register mlos.compliance repo pkg (Slice 2c-i)
Add **************** to @EnableJpaRepositories so KamoInitializer creates mlos_adverse_action_timer + mlos_regx_timer. Indexes entity-declared via @Table — no S...
ECOA + Reg X timer substrate (decision-spine Slice 2c-i)
New **************** package (doc 03 §2.8) — kamo-owned compliance-timer analogues of the locked donotmodify.TridTimer. Substrate-first: - AdverseActionTimer (...
Register mlos.legal repo pkg (Slice 2b)
Add com.kamo.z.shared.mlos.legal to @EnableJpaRepositories so KamoInitializer creates mlos_licensed_act_registry / mlos_ron_eligibility / mlos_steward_license. ...
State-aware legal registry substrate (decision-spine Slice 2b)
New com.kamo.z.shared.mlos.legal package — the greenfield producer of the DecisionGate's absolute legal-wall input (doc 03 §3.2). Substrate-first, no adopter ye...
Register mlos.steward + mlos.orchestration repos; Slice-2a schema
- KamoInitializerApp @EnableJpaRepositories: add the accumulated MLOS repo packages **************** plus esign/personal_loans so KamoInitializer owns their...
Decision-spine Slice 2a — OrchestrationState + StewardTask + DecisionSpine BLOCKED-state machine
OrchestrationState (per-loan-stage GREEN/BLOCKED/COMPLETE) + StewardTask (exception record) + enums + DecisionSpine (@ConditionalOnProperty mlos.spine.enabled):...
LoanIdentifier registry substrate — 42 typed ids (keystone 0.5, slice 1)
New pkg com.kamo.z.shared.mlos.identity (the inbound-webhook routing key): LoanIdentifierType (42 first-class typed ids, each carrying Cardinality + Ownership; ...
StewardFeedback flywheel — capture every steward verdict (keystone 0.11)
New pkg **************** append-only StewardFeedback ground-truth row (FK ai_decision.uid; verdict CONFIRM/OVERRIDE/MODIFY; Reg-B-aligned reasonCode; correctedV...
Immutable AiDecision WORM ledger + two-wall DecisionGate (keystone 0.3, slice 1)
New pkg com.kamo.z.shared.mlos.decision (greenfield decision spine, never edits donotmodify): immutable append-only AiDecision (WORM via @PreUpdate guard; loanF...
Tenant-isolation gate for the event backbone (Slice 3)
Roadmap 0.10: **************** (the per-tenant consumer subscription seam) + belongsToTenant(subject,orgId) token-wise matching that mirrors NATS filtering; for...
Consumer-side idempotency, DLQ + steward replay (Slice 2)
Adds the reliability core that any MLOS consumer plugs into: ProcessedEvent dedup ledger (unique consumer_name+event_id) + MlosDeadLetter DLQ + MlosDeadLetterSt...
Adopt MLOS transactional outbox (producer path)
Enables the Phase-0 event backbone in KamoLOS: adds com.kamo.z.shared.mlos.event to the @EnableJpaRepositories scan, mlos.* config (mlos.outbox.enabled=true, ML...
Transactional outbox event backbone (Phase-0 keystone B)
Money/compliance-grade producer path in NEW sibling pkg **************** (never edits donotmodify): MlosEventEnvelope DTO + MlosOutboxEvent outbox entity/repo +...
Show per-stage data layers incl. EDT4 ocean mask + TRF2 markings
The worldgen dashboard's stage cards now list the data layers each tile stage bakes, accenting the newly-added ones: the EDT4 ocean (sea-connectivity) mask unde...
Surface tile staleness + targeted "Regenerate N" on the page
The agent snapshot now carries per-recipe staleness (up-to-date / stale / missing); plumb it through the API + SSE to the page: - Services tab shows a freshne...
Universe world-generation admin page
Adds /settings/platform/universe under Platform Administration — its own platform card + three sub-tabs (Overview, Services, Actions) — to start and monitor the...
Add case-insensitive findByEmailEmailIgnoreCase
Emails are stored with inconsistent case (e.g. Sage@KamoCRM.com) and CockroachDB string equality is case-sensitive, so findByEmailEmail misses on case alone. Ne...
Self-heal mailbox accounts from app DB (drift recovery)
The app DB is the source of truth for which mailboxes should exist; KamoMail accounts live in the mail server's virtual_users. If the mail DB loses data, mailbo...
Compose/send on behalf of switched member mailbox
- Thread mailbox owner memberId from the switcher through activeMailbox into the compose context (event + URL param). - New Message / reply / forward open com...
Carry *** in per-tab sessionStorage instead of a shared cookie
The session id lived in a browser cookie shared across all tabs of an origin, so a second tab (impersonation) could not hold its own session. Move the carrier t...
Like what you see shipping?
Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.