Direkt zum Inhalt
KAMOUniverse

Changelog

Was ist neu?

Jede Verbesserung an der Plattform, wie sie geliefert wird.

  1. · kamo-shared-library

    Regeln für die Leitlinie + Bedingungen + Evaluator, die Mitteilung der LLPA-Prika-Engine (Phase-2 Slice 8)

    Die Richtlinie-Regel-Regel-Vordikat Konjunktion von -8.1 Schritt-2. Kritisch, REUSES die überprüfte Slice-4 Zustand Gutachter statt der Duplizierung der sicherheitskritischen Prädikatslogik. DRY refactor (nicht-regressive - Auswerterkörper byte-identisch): - PredicateCondition Schnittstelle **************** - MlosAdjustmentCondition + MlosGuidelineRuleCondition implementieren es. - AdjustmentConditionEvaluator generalisiert auf PredicateCondition; AnpassungMatches -- allConditionsMatch (Liste<? erweitert PredicateCondition). Slice-4 Test wiederholt grün (9), beide vorherigen HIGH-Fixes intakt. Neu: - MlosGuidelineRule (mlos_guideline_rule): guidelineVersionId FK, productId FK, ruleCode (einzigartig pro version), Urteil (RuleVerdict ELIGIBLE/INELIGIBLE/STIPULATED 10,3 Vokab), Anforderung ************ AnforderungWert, Schwere, sourceSectionRef, unkonditionierte Flagge. + MlosGuidelineRuleCondition (implementiert PredicateCondition). - GuidelineRuleEvaluator (ungated @Component) + GuidelineEvaluation + GuidelineAusgleich: eine Regel feuert alle seine Bedingungen halten (über den gemeinsamen Gutachter); INELIGIBLE iff jede gefeuerte INELIGIBLE Regel; Bestimmungen gesammelt. 8 GuidelineRuleEvaluatorTest grün. Widrig überprüft (2-agent): Refaktor bestätigt byte-identisch/nicht-regressiv; fixed MEDIUM Over-Block-Gefahr - eine Nicht-Decken-Regel mit Null-Bedingungen jetzt versagt SAFE (nicht Feuer) so ein Halbautor/Dangling-FK INELIGIBLE Regel kann nicht stillschweigend jeden Kreditnehmer blockieren (Spiegel-Wert-Set aus der Vorsichtsstanz); explizite "unbedingte" Flagge für vorsätzliche pauschale Regeln. KEIN KamoInitializer Code ändern.

  2. · InitializerService

    Guideline-Version no-overlap partieller-unique Index (Phase-2 Slice 7)

    SchemaCleanupRunner: ux_guideline_version_aktiv partiell-unique ON mlos_guideline_version (organization_id, product_id) WHERE status='ACTIVE' AND effective_until IS NULL - eine geöffnete/aktuelle ACTIVE-Leitlinie Version pro (Org, Produkt); Spiegel ux_rate_sheet_version_aktiv (doc 02 -6.5). Katalog repo pkg bereits registriert (Slice 1).

  3. · kamo-shared-library

    MlosGuidelineVersion (WORM) + GuidelineVersionResolver (Phase-2 Scheibe 7)

    Die unveränderliche, effektiven Richtlinie VERSION - die Container-Berechtigungsmatrizen ************ und zukünftige Richtlinienregeln hängen ab. Treue Replika der überprüften Slice-1 MlosRateSheetVersion Wirbelsäule, die pro Produkt (vs pro Investor) eingegeben wird. - MlosGuidelineVersion (mlos_guideline_version): productId FK, revisionLabel, effective_from/until, sequence_no, supersedes_id self-FK, status, source_document_id FK, kb_article_guid + kb_article_version_no (ca6.4 KB-Prose Drift-Pin, unveränderlich). App-Layer Teilvermutbarkeit WORM (@PostLoad snapshot + @PreUpdate diff): einfriert Identität/Inhalt, erlaubt nur DRAFT-ACTIVE, ACTIVE-SUPERSEDED, ACTIVE--RETIRED + write-once effective_until close. - GuidelineVersionStatus ************ - GuidelineVersionResolver (gated mlos.catalog.enabled): point-in-time Fensterauflösung, nie neueste Reihe, wirft auf Überlappung. Mirrors EffectiveVersionResolver. - 17 Tests grün (6 GuidelineVersionResolverTest + 11 **************** KamoInitializer fügt ux_guideline_version_aktiv partuniqu (eine offene ACTIVE pro org+Produkt).

  4. · kamo-shared-library

    Fördermatrix + Zellen + Zell-Matcher (Phase-2 Slice 6)

    Das qualmungsfähige erste Filtersubstrat (die Zelle Konjunkation; guideline_rule + AUS-Gate UND in später). - MlosEligibilityMatrix (mlos_eligibility_matrix): per **************** effektiv-dated; REUSES gesperrt URLA ************ via @Enumerated(STRING) auf neuen Spalten (FK-frei, nie bearbeitet sie); guidelineVersionId soft-FK (abzusätzliche bis Richtlinien). - MlosEligibilityCell (mlos_eligibility_cell): getipptes Berechtigungsfenster - fico_low/high, property_type (gesperrt PropertyTypeUrla), units_low/high, loan_amount_low/high, state_set_id (FK MlosValueSet), limit_value. Preis-/Limit-Zahlen roh BigDecimal (Katalogkonvention). - MlosMatrixType {MAX_LTV,MAX_CLTV,MAX_DTI" - Diskriminator für welche Verhältnisse limit_value Caps. - EligibilityCellMatcher (ungated @Component) + ScenarioFacts Wiederverwendung + EignungOutcome ************ + FörderfähigkeitResult: die enthaltene Zelle über lokalisieren ************ RATIO-DISPATCH von matrix_type (ltv/cltv/dti) getestet vs. Limit; fehlende erforderliche attr - CANNOT_PRICE (vor der Deckung gehoert); Zustand ausfallend; Überlappung Am restriktivsten (im Detail aufgetaucht). 12 FörderfähigkeitCellMatcherTest grün. Enum-Reuse + spec aus dem Forschungs-Workflow; widersterreich (2-Agent): fixe Matrix_type-Verhältnis Versand + Hebezeug-Verhältnis CANNOT_PRICE + Überlappung Beobachtbarkeit + fallengelassen unhonored OTHER. NEIN KamoInitializer Code ändern (catalog repo pkg registriert Slice 1) - nur neu laufen.

  5. · kamo-shared-library

    MlosMarginSchedule + MarginScheduleResolver (Phase-2-Slice 5)

    Die Margin-Schicht des Anlegers - die "+ margin_Schedule"-Begriff von 8,1 Schritt-4-Preismontage. - MlosMarginSchedule (mlos_margin_schedule): rateSheetVersionId FK, productId (null=all), marginType, DarlehenEin BetragLow/High Band, Wert (roh BigDecimal), Compus (BORROWER_PAID|LENDER_PAID). - CompBasis enum - die Comp BASIS Convention (wie Marge gezahlt wird), KEIN LO-Kompakt-Betrag; LO comp ist nie eine Scoring-Eingabe (doc 13 -8.5). - MarginScheduleResolver (ungated @Component): anwendbar(Schläge, DarlehenBetrag, compBasis) = Band enthält Betrag (inklusive, null=Open) UND Comp-Matches; totalMargin = -Werte (ZERO wenn keine). 5 MarginScheduleResolverTest grün. Preiszahlen roh BigDecimal (Slice-3 Korrektur). NO KamoInitializer Code Änderung (Katalog Repo pkg registriert Slice 1; Indizes entity-deklariert) - nur neu ausgeführt.

  6. · InitializerService

    Value-Set Plattform-eigenes CHECK (Phase-2 Slice 4)

    SchemaCleanupRunner: ADD CONSTRAINT mlos_value_set_ownership_chk CHECK (platform_owned = (organization_id IS NULL)) - doc 02 .6.2: eine Plattform taxonomy ist platform_owned with a null org; ein org-spezifisches Set ist org-scoped. Bikonditional ... IST NULL shape überlebt die enum-whitelist Sweep. Katalog repo pkg bereits registriert (Slice 1).

  7. · kamo-shared-library

    LLPA-Anpassungen + Wertsätze + Zustandsevaluator (Phase-2 Slice 4)

    Die LLPA/Einstelllage + die deterministische Prädiktat-Engine für 8,1 Schritt-4-Matching ("an Die Anpassung entspricht iff ALLE seine Bedingungen sind erfüllt"). - MlosPriceAdjustment (mlos_price_adjustment): rateSheetVersionId FK, productId (null=all), Anpassungsgruppe, Bedienung (ADDITIVE|MULTIPLICATIVE), Wert, StackOrder, CapValue, Label. - MlosAdjustmentCondition (mlos_adjustment_condition): PreisnachstellungId FK, Attribut, Betreiber ************ numLow/numHigh, valueSetId FK. - MlosValueSet (mlos_value_set) + MlosValueSetMitglied (mlos_value_set_member): kategorisch benannt setzt; die doc 02 -6.2 Plattform-eigene Ausnahme (organizationId nullable + platformOwned flag on das SET nur; Mitglied trägt keinen orgId-Spiegel - Eigentum über das Set, keine Drift-Oberfläche). - AdjustmentConditionEvaluator (ungated @Component) + ScenarioFacts: numerische Ops vs num_low/high, set ops vs resolved members; fehlende Tatsache - kein Spiel; SET OPS FAIL CLOSED auf empty/null member Set (ein baumelnder Soft-FK-Wertsatz passt nie lautlos zu allen) und null-resolver-sicher (keine NPE). 9 ************ grün. Widrig geprüft (2-agent Workflow): behobene 2 HIGH-Evalator-Bugs (NOT_IN fail-open on empty set; NPE auf Null-Rechen-Rezist) + den redundanten Mitglieds-OrgId-Spiegel gemäß der Bewertung fallen gelassen. Preisgestaltung Zahlen roh BigDecimal (Slice-3 Korrektur). KamoInitializer fügt den Value-Set Eigentum CHECK hinzu.

  8. · kamo-shared-library

    MlosBasePriceGrid + NoteRateLadder preiswerte Zellen (Phase-2 Scheibe 3)

    Der Preis-Zahlen - erste Katalog-Einheit zu FK BOTH a Rate-sheet-Version (Slice 1) UND ein Produkt (Slice 2); die Basis der Montagepreis von 8,1 €. - MlosBasePriceGrid (mlos_base_price_grid): rateSheetVersionId FK, productId FK, noteRate, lockPeriodDays, basePrice (Preis-zu-100), basePoints, min/maxLoanAmount, ioFlag. Composite UNIQUE (Version, Produkt, note_rate, lock_period_days, io_flag) Entität deklariert (io_flag NOT NULL . full einzigartig, kein rohes DDL). - NoteRateLadder (ungated @Component): par = Zelle am nächsten Preis-zu-100; nächsteToPrice(Ziel); Krawatten -- niedrigerer Anleihezins (doc 02 .8.1 Schritt 5). 5 NoteRateLadderTest grün. CODE-VERIFIED CORRECTION: doc 02 6 sagt EmbMoney/EmbPercent, aber die gesperrte LoanPricingSnapshot (der Verwender-Anker) verwendet RAW BigDecimal - interestRate DECIMAL(9,6), Punkte DECIMAL(9,4), keine Einbettungen; EmbPercent(9,4) kann nicht mit einer 6-Dezimalrate mithalten. So snapshot-gespiegelte Netzpreise Zahlen verwenden rohe BigDecimal-Matching LoanPricingSnapshot (note_rate 9,6 / base_price+points 9,4 / Darlehensbeträge 18,2). No KamoInitializer Code ändern (catalog repo pkg registriert Slice 1; einzigartig Index-Enterignung) - nur eine Wiederholung.

  9. · InitializerService

    Mlos_Produkt ARM-Konsistenz CHECK (Phase-2 Slice 2)

    SchemaCleanupRunner: ADD CONSTRAINT ************ CHECK ((amortization_type = 'ARM') = (arm_fixed_period_months IS NOT NULL)) - ein fester Zeitraum ist deklariert IFF das Produkt ist ein ARM (doc 02 .6.6). .= ... IST NICHT NULL"-Form (keine nackte enum IN-Liste) überlebt die generische enum-whitelist CHECK Sweep. Katalog Repo pkg bereits in Slice 1 registriert.

  10. · kamo-shared-library

    MlosProduct + MlosArmIndex Produkttaxonomieschicht (Phase-2 Slice 2)

    Das Produkt Wirbelsäule des Katalogs (doc 02 6,3): Alles nachgelagert (Basispreis) Grids, Berechtigungsmatrizen, Richtlinienregeln) FKs zu MlosProduct.uid. - MlosProduct (mlos_product): Pro-Investor-Produkt - InvestorId FK, productCode, AmorisationType (REUSES gesperrt URLA AmortisationType), termMonths, armFixedPeriodMonths, armIndexId FK, loanClass, documentationTyp, konform, losProgramCode (REUSES gesperrt 17-value LoanProgramCode, 6,4)), LeitfadenVersionPointer (echte FK-by-id zu Zukunft MlosGuidelineVersion.uid, nullable), aktiv. assertStructurallyValid(): arm_fixed_period_months set IFF amortization_type=ARM. - MlosArmIndex (mlos_arm_index): indexName, MarginBps, initial/periodic/lifetime Caps + floor as EmbPercent (doc 02 -6 Rate-via-EmbPercent), AnpassungMonde. - 2 neue Enums LoanClass / DocumentationType (katalog-spezifisch; DocumentationType ist der -3.5 non-QM doc-programm-Klasse, im Gegensatz zu Slice-1 MlosDocType). 2 Repos. Basis = BaseUuidEntity; orgId=Long @JsonSerialize(ToString). 5 MlosProductInvariantTest grün. KamoInitializer fügt die mlos_product ARM-Konsistenz DB CHECK hinzu (catalog repo pkg bereits registriert in Scheibe 1). Aufgeschoben: Preis ************ + der Schreiber.

  11. · InitializerService

    Katalog repos + Rate-sheet-version no-overlap index registrieren (Phase-2 Slice 1)

    - @EnableJpaReplositories += com.kamo.z.shared.mlos.catalog (der neue MlosInvestor/ ************ repos; Einheiten, die bereits von @EntityScan abgedeckt werden). - SchemaCleanupRunner: ux_rate_sheet_version_active partique-unique index ON mlos_rate_sheet_version (organization_id, investor_id) WHERE status='ACTIVE' UND effective_until IS NULL - Backstops die "eine offene ACTIVE Version pro (org, Investor) " no-overlap invariant (doc 02 .6.5; CRDB hat keine Reichweite-Ausschlussbeschränkung).

  12. · kamo-shared-library

    Katalog-Erprozte + effektive Versionsrücken (Phase-2 Slice 1)

    Kleinste schiffbare Scheibe des Phase-2-Katalogs (doc 02 -6): die Provenienzkette ImgDat -" MlosSourceSourceDocument -" MlosRateSheetVersion und die unveränderliche effektiv-datiert Version der Wirbelsäule mit Punkt-in-Zeit-Auflösung. Substrat-first (no MLOSCatalogService Verfasser noch); dies ist die unveränderliche-katalog-PK Stiftung DecisionInput wird FK zu. Neue pkg com.kamo.z.shared.mlos.catalog: - MlosInvestor (per-org-Registry; short_code unique per org), MlosSourceDocument (dünn Anmerkung über gesperrte ImgDat; Soft-FK img_dat_id, nie wieder bucht Bytes, doc 02 -6.4). - MlosRateSheetVersion: unumstößliche effektiv-datierte Version (effektiv_from/until window, ersetzt Selbst-FK, sequence_no, Status Lifecycle, source_document FK, cutoff_time) mit eine App-Layer Teil-Zweifelbarkeit WORM Wache (@PostLoad Snapshot + @PreUpdate diff): Freezes preisbar / Identity Cols, erlaubt nur DRAFT-"ACTIVE, ACTIVE-SUPERSEDED, ACTIVE--RETIRED und das Write-on-on-niedere bei effective_until. Kein DB-Trigger (CRDB kann nicht auf 24.3) abschließen. - EffectiveVersionResolver (gated mlos.catalog.enabled): Punkt-in-Zeit-Auflösung Version, deren [effekt_von, effektiv_unzuign) Fenster CONTAINS priced_as_of, nie ein "neueste Reihe" beitreten; wirft auf Effekt-Fenster-Überlappung (Verteidigung-in-Tiefe, Doc 02 .6.5 / 8,1)). - 6 Enums ************ RateSheetVersionStatus) + 3 Repos. Base = BaseUuidEntity (doc 02 -6.1); orgId=Long @JsonSerialize(ToString) (code-verified: Organization.id ist unique_rowid, nicht doc 02's "UUID"). 17 Tests grün (6 Entschlossenheitspunkt-Zeit + 11 WORM Wache). KamoInitializer fügt den Katalog repo pkg + die ux_rate_sheet_version_aktiv partielle-einzigartige No-Overlap-Index.

  13. · kamo-shared-library

    Per-Protent-Vertrauen-Gedunde-Gate-Gate-Verkabelung (config-Gate-Verdrahtung)

    Additive DecisionGate.evaluate(Bühne, Vertrauen, rechtlich erforderlich Mensch, BigDecimal tenantThresholdOverride) - die autonom abgestimmte pro Mieter-Wand gelöst von ************ Bühne, Boden). Die legale Wand bleibt absolut und die Override ist STILL Boden durch die nicht-tunable Sicherheitsboden (Autonomie kann nie Auto-Akt darunter). Null Override fällt zurück die Plattform Standard; die bestehenden 3-arg Bewertung() Delegierte mit Null, so dass die Versand Gate/DecisionSpine Verhalten + ihre Tests sind unverändert. Zusätzliche SicherheitFloor() getter so ein Anrufer löst die Mieter Schwelle gegen die gleiche Etage. Damit verbindet das Phase-1-Konfigurationsfundament mit dem Entscheidungstor: eine Engine kann jetzt do gate.evaluieren(Bühne, conf, legal, **************** Bühne, ************ 9 DecisionGateTest (4 neu) + 5 DecisionSpineTest + 6 MlosActivationServiceTest grün.

  14. · InitializerService

    Teilweise einzigartige Indizes + Wartungsinvarianten (Phase-1 config Fertigstellung)

    SchemaCleanupRunner DDL für die neuen mlos.config-Domains (mlos.config bereits in @EnableJpaRepositories; Hibernate ddl-auto:update erstellt die Tabellen): - ein-aktive partiell eindeutige Indizes (WHERE is_active=true UND effective_to IS NULL) auf mlos_pricing_policy / mlos_capital_policy / mlos_servicing_policy (lender_profile_id) + mlos_product_enablement (lender_profile_id, program_id) - Hibernate kann keine WHERE-Indizes aussenden. - ServicingPolicy unveränderliche Invarianten: CHECK scra_enforced=true + fdcpa_enforced=true=true (=-CHECKs, überleben die enum-whitelist Sweep).

  15. · kamo-shared-library

    Komplette Phase-1 Konfigurationsdonen + MlosActivationService (Slice 5)

    Erfüllt doc 04's config entity Inventar ************ - Politische Singletons (ein-aktives-pro-Profil, effektiv/nur anwendbar): PricingPolicy (ppeSourcePriority List<String" - getippt HypothekVendorType verschoben auf die "Anbieter"-Domain 5; NO LO-comp), CapitalPolicy (NO pullThroughPct) + CapitalConcentrationLimit Kind, ServicingPolicy (scra/fdcpa unveränderlich invarianten). Teilweise einzigartige Indizes + scra/fdcpa CHECKs gehen in KamoInitializer. - Produktaussage (einzelaktiv pro Programm; ChannelRestriction @ElementCollection; programId UUID - Program.id ist UUID, doc's 'Long' ist ein Code-verifizierter Fehler). - Investor Family: InvestorConfig + InvestorOverlay + DeliveryRule (Wiederverwendungen ************ - no dup) + CommitmentRule (Wiederverwendungen CommitmentType). - RiskOverlay (Regelexpression JSONB String). 11 neue Enums. - MlosActivationService @Component (gated mlos.config.enabled): resolveProfile(orgId) + ************ Bühne, Boden) - Krawatten LenderProfile + Autonomie config + AutonomyResolver (die Quelle pro Mieter für die Vertrauensmauer des Tores). 23 mlos.config testet grün (MlosActivationService 6 neu). Config-Entity-Basismuster durch (manual @Id UUID + @Embedded EmbRecordState; Kinder keine EmbRecordState). Plan: **************** (erverlängert). Verzögert: Vollbild-/Modul/Vendor Aktivierungsmatrix + validateProfile + SecurityService selbstheilen; *.config.history append-only Tabellen; predicate evaluators.

  16. · kamo-shared-library

    Kanal-Anwendbarkeitsmaschine (Phase-1 Scheibe 4)

    Der deterministische, am restriktivsten Resolver (doc 04 8) - Produkt x Kanal x Investor - {ALLOWED|DISALLOWED, ExekutionsPath, AutoritätModell, fundingBehavior . - ChannelApplicabilityRegel Entität: **************** conditionExpression(JSONB String, Program.rulesetJson Präzedenzfall)/outcome/ ************ Termine + EmbRecordState. Priorität DERIVED aus dem Umfang (nicht gespeichert). Gleiches Konfigurations-Basismuster. - 5 enums: RuleScope(Priorität() Investor=0...Tenant=3), Channel, Anwendbarkeit, ************ (HYBRID beschlossen pro Darlehen, FundingBehavior(5, inkl PORTFOLIO_HOLD - DeliveryRule's 4-value verzögert). - ChannelApplicabilityResolver @Component (unget, staatenlos): leer/jeder-DISALLOWED DISALLOWED (sicherstes, möglichst restriktives Ablesen der Mehrdeutigkeit von 8,2); sonst ALLOWED mit attrs aus dem stärksten Umfang. ChannelResolution Rekord. 5 ************ grün (17 mlos.config Tests). ZustandExpression Predicate-Evaluator + Effektiv-Dating-Filter + AiDecision Pinning + MlosActivationService deferiert. mlos.config bereits in KamoInitializer scan - nur neu laufen. Plan: ****************

  17. · kamo-shared-library

    AuthorityConfig (Verschriften) + govt Delegationen) - Phase-1 Slice 3

    - AuthorityConfig (Single) pro LenderProfile: UnderwritingAuthority DELEGATED/NON_DELEGATED/HYBRID + manualUwAllowed + govtDelegation Set {FHA_DE,VA_SAR_LAPP,USDA,NONE" via @ElementCollection (Sammlungstabelle mlos_authority_govt_delegation) - Gates intern govt UW vs Agentur Refral. hatGovtDelegation() helper (HYBRID/Kanal Auflösung aufgeschoben). - UnderwritingAuthority + GovtDelegation enums + AuthorityConfigRepository. - Gleiches Konfigurations-Basismuster (manual @Id UUID + @Embedded EmbRecordState); UNIQUE(lender_profile_id) singleton. Erste @ElementCollection in mlos.*. 3 AuthorityConfigTest grün (12 mlos.config Tests). mlos.config bereits in KamoInitializer-Scan - neu laufen erstellt mlos_authority_config + die Sammlungstabelle.

  18. · kamo-shared-library

    KI-Autonomie Konfiguration + Safety-Boden-Entschlossenheiter (Phase-1 Slice 2)

    - AiAutonomyConfig (Singleton pro LenderProfile; autonomyLevel ************ globalDefaultThreshold DECIMAL(4,3), autoExecuteEnabled) + AutonomyStageOverride (per (Profil, Bühne); stageKey wiederverwenden LifecycleStage - kein separates PipelineStage enum vorhanden; VertrauenThreshold + autoExecuteEnabled). Gleiches config-entity Basismuster (manual @Id UUID + @Embedded EmbRecordState); UNIQUE(lender_profile_id) singleton + UNIQUE(profile,stage_key). - AutonomyResolver @Component (ungetiert, staatenlos wie DecisionGate): wirksameThreshold = max(stageOverride?:global, safetyFloor) - Autonomie Melodien NUR die Vertrauenswand und kann NIE senken die nicht-abstimmende Plattform Boden (doc 13 € 8,7); autoExecuteEnabled override-then-global. Die pro Mieter Quelle für die Vertrauensmauer des Tores (Verdrahtung verschoben). 5 AutonomyResolver Test + 4 LicensingResolverTest grün (TDD). Indizes Unternehmen-deklariert. mlos.config bereits im KamoInitializer-Scan erstellt die 2 neuen Tabellen.

  19. · InitializerService

    Registrieren mlos.config repo pkg (Phase-1 Slice 1)

    com.kamo.z.shared.mlos.config zu @EnableJpaRepositories hinzufügen, so KamoInitializer erstellt mlos_lender_profile + mlos_licensing_entry. Indizes (inkl. UNIQUE market_id) werden über @Table deklariert - no SchemaCleanupRunner DDL erforderlich.

  20. · kamo-shared-library

    LenderProfil + LicensingEntry config Foundation (Phase-1 Slice 1)

    Neue com.kamo.z.shared.mlos.config tenant-config foundation (doc 04 .3): - LenderProfile (root, UNIQUE per MORTGAGE marketId) - Soft-FKs gesperrt Organisation (Long) + CommerceMarket (UUID) durch id. NOTE marketId ist UUID (CommerceMarket.id ist gen_random_uuid; doc 04's 'Long FK' ist ein Code-verified Fehler, im gleichen Fall wie AiDecision.loanFileId). profileVersion für die Wiedergabe. - Lizenzierung (per-State COMPANY Lizenzierung, im Unterschied zum Mitglied StewardLicense) LizenzType 8-Wert enum; stateCode ISO-3166-2; NO gespeicherter Status, berechnet ab Wirkung/Ablaufdaten über isEffectiveOn() (doc 04 .7.3). - LicensingResolver @Component (gated mlos.config.enabled): isTenantLicensed( profile, Zustand, Typ) Datum-basiert; aufgedeckte Gerichtsbarkeit =" falsch (act blocked). - Config-Entity Basismuster: Handbuch @Id UUID + @Embedded EmbRecordState (NOT BaseUuidEntity - seine Zeitstempel würden kollidieren; doc 04 3 €. 4 LicensingResolverTest grün (TDD). Indizes entity-deklariert (UNIQUE market_id). Verzögert: ************ singletons; MlosActivationService + SecurityService boot self-Heal.

  21. · DaemonService

    DaemonService Compliance-timer SLA-Sweep (timer adopter)

    Erster Adopter der MLOS Compliance-Timer: ein Quarz-Job (alle 5 min) Anrufe ************ zum Flip ARMED-but-past-deadline ECOA (AdverseActionTimer) + Reg X (RegXTimer) Uhren zu EXPIRED so ein BLOCKED Kreditnehmer kann nicht stillschweigend eine regulatorische Frist verstreichen lassen. - ComplianceTimerSweepJob (Quartz Job) + QuartzConfig JobDetail/Trigger; timer service ist @Autowired(erfordert=false) + ein Default-off aktivieren Flagge, so dass der Job ist unabhängig von config crashsicher. - @EnableJpaRepositories += **************** - configmap: mlos.compliance.enabled=true (aktiviert den Shared-lib-Dienst) + ************ {enabled:true, cron:'0 */5 * * * * '']. Sichere No-Op, während Zeitertabellen leer sind (noch keine Motorarme-Timer).

  22. · kamo-shared-library

    ************ für den DaemonService SLA Sweep

    Flips jeder ARMED-aber-Vergangener-Deadline AdverseActionTimer + RegXTimer zu EXPIRED (das dauerhafte Eskalationssignal der Compliance Steward Bildschirmoberflächen; Ereignis Die Emission in eine Compliance-Warteschlange ist ein Follow-up). Gibt die Zählung zurück; leerer Zeiter Tabellen sind eine sichere No-Op. 2 neue Tests (12 ComplianceTimerServiceTest green).

  23. · kamo-shared-library

    Wire-lizenz-aware Zuordnung in DecisionSpine (Slice 2b-ii)

    DecisionSpine.record() stempelt jetzt StewardTask.assignedMemberId von der StewardAssigner, wenn eine geroutete Entscheidung die Zuständigkeit des Darlehens trägt: - Entscheidungsersatz erhält optionalen subjectStateCode (ISO-3166-2) + actType (LicensedActType). Wenn beide vorhanden UND eine StewardAssigner Bohne existiert (mlos.legal.enabled), die routed Aufgabe wird einem Steward zugeordnet, der in dieser Zustand für diese Handlung; andernfalls öffnet er sich unzulässig (ein Steward behauptet es). - StewardAssigner als OPTIONAL Docstor via ObjectProvider injiziert, also Das Laufen der Wirbelsäule ohne mlos.legal.enabled ist nicht betroffen. Back-compat 6-arg Konstruktor beibehalten - die 4 bestehenden EntscheidungSpineTest Pass unverändert. 29 mlos Tests grün (EntscheidungsSpine 5, StewardAssigner 5, Rechtskanzlei 9, ComplianceTimer 10). Code-only - keine Schemaänderung, kein KamoInitializer-Lauf.

  24. · kamo-shared-library

    Lizenzbewusste StewardAssigner (decision-spine Slice 2b-ii)

    Fügt den lizenz-aware Steward Selector hinzu (doc 03 -3.2; doc 01 .6 #9) Steward, dessen MLOS StewardLicense TODAY für die erforderliche Lizenz des Gesetzes gültig ist Typ in den Zustand des Kreditnehmers, Last-Balance zu den wenigsten offenen StewardTasks (Krawatte -- am niedrigsten MitgliedId); leer, wenn keine die Zuständigkeit abdeckt (Caller eskaliert). - StewardAssigner @Component (gated mlos.legal.enabled) über StewardLicense + StewardTask repos liest die MLOS Gate Registry, NICHT gesperrt-Core orgs.Lizenz (no donot menot me me, avoids the Member-" (orgId,userId)-"Lizenz beitreten). - StewardLicense.isValidOn(Datum) - Einzelauskunft für die datumsbasierte Lizenz (Status berechnet, nie gespeichert); ************ refactored zu ihm. - ************ (Kandidatenpool). 5 StewardAssignerTest grün; 9 LegalRegistryTest noch grün (14 insgesamt). Kein Schema Änderung (kein KamoInitializer Run). Substrat-first - Verdrahtung in DecisionSpine.record() ROUTE_TO_HUMAN um zu stempeln zugewiesenMemberId ist ein Follow-up.

  25. · InitializerService

    Registrieren mlos.compliance repo pkg (Slice 2c-i)

    ************ zu @EnableJpaRepositories so KamoInitializer hinzufügen erzeugt mlos_adverse_action_timer + mlos_regx_timer. Indizes Unternehmen deklariert über @Table - no SchemaCleanupRunner DDL erforderlich.

  26. · kamo-shared-library

    ECOA + Reg X Zeitrsubstrat (Entscheidungsspritze Slice 2c-i)

    Neues ****************-Paket (doc 03 2,8) - Kamo-Beser Compliance-Timer-Analoge des gesperrt donotmodify.TridTimer. Substrat-first: - AdverseActionTimer (ECOA/Reg B 30-Tage-Uhr; HinweisKind ECOA_AA/COUNTEROFFER/ INCOMPLETE_NOA) + RegXTimer (affirmative Service-Aufgaben; dutyKind **************** Mutable ************ weichen DarlehenFileId ref, +orgId für Mieter-Isolation. Breach-Sweep-Index (Status, deadline_at). - ComplianceTimerStatus enum + 2 repos mit **************** - ComplianceTimerService @Component (gated mlos.compliance.enabled): Waffentimer, encodiert die regulatorischen Tageszählungen (30/36/120/5, gesperrt durch Tests), CONTINUITY benötigt eine explizite Frist, Verletzungserkennung durch eingespritzte Uhr, Kehrbetätigtecher. 10 ComplianceTimerServiceTest grün (TDD). Indizes Entitätsunternehmen über @Table deklariert. DaemonService SLA-Eskalation + BLOCKED--STALE aufgeschoben (ruft die Sweep-Finder). Ausgenommen diese Scheibe: ComplianceFinding (FK donotmodify.TridTimer), RBPN/FCRA Mitteilungen, ChangedCircumstance.

  27. · InitializerService

    Registrieren mlos.legal repo pkg (Slice 2b)

    Fügen Sie com.kamo.z.shared.mlos.legal zu @EnableJpaRepositories so KamoInitializer erstellt mlos_licensed_act_registry / mlos_ron_eligibility / mlos_steward_license. Alle Indizes werden über @Table deklariert - no SchemaCleanupRunner DDL benötigt.

  28. · kamo-shared-library

    Staatlich beeinigten Registersubstrat (Entscheidungs-Spine Slice 2b)

    Neues com.kamo.z.shared.mlos.legal Paket - der Hersteller auf der grünen Wiese Der absolute Rechtswall-Eingang von DecisionGate (doc 03 .3.2). Substrat-first, nein Noch adopter: - LicensedActRegistry (platform ref, pro Act+State) - macht dieses geregelte Gesetz rechtlich verlangen einen lizenzierten Menschen? Unique(act_type, state_code). - RonEligibility (Plattform Ref, pro Zustand) - ronAllowed/ipenForderung + Provisionierung/Signeur/Immobilienausrichtung Regel-Regeln. - StewardLicense (Herausgeber-scoped, keyed to memberId) - NMLS-by-Stat licensure. Keine gespeicherte Status-Spalte: berechnet von effectiveDate<=today<=expiresAt (Dok. 13 -4.3 Korrekturen Ledger überschreibt das Inline-Statusfeld von Doc 03). - LegalRegistry @Component (gated mlos.legal.enabled, default off): fail-closed rechtlichBenötigt Mensch / stewardLicensedFor (date-based) / ronAllowedIn. stateCode ist ISO-3166-2 String (international-ready; USStateType ist toter Code). Indizes Unternehmen über @Table deklariert. 9 LegalRegistryTest Pass (TDD). Enthält das versandte DecisionGate per Vertrag - keine Entscheidungs-/Verschieder-Bearbeitungen. lizenz-bewusste StewardTask Zuweisung auf die nächste Scheibe verschoben.

  29. · InitializerService

    Register mlos.steward + mlos.orchestration repos; Schema Slice-2a

    - KamoInitializerApp @EnableJpaRepositories: das kumulierte MLOS repo hinzufügen Pakete ************ plus esign/personal_loans also besitzt KamoInitializer ihr Schema. - SchemaCleanupRunner: generische @Enumerierte Whitelist-CHECK Sweep; partielle/ einzigartige Indizes + FKs für **************** ************ Entscheidungs-Spine Slice-2a Indizes sind jetzt Entitäts-deklariert (@Table), so dass der Slice-2a-Block ist ein No-op-Kommentar.

  30. · kamo-shared-library

    Entscheidungs-Spine Slice 2a - OrchestrationState + StewardTask + DecisionSpine BLOCKED-Staatmaschine

    OrchestrationState (per-loan-stage GREEN/BLOCKED/COMPLETE) + StewardTask (Ausnahme-Platte) + enums + DecisionSpine (@ConditionalOnProperty mlos.spine.enabled): komponiert das versendete EntscheidungGate + AiDecision WORM Ledger + transaktionaler Outbox in einem tx - ROUTE_TO_HUMAN öffnet eine Aufgabe + BLOCKs Stadium; resolve() schreibt eine HUMAN_OVERRODE Entscheidung + entsperrt. Verwirkliche staatliche Einheiten (kein @PreUpdate). 4/4 Mockito testet grün.

Euer Universum wartet.

Fügen Sie Produkte hinzu, wann immer Sie möchten – keine Migration, keine neuen Anmeldungen.

Für immer kostenlos – keine Kreditkarte erforderlich