Changelog
Cosa c'è di nuovo.
Ogni miglioramento alla piattaforma, come si spedisce.
· kamo-shared-library
Pull-Through — AiPullThroughPolicy + PipelineFundingProjection (doc 09)
La fondazione dell'entità pull-through doc-09 (stesso mlos.capitalmarkets pkg). AiPull sulla povertà (RENAMED dal 'LenderProfile' del doc-09 per evitare la collisione config-root spedita; il sintonizzatore P(fund)->lock/warehouse/hedge manopole; versione-portante parziale-WORM, MlosLockPolicyVersion idiom — termini congelati, stato ACTIVE->SUPERSED + sostituitoAlla scrittura-una volta; nuovo E' il momento giusto. [NOT the shipped] asse] + HedgeAggressiveness; degradedFloor pavimentato dalla piattaforma min). PipelineFunding Proiezione (la superficie P(Fondo) di ultima vita MUTABLE, esplicitamente NON WORM; riscritta ogni ricomputo; la storia è in AiDecisione). **Il fallimento non è mai memorizzato** (DERIVED 1-pull-through, doc 01 §7) — imposto da un no-fallout test di colonna su tutte le 3 entità di capitalmarket. 3 enum, 2 repos, 5 test. Fedele versione-spina + specchi mutabili. Deferito: (bisogna un fratello) estensione — LoanConditionTemplate è bloccato) + tutti i modelli-serving (MLOSGovernanceService).
· kamo-shared-library
Decisione RceCommitment — dettaglio della decisione RCE (doc. 08 §10.1)
Apri Non e' vero. il nuovo RCE persistenza gap (bloccare il ciclo di vita + config + decisione-spina erano tutti già spediti). Chiude la catena di audit RateLock <-> MlosLockRecord <-> Decisione dell'impegno <-> AiDecisione. Total-block WORM (AiDecision idiom; correzione = NUOVA riga via SupersedesDecisionId). Registra best-ex/lock-vs-wait razionali + la strategia snapshot/autonomia/ A lock + i pin delle impronte digitali §10.3. La compensazione LO è Mai un input (marginSrpBasisBps comp-invariant, §7.1); nessuna colonna di caduta (DERIVED, doc 01 §7). Riutilizzo spedito AutonomyLevel + MlosLockRecord/MlosLockEvent (non rimodella il ciclo di vita della serratura). 2 enum Repo, 4 test. Ricerca flusso di lavoro design gate + fedele specchio WORM.
· InitializerService
Registrati com.kamo.z.shared.mlos.eclose in @EnableJpaRepositories (doc 05)
· kamo-shared-library
ClosingWorkflowTemplate + MersRegistration (doc 05 §6.2/§6.3) — COMPLETA l'inventario §6.3 eClose
ClosingWorkflowTemplate (il grafico eClose come DATA — versione-portante WORM totalblock, stepJson JSONB, efficace-dated; portataLevel più-restrictive). MersRegistration (sistema MERS-is-ONE) per-loan operazione registro — append-only parziale-WORM, min/operazione congelata, anticipazioni di stato; MIN L'unicità globale di proprietà del registro di LoanIdentifier MERS MIN, richiamato non sovrascritto §6.3). 3 enum, 2 repos, 4 test. Specchio fedele (versione-spina + parziale-WORM). Complementi doc-05 §6.3.
· kamo-shared-library
Nucleo di EClose — ChiusuraPackage + ChiusuraArtifact (doc 05 §6.3)
Apre com.kamo.z.shared.mlos.eclose: il substrato eClose workflow-graph. ChiusuraPackage (radice aggregato, uno per chiusura; parziale-WORM — identità congelata, cammini di stato) + ClosingArtifact (un nodo per ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** parziali — identità/provenance congelate [providerName/externalRef OPAQUE, no provider- colonne specifiche], avanza il risultato; una ri-run è una nuova riga §6.3). Morbido FK-by-id + denormalizzato org (il modello mlos.*, no @ManyToOne); esternaRef = inbound-webhook risoluzione ancora §6.4. EsignEnvelope/DisclosureSet code-verified UUID; il ponte e-sign è un SERVICE (scrive il bloccato stub), non una nuova entità. 3 enum, 2 repos, 8 test. Portale di progettazione del flusso di lavoro di ricerca + fedele-mirrore parziale-WORM. Deferito: ClosingWorkflowTemplate + MersRegistration.
· kamo-shared-library
Regole interneDecisione — il §6.5 non AUS regole-motore motore (doc 10) — COMPLETA l'inventario aus *
Il negozio interno non QM/DSCR/ITIN/Jumbo deterministico delle regole-motore del risultato: esplicitamente NON aUS (non AusFinding/AusKind, mai rivelato come un AUS GSE, doc 01 §7). FKs LoanFile DIRECTLY (l'unica eccezione documentata §6.6 — non è una esecuzione AUS). Parete legale: fonteLabel resistente al marcatore INTERNAL RULES fisso su persist (mai un'etichetta GSE); il risultato utilizza il distinto Non e' vero. vocab (no Approve/Accept/ Refer/Caution). Total-block WORM (AiDecision idiom). Specchio fedele + la guardia della parete legale; 3 test.
· kamo-shared-library
AUS trovare bambini — aus condizione + aus waiver + aus validation (doc 10 §6.2)
Completa l'inventario Doc-10 aus * dei bambini (le Regole interneDecisione non AUS sibling è una fetta separata). AusCondition (linea di rimborso dell'agenzia separata; parziale-WORM — contenuto congelato, prestito condizione id write-once null->value quando l'obbligo di LoanCondition è istantaneo §5.3; agenziaStatus a free String). AusWaiver (ACE/value-acceptance §5.2; convalidatoSnapshotJson per §3.4 deriva) + AusValidation (D1C/AIM per-component rilievo §5.4) = WORM (ogni stato/REVOKED è una nuova riga §3.3). Tutto morbido-FK-by-id a bloccato AusFinding + denormalizzato org/loan (il modello AusRun); riutilizzare AusSourceLabel; 4 nuovi enums; 3 repos; 6 test. Specchio fedele del modello AusRun recensito — nessun flusso di lavoro di revisione.
· InitializerService
Registrati com.kamo.z.shared.mlos.aus in @EnableJpaRepositories (doc 10)
Nuovo pacchetto aus * (AusRun + bambini). mlos aus run creato + verificato.
· kamo-shared-library
AusRun keystone — la sottomissione AUS della registrazione (doc 10 §6.2)
Apre com.kamo.z.shared.mlos.aus: AusRun (figlio di AusFinding bloccato) che trasporta per- stato di esecuzione di presentazione — fase, doppio blocco AUS/soft-lock, costo+credit-reissue tracking, AiDecision link razionale. v1 AGENCY only (DU/LP/GUS; TOTAL = un sub-risultato DU/LP §6.4). DELIBERATE doc-10 deviazioni (dichiarate dal doc 01 + la regola dura della sessione, confermate da SHIP AS IS): soft FK by id (aus finding id UUID, NO @ManyToOne — overrides §6.2's @ManyToOne) + DENORMALIZED organizzazioneId+loanFileUid (un FK morbido non può essere JPQL-traversed per org-scoping — il modello universale mlos.*, MlosLoanScenario precedente) + nuovo pacchetto mlos.aus. Parziale... mutabilità WORM (MlosGuidelineVersion idiom): contenuto congelato, solo ghiacciato / superato false->true (§2.4/§2.5 soft-lock) + caseFileId write-once null->value (§2.4 persist-and-reuse). fonte label NON-NULL agenzia-solo (no INTERNAL RULES — che parete vive sul negozio di fratelli). Ricerca + 2-agent review (SHIP AS IS); 10 test. Deferred SchemaCleanupRunner anti-AUS-shopping Indice parziale-unità annotato in javadoc (no scrittore ancora).
· kamo-shared-library
Doc-03 §2.8 entità di conformità — ComplianceFinding + RBPN + FCRA-AA + Cambiato Circostanza
Il §2.8 record-of-determination + i tre regimi di avviso/CC INDEPENDENT, unendo i spedito AdverseActionTimer/RegXTimer in mlos.compliance. Tutti i blocchi WORM (AiDecisione idioma — prova dell'esaminatore; una correzione è una riga NUOVA). ComplianceFinding (source/findingType/ Non e' vero. tridTimerId UUID FK->locked TridTimer; prestitoFileId Long; nessuna colonna di misura della cura — §2.8-fedele, la matematica della cura è differita output di servizio). RiskBasedPricingNotice + FcraAdverseActionNotice (secondo record di divulgazione, Comunicazione condivisaStatus). ChangedCircumstance (TRID tolleranza-reset; anti-click-through guard: 7 enum, 4 repos, 9 test. FKs (LoanFile.uid=Long, TridTimer.id=UUID).
· InitializerService
EventProjectionPolicy piattaforma-default parziale indice unico (doc 07 §6.7)
E' il momento giusto. E' il momento giusto. Dove organizzazione id IS NULL — pins the platform-default singleton (CRDB NULLs-distinct lascia righe null-org non vincolate altrimenti; il pericolo duplicato-piattaforma GLBA). Applicato + verificato.
· kamo-shared-library
Sostrato di proiezione/mediastream — EventProjectionPolicy + LoanStreamBinding (doc 07 §6.7/§7.2)
EventProjectionPolicy = the GLBA data-minimization allowlist (eventKind x partyClass/role) -> gruppi di campo consentiti + canali); piattaforma-default(null org)+org-override pattern a due righe. LoanStreamBinding: (String(36)) get-or-create. Entrambi BaseUuidEntity mutable (no WORM); riutilizzare ******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** nuovo StreamAudienceClass(10). 7 test. 2-agent review FIX THEN SHIP (applied): documentato il contratto GLBA FAIL-CLOSED (no-match/ inactive => nega-all), override-NARROWS-never-widens (piattaforma ∩ override), consentitiChannels è un CEILING (∩ TCPA consenso, mai bypass), onesto NULLs-distinct + null-aware seeder ricercatore + l'indice unico parziale della piattaforma-singleton (KI), il '*' wildcard finder, il StreamAudienceClass esaustivo-fallback nota, politicaVersione intento. (R1/R2 respinta per triage.)
· kamo-shared-library
Substrato di distribuzione — NotificazioneOutbox + NotificationRateWindow (doc 07 §6.4/§10.3)
La coda di invio per-recipiente di sicurezza di crash + contatore di frequenza resistente (co-transactional per §10.3). NotificazioneOutbox (parziale-WORM, Comunicazione Archivio idiom MINUS @PreRemove — una coda operativa imprevedibile, non prove legali: identità congelata/contenuto + congelamento enqueue (messageKey + renderdBody) + in avanti-solo OutboxStatus {PENDING,SENT,SUPPRESSED, FAILED} + write-once inviatoAt; messaggioKey UNIQUE dedup ancora. Notifica RateWindow (mutabile contatore durevole, no WORM — §6.4 incrementi in-txn) + UNIQUE composito (org, partito, eventKind, finestraStart). DISTINCT dal mlos.event MlosOutboxEvent (event backbone). Specchio fedele del revisionato CommunicationArchive parziale-WORM — nessun flusso di lavoro di revisione. 12 test.
· InitializerService
RegolaVersione Pin entry->pin hard FK (doc 06 §4.6)
mlos rvpe pin idx + mlos rvpe pin fk E' il momento giusto. -> mlos rule version pin.uid), che rispecchia il soddisfar->requirement FK. Applicato + verificato.
· kamo-shared-library
RegolaVersione Pin + RuleVersionPinEntry (doc 06 §4.6 per-loan freeze)
Completa l'inventario delle regole doc-06: l'istantanea per-loan point-in-time attiva regola / politica versione set (determinazione — un prestito in volo non guadagna mai silenziosamente / gocce requisiti quando un inquilino modifica le regole). RuleVersionPin (intestazione: prestitoFileUid/org/ stageKey) + RegolaVersione PinEntry (versione congelata normalizzata refs, entryKind RULE/RULE SET/ FRESHNESS POLICY + versionId). Entrambi i blocchi WORM (DecisionInput idiom). DocumentRequisito. regolaVersionPinId (consegnato Slice 1) ora ha il suo obiettivo. Specchio fedele — nessun flusso di lavoro di revisione.
· InitializerService
DB CHECK (doc 06 §4.2/§9.2)
3 CHECK bicondizionabili (mlos requirement rule / rule set / mlos freshness policy: platform owned = (organization id IS NULL)) + il muro legale backstop ck requirement rule legal wall (NOTE/CD/DEEDTRUST deve portare legal wall=true). Tutto '='/'!='-forma, sopravvivere alla spazzata enum whitelist. Applicato al prod CRDB + verificato.
· kamo-shared-library
Livello di definizione del requisito-rule (doc 06 §4.2/§4.6)
La metà del motore di regola (parte 1) del sistema di documentazione: MortgageDocType (52-of-~200 §3.3 tassonomia + legale non applicabileWall fonte-of-truth) + RequirementDriverType + FreschezzaAnchorEvent enum; RequirementRule (WORM parziale-mutabilità, efficace finestra, legal-wall mirror invariant, platform-owned) + RequirementRuleSet + FreshnessPolicy (total-block WORM, versione-bearing); RequirementRulePriorityResolver (priorità data-driven, ties=most-restrictive); 3 repos. Riutilizza mlos.config. Canale. marketId/programId=UUID (CommerceMarket/Program code-verified). Regole aperte multiple per cella è intenzionale ( driver discontinuoMatchJson predicates, risolto per priorità + l'evaluatore differito) — nessuna unicità aperta, a differenza le spine del catalogo. legaleWall lookup è leniente (l'enum è un estratto; un personalizzato il codice non è bloccato). Piattaforma-di proprietà + legal-wall DB CHECKs aggiunto in KamoInitializer.
· InitializerService
Schema per il modello di condizione 1-obbligazione/N-satisfier (doc 06)
Registrare com.kamo.z.shared.mlos.docs in @EnableJpaRepositories (nuovo repo pkg) + SchemaCleanupRunner backstop per mlos requirement satisfier (l'append-only Registrazione di accettazione WORM): mlos req sat one source chk num nonnulls(img id, verificato fact id, aus finding id)=1, mlos req sat type column chk (satisfier type ↔ la sua colonna sorgente, mlos req sat requirement idx, e mlos req sat requirement fk → mlos document requirement(uid). Specchi la decisione input one-source/kind-column precedente. Applicato al prod CRDB + verificato.
· kamo-shared-library
Greenfield 1-obbligazione/N-satisfier modello di condizione (doc 06 §4.2/§4.3)
La fetta di fondazione Document System: DocumentRequirement (N soddisfar di un obbligo) + RequirementSatisfier (append-solo WORM registro di accettazione) + due risolutori puri (WaitingOnResolver §6.1 derivazione, CondizioneClearability rif-counted chiara §4.3) + 6 enum, in nuovo pkg com.kamo.z.shared.mlos.docs. L'obbligo è il LOCKED LoanCondition REUSED by id (loanCondition Id morbido UUID FK) — mai forked/column-extended (doc 01 §1.1). Solo il soddisfatore sotto-modello è greenfield. FK-by-id disciplina: imgId=Long (Img.id codifica-verified Long... prestitoFileUid/borrowerUid=Long @JsonSerialize. Nome del cliente esattamente uno digitato sorgente (@PrePersist + DB num nonnulls/type-column CHECKs in KamoInitializer). waitOn è derivato (mai autorizzato) su ogni scrittura. 34 test JUnit5 no-DB.
· kamo-shared-library
NotificaPreferenza + ComunicazioneArchive (doc 07 §6.2/§9.2)
Completa il modello doc-07 §6 dell'entità — il dispositivo mobile + il record immutabile di affari. Stesso pkg (no @EnableJpaRepositories cambiamento). - NotificaPreferenza (mutabile): per-(parte, event key,canale) Non e' vero. eventKey String (doppio eventoKind|categoria granularità); cadenza/batchWindow; locale/tumore-ora a livello di partito LoanParty. - CommunicationArchive (PARTIAL-WORM, MlosLockRecord idiom + @PreRemove): il system-of-record per messaggio reso; messaggioKey UNIQUE (idempotency). congelati E' il momento giusto. whitelists il ciclo di vita di consegna — consegnaStatus (8-stato tabella di transizione; SENT->OPENED permesso per il fornitore apertura fuori ordine), inviatoAt (prova di scrittura RESPA/TILA), statoUpdatedAt (monologico, niente null-clear), provider/bounce/failure. snapshot consenso DUAL (indicatore + stato risolto denormalizzato — lo stato effettivo del registro WORM è point-in-time-resolved). assertConsentEvidence(): un SMS trasmesso deve trasportare concesso il consenso TCPA SMS (§6.5). - 12 test verdi. 3 net-new enums (DeliveryStatus mirrors bloccato nome di stato). Fondato da una ricerca Flusso di lavoro + recensione a 2 anniversario (SHIP-AS-IS; applicato asserisceConsentEvidence + statusUpdatedAt null-clear + SENT->OPENED).
· InitializerService
Notifica partito+consenso schema di registro (doc 07 §6)
- KamoInitializerApp: @EnableJpaRepositories += E' il momento giusto. (nuovo repo pkg per ) - SchemaCleanupRunner: mlos consent one identity chk = num nonnulls(party uid, raw number) = 1 — un evento di consenso identifica esattamente un consenso (parte XOR numero di ingresso grezzo); l'analogo WORM-vault di decision input one source chk. WORM è l'entità @PreUpdate/@PreRemove guards (nessun trigger DB — CRDB non può finalizzare). 3 tavoli auto-creare via ddl-auto.
· kamo-shared-library
Grafico del partito + Registratore di consenso TCPA/E-SIGN (doc 07 §6)
Nuovo pkg ************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************ fondazione. Consumatore-agnostico (FKs solo bloccato donotmodify; il speditore è un futuro MLOSxxxService, NON i nomi personali KamoLOS — doc 07's KamoLOS l'assegnazione è stale). - LoanParty (mutabile): grafo del destinatario digitato; FK bloccato LoanFile/Member da Long id; contattoGiurisdizione = la residenza del partito OWN (ore tranquille); (org,loan,member,role) UNIQUE (per-loan-per-role; nulls-distinct mantiene co-bordatori + terze parti distinte). - ConsentRecord (WORM, AiDecision idiom + @PreRemove): TCPA/E-SIGN legale prova; partitoUid XOR rawNumber (E.164, per inbound STOP prima di un partito esiste) — afferma Identificati() + un DB num nonnulls=1 CHECK; consentiti at app-set (tempo di cattura legittimo-accurato); snapshot divulgare body sha256. - DisclosureText (WORM + @PreRemove): il testo di consenso versione EXACT BODY mantenuto (un puntatore da solo è insufficiente prova TCPA); corpoSha256 non-null. - 6 enums netti (personali-prestiti enums off-limits + mancanza IN PORTAL/MEDIASTREAM/ MAIL). 8 test verdi. Fondato da una ricerca Workflow (Codice-verified EsignConsent-is-a-pattern, KamoLOS staleness) + recensione avversaria a 2 anni (FIX-THEN-SHIP: aggiunto consenso-identità CHECK, l'indice unico LoanParty, sha snapshot, @PreRemove).
· InitializerService
DDL (decisione-spina 2c)
decision input auto-crea via ddl-auto; SchemaCleanupRunner aggiunge gli invarianti Hibernate non puo' emettere: - Decision input one source chk: num nonnulls(11 FK cols) = 1 (esattamente uno sorgente immutabile per riga). - Decision input kind column chk: la colonna non-null corrisponde all'input kind discriminatore (coerenza di tipo in un registro legale WORM; pure-SQL, sopravvive enum-whitelist spazzare). - decisione input decision idx (ai decision uid, date created) + il difficile FK Decisione input decision fk -> ai decision(uid) (mirrors steward feedback). - NO HMDA-firewall DDL: codificato CHECK del dottore è impossibile (VerifiedFact non ha alcuna colonna di Classe; demografici in una tabella separata; CRDB CHECK non può sottoquery; nessun trigger). Il firewall è strutturale + app-layer, differito.
· kamo-shared-library
DecisioneInput — Provenienza di ingresso forfettaria (decisione-spina 2c)
Il figlio immutabile di AiDecision che rende ogni decisione deterministica replayable (doc 03 §2.1). Sbloccato dall'ormai completo catalogo/scenario/precing inventario — DecisionInput FK-pins la regola/fatto/versione immutabile PKs. - Total-block WORM (AiDecision idiom: @PreUpdate lancia, no @PostLoad, no DB 11 colonne FK soffice-UUID (InputKind discriminatore seleziona quale); solo ai decision uid è un FK duro. - InputKind(11)/InputRole(3) enums. punteggioContribution numeric(8,4); testLoan (CORE, specchi StewardFeedback — WORM non può retrofit la bandiera). - HMDA firewall (doc 03 §3.3) — CODE-VERIFIED CHECK del doc è architettonicamente impossibile: bloccato verificato Il fatto non ha alcuna colonna di fattoClass/HMDA DEMOGRAPHIC, demografici vivono in un tavolo SEPARATE BORROWER HMDA, CRDB CHECK non può sottoscrivere, Niente trigger. Firewall è STRUTTURALE (segregazione da tavolo; questa entità non ha percorso di fatto) + regole di app-layer differite. N. HMDA DDL navi (una non funzionante CHECK avrebbe ingannato un esaminatore). - I CHECK mono-non-null + tipi di omogenei di coerenza sono KamoInitializer DDL. - 4 test verdi; repo pkg decisione già in @EnableJpaRepositories. Fondato da una ricerca Flusso di lavoro (Codice-verified VerifiedFact/HMDA) + avversario 2-agent review (SHIP-AS-IS; spedito il tipo↔ coherence CHECK).
· kamo-shared-library
Lock record + lock event (Phase-2 Slice 12c)
Lo scenario FINALE / sub-slice di partenza (doc 02 §6.3/§8.1) — completa il §6.3 scenario / inventario dell'entità di partenza. Un blocco di tasso preso su un risultato di prezzo + il suo log di eventi di sola accettazione. - MlosLockRecord = PARTIAL-mutability WORM (MlosBulletin idiom): @PostLoad snapshot i termini bloccati congelati E' il momento giusto. ancora/rate lock uid), @PreUpdate lancia se qualche cambiamento ma stato WHITELISTS (validato dalla tabella del ciclo di vita RateLockStatus) + lock expiration (monotonic-forward — mai accorcia la finestra impegnata). - specchi MlosLockStatus bloccati RateLockStatus EXACTLY (NO FLOATING/CANCELLED); tasso lock uid = UUID soft FK -> bloccato RateLock.id (trappola mixed-PK), DB-UNIQUE (1:1 blocco >record; WORM legale, nessun supersedes id). - rate sheet + lock policy versione FK non-null, guideline nullable. - MlosLockEvent = append-only totalblock WORM; event type incl CANCEL (ritiro del passeggero, distinta dal creditore BREAK); price delta(9,4). - Non aggiungere mai colonne al RateLock bloccato; RCE lo scrive tramite LoanPricingService.createLock timbrare bloccatoByMemberId dall'attore. - 14 test verdi. Tutti gli indici dichiarati (no KamoInitializer DDL). Messa a terra con codice-verified fatti bloccati (RateLock.id=UUID, RateLockStatus costanti) + recensione avversaria a 2 anni (SHIP-AS-IS; applicata tutte le 5 dovrebbe-consider: scadenza monotonica, tasso unico lock uid, evento CANCEL, documento a prezzo congelato, copertura di prova).
· kamo-shared-library
Corsa di prezzi + risultato + adeguamento applicato (Phase-2 Slice 12b)
Il record immutabile di quotazione (doc 02 §6.3/§7.2/§8.1): MlosPricingRun -> MlosPricedProductRisultato -> MlosAppliedAdjustment, scritto in un tx dal PPE. - Tutti 3 IMMUTABILE-BY-CREATION (total-block WORM, AiDecision idiom: @PreUpdate getta, no @PostLoad). Traduzione: l'esecuzione (risoluzione del prodotto; doc §6.3 linea 293/294). - Numeri di prezzo grezzi BigDecimal corrispondenti alle griglie spedite: prezzo base/finale (9,4). total adjustments = solo ADDITIVE; moltiplicativo sulle righe di adattamento applicate. - price adjustment id = FK morbido obbligatorio -> MlosPriceAdjustment (il §6.5 catena di audit mai-deleting). creato by member id nullable=false. - eleggibilità status REUSEs EligibilityOutcome; ineligible reason code = nuovo MlosAdverseActionReasonCode enum (obiettivo FK di Doc assente in codice). - Correzione della recensione: versione di guida/lock-policy FKs + termini di prezzo sono NULLABLE così Le righe KEPT CANNOT PRICE/NO COVERAGE persistono (nessun UUID sentinel); un @PrePersist invariante ripristina l'integrità (ELIGIBLE => prezzo + nessun motivo; non-ELIGIBLE => codice ragione presente). - 19 test verdi. Tutti gli indici dichiarati (no KamoInitializer DDL). Fondato da una ricerca Flusso di lavoro + recensione avversaria di 2 anni (FIX-THEN-SHIP: ha applicato il mosto-fisso variabile-versione-guida + l'ampliamento coerente).
· kamo-shared-library
Identità dello scenario — MlosLoanScenario + MlosScenarioBorrower (Phase-2 Slice 12a)
Apre il doc-02 §6.3/§7 strato di scenario/precing (primo di 3 sub-slices). The radice aggregata del PPE impicca + i suoi mutuatari. - FK-don't-recopy (§6.4): gli scenari memorizzano valori E' il momento giusto. + un aus recommendation cache); grezzo URLA attrs leggere THROUGH prestito file uid, mai immagazzinato. Un test di riflessione permettelist lo blocca in modo strutturale. - FK bloccato nucleo BY ID: prestito file uid + mutuatario uid sono semplici colonne lunghe (Codice-verified LoanFile.uid/Borrower.uid = Lungo unico rowid; UUID del doc sbagliato) E' il momento giusto. Niente @ManyToOne. prestito scenario id = UUID FK interno. - (loan scenario id, mutuatario uid) chiave naturale DB-unique (un mutuatario per scenario; entità dichiarata, nessun DDL crudo). - Rapporti derivati/score DECIMAL(18,6) corrispondenti a ****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** il limite del dollaro di contea DECIMAL(18,2). Sia MUTABLE (no WORM) che riproducibilità congelato in seguito sull'immutabile PricingRun/Result). - Tutti gli indici dichiarati (no KamoInitializer SchemaCleanupRunner DDL). - 4 test green (Serializzazione stringa lunga + FK-don't-recopy Allowlist). Messa a terra da una ricerca Flusso di lavoro (codice-verificati bloccati tipi FK) + avversario 2-agent review (SHIP-AS-IS; applicato il consentlist-test + docstring fixs).
· kamo-shared-library
Entità di ingestione — MlosExtractionTemplate + MlosDocumentSegment (Phase-2 Slice 11)
Apre il doc-02 §6.3 lato ingestione: il formato per-investor mappa il parser legge + una regione classificata e recensibile di un documento sorgente. Quattro a terra enums # Buttali in modo reale # struttura del foglio di tasso (290-file RateStack corpus survey). - Entrambe le entità MUTABLE (non la versione WORM-spine guard): registro/review ciclo di vita, assente dal §6.5 inventario immutabile. - MlosExtractionTemplate: in avanti superseded by self-FK + bandierina attiva; assertSupersessionConsistent() auto-applicato tramite @PrePersist/@PreUpdate (active=true => superseded by null). header synonyms = uno §6.7 JSONB. - MlosDocumentSegment: (source document id, segment locator) DB-unique ancoraggio idempotency; classificazione confidence DECIMAL(4,3) corrispondente AiDecision.confidence; targetEntity default NONE, rilevatoType ha UNKNOWN fall-safe, ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** - Tutti gli indici dichiarati (no KamoInitializer SchemaCleanupRunner DDL). - 11 test verdi (invariante + enum colonna-fit guard). Fondato da una ricerca Flusso di lavoro + recensione avversaria di 2 anni (SHIP-AS-IS; ha applicato la consistenza/l'efficacia degli articoli SHOULD-CONSIDER).
· kamo-shared-library
Bollettini + provatanza di cambiamento del bollettino + applicabilità di base effettiva (Phase-2 Slice 10)
Chiude l'inventario dell'entità del catalogo doc-02 §6.3. I bollettini sono gli annunci di cambiamento degli investitori che ha generato nuove versioni di catalogo e supersede predecessori (§6.5). - MlosBulletin (mlos bulletin, WORM): investitoreId FK, titolo, rilasciato at,efficace da (LocalDate), efficace basi (BulletinEffectiveBasis LOCK/NOTE/FUNDING/APPLICATION), pipeline nonno, supersedes id self-FK, source document id FK, stato (BulletinStatus DRAFT/ACTIVE/SUPERSEDEDEDED). Protezione WORM congelata (senza finestra effettiva until; correzioni = un nuovo bollettino). - MlosBulletinChange (mlos bulletin change): change type, target product id, create guideline/ ******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************* catena di prova di conversione del bollettino. 4 enum. - BulletinApplicabilityResolver (ungated) + LoanEffectiveDates + tri-state BulletinApplicabilità: codifica la regola di conformità §6.5 (misapplying Effect basis è un errore di conformità) — applica iff ACTIVE + data di base >=efficace da + non bisestile; data di base mancante -> INDETERMINAZIONE (deferire, mai silenziosamente "vecchi termini"); nonno utilizza una pipeline di EXPLICITEntryDate (impegno milestone), non una data di applicazione in codice duro. 14 test verdi. Rivisto inversamente (2-agente): fisso MEDIUM (applicazione codificata in grani Data + interno contraddizione -> esplicita pipelineEntryDate), LOW (missario-basi fail-direzione -> tri-state INDETERMINATE), + javadoc (quasi uno creato versione, supersession caller-appalto). No. Cambio di codice KamoInitializer.
· kamo-shared-library
Versione Lock-policy (WORM) + opzioni di periodo + spese di estensione (Phase-2 Slice 9)
Lo strato di sicurezza dell'investitore — terza colonna vertebrale di versione WORM (dopo il foglio di tasso + guida), chiave per investitore; alimenta il futuro RateLock/RateCommitmentEngine. - MlosLockPolicyVersion (mlos lock policy version, WORM): investitoreId FK, prodottoId(null=all), efficace da/fino, sequence no, supersedes id self-FK, stato, source document id FK, + peggiore case window days, rilock allowed, rilock worst case, floatdown allowed, floatdown fee price, floatdown min improvement bps, cutoff time. Stesso @PostLoad/@PreUpdate parziale-mutabilità WORM. - MlosLockPeriodOption (mlos lock period option): lock period days, default flag (uno predefinito per politica tramite unità parziale). MlosLockExtensionFee (mlos lock extension fee): extension days, fee price (raw BigDecimal), increment type (FeeIncrementType), max cumulative days. Figli di valore. - LockPolicyVersionStatus + FeeIncrement Digitare enums. 3 repos. LockPolicyVersionResolver (gated mlos.catalog.enabled): finestra puntuale, mai ultima fila, getta su sovrapposizione (mirrori EfficaceVersionResolver). 17 test verdi (6 risolutore + 11 WORM). KamoInitializer aggiunge ux lock policy version active (un ACTIVE aperto per org+investor) + ux lock period default (un periodo di blocco predefinito per policy). Nessun flusso di lavoro di revisione (specchio felice di la colonna vertebrale Slice-1/7 WORM+resolver già vista).

Il tuo universo ti sta aspettando.
Aggiungi i prodotti quando sei pronto: nessuna migrazione, nessun nuovo login, nessuna richiesta di pagamento.
Gratis per sempre — nessuna carta di credito richiesta