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
42
SCOPE.md
42
SCOPE.md
|
|
@ -4,13 +4,14 @@
|
|||
> direction belongs in `INTENT.md`; the current stage belongs in `GOAL.md`;
|
||||
> current work and gates belong in `workplans/`.
|
||||
|
||||
## Status — 2026-09-10
|
||||
## Status — 2026-09-11
|
||||
|
||||
**The domain core, browser sign-in shell, Approval Engine HTTP adapter,
|
||||
durable evidence store and Audit Core delivery adapter are implemented. The approval surface is not deployed.**
|
||||
**The protected browser review, policy consumer, Approval Engine adapter,
|
||||
durable evidence store and scheduled Audit Core delivery are implemented.
|
||||
The approval surface is not deployed.**
|
||||
|
||||
What exists and is tested (258 tests, including explicit checks against the
|
||||
actual Approval Engine and Audit Core implementations with synthetic identities):
|
||||
What exists and is tested (344 tests and 12 Chromium checks, including actual
|
||||
Flex Auth, Approval Engine and Audit Core with synthetic identity/custody):
|
||||
|
||||
- layer and stance declarations — `layer.yaml`, `pep-stance.yaml`,
|
||||
`informed_decision/stance.py`, with published-equals-shipped asserted;
|
||||
|
|
@ -26,24 +27,30 @@ actual Approval Engine and Audit Core implementations with synthetic identities)
|
|||
profile, bounded server-side sessions, protected cookies and CSRF sign-out;
|
||||
- `approval_http.py` and `http_transport.py` — get-by-id and human-entry
|
||||
transport, declared-control checks, real entry correlation, no consume route
|
||||
or automatic mutation retry. This adapter has no public browser mutation route;
|
||||
or automatic mutation retry. Protected browser actions use this adapter;
|
||||
- `store.py` / `records.py` — private durable packet/memo/presentation/
|
||||
disposition storage, append-only acknowledgments, transactional outbox and
|
||||
submission correlation, safe reservation and backup/restore;
|
||||
- `audit.py` — idempotent Audit Core delivery, bounded retry/blocked states,
|
||||
explicit per-class count/time-basis comparison. Heartbeats are generated
|
||||
without hiding undelivered evidence; host scheduling remains pending.
|
||||
without hiding undelivered evidence;
|
||||
- `policy.py` / `review.py` / `ui.py` — fresh entitlement before rendering and
|
||||
actions, exact response pins, immutable observations, required highlights,
|
||||
accept/return/discuss/decline and visible original/unresolved entry state;
|
||||
- `runtime.py` — explicit owner configuration, rotating credential-file readers,
|
||||
30-second audit draining, heartbeat/reconciliation and delivery readiness.
|
||||
|
||||
Remaining: admitted policy package/caller and entitlement-before-render
|
||||
integration, L3 review/acknowledgment/binding UI, policy observation persistence,
|
||||
visible unresolved-entry recovery, scheduled independent audit delivery and
|
||||
native deployment/custody proof. The legacy `evidence.Outbox` remains an
|
||||
Remaining: native policy package/caller/assignment admission, registered human
|
||||
login and deployed binding, independent production audit custody, packaging,
|
||||
backup/restore and operator recovery admission. The legacy `evidence.Outbox` remains an
|
||||
in-memory test double; the new `Store` supplies durable atomicity. Browser
|
||||
sessions are ephemeral, with no approval state.
|
||||
`/readyz` returns 503 until the protected approval path is connected.
|
||||
The origin `decisions.coulomb.social` still serves an nginx placeholder.
|
||||
Without owner runtime configuration `/readyz` returns 503. With it, readiness
|
||||
requires recent audit delivery health; it does not assert native admission.
|
||||
The origin's last observed deployment was an nginx placeholder on 2026-09-10.
|
||||
See [browser-authentication.md](docs/browser-authentication.md) and
|
||||
[durable-review-evidence.md](docs/durable-review-evidence.md).
|
||||
[durable-review-evidence.md](docs/durable-review-evidence.md) and
|
||||
[protected-browser-review.md](docs/protected-browser-review.md).
|
||||
|
||||
`INFD-WP-0001-T08` remains open for the live end-to-end proof, which is gated on
|
||||
`APPROVAL-WP-0002-T01` and a deployed `approval-engine`.
|
||||
|
|
@ -91,7 +98,7 @@ trail.
|
|||
- The unreachable-engine stance map, built to v0.8 obligation 3, with
|
||||
published-equals-shipped asserted by test (`tests/test_layer_conformance.py`).
|
||||
|
||||
**Built as domain operations with durable custody; protected HTTP integration remains:**
|
||||
**Built with durable custody and protected HTTP integration:**
|
||||
|
||||
- The presentation record: what was rendered, to whom, when, in which locale and
|
||||
UI release.
|
||||
|
|
@ -102,10 +109,13 @@ trail.
|
|||
- The browser-facing OIDC client: authorization-code + S256 PKCE against
|
||||
`key-cape`, scopes `[openid, approval:read, approval:approve]`.
|
||||
|
||||
- An L3 approver surface calling `approval-engine`'s approval-entry mutation.
|
||||
|
||||
**Specified, not built:**
|
||||
|
||||
- An L3 approver surface calling `approval-engine`'s approval-entry mutation.
|
||||
- The evidence bundle as an offline-verifiable export.
|
||||
- German browser acceptance and the broader step/awareness UI. The current
|
||||
browser profile refuses unsupported locale/step/level rather than overstating it.
|
||||
|
||||
## Out of Scope
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue