Add kamp-apps, VectorService, kamolos, kamo-signer-monorepo to public changelog
CLOSING_STEP_RETRIED event key (doc 05 §6.4)
The steward-recovery signal: a BLOCKED_STEWARD package was unblocked and a fresh PENDING node materialized for the retried subsystem. Additive open String key (...
Correct FPBXCONF heredoc + repoint universe Scylla
- freepbx: the FPBXCONF here-document closing delimiter was indented (8 spaces); bash requires <<WORD delimiters at column 0, so startup.sh died with 'unexpec...
Canonicalize webhook repo name to public-projects casing
After the cluster migration the Forgejo repos were recreated lower-cased (securityservice), but historical rows and the public-projects filter use canonical cas...
Node-local MinIO + failover template read + ImgDat dedup (fixes new-doc about:blank)
New-document creation hung ~5 min and the new tab stayed at about:blank. Root cause: DocsService pods scheduled on k3m1 read the blank template from MinIO at th...
Generate favicons via multi-node logo read, not single-node exists()
generateAndUploadFavicons() gated on minioService.exists(), which only stats the current MinIO host. When the simple logo was written to (or only replicated ont...
CLOSING_STEP_FAILED event key (doc 05 §6.4)
The drive-loop failure signal: a closing step FAILED/BLOCKED, the package is held BLOCKED_STEWARD; the closing-steward exception queue reacts. Additive open Str...
Re-apply live stylesheet after branding save so new colors show without hard reload
DynamicMetaLoader injects the org globals.css only once on mount, so after a color save (which correctly re-provisions globals.css + bumps themeRevision) the pa...
CLOSING_STEP_COMPLETED + CLOSING_PACKAGE_COMPLETED event keys (doc 05 §6.4)
The drive-loop signals: a ClosingArtifact reached COMPLETED (next adapter), and all required steps done (investor-delivery / servicing-boarding). Additive open ...
NULLs-safe unique index for ClosingWorkflowTemplate versions (doc 05 §6.3)
One version per (organization_id, scope_level, scope_ref_id) grain. CRDB is NULLs-distinct, so split for the nullable scope_ref_id (mirrors mlos_aiptp_*): mlos_...
**************** event key (doc 05 §6.3)
The durable signal the doc-orchestration template publisher emits on a new ClosingWorkflowTemplate version. Additive open String key (no DDL).
Note ratestack Forgejo :3000 node registry config requirement
ratestack apps pull from the Forgejo registry 192.168.4.22:3000 (plain HTTP, auth required), which must be added to each node's registries.yaml (mirror -> http ...
CLOSING_PACKAGE_ASSEMBLED event key (doc 05 eClose)
The durable signal the doc-orchestration assembler emits when a ClosingPackage is created from a resolved ClosingWorkflowTemplate + its first artifact node. Add...
Pin kamo Traefik to k1m1; make auto-cert single-cluster
SSL errors: kamo Traefik is a LoadBalancer with externalIPs 192.168.4.22 (k1m1) + externalTrafficPolicy=Local, so it MUST run on k1m1 — the pod rebalance moved ...
Remove "Publish to World" stage; fix Run All
Generators now write tiles directly to the serving drive, so the worldgen pipeline no longer has a publish/push stage. - worldgenNats.ts + universe/types.ts: d...
Null-safe split of the AiPullThroughPolicy single-active index (doc 09 §8)
CRDB is NULLs-distinct, so the single (lender_profile_id, market_id) WHERE status='ACTIVE' index did NOT backstop the org-wide (market_id IS NULL) grain — two c...
PULL_THROUGH_POLICY_PUBLISHED event key + null-safe AiPTP backstop doc (doc 09 §8)
Adds the canonical **************** event-type key (the durable signal the Pull-Through engine reloads its active policy on) for the governance-plane AiPullThro...
Consolidate klusterservices onto single k1m1+k3m1 cluster
- NATS: standalone single pod pinned k1m1 (drop k2m1 + generic cluster variants) - CockroachDB: pin k1m1, single-node --join - MySQL: single instance moved in f...
LoanIdentifierEvent append-only audit entity (doc 11 §5.3/§10)
The LoanIdentifierEvent half of doc 11 §5.3 step-4 / §10 "audit completeness" (every mint/supersede emits a WORM event row). New **************** LoanIdentifier...
(loan_file_uid,type) native single-active partial-unique index (doc 11 §5.3/§6.2)
Closes a pre-existing double-active hole in the MLOS loan-identifier registry: index (a) **************** only constrains (org, type, VALUE) for the 10 REGISTRY...
Add IDENTIFIER_SUPERSEDED event type key
Additive open-String event key (doc 11 §5.3/§7.3) for the registry renumber/supersession signal — the COMPLIANCE_TIMER_BREACHED precedent (no enum/schema/KI). C...
**************** — resolve the auto_execute_enabled ceiling alongside the wall threshold
Adds effectiveAutonomy(orgId, stage, floor) → EffectiveAutonomy{threshold, autoExecuteEnabled}: one chain-walk (profile → config → stage-override) that returns ...
Recreate deploy strategy so NATS durable consumers rebind on deploy
DaemonService binds EXCLUSIVE JetStream durable consumers (daemon-sync-trigger, **************** [the §2.8 breach loop], daemon-recording-received) in @PostCons...
Enable OutboxRelay @Scheduled backstop + @Async hot path
DaemonService activates the MLOS transactional outbox (mlos.outbox.enabled) and produces events (the compliance-timer breach emitter), but lacked @EnableSchedul...
Anti-double-lock partial-unique index for RCE lock records (doc 08 §7.3)
SchemaCleanupRunner adds **************** — a partial UNIQUE index on mlos_lock_record (organization_id, loan_scenario_id) WHERE status IN **************** At m...
Bootstrap universe-minio secret + ugc bucket note (§14)
Add step 6 to bootstrap-universe.sh: creates the universe-minio secret (ACCESS_KEY/SECRET_KEY from universe-backup-s3 root creds) and notes that the universe-ug...
Register com.kamo.z.shared.mlos.event repos (OutboxWriter dep)
Enabling mlos.outbox activates OutboxWriter, which requires MlosOutboxEventRepository (+ ProcessedEvent /DeadLetter) from com.kamo.z.shared.mlos.event — add tha...
MLOS compliance-timer escalation consumer (BLOCKED→STALE)
The consumer half of the compliance-timer breach loop (doc 03 §2.8; emit half already ships). ComplianceTimerBreachConsumer subscribes (durable JetStream) to **...
§2.4 anti-AUS-shopping partial-unique index on mlos_aus_run
One ACTIVE (non-superseded, non-frozen) AusRun per (loan_file_uid, source_label) — "duplicates look like AUS-shopping" (doc 10 §2.4/§2.5). Safe to land now that...
Persisted par_flag on MlosPricedProductResult + OrchestrationStepStatus.STALE
- MlosPricedProductResult gains par_flag (Boolean, default false): the §8.1-step-5 par cell of the row's lock-period ladder, frozen at insert (run-of-record p...
RateSheetSanityGate — §6.6 hard pre-publish sanity gate (range + monotonic)
A pure-logic ungated @Component (the PriceAssemblyEngine pattern) validating a candidate rate/price ladder BEFORE a rate-sheet version publishes (doc 02 §6.6): ...
LockPolicyVersionPublisher — §6.5 supersession completes the spine triad
The lock-policy-version sibling of **************** keyed per INVESTOR (ux_lock_policy_version_active = (organization_id, investor_id) WHERE status='ACTIVE' AND...
GuidelineVersionPublisher — §6.5 supersession for the guideline spine
The guideline-version sibling of RateSheetVersionPublisher, keyed per PRODUCT (ux_guideline_version_active = (organization_id, product_id) WHERE status='ACTIVE'...
RateSheetVersionPublisher — doc 02 §6.5 effective-dating supersession
The atomic prior-window close the MLOSCatalogService bootstrap bundle writer deferred. Publishing a new rate-sheet version for an existing (org, investor) scope...
EligibilityCellMatcher single-dimension reason-code attribution (ECOA specificity)
Closes the reason-code reachability gap the PriceAssemblyEngine review flagged: a cell miss on EXACTLY one containment dimension now becomes INELIGIBLE with its...
ComplianceTimerService emits mlos.compliance.timer.breached on SLA breach (doc 03 §2.8)
The javadoc-named follow-up to the shipped Slice-2c timers: "event emission to a Compliance queue is a follow-up." expireBreached() now emits a COMPLIANCE_TIMER...
ConditionTemplateExtension — borrowerActionable flag for the portal (doc 09 §6.4)
The net-new data dependency the borrower portal's "What's Left" view needs: the locked LoanCondition carries only staff/org member ids, so the portal cannot tel...
PriceAssemblyEngine — the deterministic §8.1 PPE core (Phase 2 Slice 13)
The first pure-logic mlos slice: the capstone that composes the shipped catalog resolvers into the authoritative server-side pricing math (doc 02 §8.1 steps 2-4...
Register pkg + RCE/pull-through DDL (docs 08/09)
@EnableJpaRepositories += **************** SchemaCleanupRunner: **************** (partial-unique) + rce_commit_ai_decision_fk + rce_commit_lock_record_fk + rce_...
Pull-Through — AiPullThroughPolicy + PipelineFundingProjection (doc 09)
The doc-09 pull-through entity foundation (same mlos.capitalmarkets pkg). AiPullThroughPolicy (RENAMED from doc-09's 'LenderProfile' to avoid the shipped config...
RceCommitmentDecision — the RCE lock-decision detail (doc 08 §10.1)
Opens **************** the net-new RCE persistence gap (lock lifecycle + config + decision-spine were all already shipped). Closes the audit chain RateLock <-> ...
Register com.kamo.z.shared.mlos.eclose in @EnableJpaRepositories (doc 05)
ClosingWorkflowTemplate + MersRegistration (doc 05 §6.2/§6.3) — COMPLETES the §6.3 eClose inventory
ClosingWorkflowTemplate (the eClose graph as DATA — version-bearing total-block WORM, stepsJson JSONB, effective-dated; scopeLevel most-restrictive). MersRegist...
EClose core — ClosingPackage + ClosingArtifact (doc 05 §6.3)
Opens com.kamo.z.shared.mlos.eclose: the eClose workflow-graph substrate. ClosingPackage (aggregate root, one per closing; partial-WORM — identity frozen, statu...
InternalRulesDecision — the §6.5 non-AUS rules-engine store (doc 10) — COMPLETES the aus_* inventory
The internal non-QM/DSCR/ITIN/Jumbo deterministic rules-engine result store: explicitly NOT an AUS (not AusFinding/AusKind, never disclosed as a GSE AUS, doc 01...
AUS finding children — aus_condition + aus_waiver + aus_validation (doc 10 §6.2)
Completes the doc-10 aus_* finding-children inventory (the InternalRulesDecision non-AUS sibling is a separate slice). AusCondition (parsed agency-feedback line...
Register com.kamo.z.shared.mlos.aus in @EnableJpaRepositories (doc 10)
New aus_* repo package (AusRun + children). mlos_aus_run created + verified.
AusRun keystone — the AUS submission-of-record (doc 10 §6.2)
Opens com.kamo.z.shared.mlos.aus: AusRun (child of locked AusFinding) carrying per- submission run state — phase, dual-AUS freeze/soft-lock, cost+credit-reissue...
Doc-03 §2.8 compliance entities — ComplianceFinding + RBPN + FCRA-AA + ChangedCircumstance
The §2.8 record-of-determination + the three INDEPENDENT notice/CC regimes, joining the shipped AdverseActionTimer/RegXTimer in mlos.compliance. All total-block...
Like what you see shipping?
Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.