Jurnal de schimbări
Ce e nou.
Fiecare îmbunătățire a platformei, pe măsură ce se livrează.
· kamo-shared-library
Reguli de orientare + condiții + evaluator, partajarea motorului predicat LLPA (Pasa-2 Slice 8)
Ghidul-regulă predicat conjunct de §8.1 pas-2. Critic, REUSS condiție Slice-4 revizuit Evaluator în loc de a multiplica logica de securitate-critică predicate. Refactorul DRY (ne-regresiv - Interfaţa PredicateCondition ***************** - MlosAdjustmentCondition + MlosGuidelineRegulaCondition ambele implementa. - AjustareConditionEvaluator generalizat la PredicateCondition; ajustareMatches -> allConditionsMatch (List<? extinde PredicateCondition>). Slice-4 test re-runs verde (9), ambele remedieri anterioare HIG intacte. Nou: - MlosGuidelineRegulă (mlos guideline rule): orientareVersionId FK, productId FK, ruleCode (unique per versiune), verdict (Regula Verdict Eligible/INELIGBIL/STIPLAT §10.3 vocab), requirementKind - Nu. cerințe Valoare, severitate, sursăSecțiuneRef, pavilion necondiționat. + MlosGuidelineRegulaCondiție (implements PredicateCondition). - OrientareaRegulamentEvaluator (unged @Component) + OrientareaEvaluation + OrientareaOutcome: o regulă incendii atunci când toate condițiile sale dețin (prin intermediul evaluatorului comun); INELIGIBILE If any fired Inneligable rule; stipulations colectate. 8 OrientareaRegulaEvaluatorTest verde. Adversar evaluat (2-agent): reactiv confirmat byte-identical/neregresiv; MEDIUM fix pericol supra-bloc regulă pe jumătate autorizată/diminuare-FK INELIGIBILE nu poate bloca în tăcere fiecare împrumutat (valoare-set nu a fost închis); explicit NO KamoInitializer cod de schimbare.
· InitializerService
Index parțial-unic (Phase-2 Slice 7)
SchemaCleanupRunner: ux guideline version activ parţial-unique ON mlos guideline versiune (organization id, product id) Where status='ACTIVE' ŞI eficace till IS NULL ux rate sheet versiune active (doc 02 §6.5). Catalog repo pkg deja înregistrat (Slice 1).
· kamo-shared-library
MlosGuidelineVersion (WORM) + OrientareaVersionRezolvator (Pahase-2 Slice 7)
Ghidul cu date reale imuabile VERSION *************** și regulile viitoare de orientare atârnă off. Replicare fidelă a Slice-1 MlosRateSheetversion spine, tasted per product (vs per investitor). - MlosGuidelineVersion (mlos guideline versiune): produsId FK, revisionLabel, efectiv de la/până, Secvență no, înlocuiește id auto-FK, status, source document id FK, kb article guid + kb article version no (§6.4 KB-prose drift-pin, imuabil). App-strat parţial-mutabilitate WORM (@PostLoad instantaneu + @PreUpdate diff): îngheaţă identitatea/conţinutul, permite doar PROIECT-> ACTIVE, SUBSTANŢĂ- > SUPERSED, SUBSTANŢĂ-> RETIRED + scriere-o dată eficace până la închidere. - Orientarea VersionStatus ***************** - OrientareaVersionRezolver (gated mlos.catalog.enabled): punct-in-time window resolution, never Ultimele rânduri se suprapun. Oglinzi EfficientVersionRezolvator. - 17 teste verde (6 OrientareaVersiuneRezolvatorTest + 11 ***************** KamoInitializer adaugă ux guideline version activ parţial-unique (un produs activ activ per org+).
· kamo-shared-library
Matricea eligibilităţii + celule + mecior de celule (Phase-2 Slice 6)
Substratul cu filtru de eligibilitate §8.1 pas-2 (conjunctul de celule; regula orientare + poarta AUS ȘI mai târziu). - MlosEligibilitateMatrix (mlos eligibilitate matrice): per ************* Datată efectiv; REUSES blocat URLA ***************** prin @Enumerated (STRING) pe coloane noi (FK-free, nu le editează niciodată); orientareVersionId soft-FK (nulable până la orientări). - MLOSEligibilitateCell (mlos eligibilitate cell): fereastra de eligibilitate tastată (blocaredproprietyTypeUrla), units low/high, loan amount low/high, state set id (FK MlosValueSet); valoarea limită. Prețuri/limită numere brute BigDecimal (convenție catalog). - MlosMatrixType {MAX LTV,MAX CLTV,MAX DTI} - EligibilitateCellMatcher (unged @Component) + Refolosirea elementelor de scenariu + Eligibilitate Rezultatul Nu-ţi face griji. + Eligibilitate Rezultat: localizați celula care conține peste Nu-ţi face griji. RATIO-DISPATCH pe matrice tip (ltv/cltv/dti) testat vs limita; lipsă attr necesar → CANNOT PRICE (susţinut înainte de acoperire); starea nu este închisă; suprapunere → Cele mai restrictive (au apărut în detaliu). 12 EligibilitateCellMatcherTest verde. Enum-reutilizare + spec din fluxul de lucru de cercetare; recenzie contradictorială (2-agent): raport fix matrice tip Dispecerat + rație ridicată CanNOT PRICE + observabilitate suprapunere + scădere neonorată ALTE. NU Schimbare de cod KamoInitializer (catalog repo pkg înregistrat Slice 1) .
· kamo-shared-library
MlosMarginSchendule + MargineSchenduleRezolvator (Pasa-2 Slice 5)
Stratul de marjă al investitorilor - MlosMarginSchedule (mlos margin schedule): rateSheetVersionId FK, productId (null=toate), marginalType, împrumutAmountLow/High band, valoare (raw BigDecimal), compBasis (Browner PAID - CompBasis enum nu este niciodată un punctaj de intrare (doc 13 §8.5.). - MargineScheduleRezolvator (unged @Component): aplicabil (scheme, împrumutAmont, compBasis) = bandă conține suma (inclusiv, nul=deschis) ȘI meciuri comp; totalMargin = Σ valori (ZERO dacă nu există). 5 MargineRezolvatorGreen. Numere de preț brute BigDecimal (corecție Slice-3). NO KamoInitializator cod de modificare (catalog repo Pkg înregistrată Slice 1; indexuri declarate de entitate) .
· InitializerService
Verificare de proprietate a platformei cu set valoric (Pase-2 Slice 4)
SchemaCleanupRunner: ADD CONTRAINT mlos value set propriety chk CEC (platforma proprietate = (organization id IS NULL)) platforma deținută cu o org nulă; un set specific org este org-scoped. Bicondiţional = ... IS NULL Forma supravieţuieşte măturării enum-whitelist. Catalog repo pkg deja înregistrat (Slice 1).
· kamo-shared-library
Ajustări LLPA + seturi de valori + evaluator de stare (Pase-2 Slice 4)
Stratul LLPA/ajustarea + motorul predicat determinist pentru potrivirea §8.1 pas-4 ("an ajustarea se potrivește dacă toate condițiile sale sunt îndeplinite"). - MlosPriceAdjustment (mlos price ajustation): rateSheetVersionId FK, productId (null=toate), ajustareGroup, operation (ADDITIVIVATICION), value, stackOrder, capValue, eticheta. - MlosAdjustmentCondition (mlos ajustation condition): pretAdjustmentId FK, atribut, operator - Nu. numLow/numHigh, valoareSetId FK. - MlosValueSet (mlos value set) + MlosValueSetMember (mlos value set member): named category Seturi; doc 02 §6.2 Excepție deținută de platformă (organizare Id anulable + platformaOwned pavilion on numai SET; membrul nu are nicio oglindă orgId - AdjustationConditionEvaluator (unged @Component) + ScenarioFacts: numeric ops vs num low/high, set ops vs membrii rezolvați; lipsă de fapt → nici un meci; SET OPS FAIL ÎNCHIS pe membru gol / null set (un set de valori soft-FK atârnând niciodată nu se potrivește în tăcere cu toată lumea) și nul-rezolvator-sigur (fără NPE). 9 *************de verde. Revizuit adversar (2- flux de lucru agent): fix 2 bug-uri Evaluator HIGH (NOT IN eșuează deschis pe gol Set; NPE on null resolutionr) + a scăzut oglinda orgId a membrului redundant pe revizuire. Prețuri numere brute BigDecimal (corecție Slice-3). KamoInitializer adaugă valoarea-set de proprietate CEC.
· kamo-shared-library
MlosBasePriceGrid + NoteRateLadder celule prețioase (Pasa-2 Slice 3)
Rata de preț/celulele de preț ȘI un produs (Slice 2); baza ansamblului de prețuri §8.1 - MlosBasePriceGrid (mlos base price grid): rateSheetVersionId FK, productId FK, noteRate, lockPeriodDays, basePrice (pret-la-100), basePoints, min/maxLoanAmount, ioFlag. UNIQUE compus (versiune, produs, note rate, lock period days, io flag) a declarat entitatea (io flag NOT NULL → complet unic, fără DDL brut). - NoteRateLadder (ungated @Component): par = celula cel mai apropiat pret-la-100; cel mai apropiatToPrice (tinta); cravate -> rata inferioară a notelor (doc 02 §8.1 pas 5). 5 NoteRateLadderTest verde. CORECȚIA COD-VERIFICATĂ: doc 02 §6 spune EmbMoney/EmbPercent, dar blocat LoanPricingSnapshot (ancora de reproductibilitate) utilizează RAW BigDecimal nu pot fi deturnate; EmbPercent (9,4) nu se pot potrivi cu o rată de 6 decimale. Deci, instantaneu-mirrored preț rețea numere utiliza brut BigDecimal potrivire LoanPricingSnapshot (note rate 9,6 / base price+puncte 9,4 / sume de împrumut 18,2). Nicio modificare de cod KamoInitializer (catalog repo pkg înregistrat Slice 1; unic index-entitate declarată) numai re-run.
· InitializerService
Verificare de consistență Mlos produs ARM (Pasa-2 Slice 2)
SchemaCleanupRunner: ADD CONTRAINT *************** CEC ((amortizare tip = "ARM") = (arm fix perioadă luni NU ESTE NULL) ] declarat IFF produsul este un ARM (doc 02 §6.6.6). supravieţuieşte verificării generice a listei enum-albe. Catalog repo pkg deja înregistrate în Slice 1.
· kamo-shared-library
MlosProduct + MlosArmIndex strat de produs-taxonomie (Pasa-2 felie 2)
Coloana vertebrală a produsului din catalog (doc 02 §6.3): totul la prețuri în aval (preț de bază) grile, matrice de eligibilitate, reguli de orientare) FKs către MlosProduct.uid. - MlosProduct (mlos product): per-investitor produs Tip (REUSES blocat URLA AmortizationType), termenMonths, bratFixedPeriodMonths, armIndexId FK, împrumutClass, documentationType, conforming, losProgramCode (RESES blocat 17-value LoanProgramCode, §6.4); GhidVersionPointer (real FK-by-id to viitor MlosGuidelineVersion.uid, nulable), activ. apsermentStructurallyValid (): arm fix period luni set IFF amortization type=ARM. - MlosArmIndex (mlos arm index): indexName, marginalBps, iniţial/periodic/lifetime caps + floor as EmbPercent (doc 02 §6 rate-via-EmbPercent), adjustMonths. - 2 noi enums LoanClass / Documentation Tip (catalog specific; DocumentationType este §3.5 non-QM clasa doc-program, distinct de Slice-1 MlosDocType). 2 repo. Base = BaseUuidEntity; orgId=Lungă @JsonSerialize (ToString). 5 MlosProductInvariantTest verde. KamoInitializer adaugă mlos produs ARM-consistență DB Check (catalog repo pkg deja înregistrat în Slice 1). Preţul e mic.
· InitializerService
Inregistreaza catalogul repos + rata de versiune a foii nu-overlap index (Pasa-2 Slice 1)
- @EnableJpaRepozitories += com.kamo.z.shared.mlos.catalog (noul MlosInvestor/ ***************** repos; entitățile deja acoperite de @EntityScan). - SchemaCleanupRunner: ux rate sheet version activ parţial-unique index ON mlos rate sheet versiune (organization id, investitor id) Where status="ACTIVE" ȘI efectiv până la IS NULL invariant fără supraalungire (doc 02 §6.5; CRDB nu are nicio constrângere de eliminare a intervalului).
· kamo-shared-library
Catalog de proveniență + efectiv-datated versition spine (Pahase-2 Slice 1)
Cea mai mică felie de catalog de fază 2 (doc 02 §6): lanțul de proveniență ImgDat -> MlosSourceDocument - > MLOSRateSheetVersion și imuabil eficace-datat versiunea coloanei vertebrale cu rezoluție punctuală. Substrate-primul (fără MLOSCatalogService) scriitor încă); acest lucru este imuabil-catalog-PK fundație DeciziaInput va FK la. New pkg com.kamo.z.shared.mlos.catalog: - MlosInvestor (per-org register; short code unic per org), MlosSourceDocument (subtire Adnotare peste ImgDat blocat; soft-FK img dat id, niciodată nu re-storeste bytes, doc 02 §6.4). - MLOSRateSheetVersion: versiune imuabila cu date eficiente (efficient from/pana la fereastra, înlocuiește auto-FK, secvență no, ciclul de viață al stării, Source document FK, cutoff time) cu un dispozitiv de protecție WORM cu mutabilitate parțială (@PostLoad instantaneu + @PreUpdate diff): înghețări cols de preț/identitate, permite numai PROIECT-> SUBSTANȚĂ, SUBSTANȚĂ->SUPERSED, SUBSTANȚĂ->RETIRED și scrie-o dată aproape de efectiv până când. Niciun declanșator DB (CRDB nu se poate finaliza la 24.3.3). - EficientVersionRezolver (gated mlos.catalog.enabled): punct-in-time rezolution versiune a cărei [eficacitate de la, eficace pana) fereastra contine pretd as of, never a "Ultima linie" se unește; aruncă pe o suprapunere efectivă a ferestrei (apărare în profunzime, doc 02 §6.5/§8.1). - 6 enums *************** RateSheetVersionStatus) + 3 repos. Baza = BaseUuidEntity (doc 02 §6.1); orgId=Long @JsonSarialize (ToString) (cod verificat: Organization.id este unic rowid, nu doc 02's "UID"). 17 teste verzi (6 puncte-în-timp + 11 WORM guard). KamoInitializer adaugă catalogul repo pkg + ux rate sheet version activ index parţial-unic fără-overlap.
· kamo-shared-library
Supraîncărcarea porții de încredere per-tenant (config↔ cablare)
Decizia privind aditiviiGate.evaluation (stadiu, încredere, legalRequiresHuman, BigDecimal chiriașThresholdOverride) de **************** scena, etaj). ă peretele legal rămâne absolut și suprascrierea este încă podea de non-tonable etajul de siguranță (autonomia nu poate acționa niciodată sub ea). Null suprascrie cade înapoi la dacă platforma este implicită; 3 arg existente evaluează() delegații cu nul, astfel încât transportul comportamentului poarta/DecizieSpina + testele lor sunt neschimbate. Ploi adăugat de siguranță() getter astfel încât un apelant rezolvă pragul chiriașului la același etaj. Aceasta conectează fundația de configurare Faza-1 la poarta de decizie: un motor poate acum Fă o evaluare. scena, ***************** 9 DecisionGateTest (4 new) + 5 DecisionSpineTest + 6 MlosActivationServiceTest verde.
· InitializerService
Indicii parţiali unici + variabilele de service (completarea configuraţiei Phase-1)
SchemaCleanupRunner DDL pentru noile domenii mlos.config (mlos.config deja in @EnableJpaRepozitories; Hibernate ddl-auto:actualizeaza creeaza tabelele): - indici unici parţiali (unde este activ=adevărat ȘI eficace to IS NULL) privind mlos pricing policy / mlos capital policy / mlos serviting policy (lender profil id) + mlos product enablement (lender profil id, program id) - ServikingPolicy imuabil invariants: Check scra forced=true + fdcpa forced=true (=-CHECKs, supravieţuiesc măturării enum-whitelist).
· kamo-shared-library
Domenii complete de configurare faza-1 + MlosActivationService (Slice 5)
Completează inventarul entităţii de configurare a doctorului 04 - Policy singletons (one-active-per-profil, efectiv-datate/apendice): PreţuriPolitice (ppeSourceListă de priorităţi <String > amânat la domeniul vânzătorului §5; NU LO-comp), CapitalPolicy (NO pullThroughPct) + Concentrarea capitalului Limit copil, ServingPolicy (scra/fdcpa imuabil invariante). Indexuri parţiale unice + scra/fdcpa Checks merg în kamoInitializer. - ProductEnablement (single-activ per program; canalRestriction @ElementColection; programId UID - Familia investitorului: InvestitorConfig + InvestitorOverlay + LivrareRegula (reluări ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************* - RiskOverlay (regulăExpression JSONB String). 11 noi enums. - MlosActivationService @Component (gated mlos.config.enabled): resolutionProfile(org Id) + ****************** scena, etaj) config + AutonomyRezolver (sursa per-tenant pentru peretele de încredere al porții). 23 mls.config tests green (MlosActivationService 6 new). Model de bază al entității-config tot timpul (manual @Id UUID + @Embedded EmbRecordState; copii no EmbRecordState). Plan: Nu-ţi face griji. (extins). Ajustat: ecran complet/modul/martor activation matrice + valid Profile + SecurityService self-heal; *.config.history append-only tables; predicate evaluators.
· kamo-shared-library
Motor de imobilizare a canalelor (Pasa-1 Slice 4)
Rezolvatorul cel mai determinist (doc 04 §8) Investitor - > Traducerea şi adaptarea: - Channel ApplicabilityRegulaent: *************** StareExprimare (JSONB String, Program.ruleset Json precedent) /outcome/ - Da. EmbRecordState. priorityrecaptused from scop (nestorage). Acelaşi model de bază. - 5 enums: RuleScope (+priority() Investor=0,. Tenant=3), Channel, Adaptation, - Nu. (HYBRID rezolvat per-împrumut la acestea), FinancingBehavior(5, inclusiv PORTFOLO OBLIGAŢIE - ChannelApplicabilityRezolver @Component (ungat, apatrid): gol/dizolvat => DEZALUAT (citirea cea mai sigură a ambiguității §8.2); altfel ALOCAT cu attrs din cel mai puternic domeniu de aplicare. ChannelResolution record. 5 ******************* (17 mls.config tests). stareExprimare predicate evaluator + filtru de dating eficient + AiDecizie pinning + MlosActivationService Amânaţi. mlos.config deja în scanare KamoInitializer numai re-run. Plan: Nu-ţi face griji
· kamo-shared-library
AutoritateaConfig (autoritate de subscriere + delegații guvernamentale)
- AuthorityConfig (singleton per LenderProfile): AccountAuthority DELEGATE/NON DELEGATE/HYBRID + manualUwAllowed + govtSet delegation Traducerea şi adaptarea: Mlos Authority govt extras) hasGovtDelegation() helper (HYBRID/channel resultly). - SubscriereAutority + GovtDelegation enums + AuthorityConfigRepository. - acelaşi model de bază configurat (manual @Id UUID + @Embedded EmbRecordState); UNIQUE (lender profil id) Singleton. Primul @ElementColection in mlos.*. 3 AuthorityConfigTest verde (12 mls.config teste). mlos.config deja în KamoInitializer scanare .
· kamo-shared-library
Configuraţie de autonomie AI + soluţionare de podea de siguranţă (Pasa-1 Slice 2)
- AiAutonomyConfig (singleton per LenderProfile; autonomieLevel Eliberează-te. AutoExcuteEnabled) + AutonomyStageOverride (per (profil, etapă); StageRefolosiri cheie LifecycleStage AutoExcuteEnabled). Același model de bază de configurare (manual @Id UUID + @Embedded EmbRecordState); UNIQUE (lender profill id) singleton + UNIQUE (profil,stage key). - AutonomyRezolvator @Component (unged, apatrid like DecisionGate): eficace Prag = max (stage Override?:global, safetyFloor) și nu poate reduce niciodată podeaua de platformă netunabilă (doc 13 §8.7); autoExecuteEnabled suprascrie-atunci-global. Sursa pertenantă a zidului de încredere al porţii (cablajul amânat). 5 AutonomyRezolverTest + 4 LicensingRezolvatorTest verde (TDD). Indexuri declarate de entitate. mlos.config deja în scanare KamoInitializer .
· InitializerService
Register mlos.config repo pkg (Pase-1 Slice 1)
Adăugați com.kamo.z.shared.mlos.config la @EnableJpaRepozitories so KamoInitializer crează mlos lender profil + mlos licență intrare. Indice (inclusiv UNIQUE market id) sunt declarate de entitate prin @Tabel .
· kamo-shared-library
LenderProfile + LicensingEntry confiction fundation (Pasa-1 Slice 1)
Noua fundație com.kamo.z.shared.mlos.config chiriaș-config (doc 04 §3): - LenderProfile (root, UNIQUE per MORTGAGE marketId) Organization (Long) + CommerceMarket (UUID) by id. NOTA MarketId este UUID (CommerceMarket.id is gen random uid; doc 04's "Long FK" is a code-verified eroare, același caz ca AiDecizie.creditFileId). profileVersion for replay. - Licensing Entry (perstatal COMPANY licensing, distinct from member StewardLicense) de la datele efective/expirate prin intermediul isEfficientOn() (doc 04 §7.3.). - LicensingRezolver @Component (gated mlos.config.enabled): isTenantLicensed( profil, stat, tip) data-based; jurisdicția descoperit = > fals (act blocat). - Model de bază Config-entitate: manual @Id UUID + @Embedded EmbRecordState (NOT BaseUuidEntity 4 LicențiereRezolvatorTest verde (TDD). Indicii declarați de entitate (UNIQUE market id). MAN: *************** Singletoni; MlosActivation Serviciul + Serviciul de securitate boot auto-vindecare.
· DaemonService
DaemonService conformare-timer SLA matura (timer adoptor)
Primul adoptor al cronometrelor de conformitate MLOS: un loc de muncă Quartz (la fiecare 5 min) apeluri *******************pentruazvârliARMED-dar-trecut-deadlineECOA (DiverseActionTimer) + Reg X (RegXTimer) ceasuri pentru EXPIRED astfel încât un debitor blocat nu poate anula în tăcere un termen limită de reglementare. - ComplianceTimerSweepJob (Quartz Job) + QuartzConfig JobDetail/Trigger; timer serviciul este @Autowired (necesar=fals) + un semnal de semnal implicit, astfel încât locul de muncă este securizat pentru accidente indiferent de config. - @EnableJpaRepositorii += - Nu. - configurare: mlos.conformity.enabled=real (activează serviciul partajat-lib) + Nu-ţi face griji. Traducerea şi adaptarea: În condiţii de siguranţă, în timp ce mesele cronometrului sunt goale (nici un cronometru motor încă).
· kamo-shared-library
***************** pentru Daemonservice SLA matura
Flips fiecare ARMED-but-trecut-deadline AdverseActionTimer + RegXTimer to EXPIRED (semnalul de escaladare durabilă a suprafeţelor ecranului de conformare; eveniment emisiile la o coadă de conformitate reprezintă o monitorizare). Description Mesele sunt sigure. 2 noi teste (12 conformareTimerService Test verde).
· kamo-shared-library
Atribuire conştientă a licenţei de sârmă în Decizia de punere în aplicare (Slice 2b-ii)
HotărîreSpine.record() acum timbre StewardTask.atribuitMEMBRU StewardAsigner atunci când o decizie rutată poartă competența împrumutului: - DeciziaRequest câștigă opțional Codul de stat (ISO-3166-2) + ActType (LicensedActType). Atunci când atât prezent și un StewardAsigner fasole (Mlos.legal.enabled), misiunea de rutare este atribuită unui administrator licenţiat în statul respectiv; în caz contrar, se deschide neatribuit (un administrator o susține). - StewardAssigner injectat ca Docstor OPTIONAL prin ObjectProvider, rularea coloanei vertebrale fără mlos. legal.enabled nu este afectată. Compat spate 6-arg Constructor reţinut 29 mls teste verzi (DecizieSpine 5, StewardAssigner 5, LegalRegistry 9, Timpul de conformitate 10). Cod-doar .
· kamo-shared-library
StewardAssigner autorizat (decision-spine Slice 2b-ii)
Adaugă selectorul de administrator de licență conștient (doc 03 §3.2; doc 01 §6 #9) administrator al cărui MLOS StewardLicense este valabil astăzi pentru licența necesară actului tip în starea debitorului, încărcat la cel mai puțin deschis StewardTasks (legătură -> cel mai mic membruId); gol atunci când niciunul nu acoperă jurisdicția (apelantul escaladează). - StewardAssigner @Component (gated mlos.legal.enabled) over StewardLicense + StewardTask repos Licență (nu se modifică deps; evită aderarea statelor membre (orgId,userId) ->License). - StewardLicense.isValidOn(date) (status calculat, niciodată stocat); - Nu. Refactorat. - *************** (Bolta candida). 5 StewardAsignerTest verde; 9 LegalRegistry Testul este încă verde (14 total). Fără scheme. modificare (fără alergare kamoInitializer). Substrate-primul CALEA TO HUMAN să ştampileze UED este o continuare.
· InitializerService
Register mlos. conformation repo pkg (Slice 2c-i)
Adaugă ********************* la @EnableJpaRepozitories so KamoInitializer crează mlos adverse action timer + mlos regx timer. Indicii declarați prin intermediul entității @Table .
· kamo-shared-library
Substrat de timer ECOA + Reg X (Decizie-spine Slice 2c-i)
Noul pachet ************* (doc 03 §2.8) analogii cronometrului de conformitate ai sistemului blocat nu se modifică. TridTimer. Substrat: - AdverseActionTimer (ECOA/Reg B ceas de 30 de zile; NotificKind ECOA AA/COUNTEROFFER/ INCOMPLELETE NOA) + RegXTimer (taxe de service pozitive; dutyKind Nu-ţi face griji. Mutabilă ***************** imprumut moaleFiId ref, +orgId for Izolarea chiriaşilor. Indice de înăbușire (status, termen at). - ComplianceTimerStatus enum + 2 repos cu *********** - conformationTimerService @Component (gated mlos.conformity.enabled): arm timers, codifică numărul de zile de reglementare (30/36/120/5, blocat prin încercări), CONTINUITATEA are nevoie de un termen limită explicit, de detectare a breşelor prin intermediul Ceasului injectat, găsitori de matura. 10 ComplianceTimerServiceTest verde (TDD). Indexes entity-clared via @table. DaemonService SLA-escaladare + BLOCKED->STALE amânat (chemă fondatorii matura). Exclus această felie: conformareFinding (FK donotmodify. TridTimer), RBPN/RSFA Notiţe, Schimbare de Circumstanţă.
· InitializerService
Register mlos. legal repo pkg (Slice 2b)
Adăugați com.kamo.z.shared.mlos.legale la @EnableJpaRepozitories so KamoInitializer creează mlos licenced act registry / mlos ron eligibilitate / mlos steward licence. Toate indexurile sunt declarate de entitate prin @Tabel .
· kamo-shared-library
Substrat de registru juridic conştient de stat (decizii-spinie Slice 2b)
Noul com.kamo.z.shared.mlos.juridic pachet Aportul absolut de pe peretele legal al DecizieiGate (doc 03 §3.2) Substrat-mai întâi, nu încă: - LicensedActRegistry (platform ref, per act+state) Necesită legal un om autorizat? Unic (act type, stat code). - RonEligibilitate (platform ref, per stat) Regulamentul de punere în aplicare (UE) nr. - StewardLicense (tenant-scoped, keyed to membrId) Nu există coloană de stare stocată: calculată din Date efectiv <=azi <=expirațiiAt (doc 13 §4.3 corecturi registru suprascrie câmpul de stare Inline al doctorului 03). - LegalRegistry @Component (gated mlos.legal.enabled, default off): fail-closed LegalRequiresHuman / stewardLicensedFor (date-based) / ronAllowedIn. Codul de stat este ISO-3166-2 String (international-ready; USStateType este cod mort). Indexes entity-clared via @table. 9 Registry juridică Permisul de încercare (TDD). Compune decizia expediatăGate prin contract Permisul de conducere StewardTask a fost amânat la următoarea felie.
· InitializerService
Register mlos.steward + mlos.orchestration repos; Slice-2a schema
- KamoInitializerApp @EnableJpaRepositorii: adăugați repo MLOS acumulate pachete Nu-ţi face griji. plus Esign/personal loans astfel KamoInitializer deține schema lor. - SchemaCleanupRunner: generic @Enumerate whitelist-CHECK matura; partial/ indexuri unice + FKs pentru *************** - Nu. Indicii Slice-2a sunt acum entitate declarată (@table) astfel încât blocul Slice-2a este un comentariu nu-op.
· kamo-shared-library
Decision-spine Slice 2a
Stat de orchestrare (GREEN/BLOCKED/COMPLETE) + StewardTask (cu excepția înregistrării) + enums + DecisionSpine (@ConditionalOnProperty mlos.spine.enabled): compune Decizia Gate expediată + AiDecizie WORM registru + outbox tranzactional într-un tx etapa; rezolva () scrie o decizie UMAN OVERRODE + deblocheaza. Entitățile de stat mutagene (fără @PreUpdate). 4/4 Mockito teste verzi.

Universul tău te așteaptă.
Începeți gratuit în câteva minute.Adăugați produse oricând sunteți pregătit — fără migrare, fără autentificări noi.
Gratuit pentru totdeauna — nu este necesar un card de credit