Changelog
Cosa c'è di nuovo.
Ogni miglioramento alla piattaforma, come si spedisce.
· kamo-shared-library
§6.1 RON legalwall grano — ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** (WORM congelato) + CLOSING STEP BLOCKED event
Lo stato della proprietà è identità congelata sul pacchetto di chiusura (la proprietà di chiusura fa non muoversi) ed è il grano il §6.1 RON State-eleggibilità parete legale legge. CLOSING STEP BLOCKE è il segnale durevole che la coda di eccezione di chiusura-steward reagisce a quando RON è murato.
· kamo-shared-library
CLOSING MERS SUBMITTED event key (doc 05 §6.3)
Il segnale MERS: un MersRegistration ******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** MIN mai sovrascritto). Additive open String key (no DDL).
· SecurityService
Aggiungi kamp-apps, VectorService, kamolos, kamo-signer-monorepo a changelog pubblico
· kamo-shared-library
CLOSING STEP RETRIED event key (doc 05 §6.4)
Il segnale di copertura steward: un pacchetto BLOCKED STEWARD è stato sbloccato e un nodo PENDING fresco è stato materializzato per sottosistema retried. Additive open String key (no DDL).
· kamo-shared-library
CLOSING STEP FAILED chiave evento (doc 05 §6.4)
Il segnale di guasto drive-loop: un passo di chiusura FAILED/BLOCKED, il pacchetto si tiene BLOCKED STEWARD; il la coda delle eccezioni di chiusura-steward reagisce. Additive open String key (no DDL).
· kamo-shared-library
CLOSING STEP COMPLETED + CLOSING PACKAGE COMPLETED chiavi evento (doc 05 §6.4)
I segnali drive-loop: un manufatto di chiusura ha raggiunto COMPLETED (adattatore necessario), e tutti i passaggi richiesti (investitore-delivery / manutenzione-boarding). Additive open String keys (no DDL).
· InitializerService
Indice unico NULLs-safe per versioni ClosingWorkflowTemplate (doc 05 §6.3)
Una versione per (organization id, scopo level, scopo ref id) grano. CRDB è NULLs-distinct, così diviso per oggetto nullable ref id (mirrors mlos aiptp *): mlos closing wft version uniq (scope ref id NON NULL) + ****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** The MLOSDoc Orchestration editor's read-then-write (versione Number=max+1) backstop: una dup-version concomitante pubblicare perde a un 409 (l'assemblatore 409s sul dup, assemblaggio di mattoni).
· kamo-shared-library
******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************
Il segnale durevole l'editore modello doc-orchestrazione emette su una nuova versione ClosingWorkflowTemplate. Additive open String key (no DDL).
· kamo-shared-library
CLOSING PACKAGE ASSEMBLED chiave evento (doc 05 eClose)
Il segnale durevole dell'assemblatore doc-orchestrazione emette quando un ClosingPackage viene creato da un risolto ClosingWorkflowTemplate + il suo primo nodo artefatto. Additive open String key (no DDL).
· kamo-internal
Rimuovere la fase "Publish to World"; fix Run All
I generatori ora scrivono piastrelle direttamente all'unità di servizio, così il worldgen pipeline non ha più una fase di pubblicazione/push. - worldgenNats.ts + universo/types.ts: drop 'push' from WorldgenStageId, WORLDGEN STAGES e STAGE ORDER (pipeline = ) - componenti.tsx: rimuovere la voce STAGE META + CloudUploadIcon non utilizzata. - servizi/[stage]/start: accettare 'all' come target di comando in modo che "Run All" funzioni (Si espande a prep->hydro->flora->trasporto sull'agente) invece di 400ing.
· kamo-shared-library
PULL THROUGH POLICY PUBLISHED event key + null-safe AiPTP backstop doc (doc 09 §8)
Aggiunge il canonica************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************ motore ricarica la sua politica attiva su) per il governo-piano AiPullThroughPolicy editore. Aggiornamenti AiPullThroughPolicy WORM javadoc per documentare lo split single-active backstop (per-market + NULLs-distinct-safe org-wide grana) e l'ordine demote-then-insert richiesto dello scrittore.
· kamo-shared-library
LoanIdentifierEvent append-only audit enti (doc 11 §5.3/§10)
Il LoanIdentifierEvent metà del doc 11 §5.3 step-4 / §10 "completezza dell'audit" (ogni menta/supersede emette un Titolo evento WORM). Nuovo... LoanIdentifierEventType, LoanIdentifierEventRepository}: un'entità WORM (l'AiDecision/Decision) a blocco totale Input idiom — tutti i campi updatable=false, @PreUpdate lancia, si è verificatoAt = DB dataCreated) registrazione org/loanFileUid/ identificatoreId (la nuova riga ACTIVE, morbido UUID ref)/supersedesIdentifierId (il sovrastato precedente, null per un mint)/eventType E' una cosa che non va. Mezzo di decisione WORM (deferito — nessun registro AiFunction esiste ancora). Soft refs by id only (no @ManyToOne), Long ids serializzato come String. L'auto-creazione della tabella sulla corsa di KamoInitializer (indici dichiarati sull'entità prestito file uid + identificatore id; nessun cambiamento SchemaCleanupRunner). Additivo — versione condivisa-lib invariata (1.5.0).
· InitializerService
(loan file uid,type) indice parziale unitario monoattivo nativo (doc 11 §5.3/§6.2)
Chiude un foro preesistente a doppia azione nel registro dei debitori MLOS: indice (a) ****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** tipi monoattivi, quindi due file nativi ACTIVE del SAME (loan file uid, type) ma i valori DIFFERENT potrebbero entrambi commit (ad esempio un renumber racing un registroNative con un valore diverso — chiavi di valore distinte, no conflitto). Nuovo indice parziale dell'unità (loan file uid, type) stato='ACTIVE' AND External system reference IS NULL E digitare IN (i 10 tipi nativi) applica alla maggior parte di uno ACTIVE native id per (loan, type) — l'analogo (loan,type) dell'indice (c) per gli specchi OWNED ELSEWHERE. The tipo IN(...) elenco specchi indice (a); rimanere in sintonia con ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** (il §6.2 deriva guardia). CREATO Idemponte ... NON ESTRI; il prod non ha violare le righe native duplicate-attive (verificati).
· kamo-shared-library
Aggiungi IDENTIFIER SUPERSED tipo di evento chiave
Additivo chiave per eventi open-String (doc 11 §5.3/§7.3) per il segnale di renumero/supersessione del Registro di sistema — il COMPLIANCE TIMER BREACHED precedente (no enum/schema/KI). Consumato da MLOSIdentifierService.renumber.
· kamo-shared-library
*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************
Aggiunge efficaceAutonomia(orgId, stage, floor) → EfficaceAutonomia{threshold, autoExecuteEnabled}: one chain-walk (profilo → config → stage-override) che restituisce BOTH il §6.2 ha pavimentato la soglia della parete di fiducia e l'auto execute enabled master switch (stage-override-aware). Autonomia efficace Soglia ora delegati a esso (unica fonte di verità). Lascia che il RCE serratura cancello onore un inquilino che gira auto-esecuzione OFF come un auto-act CEILING indipendentemente dall'autonomia della richiesta livello. Vuoto quando nessun inquilino config (caller utilizza il default della piattaforma; la richiesta governa). Additivo; solo il bean MlosActivationService gated è interessato. 4 test.
· InitializerService
Indice di unità parziale antidoppio per i record di blocco RCE (doc 08 §7.3)
SchemaCleanupRunner aggiunge Una parte parziale. Indice UNICO su mlos lock record (organization id, prestito scenario id) E' stato... Nella maggior parte di un blocco live rate per prestito scenario: il DB deterministico backstop a MLOSCapitalMarketsService app-level protezione anti-doppio blocco, chiusura della gara TOCTOU concomitante (un duplicato live lock è la corruzione della conformità silenziosa — il registro di blocco non ha supersedes id). Idempotent (IF NOT EXISTS); già applicato al prod CRDB.
· KlusterServices
Bootstrap universo-minio segreto + ugc secchio nota (§14)
Aggiungi il passo 6 a bootstrap-universe.sh: crea il segreto dell'universo-minio (ACCESS KEY/SECRET KEY dai credi delle radici dell'universo-backup-s3) e nota che il secchio MinIO-ugc-universo deve esistere. Idempotent — salti se segreti già presente.
· DaemonService
MLOS compliance-timer escalation consumer (BLOCKED→STALE)
La metà dei consumatori del ciclo di violazione del cliente (doc 03 §2.8; emettere la metà già navi). ComplianceTimerBreachConsumer abbonamenti (durable JetStream) a ****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** e, per prestito violato, capovolge i suoi codificatori di orchestrazione BLOCKED a STALE via OrchestrationEscalation Servizio (mutabile, idemponte — già-STALE/GREEN/COMPLETE intoccato). Addirittura... a @EnableJpaRepositories; consente mlos.outbox (così l'emissione della spazzata è duramente scritta + relèed) e la 5 test unitari.
· InitializerService
§2.4 anti-AUS-shopping indice parziale-unique su mlos aus run
ATTIVA (non superata, non congelata) AusRun per (loan file uid, source label) — "guardi duplicati come AUS-shopping" (doc 10 §2.4/§2.5). Safe to land now that the MLOSUnderwritingService agenzia scrittore gestisce il false→true flip sostituito prima di inserire il nuovo run attivo. Applicato al prod CRDB.
· kamo-shared-library
Persited par flag su MlosPricedProductRisultato + OrchestrationStepStatus.STALE
- MlosPricedProductResult guadagna par flag (Boolean, falso predefinito): il §8.1-step-5 par cell della scala di bloccaggio-periodo della riga, congelata all'inserto (persistenza di registrazione della risposta-solo per bandiera). - OrchestrationStepStatus ottiene STALE: un passo BLOCKED la cui conformità timer SLA violato + escalated (previsto dal consumatore di escalation di DaemonService; doc 03 §2.8). Sia additivo; ddl-auto:update aggiunge la colonna e il generico enum-CHECK spazza ammette STALE sul prossima corsa KamoInitializer.
· kamo-shared-library
RateSheetSanityGate — §6.6 cancello di sanità prepubblicato duro (range + monotonico)
Un @Component puro-logico (il modello PriceAssemblyEngine) che convalida un tasso di candidato/prezzo ladder BEFORE a rate-sheet version pubblica (doc 02 §6.6): bande di fascia di prezzo convenzionate [par±20] (par=100 PRICE TO 100 / 0 POINTS FROM PAR — cattura errori di segnale/convenzione lordi), monotonico-ladder (prezzo non decrescente in quanto aumenta il tasso di nota, per (lockPeriodDays,ioFlag) scala), e bene-formabilità strutturale (tasso non vuoto / positivo / blocco positivo / nessun tasso duplicato). Relazioni Tutte le violazioni; fallisce chiuso. Riutilizzabile dal futuro stadio di ingestione candidato (prende un decoupled RateSheetLadderCell record, non l'entità JPA). 2-agent adversarial review → FIX THEN SHIP (1 must-fix applicato): rimosso il par-sanity near-par-PRICE check — it false-rejected legale all-premium/all-discount coupon windows (par-RATE sanity need rate etichettare, differire; la banda già lega i prezzi a ±20 di par). Inoltre: ammorbidito il segno-convenzione javadoc (explicit sign-convention check DEFERRED, band cattura solo errori di magnitudine lorde), esclusi celle null-rate dalla scansione duplicata/monotonica, e saltare il monotonico confrontare su parità di tassi. 18 test no-DB (TDD). Nessuna nuova entità → no KamoInitializer run.
· kamo-shared-library
LockPolicyVersionPublisher — §6.5 supersession completa la spina dorsale triade
Il sobling di "policy-version"... keyed per INVESTOR (ux lock policy version active = (organization id, investor id) status='ACTIVE' E efficace until IS NULL). Stesso atomico anteriore finestra vicino + saveAndFlush il priore è vicino PRIMA del candidato INSERT (l'inserto Hibernate-prima dell'aggiornamento trappola). Deltas vs rate-sheet: scopo key investorId; nessuna revisioneLabel/problemdAt; intraday tasti di sequenza su efficaceDal giorno. Shared-lib @Component gated mlos.catalog.enabled + repo Trovatore... 11 no-DB Mockito test (TDD). Con questo, §6.5 supersessione efficace è COMPLETE in tutti e tre i WORM versione spine (taglio + guida + lock-policy). Specchio fedele → CRDB e2e è la porta. Nessuna nuova entità / tabella → no KamoInitializer run.
· kamo-shared-library
GuidelineVersionPublisher — §6.5 supersessione per la colonna vertebrale
Il sibling della linea guida-versione di RateSheetVersionPublisher, keyed per PRODUCT (ux guideline version active = (organization id, product id) E efficace until è NULL). Stesso paravento atomico: ACTIVE→SUPERSED + efficace until = successore.efficace da, supersedes id link, e salvareAndFlush il prima di chiudere BEFORE il candidato INSERT (l'inserto Hibernate-prima dell'aggiornamento trappola). Deltas vs rate-sheet: scopo key productId; validare la revisioneLabel + sourceDocumentId (non rilasciatoAt); chiavi di sequenza intraday su effettivoDal giorno. Shared-lib @Component gated Mlos.catalog.enabled + repo finder 12 no-DB Mockito test (TDD, incl. a filo-ordine InOrder + WORM-guard re-run). Specchio fedele dell'editore di listino adversarially-reviewed → gated dal e2e comportamentale (linea guida supersession flips pricing eleggibilità). Nessuna nuova entità / tabella → no KamoInitializer run.
· kamo-shared-library
RateSheetVersionPublisher — doc 02 §6.5 — Supersessione efficace per l'abbattimento
L'anteriore atomico chiude il MLOSCatalogService bootstrap bundle scrittore differito. Pubblicare una nuova versione del foglio di tasso per un esistente (org, investitore) la portata ora chiude il predecessore (ACTIVE→SUPERSED + Effect until = successore.efficace da), collega il successore (supersedes id, prossimo intraday sequence no) e svuota la chiusura del priore PRIMA del candidato INSERT — Hibernate ordini INSERTs prima UPDATEs in un colore, quindi salvareAndFlush(prior) è tenuto a evitare una violazione ux rate sheet version active parziale-unique. Shared-lib @Component gated mlos.catalog.enabled (l'efficaceVersionResolver schema sibling); la chiusura è WORM-legale per costruzione contro l'entità @Preupdate guard. 15 test no-DB (Mockito) incl. 2-agent adversarial review → FIX THEN SHIP (1 must-fix applicato: fonteDocumentId convalidato davanti → pulito 400, non un post-effetto 500). Nessuna nuova entità/table/repo-interface → no KamoInitializer run.
· kamo-shared-library
Per l'evento PPE
· kamo-shared-library
Attribuzione del codice ragione-dimensione singola (specificità ECOA)
Chiude il gap di raggiungibilità del codice ragione la recensione PriceAssemblyEngine contrassegnata: a manca di cella EXACTLY una dimensione di contenimento ora diventa INELIGIBILE con la sua specifico motivo principale ECOA (FICO BELOW MIN / STATE NOT ELIGIBILE / PROPERTYPE NOT ELIGIBLE / UNITS NOT ELIGIBLE: invece di collassare a NO COVERAGE generico — rendendo i 9 codici CELL non accessibili raggiungibile. Multi-dimensionale / ambiguo manca, e le lacune del catalogo numerico (FICO sopra un soffitto o tra bande; un importo di prestito tra bande disgiunte), correttamente soggiorno NO COVERAGE (un §6.6 difetto di copertura, mai un debitore negazione). Sostrato puro — nessun servizio live consuma ancora il matcher; nessun cambiamento di schema, nessun run KamoInitializer. - AmmissibilitàRisultato: porta il principale MlosAdverseActionReasonCode (il matcher possiede — solo detiene il contesto dimensionale). L'ineleggibile 2-arg senza ragione fabbrica è RIMOVED quindi ragioneCodice è null iff ELIGIBLE — il prodotto MlosPricedRisultato @PrePersist invariant detiene per costruzione per qualsiasi risultato costruito in fabbrica. - AmmissibilitàCellMatcher: fallito Dims + attributo di una dimensione relaxNoCoverage; direzione (BELOW/ABOVE/GAP) calcolata SOLO sopra i fallitori di dimensione (non l'intera matrice) così un prestito troppo grande su bande disgiunte non è mai mal etichettato BELOW MIN, e un FICO sopra-ceiling/gap è un gap di copertura, non un falso "score troppo basso". Substrato contratto documentato: un vero disuguagliatore; il consumatore LOE-Core ri-attribuisce i motivi up-to-4 NOAA. - PrezzoAssemblyEngine: ragione additiva O(cell, fallback) — preferisce il fiammifero codice di proprietà; cellReasonCode(matrixType) mantenuto come il difensivo raw-risultato fallback. 2-agent adversarial review → FIX THEN SHIP; applicato entrambi i must-fix (loan-amount & FICO direzione mislabels, ciascuno dimostrato con un esempio lavorato) + dovrebbe-fisse (totalizzare il record invariante; substrato-contrattuali + documenti di direzione). 19 matcher + 33 motore prove verdi (89 prove di catalogo verde).
· kamo-shared-library
ComplianceTimerService emette mlos.compliance.timer.breached su violazione SLA (doc 03 §2.8)
Il seguito chiamato javadoc ai timer Slice-2c spediti: "event emission to a a La coda di conformità è un follow-up." scadeBreached() ora emette un COMPLIANCE TIMER BREACHED event per ARMED→exPIRED timer, scritto alla casella di uscita IN LA SAME TRANSACTION come capovolto (la garanzia della transazione: una violazione è escalated iff è registrato duramente). Il consumatore a valle guida la HIGH steward escalation + l'OrchestrationState BLOCKED→Spagnolo (una fetta successiva). Traduzione: null disabilita l'emissione in modo che il servizio scade ancora timer quando la casella di posta substrato non è cablato nel servizio in esecuzione — grazioso, retrocompatibile con L'attuale autowiring di DaemonService (la cucitura di prova 3-arg è conservata). - Busta: dominio=compliance, aggregaId=loanFileId, porta payload E' il momento giusto. - Nuova costante open String E' il momento giusto. (nessun cambiamento di schema → no KamoInitializer run). - 14 test ComplianceTimerService verde (12 test di emissione invariati + 2 esistenti). Specchio fedele della decisione-spina/webhook-ingress outbox-produttore modello (review-exempt).
· kamo-shared-library
CondizioneTemplateExtension — mutuatario Bandiera adatta per il portale (doc 09 §6.4)
Il nuovo dato dipende dalla visualizzazione del portale del mutuatario "What's Left" ha bisogno: LoanCondition ha portato solo ids del personale/org, quindi il portale non può dire che condizioni aperte un BORROWER può agire su. doc 09 §6.4 prescrive un mutuatarioAzionabile bandiera sul LoanConditionTemplate come entità SIBLING — mai un colonna sul nucleo bloccato (doc 01 §1.1). La bandiera per condizioni è DERIVED lato servizio da questo modello bandiera + la categoria condizione. - CondizioneTemplateExtension (com.kamo.z.shared.mlos.docs, mutable config/reference): morbido FK prestitoCondizioneTemplateId → bloccato LoanConditionTemplate.id (UUID), DB-UNIQUE 1:1; organizzazione denormalizzataId (Long, String-serialized); mutuatarioAzionato boolean @ColumnDefault falso (fail-safe: interno-solo a meno che non curata actionable). - No, no. (findByLoanConditionTemplateId + E' il momento giusto. mlos.docs già in @EnableJpaRepositories; l'indice UNIQUE è soggetto-dichiarato (no SchemaCleanupRunner). - 3 test no-DB verdi. Specchio fedele del DocumentRequisito soft-FK-to-locked modello (review-exempt).
· kamo-shared-library
PriceAssemblyEngine — the deterministic §8.1 PPE core (Phase 2 Slice 13)
La prima fetta di mlos puramente logica: il capstone che compone il catalogo spedito risolutori nella matematica dei prezzi del server (doc 02 §8.1 step 2-4). Ungated Stateless @Component (sibling to AdjustmentConditionEvaluator/ ****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** Nessun cambiamento di schema. I futuri cavi MLOSPricingService repos + persistenza + eventi. - mergeEligibility(): il §8.1 step-2/3 filtro a tre congiunti (cellula E linea guida E AUS gate) → AmmissibilitàVerdict, la maggior parte dei blocchi precedenti con un unico MlosAdverseActionReasonCode (cell)**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** guida → AUS-quando richiesto → ELIGIBLE). - assemblarePrezzo(): finale Prezzo = base + Σ ADDITIVE + Π MULTIPLICATIVE(stack order) + margine, rispetto di cap value. Additivo riassunto (→ total adjustments 9,6), quindi fattori moltiplicativi scalano il subtotale in esecuzione in stack order crescente (uid tie-break), poi margine aggiunto ultimo/esterno del D; unico finale HALF UP a (9,4). - price(): orchestra entrambi; l'uscita soddisfa il MlosPricedProductResult @PrePersist offerta-consistenza invariante per costruzione. - cap value = morsetto di magnitudo solo additivo (cap=0 ⇒ 0 contributo, destinato); un cap value moltiplicativo è un difetto di configurazione rumoroso (chiuso, mai prezzo sbagliato). AUS PASS/NOT APPLICABLE non-blocking (Prezzo-prima-AUS; §8.2 lock-stage hard-stop è il servizio di). - Nuovo: AusGateOutcome enum + Non e' vero. 33 no-DB JUnit5 test green. Flusso di lavoro di ricerca (3-reader + sintesi) + 2-agent adversarial review (verdict FIX THEN SHIP, zero must-fix; applicato i 5 elementi d'indurimento del dovrebbe-fix: forte multicativo-cap guard, ragione-codice-copertina-gap doc, cap=0 + basso-ruleCode docs e 6 test di copertura).
· InitializerService
Registrare pkg + RCE/pull-through DDL (docs 08/09)
@EnableJpaRepositori += Non e' vero. SchemaCleanupRunner: E' il momento giusto. (partial-unique) + rce commit ai decision fk + rce commit lock record fk + rce commit pricing snapshot fk (il §7.4 snapshot delete-guard) + mlos aiptp one active uniq (una politica di pull-through ACTIVE per lender profile+market). RCE tabella + vincoli applicati + verificati.

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