feat(vex): Postgres persistence for Excititor + VexLens + VexHub hardening
Excititor: new migration 003_vex_claim_store.sql and PostgresVexClaimStore replace the in-memory claim tracking. ExcititorPersistenceExtensions wires the store; ExcititorMigrationTests updated. Archives S001 demo seed. VexLens: new migration 002_noise_gating_state.sql with PostgresGatingStatisticsStore, PostgresSnapshotStore, and PostgresNoiseGatingJson bring noise-gating state onto disk. New VexLensRuntimeDatabaseOptions + AuthorityIssuerDirectoryAdapter + VexHubStatementProvider provide the runtime wiring. WebService tests cover the persistence, the issuer-directory adapter, and the statement provider. VexHub: WebService Program, endpoints, middleware, models, and policies tightened; VexExportCompatibilityTests exercise the Concelier↔VexHub export contract. Docs: excititor, vex-hub (architecture + integration guide), and vex-lens architecture pages updated to match the new persistence and verification paths. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -59,11 +59,19 @@ Conflicts remain visible through `conflicts` array; Policy Engine can decide sup
|
||||
|
||||
All responses include provenance fields (`consensus_digest`, `derived_from`, DSSE signature references) for audit.
|
||||
|
||||
## 5) Storage
|
||||
|
||||
- `vex_consensus` collection keyed by `(tenant, artifactId, advisoryKey)` with current consensus, metadata, conflict summary, and digests.
|
||||
- `vex_consensus_history` append-only history to support replay and audit.
|
||||
- `vex_conflict_queue` for unresolved conflicts requiring manual review.
|
||||
## 5) Storage
|
||||
|
||||
- `vex_consensus` collection keyed by `(tenant, artifactId, advisoryKey)` with current consensus, metadata, conflict summary, and digests.
|
||||
- `vex_consensus_history` append-only history to support replay and audit.
|
||||
- `vex_conflict_queue` for unresolved conflicts requiring manual review.
|
||||
- `vexlens.noise_gate_raw_snapshots`, `vexlens.noise_gate_gated_snapshots`, and `vexlens.noise_gate_statistics` store the live noise-gating raw inputs, persisted gated outputs, and aggregated statistics for the `/api/v1/vexlens/gating/*` surface.
|
||||
|
||||
### Noise-gating runtime contract (2026-04-14)
|
||||
|
||||
- The owning VexLens web runtime resolves `ISnapshotStore` and `IGatingStatisticsStore` to PostgreSQL-backed implementations, not process-local in-memory stores.
|
||||
- Startup schema convergence for the noise-gating tables is owned by embedded startup migration `002_noise_gating_state.sql` in `StellaOps.VexLens.Persistence`; fresh local volumes must converge without manual SQL.
|
||||
- `POST /api/v1/vexlens/gating/snapshots/{snapshotId}/gate` now persists the gated snapshot and statistics as part of the live request path, so later delta/statistics reads reflect durable backend state.
|
||||
- The Angular production app binds the real VexLens noise-gating HTTP client through `app.config.ts`, so triage surfaces call `/api/v1/vexlens/gating/*` instead of relying on optional providers or mock helpers.
|
||||
|
||||
## 6) Recompute strategy
|
||||
|
||||
|
||||
Reference in New Issue
Block a user