Effective-dated profile policies — pricing/capital/servicing publish
New MlosPolicyWriteService (isolated; its own repos so the config-collection write- service is untouched): single-active demote-then-insert versioning on the sa...
InvestorConfig delivery + commitment rule sub-collections CRUD
**************** (+update/delete) on the D31 config spine (org fail-closed via the parent investor, WORM change-log per row); controller /investors/{id}/deliver...
InvestorConfig credit-box overlay sub-collection CRUD
**************** on the D31 config spine (org fail-closed via the parent investor, WORM change-log per row, configVersion defaults 1); controller /investors/{id...
ScenarioDiscoveryService — canonical profile genesis at loan-app create/update (D1)
MortgageAppController (re)produces the canonical BorrowerScenarioProfile via the new ScenarioDiscoveryService after **************** (best-effort, its own tx). ...
AUS-connection config write surface (D37) + single mortgage market per org (D38)
- MlosConfigWriteService **************** org-scoped (resolveProfile), one-per-AusKind uniqueness, secret preserved on blank-secret edits, WORM audit spine. -...
Investor delegation write surface — per-program CRUD (D39)
Drop delegatedAuthority from the InvestorConfig write/view; add the InvestorDelegation sub-collection under /investors/{id}/delegations (GET/POST/ PUT, delete v...
[08] ReconciledFactPublisher — los.pipeline.fact publish seam (D34)
doc 08 §3.3: the locked **************** must not gain a NATS publisher (that edits donotmodify). Add a non-locked ReconciledFactPublisher wrapper that reconcil...
[04] slice E2 RiskOverlay collection CRUD (D31)
Risk overlays (credit-box / geo-concentration / exposure-limit layers on the base credit box) as a config collection on the D31 spine: create defaults configVer...
[04] slice E2 InvestorConfig collection CRUD (D31)
The second collection config domain (doc-04 §3.2 InvestorConfig) — per-investor approval/delivery/authority that feeds capital-markets execution. Reuses the Uni...
[04] slice E2 licensing collection CRUD (D31)
The first COLLECTION config domain (doc-04 §3.2 LicensingEntry, many-per-profile) — a new id-keyed write shape on the same audit spine as the singletons: - ****...
[04] pass-2 AutonomyStageOverride CRUD + per-stage autonomy map (D28)
The per-stage autonomy surface the config vertical deferred until StageWallRegistry existed (its deferral note is now satisfied): - **************** upsert per...
Assignable-members endpoint + work extension on member profile
- GET **************** (VIEW_LEADS holders ∪ grant-all) → {id,name,extension} for the lead-view assignment dropdown (name + work extension, not email). - GET ...
Doc-04 tenant-config layer — self-heal + activation summary + 5 domain GET/PUTs
mlos.config.enabled + com.kamo.z.shared.mlos.config in @EnableJpaRepositories. MlosConfigSelfHealRunner: default LenderProfile + 5 domain singletons per active ...
OAuth2 client registrations CRUD (platform-admin gated, encrypted-at-rest, secrets never leaked) + platform-enc-key env
Steward WRITE proxies — record feedback, publish pull-through policy, trigger pricing run
Write discipline, applied identically on all three POSTs: - downstream body built server-side from a WHITELIST of browser fields; - organizationId + actor membe...
Live FFA toggle — quick endpoint + broadcast on product updates
- PATCH **************** (MANAGE_CREDITS): toggle a product's free-for-all flag from the Leads-Available shortcut; publishes vendor-product + availability. - ...
Warn when a social connection lacks vendorProduct/market (lead created but not pooled)
SecurityService read-proxy for MLOS Governance
One controller/client pair fronting MLOSGovernanceService's five reads (both its steward-feedback and pull-through-policy modules share /api/governance). organi...
SecurityService read-proxy for MLOS Documents (doc + doc-orchestration)
Two browser-facing read-proxy controller/client pairs fronting MLOSDocService (/api/docs) and MLOSDocOrchestrationService (/api/doc-orchestration) for the Docum...
Pricing review read proxy (rate ladder + LLPA decomposition)
MlosPricingController @ /api/security/mlos/pricing + MlosPricingClient to MLOSPricingService (/api/pricing). Reuses MlosBaseController. runs inventory injects t...
?status filter on markets list; remove redundant DELETE
GET /api/security/commerce-markets now takes an optional status=active|archived|all (default active) so the settings Archived tab can load archived markets. Dro...
Underwriting review read proxy (agency AUS + non-QM internal rules)
MlosUnderwritingController @ /api/security/mlos/underwriting + MlosUnderwritingClient to MLOSUnderwritingService (/api/underwriting, X-Internal-Auth). Reuses Ml...
Capital-markets steward read proxy for the Command Center
Add an MLOS-named, read-only proxy that lets the kamo-internal Capital & Risk Command Center reach MLOSCapitalMarketsService without exposing the internal netwo...
System-wide toggle, lead-viewers, credit-balance edit, history pagination
- /credits/system-wide GET+PATCH (org credit-suspend), /credits/lead-viewers (VIEW_LEADS holders incl. grant-all) for the History member filter. - Credit-bala...
Inject test lead + fix Manage-Credits list for grant-all admins
- New POST **************** (MANAGE_CREDITS): creates a synthetic 'Void > Test Lead' (John Doe / 555-555-5555 / noreply@<org base domain>) with requiresAssi...
Archive original file to MinIO + download endpoint
Injects MinIOStorageService; POST /source-file stores the raw upload in the private internal bucket; GET /{id}/source-file streams it back (org-checked); the ke...
Persist runs/records, template CRUD, header auto-detect & re-import
- LeadImportPersistenceService: header normalize+SHA3 fingerprint (ordered/unordered), mapping/row JSON round-trips, persist run + non-success records, templa...
GET /leads/available-summary for the live NavPri lead alert
Aggregates the caller acceptability across all active markets (comment gate + credit/FFA/ daily-spend rules). Returns hasAcceptable / hasAcceptableCredit / bloc...
Mark-reassignment gated by MARK right; Manage-Credits returns members with Spend/Receive right
LeadAcceptController: mark-reassignment requires MARK_LEADS_REQUIRES_ASSIGNMENT. LeadCreditController.manage: returns eligibleMemberIds (SPEND_RECEIVE_LEAD_CRED...
Credit lead-assignment API ****************
- LeadAcceptController: GET /leads/available, POST /leads/accept (atomic, comment-gated, FFA + credit), GET /leads/uncommented, POST /leads/{id}/mark-reassign...
Market status filter, archive/reactivate, market-scoped vendors
- GET **************** (default active); enrich each market DTO with vendor-products derived from its vendors - Replace DELETE /lead-markets/{id} with PATCH /...
Start trial clock on org owner's first login
Seed new orgs with a PENDING trial (source=TRIAL, trialExpiresAt=null) that grants nothing until started, then start the 3-day clock on the owner's first FQDN-s...
Member gate grants unlimited catalog for active TRIAL + exposes trialExpiresAt
Add kamp-apps, VectorService, kamolos, kamo-signer-monorepo to public changelog
God-mode member impersonation endpoint
POST /api/security/impersonate mints a fresh ***+OTK for an arbitrary member of the caller's current org, gated on the caller session carrying god mode (GD). Re...
Return orgName + language in /user-info
Resolve the org's display name and the member's selected language (ISO-639-1 code) from the DB so kamo-universe can show each player's org + language flag on th...
Scope member entitlements to product root, not KamoCRM
EntitlementService now resolves each member's entitlement root via EntitlementRootResolver (nearest market-owning ancestor-or-self) instead of walking to the to...
Backfill program offerings for existing mortgage markets on boot
DataLoader now calls **************** after the AppMortgage-engagement backfill. Sweeps every existing MORTGAGE CommerceMarket and ensures its program Offerings...
PUT /programs/{code}/active + deprecate legacy mortgage POS endpoints
- MortgageProgramController gains PUT **************** with body {"isActive": bool}, gated on LOS_TAKE_APPLICATION. Delegates to **************** which upse...
Enforce LOS rights + /commerce/engagements endpoint
- MortgageAppController: every endpoint now gates on RoleRightType. Reads require LOS_VIEW_PIPELINE; creating a new application requires LOS_TAKE_APPLICATIO...
Emit lender brand + disclosure fields into per-org config.json
Two changes that finish the kamo-los borrower-facing branding pipeline: 1. OrganizationController gains a public GET /api/security/org/domain/{host} endpoin...
MortgageConnectController — connections + verified-facts + reconcile endpoints
Exposes the connect-first capture surface at **************** - GET/POST /connections + POST /connections/{id}/complete - GET/POST /verified-facts + POST /verif...
Add MortgageProgramController — list programs, set persona, set selected program
Expose Prometheus metrics endpoint
Adds micrometer-registry-prometheus and configures management.endpoints to expose /actuator/prometheus alongside health/info. Required so the counters/timer add...
GET /mortgage-apps/hmda/lar/issues count summary
Aggregates validation issues across the LAR for the given year and returns {errors, warns, rowsWithIssues} so the UI can render a one-line banner before the ope...
Expose GET ****************
Surfaces **************** as an advisory pre-flight check the TransitionDialog fires when the user picks a target status.
Translate concurrent-modification IllegalStateException to 409 with code
Pairs with the shared-lib optimistic-lock change: when LoanPipelineService throws "Concurrent modification: refresh and retry", surface a structured {error, cod...
Like what you see shipping?
Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.