feat: deliver approved factory audit sender custody
Assistant: codex Assistant-Model: gpt-6-astra Assistant-Session: 01a07ff8-19d0-7820-b4d0-1353833cb7fc
This commit is contained in:
parent
fe1b1c5fe2
commit
44314cad37
7 changed files with 411 additions and 8 deletions
|
|
@ -1,6 +1,6 @@
|
|||
# Factory audit senders: concrete custody review
|
||||
|
||||
CCR-2026-0021 and CCR-2026-0022 are **approved** by the user on 2026-09-11,
|
||||
CCR-2026-0021 and CCR-2026-0022 were **approved** by the user on 2026-09-11,
|
||||
replying "good, go on" to the explicit question naming the platform operator,
|
||||
Audit Core owner, and each producer owner. The source review comments and the
|
||||
two existing State Hub decisions record that approval. RPF-WP-0035-T08 owns
|
||||
|
|
@ -33,7 +33,7 @@ its observed KV version. That process necessarily reads the existing registry
|
|||
in memory; it never emits its credentials or gives it to a producer. No token
|
||||
passes through Git, a Hub record, command arguments or stdout/stderr.
|
||||
|
||||
## Blocking receiver finding
|
||||
## Historical receiver finding (resolved before custody)
|
||||
|
||||
On 2026-09-11 the native receiver is 1/1 Ready on
|
||||
`forgejo.coulomb.social/coulomb/audit-core@sha256:c2fe39a0185b99be3fc0cb14d2de69772b8e66e20490097c9d11d90cc39719a6`.
|
||||
|
|
@ -52,6 +52,15 @@ server dry-run in their intended namespaces; its ExternalSecret was refused
|
|||
because that namespace does not exist. This packet creates no namespace,
|
||||
workload or network permission. Its owner must supply that prerequisite.
|
||||
|
||||
## Current execution status
|
||||
|
||||
The compatible receiver c82e0442de0f is live and both namespaces exist. The
|
||||
attended retry seeded both independent version-1 credentials and advanced the
|
||||
registry with CAS 7→8, preserving existing senders and fields. Both CCRs are
|
||||
**applied**; Warden exited 0 and confirmed revocation for that session. See the
|
||||
[seed receipt](../evidence/2026-09-11-factory-audit-sender-seed.json). Delivery,
|
||||
receiver reload and producer acceptance remain distinct checks.
|
||||
|
||||
## Executable sequence
|
||||
|
||||
Review the source and exact policies:
|
||||
|
|
@ -102,9 +111,41 @@ exact token equality inside the protected process. Sync the existing registry
|
|||
ExternalSecret, verify its update, and reload Audit Core through its owner
|
||||
runbook. Then run each real producer's accepted/duplicate and wrong-source,
|
||||
wrong-tenant/read-refusal checks and retrieve evidence with the independent
|
||||
operator reader. The script does not yet automate these owner acceptance steps.
|
||||
operator reader. The delivery helper automates delivery, scope checks and receiver reload; it
|
||||
does not deploy producers or automate their outbox acceptance.
|
||||
Do not mark either CCR verified/active until those receipts exist.
|
||||
|
||||
## Attended delivery helper
|
||||
|
||||
After the seed receipt exists, run this silent command inside a fresh Warden
|
||||
attended platform-admin envelope (do not rerun seed or reuse a revoked session):
|
||||
|
||||
```sh
|
||||
python3 scripts/factory_audit_delivery.py \
|
||||
--kubeconfig /operator/railiance-kubeconfig \
|
||||
--server https://127.0.0.1:16444 \
|
||||
--expected-receiver-image forgejo.coulomb.social/coulomb/audit-core@sha256:c82e0442de0fd181342916ae9cd5d6de41d859e1efda637bd93936c67873afa5 \
|
||||
--confirm 'DELIVER CCR-2026-0021 CCR-2026-0022' \
|
||||
--receipt /operator/unique-delivery-receipt.json
|
||||
```
|
||||
|
||||
The helper pins the reviewed manifest bytes and native cluster/image. It
|
||||
verifies exact policy, role, version-1 custody and provenance; independently
|
||||
logs in as each native ESO reader; proves sibling, full-registry, metadata,
|
||||
listing, wrong-SA and coding-agent-boundary denials; and revokes temporary
|
||||
reader tokens. It checks exact projected token equality and ESO ownership in
|
||||
captured memory, forces receiver-registry reconciliation and compares the
|
||||
complete JSON before restarting the receiver. A uniquely owned temporary
|
||||
namespace proves wrong-namespace login and explicit ESO namespace restriction
|
||||
with no Secret created. Cleanup uses the namespace UID precondition.
|
||||
|
||||
The metadata-only receipt advances by phase. Its successful status is
|
||||
`delivered_and_scope_verified_pending_producer_acceptance`. Failures preserve
|
||||
completed phases for diagnosis; they do not rotate or delete permanent custody.
|
||||
Receiver accepted/duplicate and negative HTTP checks, real producer outbox
|
||||
recovery and bearer revocation remain owner acceptance work. Do not mistake
|
||||
short-lived ESO-reader revocation for receiver bearer revocation.
|
||||
|
||||
## Revocation and limits
|
||||
|
||||
ESO login expiry does **not** expire an audit bearer. Stop the affected producer,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue