Nenda kwenye maudhui
KAMOUniverse

Mabadiliko

Nini kipya.

Kila kuboresha jukwaa, kama ni meli.

  1. · kamo-shared-library

    Pull-Kupitia - AiPull ThroughPolicy + Bomba la Fedha (doc 09)

    Doc-09 kuvuta-kupitia chombo msingi (kama mlos.capitalmarkets pkg). Kwa njia ya mtandao (RENAMED kutoka doc-09 'LenderProfile' ili kuepuka mgongano wa config-root uliosafirishwa; tunable P(fund)-lock/warehouse/hedge knobs; version kuzaa sehemu-WORM, MlosLockPolicyVersion lugha - maneno waliohifadhiwa, hali iliyochukuliwa + iliyoboreshwa wakati wa kuandika; mpya DeliveryCommitmentType Kwa mfano, *** [TD="width: 456"] [FONT=&](2)[/FONT][FONT=&]Bila kuathiri masharti ya kifungu kidogo (1) mhimili) + HedgeAggressiveness; degradedFloor floored na jukwaa min). Bomba la mafuta Mradi wa Mradi [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]Tume itawalipa mishahara na posho wafanyakazi wake kadri itakavyoamua mara kwa mara. [/FONT] kuwa). ** Kuanguka kamwe hakuhifadhiwa ** (Orodha 1-pull-through, doc 01 §7) - kutekelezwa na hakuna kuanguka- Ukaguzi wa nguzo katika taasisi zote tatu za mitaji. 3 enums, 2 repos, 5 majaribio. Maoni kwenye SPine + Picha zote na Wizara ya Mambo ya Ndani. Picha zote na Wizara ya Mambo ya Ndani ya Nchi.** (Unahitaji mkopo Ugani - Malipo ya Dhamana imefungwa) + huduma zote za mfano (MLOSGovernance Service).

  2. · kamo-shared-library

    RceCommitmentDecision — the RCE lock-decision detail (doc 08 §10.1)

    Opens **************** the net-new RCE persistence gap (lock lifecycle + config + decision-spine were all already shipped). Closes the audit chain RateLock <-> MlosLockRecord <-> RceCommitmentDecision <-> AiDecision. Total-block WORM (AiDecision idiom; correction = NEW row via supersedesDecisionId). Records best-ex/lock-vs-wait rationale + the snapshotted strategy/autonomy/ **************** at lock + the §10.3 fingerprint version pins. LO compensation is NEVER an input (marginSrpBasisBps comp-invariant, §7.1); no fallout column (DERIVED, doc 01 §7). Reuses shipped AutonomyLevel + MlosLockRecord/MlosLockEvent (does NOT re-model the lock lifecycle). 2 enums **************** repo, 4 tests. Research workflow design gate + faithful WORM mirror.

  3. · InitializerService

    Jisajili com.kamo.z.shared.mlos.e close in @EnableJpaRepositories (doc 05)

  4. · kamo-shared-library

    ClosingWorkflowTemplate + MersRegistration (doc 05 §6.2/§6.3) — COMPLETES the §6.3 eClose inventory

    ClosingWorkflowTemplate (the eClose graph as DATA — version-bearing total-block WORM, stepsJson JSONB, effective-dated; scopeLevel most-restrictive). MersRegistration (the MERS-is-ONE-system per-loan operation ledger — append-only partial-WORM, min/operation frozen, status advances; MIN global-uniqueness owned by the LoanIdentifier MERS_MIN registry, referenced not overwritten §6.3). 3 enums, 2 repos, 4 tests. Faithful mirror (version-spine + partial-WORM). Completes doc-05 §6.3.

  5. · kamo-shared-library

    Msingi wa EClose - KufungaPackage + KufungaArtifact (doc 05 §6.3)

    Opens com.kamo.z.shared.mlos.eclose: the eClose workflow-graph substrate. ClosingPackage (aggregate root, one per closing; partial-WORM — identity frozen, status walks) + ClosingArtifact (one node per **************** step; append-only partial-WORM — identity/provenance frozen [providerName/externalRef OPAQUE, no provider- specific columns], result advances; a re-run is a NEW row §6.3). Soft-FK-by-id + denormalized org (the mlos.* pattern, no @ManyToOne); externalRef = inbound-webhook resolution anchor §6.4. EsignEnvelope/DisclosureSet code-verified UUID; the e-sign bridge is a SERVICE (writes the locked stub), not a new entity. 3 enums, 2 repos, 8 tests. Research workflow design gate + faithful-mirror partial-WORM. Deferred: ClosingWorkflowTemplate + MersRegistration.

  6. · kamo-shared-library

    InternalRulesDecision — the §6.5 non-AUS rules-engine store (doc 10) — COMPLETES the aus_* inventory

    The internal non-QM/DSCR/ITIN/Jumbo deterministic rules-engine result store: explicitly NOT an AUS (not AusFinding/AusKind, never disclosed as a GSE AUS, doc 01 §7). FKs LoanFile DIRECTLY (the ONE documented §6.6 exception — it is not an AUS run). Legal wall: sourceLabel hard-forced to the fixed INTERNAL_RULES marker on persist (never a GSE label); outcome uses the distinct **************** vocab (no Approve/Accept/ Refer/Caution). Total-block WORM (AiDecision idiom). Faithful mirror + the legal-wall guard; 3 tests.

  7. · kamo-shared-library

    AUS finding children — aus_condition + aus_waiver + aus_validation (doc 10 §6.2)

    Completes the doc-10 aus_* finding-children inventory (the InternalRulesDecision non-AUS sibling is a separate slice). AusCondition (parsed agency-feedback line; partial-WORM — content frozen, loan_condition_id write-once null->value when the LoanCondition obligation is instantiated §5.3; agencyStatus a free String). AusWaiver (ACE/value-acceptance §5.2; validatedSnapshotJson for §3.4 drift) + AusValidation (D1C/AIM per-component relief §5.4) = total-block append-only WORM (every state/REVOKED is a NEW row §3.3). All soft-FK-by-id to locked AusFinding + denormalized org/loan (the AusRun pattern); reuse AusSourceLabel; 4 new enums; 3 repos; 6 tests. Faithful mirror of the reviewed AusRun pattern — no review workflow.

  8. · InitializerService

    Jisajili com.kamo.z.shared.mlos.aus katika @EnableJpaRepositories (doc 10)

    New aus_* repo package (AusRun + children). mlos_aus_run created + verified.

  9. · kamo-shared-library

    AusRun keystone — the AUS submission-of-record (doc 10 §6.2)

    Opens com.kamo.z.shared.mlos.aus: AusRun (child of locked AusFinding) carrying per- submission run state — phase, dual-AUS freeze/soft-lock, cost+credit-reissue tracking, AiDecision rationale link. v1 AGENCY only (DU/LP/GUS; TOTAL = a DU/LP sub-result §6.4). DELIBERATE doc-10 deviations (dictated by doc 01 + the session hard rule, review-confirmed SHIP_AS_IS): soft FK by id (aus_finding_id UUID, NO @ManyToOne — overrides §6.2's @ManyToOne) + DENORMALIZED organizationId+loanFileUid (a soft FK can't be JPQL-traversed for org-scoping — the universal mlos.* pattern, MlosLoanScenario precedent) + new mlos.aus package. Partial- mutability WORM (MlosGuidelineVersion idiom): content frozen, only frozen/superseded write-once false->true (§2.4/§2.5 soft-lock) + caseFileId write-once null->value (§2.4 persist-and-reuse). source_label NOT-NULL agency-only (no INTERNAL_RULES — that wall lives on the sibling store). Research + 2-agent review (SHIP_AS_IS); 10 tests. Deferred SchemaCleanupRunner anti-AUS-shopping partial-unique index noted in javadoc (no writer yet).

  10. · kamo-shared-library

    Doc-03 §2.8 compliance entities — ComplianceFinding + RBPN + FCRA-AA + ChangedCircumstance

    The §2.8 record-of-determination + the three INDEPENDENT notice/CC regimes, joining the shipped AdverseActionTimer/RegXTimer in mlos.compliance. All total-block WORM (AiDecision idiom — examiner evidence; a correction is a NEW row). ComplianceFinding (source/findingType/ **************** tridTimerId UUID FK->locked TridTimer; loanFileId Long; NO cure-amount column — §2.8-faithful, cure-math is a deferred service output). RiskBasedPricingNotice + FcraAdverseActionNotice (thin disclosure records, shared NoticeStatus). ChangedCircumstance (TRID tolerance-reset; anti-click-through guard: non-blank documentedReason + attributable approvedByMemberId). 7 enums, 4 repos, 9 tests. Research workflow code-verified FKs (LoanFile.uid=Long, TridTimer.id=UUID).

  11. · InitializerService

    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 otherwise; the GLBA duplicate-platform hazard). Applied + verified.

  12. · kamo-shared-library

    Projection/mediastream substrate — EventProjectionPolicy + LoanStreamBinding (doc 07 §6.7/§7.2)

    EventProjectionPolicy = the GLBA data-minimization allowlist ((eventKind x partyClass/role) -> allowed field-groups + channels); platform-default(null org)+org-override two-row pattern. LoanStreamBinding = **************** (String(36)) get-or-create. Both BaseUuidEntity mutable (no WORM); reuse **************** new StreamAudienceClass(10). 7 tests. 2-agent review FIX_THEN_SHIP (applied): documented the FAIL-CLOSED GLBA contract (no-match/ inactive => deny-all), override-NARROWS-never-widens (platform ∩ override), allowedChannels is a CEILING (∩ TCPA consent, never bypasses), honest NULLs-distinct + null-aware seeder finder + the platform-singleton partial unique index (KI), the '*' wildcard finder, the StreamAudienceClass exhaustive-fallback note, policyVersion intent. (R1/R2 rejected per triage.)

  13. · kamo-shared-library

    Dispatch substrate — NotificationOutbox + NotificationRateWindow (doc 07 §6.4/§10.3)

    The crash-safe per-recipient send queue + durable frequency-cap counter (co-transactional per §10.3). NotificationOutbox (partial-WORM, CommunicationArchive idiom MINUS @PreRemove — a prunable operational queue, not legal evidence): frozen identity/content + freeze-at- enqueue (messageKey + renderedBody) + forward-only OutboxStatus {PENDING,SENT,SUPPRESSED, FAILED} + write-once sentAt; messageKey UNIQUE dedup anchor. NotificationRateWindow (mutable durable counter, no WORM — §6.4 increments in-txn) + composite UNIQUE (org,party,eventKind, windowStart). DISTINCT from the mlos.event MlosOutboxEvent (event backbone). Faithful mirror of the reviewed CommunicationArchive partial-WORM — no review workflow. 12 tests.

  14. · InitializerService

    RuleVersionPin entry->pin hard FK (doc 06 §4.6)

    mlo rvpe pin idx + mlos rvpe pin fk Kwa mfano, *** -> mlos rule version pin.uid), kuangalia satisfier-> mahitaji ya FK. Bonyeza + imethibitishwa.

  15. · kamo-shared-library

    RuleVersionPin + RuleVersionPinEntry (doc 06 §4.6 per-loan freeze)

    Inakamilisha hesabu ya utawala wa utawala wa doc-06: snapshot ya kila wakati ya mstari wa wakati Sheria ya kazi / toleo la sera (determinism - mkopo wa inflight haujawahi kupata kimya / Inaondoa mahitaji wakati mpangaji anatunga sheria). Utawala VersionPin (kichwa: loanFileUid/org/) Hatua ya hatua + Utawala PinEntry (kawaida iliyohifadhiwa refs, kuingia kwa RULE / RULE SET / Picha zote na Wizara ya Mambo ya Ndani ya Nchi). Lugha zote mbili (DecisionInput Language) nyaraka zinazohitajika. Kanuni ya VersionPinId (kifungu cha 1) sasa ina lengo lake. Picha zote na Wizara ya Mambo ya Ndani ya Nchi. ....................................................................

  16. · InitializerService

    Rule-layer DB CHECKs (doc 06 §4.2/§9.2)

    3 jukwaa inayomilikiwa biconditional CHECKs (mlos requirement rule / rule set mlos freshness policy: jukwaa owned = (organization id IS NULL) backstop ck requirement rule legal wall (NOTE/CD/DEEDTRUST lazima kubeba kisheria wall = kweli). Picha zote na Wizara ya Mambo ya Ndani ya Nchi. .................................................................... Imethibitishwa na Benki ya CRDB +.

  17. · kamo-shared-library

    Versioned requirement-rule definition layer (doc 06 §4.2/§4.6)

    Utawala-injini nusu (sehemu ya 1) ya Mfumo wa Nyaraka: MortgageDocType (52-of-~200) §3.3 taxonomy + nontunable legalWall chanzo cha ukweli) + Mahitaji ya DriverType + FreshnessAnchorEvent enums; Mahitaji (sehemu-mutability WORM, ufanisi dirisha, mlango wa kisheria kioo invariant, jukwaa inayomilikiwa) + Mahitaji ya Mfumo + FreshnessPolicy (jumla ya kuzuia WORM, kuzaa toleo); MahitajiRulePriorityResolver (Kipaumbele kinachoendeshwa na data, mahusiano = zaidi-kazi); 3 repos. Tumia kwa ajili ya mlos.config. Channel ya. MarketId/programId = UID (CommerceMarket / Programu ya kuthibitisha msimbo). 37 JUnit5 vipimo. Sheria nyingi za wazi kwa kila seli ni za makusudi (kiongozi wa kushotoMatchJson anatabiri, kutatuliwa kwa kipaumbele + evaluator iliyocheleweshwa) - hakuna pekee ya wazi, tofauti na Orodha ya viungo. Kwa hakika, mtazamo wa kisheria ni muhimu. Mfumo huu haupatikani). Jukwaa inayomilikiwa na jukwaa + kisheria-mkoba DB CHECKs aliongeza katika KamoInitializer.

  18. · InitializerService

    Schema for the 1-obligation/N-satisfier condition model (doc 06)

    Jisajili com.kamo.z.shared.mlos.docs katika @EnableJpaRepositories (new repo pkg) + SchemaCleanupRunner backstop kwa mlos requirement satisfier (mwisho wa pekee) Rekodi ya kukubali WORM: mlos req sat one source chk num nonnulls (img id, kuthibitishwa fact id, aus finding id = 1, mlos req sat type column chk (satisfier type) safu yake ya chanzo), mlos req sat requirement idx, na mlos req sat requirement fk (document document requirement (uid). Chagua moja ya chanzo/aina-column ya zamani. Imethibitishwa na Benki ya CRDB +.

  19. · kamo-shared-library

    Greenfield 1-obligation/N-satisfier condition model (doc 06 §4.2/§4.3)

    The Document System foundation slice: DocumentRequirement (N satisfiers of an obligation) + RequirementSatisfier (append-only WORM acceptance record) + the two pure resolvers (WaitingOnResolver §6.1 derivation, ConditionClearability ref-counted clear §4.3) + 6 enums, in new pkg com.kamo.z.shared.mlos.docs. The obligation is the LOCKED LoanCondition REUSED by id (loanConditionId soft UUID FK) — never forked/column-extended (doc 01 §1.1). Only the satisfier sub-model is greenfield. FK-by-id discipline: imgId=Long (Img.id code-verified Long), **************** loanFileUid/borrowerUid=Long @JsonSerialize. Satisfier names exactly one typed source (@PrePersist + DB num_nonnulls/type-column CHECKs in KamoInitializer). waitingOn is derived (never authored) on every write. 34 JUnit5 no-DB tests.

  20. · kamo-shared-library

    NotificationPreference + CommunicationArchive (doc 07 §6.2/§9.2)

    Inakamilisha mfano wa chombo cha doc-07 §6 - kifaa cha urahisi wa mutable + Rekodi isiyobadilika ya biashara. Kiwango cha juu (hakuna @EnableJpaRepositories). - Kuthibitisha Upendeleo (mtable): kwa (party,event key,channel) toggle; Kwa mfano, *** al al(du al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al al granularity; cadence /batchWindow; locale / saa za chama kukaa juu ya wafadhili. Lugha ya Mawasiliano (PARTIAL-WORM, MlosLockRecord language + @PreRemove): Kwa mfano, katika mfumo wa kumbukumbu kwa ujumbe uliotolewa; ujumbe muhimu wa UNIQUE (upotevu). Uhuru wa Kwa mfano, *** wa wa wa wa wa wa wa wa wa wa wa wa UwasilishajiStatus (8 hali ya mpito meza; SENT->OPENED kuruhusiwa kwa mtoa huduma Kwa mfano, barua pepe (barua pepe / barua pepe) hutumwa. (monotonic, hakuna null-wazi), mtoa huduma / bounce / kushindwa. Maelezo ya picha (pointer + denormalized kutatuliwa hali - WORM ledger ya hali ya ufanisi ni Kuthibitisha uthibitisho (: SMS ya kupitishwa lazima kubeba Ruhusa ya TCPA SMS (§ 6.5). 12 ya vipimo vya kijani. 3 enums mpya (DeliveryStatus vioo imefungwa hali jina). Imewekwa na utafiti wa Workflow + adversarial 2-agent mapitio (SHIP-AS-IS; kutumika Uthibitisho wa uthibitisho + uliothibitishwa kwa null-clear + SENT->OPENED.

  21. · InitializerService

    Notification party+consent ledger schema (doc 07 §6)

    - KamoInitializerApp: @EnableJpaRepositories += **************** (new repo pkg for **************** - SchemaCleanupRunner: mlos_consent_one_identity_chk = num_nonnulls(party_uid, raw_number) = 1 — a consent event identifies exactly one consenter (party XOR raw inbound number); the WORM-vault analogue of decision_input_one_source_chk. WORM is the entity @PreUpdate/@PreRemove guards (no DB trigger — CRDB can't finalize). 3 tables auto-create via ddl-auto.

  22. · kamo-shared-library

    Party graph + TCPA/E-SIGN consent ledger (doc 07 §6)

    Picha zote na Wizara ya Mambo ya Ndani ya Nchi. .................................................................... ya msingi. Watumiaji-agnostic (FKs imefungwa tu donotmodify; dispatcher ni Huduma ya MLOSxxx ya baadaye, sio KamoLOS ya kibinafsi - doc 07 ya KamoLOS Kazi yake ni thabiti). - LoanParty (table) graph ya mpokeaji; FK imefungwa LoanFile/Member kwa muda mrefu Kitambulisho; wasiliana naJurisdiction = makazi ya chama mwenyewe (saa za kikao); [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] Washirika wa washirika + vyama vya tatu tofauti). - Kukubaliwa (WORM, lugha ya Ai + @PreRemove): TCPA / E-SIGN kisheria Ushahidi; chama cha XOR RawNumber (E.164, kwa kuacha ndani kabla ya chama ipo) - inathibitisha () + DB num nonnulls = 1 CHECK; idhini at programu-set (kiasi cha kisheria cha kukamata wakati); maelezo ya picha ya ufunuo body sha256. Nakala ya Ufafanuzi (WORM + @PreRemove): Nakala ya idhini iliyotolewa Ushahidi wa TCPA ni wa kutosha; bodySha256 isiyo ya mwezi. - Mtandao mpya wa mtandao wa 6 (viungo vya kibinafsi vinaingia kwenye milango + ukosefu wa IN PORTAL / MEASTREAM / (Sauti ya malaika). 8 ya vipimo vya kijani. Iliyotokana na Utafiti wa Workflow (code-kuthibitishwa EsignConsent-is-a-pattern, Uchunguzi wa haraka wa 2 (FIX-THEN-SHIP: aliongeza CHECK ya idhini, index ya kipekee ya LoanParty, sha snapshot, @PreRemove).

  23. · InitializerService

    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) = 1 (exactly one immutable source pinned per row). - decision_input_kind_column_chk: the non-null column matches the input_kind discriminator (type-coherence in a WORM legal ledger; pure-SQL, survives the enum-whitelist sweep). - decision_input_decision_idx (ai_decision_uid, date_created) + the hard FK decision_input_decision_fk -> ai_decision(uid) (mirrors steward_feedback). - NO HMDA-firewall DDL: code-verified the doc's CHECK is impossible (VerifiedFact has no factClass column; demographics in a separate table; CRDB CHECK can't subquery; no triggers). The firewall is structural + app-layer, deferred.

  24. · kamo-shared-library

    DecisionInput — FK-pinned input provenance (decision-spine 2c)

    The immutable child of AiDecision that makes every decision deterministically replayable (doc 03 §2.1). Unblocked by the now-complete catalog/scenario/pricing inventory — DecisionInput FK-pins the immutable rule/fact/version PKs. - Total-block WORM (AiDecision idiom: @PreUpdate throws, no @PostLoad, no DB trigger). 11 exactly-one-non-null soft-UUID FK columns (the InputKind discriminator selects which); only ai_decision_uid is a hard FK. - InputKind(11)/InputRole(3) enums. scoreContribution numeric(8,4); testLoan (CORE, mirrors StewardFeedback — WORM can't retrofit the flag). - HMDA firewall (doc 03 §3.3) — CODE-VERIFIED the doc's CHECK is architecturally impossible: locked VerifiedFact has no factClass/HMDA_DEMOGRAPHIC column, demographics live in a SEPARATE BORROWER_HMDA table, CRDB CHECK can't subquery, no triggers. Firewall is STRUCTURAL (table segregation; this entity has no fact-read path) + deferred app-layer rules. NO HMDA DDL ships (a non-working CHECK would mislead an examiner). - The single-non-null + kind↔column coherence CHECKs are KamoInitializer DDL. - 4 tests green; decision repo pkg already in @EnableJpaRepositories. Grounded by a research Workflow (code-verified VerifiedFact/HMDA) + adversarial 2-agent review (SHIP-AS-IS; shipped the kind↔column coherence CHECK).

  25. · kamo-shared-library

    Lock record + lock event (Phase-2 Slice 12c)

    The FINAL scenario/pricing sub-slice (doc 02 §6.3/§8.1) — completes the §6.3 scenario/pricing entity inventory. A rate lock taken on a priced result + its append-only event log. - MlosLockRecord = PARTIAL-mutability WORM (MlosBulletin idiom): @PostLoad snapshots the frozen locked terms **************** anchors/rate_lock_uid), @PreUpdate throws if any change but WHITELISTS status (validated by the RateLockStatus lifecycle table) + lock_expiration (monotonic-forward — never shortens the committed window). - MlosLockStatus mirrors locked RateLockStatus EXACTLY (NO FLOATING/CANCELLED); rate_lock_uid = UUID soft FK -> locked RateLock.id (mixed-PK trap), DB-UNIQUE (1:1 lock<->record; WORM legal ledger, no supersedes_id). - rate_sheet + lock_policy version FK non-null, guideline nullable. - MlosLockEvent = append-only total-block WORM; event_type incl CANCEL (borrower withdrawal, distinct from lender BREAK); price_delta(9,4). - NEVER add columns to the locked RateLock; RCE writes it via LoanPricingService.createLock stamping lockedByMemberId from the actor. - 14 tests green. All indexes entity-declared (no KamoInitializer DDL). Grounded by code-verified locked facts (RateLock.id=UUID, RateLockStatus constants) + adversarial 2-agent review (SHIP-AS-IS; applied all 5 should-consider: monotonic expiration, unique rate_lock_uid, CANCEL event, frozen-price doc, test coverage).

  26. · kamo-shared-library

    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. - All 3 IMMUTABLE-BY-CREATION (total-block WORM, AiDecision idiom: @PreUpdate throws, no @PostLoad). - Frozen version FK set **************** on the RESULT, not the run (per-product resolution; doc §6.3 line 293/294). - Pricing numbers raw BigDecimal matching the shipped grids: base/final price (9,4); **************** (9,6). total_adjustments = ADDITIVE-only; multiplicative on applied-adjustment rows. - price_adjustment_id = mandatory soft FK -> MlosPriceAdjustment (the §6.5 never-deleting audit chain). created_by_member_id nullable=false. - eligibility_status REUSES EligibilityOutcome; ineligible_reason_code = new MlosAdverseActionReasonCode enum (doc's FK target absent in code). - Review fix: guideline/lock-policy version FKs + priced terms are NULLABLE so KEPT CANNOT_PRICE/NO_COVERAGE rows persist (no sentinel UUID); a @PrePersist invariant restores integrity (ELIGIBLE => priced + no reason; non-ELIGIBLE => reason code present). - 19 tests green. All indexes entity-declared (no KamoInitializer DDL). Grounded by a research Workflow + adversarial 2-agent review (FIX-THEN-SHIP: applied the guideline-version-nullable must-fix + the coherent broadening).

  27. · kamo-shared-library

    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-recopy (§6.4): scenario stores ONLY derived-for-reproducibility values **************** + an aus_recommendation cache); raw URLA attrs read THROUGH loan_file_uid, never stored. An allowlist reflection test locks this in structurally. - FK locked core BY ID: loan_file_uid + borrower_uid are plain Long columns (code-verified LoanFile.uid/Borrower.uid = Long unique_rowid; doc's UUID wrong) **************** NO @ManyToOne. loan_scenario_id = internal UUID FK. - (loan_scenario_id, borrower_uid) DB-unique natural key (one borrower per scenario; entity-declared, no raw DDL). - Derived ratios/scores DECIMAL(18,6) matching **************** county dollar limit DECIMAL(18,2). Both MUTABLE (no WORM — reproducibility is frozen later on the immutable PricingRun/Result). - All indexes entity-declared (no KamoInitializer SchemaCleanupRunner DDL). - 4 tests green (Long-id String serialization + FK-don't-recopy allowlist). Grounded by a research Workflow (code-verified locked FK types) + adversarial 2-agent review (SHIP-AS-IS; applied the allowlist-test + docstring fixes).

  28. · kamo-shared-library

    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 **************** ground them in real rate-sheet structure (290-file RateStack corpus survey). - Both entities MUTABLE (not the WORM version-spine guard): registry/review lifecycle, absent from the §6.5 immutable inventory. - MlosExtractionTemplate: forward superseded_by self-FK + active flag; assertSupersessionConsistent() self-enforced via @PrePersist/@PreUpdate (active=true => superseded_by null). header_synonyms = the one §6.7 JSONB. - MlosDocumentSegment: (source_document_id, segment_locator) DB-unique idempotency anchor; classification_confidence DECIMAL(4,3) matching AiDecision.confidence; targetEntity defaults NONE, detectedType has UNKNOWN fail-safe; **************** app-set on review. - All indexes entity-declared (no KamoInitializer SchemaCleanupRunner DDL). - 11 tests green (invariant + enum column-fit guard). Grounded by a research Workflow + adversarial 2-agent review (SHIP-AS-IS; applied the consistency/idempotency SHOULD-CONSIDER items).

  29. · kamo-shared-library

    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.5). - MlosBulletin (mlos_bulletin, WORM): investorId FK, title, issued_at, effective_from (LocalDate), effective_basis (BulletinEffectiveBasis LOCK/NOTE/FUNDING/APPLICATION), pipeline_grandfather, supersedes_id self-FK, source_document_id FK, status (BulletinStatus DRAFT/ACTIVE/SUPERSEDED). Content-frozen WORM guard (no effective_until window; corrections = a new bulletin). - MlosBulletinChange (mlos_bulletin_change): change_type, target_product_id, created_guideline/ **************** (at most one — none for RETIRED/MODIFIED), action — the bulletin->version provenance chain. 4 enums. - BulletinApplicabilityResolver (ungated) + LoanEffectiveDates + tri-state BulletinApplicability: encodes the §6.5 compliance rule (misapplying effective_basis is a compliance error) — applies iff ACTIVE + basis-date >= effective_from + not grandfathered; missing basis date -> INDETERMINATE (defer, never silently "old terms"); grandfather uses an EXPLICIT pipelineEntryDate (commitment milestone), not a hardcoded application date. 14 tests green. Adversarially reviewed (2-agent): fixed MEDIUM (grandfather hardcoded applicationDate + internal contradiction -> explicit pipelineEntryDate), LOW (missing-basis fail-direction -> tri-state INDETERMINATE), + javadoc (at-most-one created_version, supersession caller-contract). NO KamoInitializer code change.

  30. · kamo-shared-library

    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/RateCommitmentEngine. - MlosLockPolicyVersion (mlos_lock_policy_version, WORM): investorId FK, productId(null=all), effective_from/until, sequence_no, supersedes_id self-FK, status, source_document_id FK, + worst_case_window_days, relock_allowed, relock_worst_case, floatdown_allowed, floatdown_fee_price, floatdown_min_improvement_bps, cutoff_time. Same @PostLoad/@PreUpdate partial-mutability WORM. - MlosLockPeriodOption (mlos_lock_period_option): lock_period_days, default_flag (one default per policy via partial-unique). MlosLockExtensionFee (mlos_lock_extension_fee): extension_days, fee_price (raw BigDecimal), increment_type (FeeIncrementType), max_cumulative_days. Value-children. - LockPolicyVersionStatus + FeeIncrementType enums. 3 repos. LockPolicyVersionResolver (gated mlos.catalog.enabled): point-in-time window, never latest-row, throws on overlap (mirrors EffectiveVersionResolver). 17 tests green (6 resolver + 11 WORM). KamoInitializer adds ux_lock_policy_version_active (one open ACTIVE per org+investor) + ux_lock_period_default (one default lock period per policy). No review workflow (faithful mirror of the already-reviewed Slice-1/7 WORM+resolver spine).

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