Connect policy-gated browser review and audit runtime
Assistant: codex Assistant-Model: gpt-6-astra Assistant-Session: 01a07ff8-19d0-7820-b4d0-1353833cb7fc
This commit is contained in:
parent
2cc32168ac
commit
83849b75d4
35 changed files with 2381 additions and 83 deletions
|
|
@ -1,9 +1,10 @@
|
|||
# Durable review evidence and audit delivery
|
||||
|
||||
Implemented under `INFD-WP-0001-T08`. `store.py` replaces the domain tests'
|
||||
in-memory outbox with a persistent internal store. It does not expose a browser
|
||||
route, decide entitlement, or authorize an approval entry. `web.py` still has
|
||||
no memo/entry routes and `/readyz` remains 503.
|
||||
in-memory outbox with a persistent internal store. `review.py` and `web.py` now
|
||||
connect it to the protected browser flow; the store itself never decides
|
||||
entitlement. See [protected-browser-review.md](protected-browser-review.md)
|
||||
for configuration, policy observations, schema v2 migration and readiness.
|
||||
|
||||
## Storage and recovery
|
||||
|
||||
|
|
@ -56,7 +57,7 @@ These are internal delivery records, not cached approval validity:
|
|||
1. Record the human's accept intent and its evidence before an engine POST.
|
||||
2. The controller must obtain a fresh applicable access-engine decision, verify
|
||||
the session and compare the memo's carried digest with the live approval.
|
||||
**That controller/policy integration is still pending.**
|
||||
`review.py` supplies these checks and persists the exact observation before use.
|
||||
3. `begin_submission` atomically reserves one attempt. A stale presentation
|
||||
cannot start; a memo cannot be revised while its entry attempt is in flight
|
||||
or unresolved. Network I/O happens outside the SQLite transaction.
|
||||
|
|
@ -76,7 +77,8 @@ does not prove which presentation caused it. The store does not attach it to
|
|||
the latest view or automatically POST again. A crash after reservation likewise
|
||||
does not reopen dispatch. The records remain visible for explicit controller/
|
||||
operator recovery; no recovery path in this slice fabricates that missing link.
|
||||
The remaining T08 controller must handle this state visibly before shipping.
|
||||
The controller and UI now expose this state and remove the submission button;
|
||||
native operator recovery admission remains in T08.
|
||||
|
||||
## Audit Core contract
|
||||
|
||||
|
|
@ -103,8 +105,9 @@ and auditor identities. That is contract proof, not production custody proof.
|
|||
|
||||
Per-class heartbeat generation uses the existing 86,400-second declarations.
|
||||
It does not emit “nothing to report” for a class with undelivered evidence.
|
||||
The host must schedule heartbeat generation, bounded draining and monitoring;
|
||||
no background service or cadence is installed by this source change.
|
||||
The configured `AuditPump` schedules 30-second ticks, bounded draining and
|
||||
five-minute reconciliation. The deployment owner must admit its private
|
||||
storage, credentials and monitoring; no running service was installed here.
|
||||
|
||||
## Reconciliation has two time bases
|
||||
|
||||
|
|
@ -127,18 +130,20 @@ The GH-DEC-2026-014 commitment-only limitation remains.
|
|||
```sh
|
||||
INFD_APPROVAL_ENGINE_SOURCE=/home/worsch/approval-engine \
|
||||
INFD_AUDIT_CORE_SOURCE=/home/worsch/audit-core \
|
||||
INFD_FLEX_AUTH_BINARY=/absolute/path/to/flex-auth \
|
||||
uv run python -m pytest -q
|
||||
```
|
||||
|
||||
258 tests pass: 52 added tests cover transactional rollback, process death,
|
||||
The prior 258-test milestone added 52 tests for transactional rollback, process death,
|
||||
restore, actor/version/ack guards, concurrent clicks, original correlation,
|
||||
ambiguous submissions, audit retry/refusal and actual receiver contracts.
|
||||
The opt-in suites use the actual Approval Engine and Audit Core implementations
|
||||
with synthetic identity/custody. They make no policy decision and spend nothing.
|
||||
with synthetic identity/custody. The current 344-test suite also exercises the
|
||||
actual Flex Auth HTTP server; 12 Chromium checks cover the complete disposable
|
||||
browser flow. No native credential or paid provider is used.
|
||||
|
||||
Remaining under T08: an admitted PDP package/caller and exact read/bind request,
|
||||
protected review/ack/accept/return/discuss routes, durable policy observations,
|
||||
visible unresolved-entry recovery, scheduled audit delivery/reconciliation,
|
||||
native registered human login and deployed-engine/custody proof. No Informed
|
||||
Remaining under T08: native PDP package/caller/assignment admission against the
|
||||
[exact consumer contract](flex-auth-review-contract.md), registered human login,
|
||||
deployed-engine/custody proof and operator recovery/backup admission. No Informed
|
||||
Decision policy package or registration was found in the checked Flex Auth
|
||||
examples, registry and docs at `88b3543`; do not substitute a local allow rule.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue