Mabadiliko
Nini kipya.
Kila kuboresha jukwaa, kama ni meli.
· kamo-internal
Kichupo cha sera - bei yenye ufanisi / bei ya kuhifadhi / kuhifadhi
New MortgagePoliciesTab: toleo la sasa la kazi + fomu ya kuchapisha-upya-version + toleo Historia ya kila moja ya sera tatu za ufanisi; configTypes /configApi + tab Usajili.
· SecurityService
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 same audit spine. Controller /pricing-policy, /capital-policy, /servicing-policy GET (current+ history) / PUT (publish new version). ServicingPolicy SCRA/FDCPA invariants stay true.
· kamo-shared-library
VersionedProfilePolicy interface kwa sera za ufanisi
Pricing/Capital/ServicingPolicy implement it so one publish routine drives the single-active demote-then-insert versioning.
· kamo-internal
Investor delivery + commitment rule sub-editors
The expanded investor row gains Delivery (funding behavior / execution path / remittance) and Commitment (type / min pull-through % / pair-off) editors alongside delegation + overlays; configTypes/configApi types + calls.
· SecurityService
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}/delivery-rules + /commitment-rules GET/POST/PUT. Completes the last InvestorConfig sub-collections deferred from [04].
· kamo-internal
Investor credit-box overlay sub-editor
MortgageInvestorsTab's expanded investor row gains an OverlayEditor (FICO/LTV/DTI/ reserves/doc/geo tightening + comparator + optional program + effective window) alongside the delegation editor; configTypes/configApi overlay types + calls.
· SecurityService
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}/overlays GET/POST/PUT (delete via active:false). Completes the InvestorOverlay slice deferred from [04].
· kamo-internal
Haki iliyoambatanishwa kamili-height sub-nav + maandishi ya juu
- Move the section sub-nav from the left to a right-attached, full-height panel that scrolls independently; the header + form content take the remaining width on the left and scroll on their own (two independent scroll regions on md+; stacks with nav on top for narrow screens). - Accessibility: darken all secondary/label text (gray-400 -> gray-600, gray-500 -> gray-700) across the detail page + shared Field/SectionCard/ EmptyState primitives so labels meet WCAG AA contrast for low-vision users.
· kamo-internal
Loan pipeline as Mortgage sub-tab + light theme
- Add ApplicationsPipelineConsole: a /leads-style advanced AG-Grid datagrid of mortgage applications at a loan level (status filter tabs, filter row, quick search, CSV export, pagination, row -> detail). Wired as the last sub-tab of the Mortgage steward console (?sub=pipeline). - Re-theme /applications/[uid] detail + shared Field/SectionCard/Modal/ EmptyState primitives + all 14 sections from the dark navy theme to the light kamo-internal idiom; replace the full-bleed hero with an in-flow header bar (fixes header/content overlap). - Re-theme /applications/pipeline (kanban) and /applications/hmda-lar to light. - Remove the deprecated standalone /applications dark list; repoint QuickActionsBar 'New Application' to the Mortgage market pipeline sub-tab.
· kamo-internal
Platform AI-Governor calibration config panel (D4 §5.C)
**************** Advanced tab gains a governor panel: edit the platform- default calibration posture (governor gate / force-steward-until-calibrated / min samples, each Inherit|Enabled|Disabled) via the new governor-config API. Per-org overrides layer on top.
· SecurityService
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). Adds mlos.intake to @EnableJpaRepositories.
· kamo-shared-library
LOAN doc-type guard (D2), sign-convention adapter (D3), per-org governor config (D4)
- ImageService: require a docType for ImageAssocType.LOAN uploads (LOAN-scoped; ACCOUNT/SERVICE_* unchanged). - SignedAdjustmentAdapter: the rule-7 adapter/compat boundary (canonical Adjustment ↔ signed value) for incremental sign-convention migration. - AutonomyGovernorConfig + repo + GovernorConfigResolver (org → platform-default → ConfigMap layering); DbAutonomyGovernor now resolves calibration/enablement per-org.
· kamo-internal
AUS uhusiano tab (D37) + block 2nd mikopo soko (D38)
- MortgageAusConnectionsTab: org-scoped DU/LP/GUS credential config (one per kind); secret is a write-only password field, row shows only whether a credential is set. - New-market page: disable the MORTGAGE option + validate once the org has one.
· SecurityService
AUS-connection config write surface (D37) + single mortgage market per org (D38)
Huduma ya Mlonge [TD="width: 456"] [FONT=&](2)[/FONT][FONT=&]Bila kuathiri masharti ya kifungu kidogo (1) cha kifungu hiki, Upekee wa moja kwa moja, siri iliyohifadhiwa kwenye hariri tupu za siri, uti wa ukaguzi wa WORM. MlosConfigController/aus-connections GET/POST/PUT – siri ni kuandika-tu (iliyoandikwa kwa njia ya maandishi) JukwaaSecretCipher ndani ya mabadiliko; mtazamo unafunua hasCredential, kamwe ciphertext. Kwa mfano, *** Kukataa soko la 2 la MORTGAGE kwa org (409).
· kamo-internal
Investor delegation sub-editor — per-program authority (D39)
Drop the delegated Switch/column; each investor row expands to a per-program delegation editor (program UUID, blank = investor-wide default; DELEGATED/ NON_DELEGATED) backed by the new /investors/{id}/delegations API.
· SecurityService
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 via active:false) on the D31 config-write spine — org fail-closed via the parent investor, WORM change-log + profileVersion bump per row.
· kamo-shared-library
Per-program investor delegation (D39) — new InvestorDelegation child
Delegation is granular per (investor, program), not a coarse InvestorConfig boolean. Adds DelegationAuthority {DELEGATED, NON_DELEGATED}, the InvestorDelegation entity (mlos_investor_delegation, optional programId; null = investor-wide default) + repo, and drops ****************
· kamo-shared-library
[AUS] AusConnectionConfig chombo - kwa-org kwa kila soko DU / GUS uhusiano
Owner directive #6: each org configures its own AUS vendor APIs (Fannie DU / Freddie LP / USDA GUS) per mortgage market, in settings→commerce. Foundational data model: AusConnectionConfig (mlos.config, new table mlos_aus_connection_config) — one row per (lender profile, AusKind); since a LenderProfile is one-per-market, keying by lenderProfileId makes these per-market. Reuses the existing AusKind enum (DU/LP/GUS) and VendorCategory.AUS vocabulary rather than inventing new ones. Secret at rest: the API secret is stored ONLY as an AES-256-GCM secretCiphertext (encrypted by PlatformSecretCipher on write, mirroring SocialConnection/ PlatformOAuthClient) and is never in a DTO — reads expose hasCredential instead. clientId/endpointUrl/configJson are non-secret. Unique (profile, aus_kind). Backend write/controller **************** + the kamo-internal AUS-connections tab + i18n + KI (new table) build on this next; the per-market vs org-scoped resolve is a config-spine decision surfaced to the owner.
· kamo-shared-library
[ImageAssocType] append LOAN — images attach to a loan, doc type required
Maagizo ya Mmiliki: picha zinaweza kushikamana moja kwa moja na mkopo wa mikopo, daima na Aina ya Doc. Tumia LOAN kwa ImageAssocType (id 11, ndoo imaging-loans), Picha zote na Wizara ya Mambo ya Ndani ya Nchi. .................................................................... isAllowDocTypeOpt = uongo, kwa hivyo aina ya hati ya mkopo ya doc inahitajika na sio org- ya uchaguzi. Ongeza inahitajiDocType () (isAllowDocType & & !isAllowDocTypeOpt) ili kupakia Njia za kutekeleza "kila wakati aina ya doc". Usalama wa kudumu na hakuna mabadiliko ya KI /schema: Img.assocId haina @Enumerated (defaults) Hakuna haja ya kuwa na wasiwasi juu ya kila kitu, na kila kitu ni sawa. s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s 3 Uchunguzi wa kijani. [TD="width: 456"] [FONT=&](2)[/FONT][FONT=&]Bila kuathiri masharti ya kifungu kidogo (1) cha kifungu hiki, Tume itakuwa na mamlaka ya kuajiri mtaalamu yeyote kwa ajili ya shughuli maalumu au kwa muda mfupi.[/FONT] [FONT=&](3)[/FONT] Huduma za Kluster kabla ya upakiaji wa kwanza wa mkopo; (2) kujenga ImageAssocType Watumiaji (Huduma ya Docs ina maadili ()[id] - lazima kujua LOAN kabla ya LOAN id kufika: Kwa mfano, *** Ongeza kwenye GCS yao ijayo inajenga); (3) kutekeleza inahitaji DocType () katika njia ya kuhifadhi mkopo.
· kamo-shared-library
[sign-convention] Uthibitisho wa saini ya fedha + Mfumo wa Marekebisho
Per the owner's canonical rules. Core domain money never encodes meaning in a sign: - **************** / requirePositive — assets, receivables, liabilities, payables, fees, costs, credits are POSITIVE magnitudes in their own fields (rules 1-3); a negative value fails fast. - AdjustmentDirection {INCREASE, DECREASE, CREDIT, DEBIT, PREMIUM, DISCOUNT} — rate/ price adjustments (LLPAs, SRPs, pricing adjustments, concessions, rebates) expose an explicit direction, never a signed number (rule 5). - **************** + the self-validating Adjustment record — reject a magnitude whose sign conflicts with the declared direction (rule 6); a signed Adjustment cannot be constructed. Rules 4 (accounting +/- lives only in the GL layer) and 7 (signing only in the adapter layer) are architectural boundaries the guard enforces by living in the CORE and rejecting signed encoding — the sign-bearing conversion for investor/warehouse/ accounting/MISMO feeds stays out of the domain by construction. 4 tests green.
· kamo-shared-library
[TD="width: 456"] [FONT=&](2)[/FONT][FONT=&]Bila kuathiri masharti ya kifungu kidogo (1)
Kwa mujibu wa Ibara ya 5 ya Katiba. Mwongozo: Uchunguzi wa Msaidizi wa Polisi unapaswa kutumia canonical Profaili ya Scenario inayotokana na data ya URLA ya kawaida, kamwe fomu za ghafi / UI, na vyanzo vya baadaye (AUS/OCR/AI/manual) UPDATE ambayo rekodi ya canonical badala ya ya kupita. - BorrowerScenarioProfile (mlos.intake, meza mpya ***** Chanzo kimoja cha ukweli - bidhaa ya 5 ya URLA inapungua + extensible Picha zote na Wizara ya Mambo ya Ndani ya Nchi. .................................................................... Haki miliki ya picha Accretes Truth Chanzo cha habari +. Huduma ya BorrowerScenarioProfile: kuzalisha kutoka Urla (loanFile, orgId) ni genesis (soma mkopo wa kawaida / faida mara moja baada ya URLA normalization); kuomba Update Je, ni tu seam baadaye vyanzo matumizi (hushindwa sauti kama hakuna profile ipo - genesis ni URLA peke yake, kutekeleza update-don’t-bypass; KusaidiaProfile miradi ya dims 5. - ProductDiscoveryGate: § 5.A ukuta wa kisheria ushauri kabla ya ustahiki / utoaji - Inatatua Scenario SupportPolicy (mara nyingi overrides + code default) juu ya canonical profile na, juu ya kukataa, kumbukumbu WORM AiDecision njia ya msimamizi (No ELIGIBLE PRODUCT, LegalRequiresHuman; DEFERRED HARD STOP=HIGH, STEWARD ONLY) Kwa njia ya uamuzi wa hiari. Msaada hauwezi kuandika chochote. 10 ya vipimo vya kijani. Kujenga-na-flag: inahitaji KI kukimbia ( meza mpya) + wiring ya huduma (Wito kuzalishaFromUrla katika URLA-kawaidaization hook + lango.evaluate katika bidhaa- Kuingia kwa ugunduzi) katika huduma ya kumiliki.
· kamo-shared-library
[12] §5.A ScenarioSupportPolicy deferral-interlock resolver (D36)
doc 12 line 235 P0 — 'the cheapest highest-leverage lifecycle addition'. A legal-wall at product-discovery that keeps **************** from silently running as forward first-liens (wrong disclosures). ScenarioSupportResolver (pure @Component) maps a ScenarioSupportProfile (LoanType x Purpose x Lien x Amortization x Construction, the existing donotmodify URLA enums) to {SUPPORTED | STEWARD_ONLY | DEFERRED_HARD_STOP}. Default matrix (D36): SUPPORTED = forward agency/non-QM FIRST-lien purchase/refi with a standard amortization (what the deterministic engines cover); STEWARD_ONLY = recognized-but-outside-v1 a human can originate (subordinate/HELOC, construction/home- improvement, GPM, or any OTHER dim — the reverse/commercial catch, since the residential URLA enums have no value for them); DEFERRED_HARD_STOP = fail-closed when a critical dim is null. The AI thus never auto-progresses a non-v1 product. Per-tenant ScenarioSupportPolicy override rows layer on top (most-specific match wins, newest version breaks ties; null dim = wildcard) to open a product to SUPPORTED or harden it to DEFERRED_HARD_STOP. 13 tests green. Build-and-flag: the resolver + entity ship now; the product-discovery WIRING (consult before eligibility + emit an AiDecision on refusal) and KI for mlos_scenario_support_policy are the follow-up (needs a KI run — owner-gated).
· SecurityService
[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 reconciles, then on a non-zero change count emits los.pipeline.fact.<orgId> on the existing LOS_PIPELINE stream (los.pipeline.> already binds it — no new stream/ table), so the readiness loop can fire. Repoint the sole caller (MortgageConnectController's reconcile endpoint) at the wrapper; the locked service is untouched. Placement (D34): co-located in SecurityService with its only current caller, not in MLOSCapitalMarketsService as §3.3 tentatively suggested (that assumed an RCE-side caller that does not exist yet). The mandated invariant — never publish from inside the locked service — holds either way. Best-effort like LosPipelinePublisher: absent NATS or a publish failure is logged + swallowed, the count is still returned. 4 tests green.
· kamo-shared-library
[12] §5.C AutonomyGovernor — kill-switch + force-steward-until-calibrated (D32)
The DecisionGate already carries a GLOBAL static force-steward @Value, but §5.C needs two things it cannot give: a kill switch flippable WITHOUT redeploy (so DB-backed) at GLOBAL/TENANT/TASK_TYPE granularity, and force-steward-until-N- calibration-samples per task-type (the cheap P0 the calibration machinery degenerates to at launch — doc 12 Theme C / §6.1). AutonomyGovernor (governance pkg) is an OPTIONAL Docstor (ObjectProvider, gated on mlos.governor.enabled) consulted synchronously by DecisionSpine.record() — the same shape as StewardAssigner. It is ADD-ONLY, exactly like the legal wall: it can only turn a would-be AUTO_EXECUTE into ROUTE_TO_HUMAN, never lift a routing, so the pure/stateless DecisionGate is untouched. Two force conditions: (a) an active AutonomyKillSwitch matching (orgId, aiFunction) — broadest scope wins the reason; a mutable/flippable entity, NOT WORM, audited via engagedBy/at; (b) calibration bootstrap — platform-wide non-test StewardFeedback count for the aiFunction below min-samples (default 50), counted by a new join query. When the governor is the cause of routing, its reason is appended to the WORM AiDecision so a high-confidence decision that went to a human is never inexplicable. New table autonomy_kill_switch (additive DDL — KI run). 30 tests green (7 governor logic + 3 spine add-only integration + 6 spine + 14 gate); all four DecisionSpine ctors preserved (existing callers unchanged).
· kamo-internal
[04] kichupo cha hatari - kadi ya mkopo /geo / tabaka za ziada (D31)
New MORTGAGE market config tab for per-tenant risk overlays: category (credit box / geo concentration / property type / loan amount / fraud / exposure limit) + action (deny / refer / counteroffer / flag) + optional product-variant scope + effective window + an optional JSON rule expression (validated for parseability client-side, mirroring the server 400). Add/remove rows; removal is a hard delete. Renders after Investors, before the always-on agreements tab. configTypes/configApi mirror the D31 collection pattern; i18n via the kamo-translation-dictionary repo.
· SecurityService
[04] kipande E2 Hatari ya Jumla ya ukusanyaji CRUD (D31)
Hatari ya overlays (kifungu cha mkopo / geo-concentration / tabaka za kupunguza mfiduo kwenye sanduku la mkopo wa msingi) kama mkusanyiko wa config kwenye mgongo wa D31: kuunda defaults configVersion = 1 + stamps profile utambulisho + bumps profileVersion + kuthibitisha-or- rollback + appends WORM MlosConfigChangeLog; update / kufuta ni kushindwa kufungwa 404 Juu ya mstari mwingine wa wasifu; kufuta ni kuondoa ngumu iliyokaguliwa kama { "kufutwa": kweli). The ruleExpression ni safu ya JSONB - mtawala anaithibitisha kama JSON Kabla ya kuandika pembejeo mbaya ni safi 400, sio 500 katikati ya INSERT. wa wa wa wa wa wa wa Inaruhusiwa (Msamiati wa utawala ni safu iliyocheleweshwa, iliyochukuliwa nje ya ndoa kwa sasa). Uchunguzi wa kuandika wa 20 kijani (4 overlay + 4 mwekezaji + 6 leseni + 6 hatua-override).
· kamo-internal
MORTGAGE investors tab (list/add/remove) — [04] slice E2 (D31)
The 7th MORTGAGE config tab: per-investor **************** authority rows with an approval-status chip. Add via an inline row (code + status + optional **************** remove via trash (hard delete server-side). configTypes InvestorView/InvestorRequest + the 3 enum arrays + label helpers; configApi **************** registered as tab 'investors' after licensing, before agreements. English via the translation-dictionary repo. tsc clean.
· kamo-internal
UI ya kijamii katika / masoko / kijamii
Kuishi, animated msalaba-mtoaji kulisha reusing clubhouse kulisha style: virtualized muda, mtoa huduma filter chips, SocialPostCard (uwezo-gated jibu / react / kufuta), mbalimbali mtoa SocialComposer (kwa-kutoa uwezo hints + fan-out matokeo chips), NewPostsPill (hakuna autoscroll), matumizi SocialFeedWebSocket kuishi kupitia /topic / kijamii /feed / {orgId}, na /api / vyombo vya habari / kijamii / * njia za wakala. Andika matendo Picha zote na Wizara ya Mambo ya Ndani ya Nchi. ....................................................................
· MediaService
Unified timeline backend (feed persistence, adapters, live relay)
Huduma ya Jamii inaendelea machapisho / maoni kwenye schema ya MediaSession / MediaObj (kutumia mfano wa mazungumzo); SocialFeedMapper hujenga DTOs waya; SocialTimelineController mtumishi chakula kilichounganishwa + uwezo na multi-mpakta kutunga fan-out, kujibu, kujibu, kuondoa. Matukio ya chakula kuchapisha kijamii.feed.{orgId} -> /topic/social/feed/{orgId} (relay + {orgId} Ulinzi wa faragha.) SocialInboundConsumer mashabiki nje ya chakula vitu; uchaguzi sweep nyuma ya mgongo. Wafanyakazi wote wa 5 [TD="width: 456"] [FONT=&](2)[/FONT][FONT=&]Bila kuathiri masharti ya kifungu kidogo (1) SocialFeedAdapter kwa max ya kila API, uwezo-gated.
· kamo-shared-library
Unified timeline SPI + entities on the media schema
Tumia MediaSession / MediaObj kushikilia machapisho ya kijamii na majibu (post = MediaObj, Maoni = Mtoto MediaObj kupitia MediaObjMsg.parent, mtoa huduma anayeunganisha MediaObjSocialRef). Ongeza SocialFeedAdapter sub-interface (feed ops kept off) Njia ya DM SocialProviderAdapter, MediaSessionSocialFeed (kwa kuunganisha) kikao cha kulisha), MediaObjSocialRef safu za kulisha, SocialObjKind, na Kuongeza uwezo wa kutoa matrix kwamba anatoa kwa kila mtoa UI kipengele-hiding.

Ulimwengu wako unasubiri.
Kuanza bure katika dakika. Ongeza bidhaa wakati wowote wewe ni tayari - hakuna uhamiaji, hakuna logins mpya.
Bure milele - hakuna kadi ya mkopo inahitajika