AUDIT-WP-0018-T02 done: nk-bounded-executor sender scope and sso ingress prepared
- deploy/senders-scope.{json,yaml}: nk-bounded-executor (source
net-kingdom.bounded-executor, tenants [platform], write-only,
secret_policy reject, load-bearing); inert until a token is seeded
- senders.py: the scope overlay may tighten secret_policy redact->reject,
never relax it
- networkpolicies.yaml: audit-core-nk-bounded-executor-ingress (sso AND
app.kubernetes.io/name=bounded-executor, TCP 8080); not applied
- tests on the executor's envelope shape: 202, 200 duplicate, 409, wrong
source/tenant, secret-shaped step check 400
- T03 unblocked (window bound = admission window.not_after)
- docs: emitter defect: executor AuditCore.emit rejects 202
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 5502@bnt-lap001
Assistant-Session: 68b3b02f-5d0f-4e71-8421-796f62e50196
This commit is contained in:
parent
716900b8a7
commit
7728fde9b4
9 changed files with 452 additions and 11 deletions
|
|
@ -163,3 +163,46 @@ value appears in this repository.
|
|||
entry.
|
||||
- **Founder:** the live registry entry and NetworkPolicy rollout are an approved
|
||||
live change. Audit-core prepares them; the founder runs them.
|
||||
|
||||
## Status 2026-10-31 — T02 prepared after NetKingdom's answers
|
||||
|
||||
NetKingdom answered on hub messages `ed03ba30` and `deea5bf8`. The answers are
|
||||
based on executor.py at net-kingdom a020758 and rapp-bounded-executor 9826a24.
|
||||
|
||||
- Source `net-kingdom.bounded-executor`. Event types `execution.run.started` and
|
||||
`execution.attribution.receipt`. Tenant `platform`, which is the exact
|
||||
string. Note that it is not `tenant:platform`, which approval-engine and
|
||||
informed-decision use. The `started` event is adopted, so the stream is
|
||||
`load-bearing`.
|
||||
- **Registry entry (prepared, not seeded):** `nk-bounded-executor` in
|
||||
`deploy/senders-scope.json` and `deploy/senders-scope.yaml`. The entry admits
|
||||
nothing until the Secret carries a token for that name. The overlay may now
|
||||
tighten `secret_policy` from `redact` to `reject`, but it may never relax it
|
||||
(`audit_core/senders.py`). Even if the Secret entry is minted with the
|
||||
default, the result is therefore `reject`.
|
||||
- **Ingress (prepared, not applied):** `audit-core-nk-bounded-executor-ingress`
|
||||
in `deploy/networkpolicies.yaml` admits only namespace `sso` combined (AND)
|
||||
with pod label `app.kubernetes.io/name=bounded-executor`, on TCP 8080.
|
||||
- **Tests:** `tests/test_bounded_executor_sender.py` runs on the executor's
|
||||
envelope shape. It checks: 202 accept; 200 duplicate on retry; 409 on a
|
||||
reused run id with a different body; 400 `source_not_allowed` and
|
||||
`tenant_not_allowed`; 400 `secret_shaped_field` for a secret-shaped step
|
||||
check.
|
||||
- **Defect found in the emitter:** `bounded-executor/clients.py`
|
||||
`AuditCore.emit` accepts only 200 and 201. Audit-core answers a first accept
|
||||
with **202**, so the executor would treat a stored `started` event as a
|
||||
failure and stop with `audit_unavailable`. NetKingdom has to accept 202
|
||||
(accepted) and 200 (duplicate). It should treat 409 as a run-id-reuse
|
||||
defect and must not retry it.
|
||||
- **T03 window bound:** a `started` event that has no receipt with the same
|
||||
`correlation_id` becomes a finding after the admission's `window.not_after`.
|
||||
Pilot windows are 2 h.
|
||||
|
||||
Remaining work:
|
||||
|
||||
- **Founder-run:** mint and seed the Secret entry, then roll out the ConfigMap
|
||||
and the NetworkPolicy.
|
||||
- **NetKingdom:** the versioned receipt schema with fixtures (NK-WP-0040-T02)
|
||||
and the 202 fix.
|
||||
- **railiance-platform:** custody of the sender bearer (ESO projection to
|
||||
`sso`).
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue