Drop the quote recipient columns
The lead holds the client's name, address and phone; snapshotting them on the quote duplicated a record edited elsewhere. The columns existed only briefly and c...
Tables for lead opportunity reservations
Mirrors LeadOpportunityReservation, LeadOpportunityCommissionSplit and **************** in kamo-shared-library. ddl-auto:update would create them from the entit...
Repair the quote-option FK defaults ddl-auto cannot reach
The existing dynamic sweep only covers nullable FK columns that already carry a FOREIGN KEY constraint. commerce_quote_options.quote_id is NOT NULL, so it is ex...
Create phi_access_log — the durable §164.312(b) audit trail
Until now PHI access was recorded only to a log stream with 14-day retention against a six-year obligation, and with no query surface. An accounting of disclosu...
Create the second-factor tables
Backs UserMfaEnrollment and MfaRecoveryCode in kamo-shared-library — §164.312(d) Person or Entity Authentication, the gap the compliance assessment called disqu...
Create HANDLES_PHI and PHI_EFFECTIVE_DATE on orgs
Mirrors the two new Organization fields, following the OrgBrandingFieldsMigration convention, so the columns are reproducible on any environment rather than onl...
Revert "feat(phi): create HANDLES_PHI and PHI_EFFECTIVE_DATE on orgs"
This reverts commit ****************
Create HANDLES_PHI and PHI_EFFECTIVE_DATE on orgs
Mirrors the two new fields on the Organization entity in kamo-shared-library, following the OrgBrandingFieldsMigration convention. HANDLES_PHI is NOT NULL DEFAU...
Starter maxSeats 5, Business maxSeats 25
Keeps the KamoCRM pricing seed in step with the live catalog after repositioning the published seat caps.
Register **************** repositories
LeadService now eagerly wires MarketLosConnectionResolver, which requires the integrations.los repositories **************** KI's explicit @EnableJpaRepositorie...
Originator/transaction-first columns (@Order 90)
Additive nullable columns + org-unique transaction-number index for the MLOS originator/transaction refactor: mlos_loan_transaction (transaction_number + assign...
Add INVESTOR_PRICE column to rate_locks + loan_pricing_snapshots
@Order(80) idempotent ADD COLUMN IF NOT EXISTS (DECIMAL(9,4), matching the price-to-100 grids) so the MLOS RCE can record the true non-par investor execution pr...
Partial-unique index enforcing one active closing package per loan (eClose double-close backstop)
CREATE UNIQUE INDEX uk_mlos_closing_pkg_active_loan ON mlos_closing_package (loan_file_uid) WHERE status <> 'CANCELLED'. Durable backstop behind the assembler's...
Create mlos_doc_req_borrower_idx for the vault cross-loan reuse query
Mlos requirement single-live index keyed per-human (borrower_uid)
Drop the party-only **************** (it would reject a legitimate 2nd co-borrower requirement); create **************** on **************** Already applied to ...
Seed the 17 real program rulesets (doc03 §9 Phase 1)
Migrates the authoritative ProgramRuleset data from the KamoMLOS client ruleset files into **************** (17 codes, extracted faithfully) and replaces Progra...
Platform-singleton partial-unique index for mlos_governor_config (D4)
mlos_governor_config auto-creates via ddl-auto; add the partial expression unique index confining the platform-default (organization_id IS NULL) to a single row...
Scan mlos.intake repos (§5.A) + drop orphan mlos_aus_connection_config (D40)
- Add com.kamo.z.shared.mlos.intake to @EnableJpaRepositories — the §5.A **************** was component-scanned but not a JPA repo, aborting KI startup befo...
Drop **************** column (D39)
The coarse boolean is replaced by the per-program mlos_investor_delegation child; drop the removed NOT-NULL column so Hibernate INSERTs are not rejected.
Codify §4.2 requirement-writer single-live partial-unique backstop
At most ONE LIVE requirement per (loan_file_uid, img_doc_type_id, party) obligation cell. **************** app-layer idempotency read cannot catch a concurrent ...
Scope mock lead vendors to a market; drop removed createMarket arg
NULLs-safe unique index for ClosingWorkflowTemplate versions (doc 05 §6.3)
One version per (organization_id, scope_level, scope_ref_id) grain. CRDB is NULLs-distinct, so split for the nullable scope_ref_id (mirrors mlos_aiptp_*): mlos_...
Null-safe split of the AiPullThroughPolicy single-active index (doc 09 §8)
CRDB is NULLs-distinct, so the single (lender_profile_id, market_id) WHERE status='ACTIVE' index did NOT backstop the org-wide (market_id IS NULL) grain — two c...
(loan_file_uid,type) native single-active partial-unique index (doc 11 §5.3/§6.2)
Closes a pre-existing double-active hole in the MLOS loan-identifier registry: index (a) **************** only constrains (org, type, VALUE) for the 10 REGISTRY...
Anti-double-lock partial-unique index for RCE lock records (doc 08 §7.3)
SchemaCleanupRunner adds **************** — a partial UNIQUE index on mlos_lock_record (organization_id, loan_scenario_id) WHERE status IN **************** At m...
§2.4 anti-AUS-shopping partial-unique index on mlos_aus_run
One ACTIVE (non-superseded, non-frozen) AusRun per (loan_file_uid, source_label) — "duplicates look like AUS-shopping" (doc 10 §2.4/§2.5). Safe to land now that...
Register pkg + RCE/pull-through DDL (docs 08/09)
@EnableJpaRepositories += **************** SchemaCleanupRunner: **************** (partial-unique) + rce_commit_ai_decision_fk + rce_commit_lock_record_fk + rce_...
Register com.kamo.z.shared.mlos.eclose in @EnableJpaRepositories (doc 05)
Register com.kamo.z.shared.mlos.aus in @EnableJpaRepositories (doc 10)
New aus_* repo package (AusRun + children). mlos_aus_run created + verified.
EventProjectionPolicy platform-default partial unique index (doc 07 §6.7)
**************** **************** WHERE organization_id IS NULL — pins the platform-default singleton (CRDB NULLs-distinct leaves null-org rows unconstrained ot...
RuleVersionPin entry->pin hard FK (doc 06 §4.6)
mlos_rvpe_pin_idx + mlos_rvpe_pin_fk **************** -> mlos_rule_version_pin.uid), mirroring the satisfier->requirement FK. Applied + verified.
Rule-layer DB CHECKs (doc 06 §4.2/§9.2)
3 platform-owned biconditional CHECKs (mlos_requirement_rule / _rule_set / mlos_freshness_policy: platform_owned = (organization_id IS NULL)) + the legal-wall b...
Schema for the 1-obligation/N-satisfier condition model (doc 06)
Register com.kamo.z.shared.mlos.docs in @EnableJpaRepositories (new repo pkg) + SchemaCleanupRunner backstop for mlos_requirement_satisfier (the append-only WOR...
Notification party+consent ledger schema (doc 07 §6)
- KamoInitializerApp: @EnableJpaRepositories += **************** (new repo pkg for **************** - SchemaCleanupRunner: mlos_consent_one_identity_chk = num...
DecisionInput provenance-integrity DDL (decision-spine 2c)
decision_input auto-creates via ddl-auto; SchemaCleanupRunner adds the invariants Hibernate can't emit: - decision_input_one_source_chk: num_nonnulls(11 FK cols...
Check in pending WIP (no CI/CD on this repo)
- DataLoader: platform baseline security model + KamoCRM market-backfill wiring - add KamoCRMMarketBackfillLoader; remove superseded BillingGroupBackfillLoader ...
Regenerate maven wrapper (drop mvnw.real shim, vendor wrapper jar)
Stop per-boot customer_id FK tug-of-war in SchemaCleanupRunner
Remove the stale RetailCustomer->Account cleanup drops of commerce_carts.customer_id, **************** and **************** Those columns are now live, Hibernat...
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...
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...
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...
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...
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...
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_...
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...
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. ...
Like what you see shipping?
Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.