Harden the PEP harness and KeyCape registration request
Close remaining in-repo APPROVAL-WP-0002 gaps: drive GH-DEC-2026-003 against the real HTTP surface, fail closed on JWT/human-consume/static-token paths, treat audit 200 duplicates as drained, and ask KeyCape for the production audience and client grants. Assistant: grok Assistant-Session: 01a06253-e557-7971-93d9-4f4c2cfbf455
This commit is contained in:
parent
2bd2d19a98
commit
2370f69927
11 changed files with 588 additions and 46 deletions
|
|
@ -65,9 +65,15 @@ tokens fail closed without mutation.
|
|||
|
||||
Repository implementation complete 2026-09-02: RS256/JWKS verification,
|
||||
issuer/audience/time/profile validation, exact scopes, store-tenant isolation,
|
||||
verified approver evidence, and a deny-all default are covered by tests. Remains
|
||||
`progress` until KeyCape owns and proves the production audience/client/scope
|
||||
registrations.
|
||||
verified approver evidence, and a deny-all default are covered by tests.
|
||||
|
||||
2026-09-02 follow-up: fail-closed coverage now includes wrong signature, HS256,
|
||||
empty/invalid profile claims, deny-all mutation refusal, human-principal consume
|
||||
rejection, and production CLI refusal of static tokens / missing audit
|
||||
delivery. Requested KeyCape registrations are in
|
||||
`docs/keycape-service-registrations.md` (`aud` MUST be the resource server
|
||||
`approval-engine`, not the OAuth client id). Remains `progress` until KeyCape
|
||||
owns and proves those audience/client/scope registrations.
|
||||
|
||||
## Harden durable storage and migrations
|
||||
|
||||
|
|
@ -138,8 +144,12 @@ on `AUDIT-WP-0009-T04/T06/T09`; do not invent that receiver surface here.
|
|||
|
||||
Repository implementation complete 2026-09-02: audit-core envelope adaptation,
|
||||
event-id idempotency, mounted-token reread, accepted/duplicate handling,
|
||||
retry-attempt/lag metrics, and periodic heartbeats are tested. Waiting on the
|
||||
audit-core sender registration/ingress and receiver-owned reconciliation work.
|
||||
retry-attempt/lag metrics, and periodic heartbeats are tested.
|
||||
|
||||
2026-09-02 follow-up: drain tests now cover HTTP 200 duplicate as drained and
|
||||
urllib `HTTPError` 503 as pending. Waiting on the audit-core sender
|
||||
registration/ingress and receiver-owned reconciliation work
|
||||
(`AUDIT-WP-0009-T04/T06/T09`).
|
||||
|
||||
## Prove one live PEP consumption path
|
||||
|
||||
|
|
@ -164,4 +174,14 @@ claim the consumer's side effect.
|
|||
Repository implementation complete 2026-09-02: the HTTP PEP client and
|
||||
fail-closed sequencing harness prove claim-before-decision and CAS-consume-before
|
||||
callback, including unavailable, DENY, digest mismatch, and conflict paths.
|
||||
Waiting on the secrets-engine-owned handler and live no-OpenBao-on-failure proof.
|
||||
|
||||
2026-09-02 follow-up: secrets-engine shipped the PEP consume-before-OpenBao
|
||||
handler (`src/secrets_engine/approval_consume.py`; inbox `0e04b4e2`). This
|
||||
engine's client now maps HTTP 409/401/403/404/503 and unreachability, requires
|
||||
the canonical digest, and refuses a decision-shaped consume payload. The
|
||||
repeatable harness in `tests/test_pep.py` drives the real HTTP surface: first
|
||||
consume then same-digest retry, different-digest conflict, spent-on-failure
|
||||
claim refusal, and unreachable-engine callback suppression. Waiting on live
|
||||
closure: this service deployed (T03) and a durable consume binding served
|
||||
(`SECRETS-WP-0007-T04` / `SECRETS-WP-0008-T02`). This repo does not claim the
|
||||
OpenBao side effect.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue