UNS verification¶
Run from the consolidated repository with its development environment:
.venv/bin/python -m pytest tests
.venv/bin/ruff check src tests scripts apps
.venv/bin/mypy -p uns -p notification -p db -p ui_client -p uns_mcp
.venv/bin/bandit -q -r src
.venv/bin/python examples/uns_demo.py
cd apps/ui
npm ci
npm run ci
Build a wheel and install it in a separate fresh environment. Verify canonical and legacy imports and command help. The local recording adapter establishes orchestration, not real provider or human receipt.
Acceptance mapping¶
| Scenarios | Evidence owner |
|---|---|
| A01 installation and compatibility | Wheel/install smoke and public API tests |
| A02 simulation/no-handler | tests/uns/test_runtime.py, SDK tests |
| A03 transport parity | test_http_sdk_mcp_share_identity_and_actual_delivery |
| A04 policy isolation | Existing policy-store/loader tests |
| A05 policy/default/override provenance | Runtime metadata tests and SDK/audit-store tests |
| A06 failed reload | test_policy_reload_failure_keeps_registry_and_database |
| A07/A08 delivery predicate/config | Runtime failure/configuration tests and delivery service tests |
| A09 restart/claim recovery | Runtime restart and expired-lease tests |
| A10 scoped concurrency/idempotency | Runtime concurrent-intake and transport tests |
| A11 response lifecycle | Runtime timeout, replay and terminal-race tests |
| A12 attribution/audit failure | Runtime transport spoofing and acceptance rollback tests |
| A13/A14 policy-change evidence | tests/uns/test_policy_changes.py, existing policy/store tests |
| A15 console and adapters | UI checks, runtime timeline projection, existing host adapter tests |
| A16 documentation | Current docs links, runnable demo, packaging smoke |
| A17 engineering | Full Python suite, lint/type/security/package/UI checks |
The pre-change Python baseline was 1,867 passed and 1 skipped. Baseline Ruff reported 28 issues, primarily experimental governance typing/import style. Final results and unresolved limits are recorded below after verification.
Optional external smoke¶
With separately authorized recipients and configured credentials, send one uniquely identified BEST_EFFORT signal, inspect adapter/provider evidence, then test one SAFETY acknowledgment and record the human actor. Do not label a recording-adapter test as this smoke. No external smoke is run by default.
Historical consolidation result before adversarial remediation¶
The recorded original suite passed on Python 3.12 using a fresh wheel environment. Subsequent adversarial reproductions invalidated a broad local-acceptance conclusion; these results remain historical evidence, not the current reliability verdict. The MCP dependency is constrained to major version 1 because version 2 removed the API used by the retained integration.
| Check | Result |
|---|---|
| Python suite including consolidation regressions | 1,564 passed |
| Combined Python coverage | 89.45%, above the 75% gate |
| Console | 289 tests passed; type check, ESLint and production build passed |
| Python lint, type check, static security | Ruff passed; mypy passed for 88 files; Bandit passed |
| UI boundary and whitespace | Passed |
| Distribution | Wheel and sdist built; 87 shipped Python modules matched source |
| Clean installation | Minimal and full wheel imports passed; CLI help and HTTP/MCP construction passed |
| Installed demo and schema bootstrap | Recording delivery/restart/ACK passed; migration run twice successfully |
| Installed Python dependency audit | No known dependency advisories; local unpublished UNS package is not registry-audited |
| Frontend lockfile audit | 21 advisories remain: 1 low, 5 moderate, 11 high, 4 critical |
| Frontend production dependencies | 2 moderate advisories remain in the router dependency chain |
Safe lockfile updates reduced the inherited advisory set. Remaining frontend remediation requires broader dependency upgrades. This is a release limitation, not a passing security audit. Development servers remain local-only. Real-provider delivery, human receipt, PostgreSQL acceptance, and hosted CI are unverified; no deployment or publication occurred.
The test count differs from the predecessor because obsolete documentation-layout assertions and the superseded Python UI tests were retired. Current runtime tests remain, with additional crash, concurrency, guard, transport, and audit regressions. One inherited SQLAlchemy JSON-operator deprecation warning remains.
Machine-readable results and raw local receipts are in verification/results.json. This evidence establishes local behavior only, not commercial or production acceptance.
First adversarial remediation result (historical)¶
The remediation code target is 902300773d7ad41baefab8e007d0f37981ba6be9. It preserves the notification-only product boundary and addresses the reproduced reliability, policy and access gaps. Original test files were not removed in this remediation; fixtures/assertions were adapted to explicit authenticated and runtime-scoped contracts.
| Check | Checked result |
|---|---|
| Full Python suite | 1,705 passed, 90.17% coverage against the 75% gate |
| Console | 305 tests passed, including all prior 289; types, lint and build passed |
| Frontend full/production lockfile audits | Zero advisories in both current reports |
| Python installed dependency audit | Zero known advisories; unpublished local package not registry-audited |
| Static and boundaries | Ruff, mypy across 91 files, Bandit, UI boundary and whitespace checks passed |
| Packaging | Wheel and sdist built; 90 Python modules matched source; minimal/full installs and CLI entrypoints passed |
| Installed migration/maintenance | Old pending work preserved through two migrations; retention dry-run left database bytes unchanged |
| Focused independent re-review | Original 5 read-isolation reproductions now pass; 14 additional scoped isolation/retention checks pass |
New cases exercise failed-owner dedup, successor election, replay budgets, stale lease fallback/provider retries, queued SMTP effects, actual subprocess termination, isolated timeout processing, exact policy revision/activation ordering across processes, cold MCP hydration, override/metadata rejection, durable authenticated WebSocket ACKs, MCP idle recovery and signal shutdown, same/mixed-transport read isolation, and archive failure/cursor safety.
Evidence is in remediation results and the focused review record. Original consolidation receipts remain unchanged under verification/; their broader acceptance wording was superseded by adversarial validation.
Remaining limits: external-provider and human-receipt acceptance, live PostgreSQL operation, hosted CI and representative production load are unverified. Credentials confer operator access, not RBAC. External effects remain at least once. Historical information already lost by earlier versions cannot be reconstructed. Retention is explicit, SQLite-only and row-bounded, not byte/time-bounded or automatic compliance retention. Existing dependency/framework deprecation warnings are recorded in the test log.
Second adversarial remediation checkpoint¶
Implementation target: ba46a311d071736a6beca241a6e43a1407f29f3b, base 3f6005fa2907c1ecdac2e34eb97987ac2ab6af9a. Contract decisions and dispositions explain the distinction between reproduced behavior and accepted requirements.
| Check | Result |
|---|---|
| Full Python suite | 1,765 passed; 90.70% combined coverage, 75% gate |
| Static/boundaries | Ruff, mypy (91 files), Bandit, UI boundary and whitespace passed |
| Focused independent runtime/schema/retention review | 86 passed, three real baseline-to-upgrade reproductions and multi-node replay matrix; reviewed file hashes retained |
| Policy | Warm reads avoid UPDATE; 131 focused tests, including process ordering and cold bootstrap |
| MCP | 80 focused tests; durable direct reads, explicit injection, factory parity and SUCCESS mapping |
| Adapter/service/runtime | 182 focused tests; deterministic preparation/cancellation barriers, UNKNOWN outcomes, evidence-store failures and lease-loss results |
| Packaging | Wheel and sdist; 90 module source identities matched; separate minimal/full installations, local delivery/ACK, repeated migration CLI and no-write maintenance preview passed |
| Original reviewer file | Baseline 11 failed; final 5 passed / 6 expected contract/setup mismatches individually explained in the iteration report |
| Frontend/dependencies | No frontend/dependency changes; frontend CI and advisory audits were not rerun. Prior 305 console tests and advisory snapshots remain historical evidence only. |
Raw logs, the untouched reviewer reproduction, installed smoke script and SHA-256 manifest are in iteration 2 receipts. Validation used Python 3.12.9 and temporary SQLite databases. Two inherited framework deprecation warnings remain; Bandit also prints non-failing unmatched nosec warnings around the existing lease-clear annotation. No production data was modified. External acceptance limitations in the first report still apply.
Reproduce with the development environment and commands above. The reviewer file can be run separately with python -m pytest verification/iteration2/reviewer_reproductions.py; its expected residual failures are not the regression gate. Run the installed package smoke from outside the source tree with python /path/to/repo/verification/iteration2/package_smoke.py /path/to/repo after building/installing the full wheel.
Consolidated main merge checkpoint¶
The canonical main branch fast-forwarded from b508cc3 through 76fc43e; application source is unchanged from ba46a31. Fresh verification in the canonical checkout passed 1,765 Python tests at 90.70% coverage, 305 console tests plus type/lint/build checks, Ruff, mypy (91 files), Bandit, UI boundary, wheel/source identity (90 modules), installed full-wheel delivery/ACK/repeated migration/no-write retention preview, and the recording demo. The console was freshly installed from its merged lockfile. Existing test/framework warnings are recorded. Advisory databases were not refreshed.
Consolidated baseline and fresh merge receipts supersede the iteration checkouts as the current working location. Prior receipts remain unchanged. No remote push, hosted CI, live database migration, real-provider acceptance or deployment occurred.
Container deployment-candidate verification (current)¶
The source target 07ef52a87b45128b77715f64c8b0e5f8f91387a9 adds packaging/probe/WebSocket support fixes and browser-discovered audit context/UTC corrections after the consolidated baseline. Full Python verification: 1,776 passed at 90.76% coverage. The installed image passed 99 live HTTP/WebSocket/MCP/recovery checks, module identity and dependency consistency checks, authenticated Compose readiness, and copied-data archive verification. Functional browser flows were exercised in Brave. See deployment smoke and receipts. The lasting target and real recipients remain unspecified; this is isolated recording-profile rehearsal evidence, not production deployment acceptance.
Persistent localhost deployment acceptance¶
The user accepted localhost plus recording adapters. The pinned application image is unchanged from 07ef52a; the permanent recording composition and fixed ingress are versioned under deploy/local/. All 62 persistent-deployment checks passed, including real network transports, local provider recordings, one-minute timeout, callbacks and restart recovery. App isolation, loopback-only ingress and a consistent SQLite backup were checked. Runbook and receipts record the running deployment. No real-provider or remote-production acceptance is implied.
Review follow-up verification - 2026-10-24¶
Base: 7cf5c12c7a25607fff8242b2bdfe115a145dc485. This follow-up closes the WebSocket response-scope gap, applies the persistence guard to the default ASGI/application-factory path, shares SQLite URL classification across startup and diagnostics, resolves complete obligation lineage, aligns runtime-bound MCP response evidence, and aggregates readiness progress without loading work histories.
| Check | Result |
|---|---|
Full Python suite (tests) |
1,854 passed, 90.99% combined coverage against the 75% gate |
| New regressions | 16 scoped WebSocket cases, 37 persistence/entrypoint cases, 6 owner/projection cases, and 6 operational-progress cases |
| Python static checks | Ruff passed; mypy passed for 92 source files; Bandit passed |
| Console | 305 tests passed; TypeScript, ESLint, production build, and strict UI boundary passed |
| Generated API types | Refreshed from current OpenAPI; the canonical ACK-path type test passed both Vitest and direct strict TypeScript compilation |
| Distribution | Wheel and sdist built; 91 shipped Python modules matched source bytes; shared database helper present in both artifacts |
| Clean installation | Minimal SDK footprint and full-install application construction passed |
| Installed recording smoke | Delivery/ACK, repeated migration, CLI help, and unchanged-byte retention preview passed |
| Patch hygiene | git diff --check passed; dependency declarations and lockfiles unchanged |
Regression evidence lives in tests/uns/test_scoped_websocket_auth.py, tests/uns/test_persistence_entrypoints.py, tests/uns/test_obligation_projection.py, and tests/uns/test_operational_progress.py. The owner tests create twelve actual coalesced notifications and exercise successive promotion, complete exhaustion, root replay, and registered MCP/HTTP parity. The WebSocket tests cover both Bearer and browser-subprotocol authentication, assert unchanged durable state/audit on rejected commands, and preserve stream reads. Restoring the original WebSocket ACK handler in an isolated regression control caused all eight lower-scope rejection cases to fail as expected.
The two legacy MCP response-shape failures observed in the base commit's GitHub CI are covered by the existing tests/uns_mcp/test_runtime_bound_reads.py tests and pass in this run. Legacy no-runtime ACK responses retain their original two-field shape; runtime-bound responses include the canonical obligation projection.
Local verification used Python 3.12.14 and temporary SQLite databases. The executor's default asyncio loop stalled an unrelated minimal TestClient request and the MCP child-process test; a temporary test-virtualenv-only uvloop policy for parent and child interpreters allowed the unchanged tests to run. No event-loop workaround was added to repository or package code. The full run retained two framework deprecation warnings; Bandit and packaging also emitted existing non-failing annotation/license warnings.
These results establish local behavior. They do not establish real-provider receipt, human comprehension, production load capacity, or deployment of this commit. Hosted CI and the Python 3.11/3.13 matrix are separate checks.
Release v0.2.0 Full-Stack, PostgreSQL 16 & Concurrency Verification - 2026-11-02¶
The v0.2.0 release consolidates the durable notification runtime, MCP server, and operator console across Python and TypeScript stacks, adding full PostgreSQL 16 support, multi-worker concurrency validation, React 19 / TypeScript 5.9 / ESLint 9 flat config UI modernization, and automated GitHub Actions CI matrices.
Complete Release v0.2.0 Verification Summary¶
| Verification Surface | Scope / Runner | Result |
|---|---|---|
| Python Test Suite | Python 3.11, 3.12, 3.13 via pytest | 1,877+ passed, >90% coverage against 75% gate |
| PostgreSQL 16 & Sustained Load | postgres:16-alpine service container + SQLite WAL (tests/uns/test_postgres_and_load.py) |
22 passed (schema, JSONB, lease contention, 100-request bursts, 0 duplicate sends) |
UNS Console Test Suite (apps/ui) |
Vitest 5.x / React Testing Library / jsdom | 344 passed across all 6 console workspaces |
| Console Modernization Stack | React 19.3, TypeScript 5.9, ESLint 9.39 (eslint.config.js), Vite 8.3 |
Type-check, flat lint, and production bundle built with 0 errors |
| Dependency Security Audits | npm audit --omit=dev & pip-audit |
0 advisories (0 critical, 0 high, 0 moderate, 0 low) |
| Secret Leak Detection | Gitleaks across all commits (gitleaks detect --config .gitleaks.toml) |
0 leaks found across 500+ scanned commits |
| Documentation Contracts | tests/docs/ suite verifying cross-document integrity & invariant links |
259+ passed |
| Persistent Localhost Deployment | deploy/local/smoke.py against http://127.0.0.1:18080 (SQLite + ingress) |
66/66 checks passed, including /operations and /docs |
| SQLite Backup Verification | Online SQLite backup API under private config volume | PRAGMA quick_check=ok verified |
PostgreSQL 16 Operational Acceptance and Concurrency Details¶
| Check | Result |
|---|---|
PostgreSQL 16 Live Operational Acceptance (TestPostgresOperationalAcceptance) |
Schema bootstrap, idempotent migration, SQLite + PostgreSQL retention guard (uns-maintain), warm/cold policy hydration, revision locking, idempotency replay, conflict detection, dedup coalescing/promotion, guarded replay, ACK/dismiss/TIMED_OUT lifecycle, and SQLAlchemyReadModelAdapter queries (with PostgreSQL JSONB containment channel filter) all passed. |
100-Request Concurrent Intake Burst & Deduplication Storm (test_concurrent_intake_burst_and_deduplication_storm) |
100 producer requests across 10 deduplication keys + 20 unique guaranteed requests (120 total) completed concurrently with zero lock errors, exactly 10 leaders + 90 followers, and sub-second P95 intake latency on both SQLite WAL and PostgreSQL 16. |
Multi-Worker Lease Contention Zero Duplicate Sends (test_multi_worker_lease_contention_zero_duplicate_sends) |
40 pending guaranteed notifications raced by 4 concurrent runtime.dispatch(limit=20) workers reached DELIVERED with exactly 40 external send calls recorded by the adapter (0 duplicate sends) on both SQLite WAL and PostgreSQL 16. |
Concurrent Policy Reload Under Active Intake (test_concurrent_policy_reload_under_active_intake) |
50 producer intake calls interleaved with 5 concurrent save_snapshot() policy reloads changing ack_timeout_minutes completed with 0 exceptions and 100% self-consistent (policy_revision_id, policy_config_hash, ack_timeout_minutes) provenance records. |
| PostgreSQL Driver Packaging | psycopg[binary]>=3.2.0 added to the sql optional dependency extra in pyproject.toml, enabling uns[full] PostgreSQL support out of the box. |
| CI Integration | Dedicated postgres service container job using postgres:16-alpine running tests/uns/test_postgres_and_load.py integrated into .github/workflows/python-tests.yml under the ci required gate. |
Release v0.6.1 Governance, Provider Sync & Adversarial Remediation Verification¶
Release v0.6.1 extends the verification suite across v0.3.0-v0.6.1 capabilities (uns.governance pre-execution authorization and approval bridge, inline ShadowPolicyEvaluator and governed PolicyDelta promotion, signed inbound Slack/PagerDuty webhooks, PostgreSQL LISTEN/NOTIFY cross-process policy invalidation, PostgreSQL uns-maintain parity, and uns-slo-certify 7-gate readiness receipts):
| Suite / Gate | Target / Command | Status |
|---|---|---|
| Full Python Test Matrix | pytest (Python 3.11, 3.12, 3.13) |
1,973 passed, 0 failed |
Adversarial Remediation Regression (F01-F24) |
pytest tests/uns/test_security_and_runtime_remediations.py (SQLite + PostgreSQL 16) |
71 passed (36 SQLite + 35 PostgreSQL 16) |
| PostgreSQL 16 & Sustained Load | pytest tests/uns/test_postgres_and_load.py (postgres:16-alpine + SQLite WAL) |
23 passed (including LISTEN/NOTIFY cross-process invalidation and PostgreSQL uns-maintain) |
| Pre-Execution Action Governance | pytest tests/governance/ |
48 passed (decide(), fail-closed/fail-open semantics, RFC 8785 context hashes, GovernanceApprovalBridge) |
UNS Console Test Suite (apps/ui) |
npm --prefix apps/ui run ci (Vitest 5.x / React 19.3 / TypeScript 5.9 / Vite 8.3) |
346 passed across all 6 console surfaces |
Persistent Localhost Deployment (uns:0.6.1) |
python3 deploy/local/smoke.py --base-url http://127.0.0.1:18080 --key-file ~/.local/state/uns-local/config/api.key |
66/66 checks passed |