AUDIT-WP-0018: answer NK-WP-0056-T02 — hold bounded-executor receipts, propose event mapping
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Assistant: claude-code Assistant-Model: opus Assistant-Process: 994874@bnt-lap001 Assistant-Session: 6017c416-d619-47eb-bd1a-f670a02d7d87
This commit is contained in:
parent
d46e89ee21
commit
1ef939b38a
4 changed files with 258 additions and 0 deletions
85
workplans/AUDIT-WP-0018-bounded-executor-receipt-custody.md
Normal file
85
workplans/AUDIT-WP-0018-bounded-executor-receipt-custody.md
Normal file
|
|
@ -0,0 +1,85 @@
|
|||
---
|
||||
id: AUDIT-WP-0018
|
||||
type: workplan
|
||||
title: "Hold bounded-executor execution-attribution receipts"
|
||||
domain: infotech
|
||||
repo: audit-core
|
||||
status: proposed
|
||||
flavor: implementation
|
||||
owner: audit-core
|
||||
topic_slug: audit-evidence-dependencies
|
||||
created: "2026-10-31"
|
||||
updated: "2026-10-31"
|
||||
related:
|
||||
- NK-WP-0056
|
||||
- NK-WP-0040
|
||||
- AUDIT-WP-0014
|
||||
---
|
||||
|
||||
# AUDIT-WP-0018 — Hold bounded-executor execution-attribution receipts
|
||||
|
||||
NetKingdom's Bounded Execution Admission v0.1 makes a non-human executor
|
||||
(`service:nk-bind-executor`, namespace `sso`) emit one execution-attribution
|
||||
receipt per run. Audit-core holds those receipts. The owner answer and the event
|
||||
mapping are in `docs/bounded-executor-receipts.md`. Canonical schema validation
|
||||
is still AUDIT-WP-0014-T02 and is not duplicated here.
|
||||
|
||||
## Answer the NK-WP-0056-T02 owner request
|
||||
|
||||
```task
|
||||
id: AUDIT-WP-0018-T01
|
||||
status: done
|
||||
priority: high
|
||||
```
|
||||
|
||||
Hub message 755cbeed-ecbd-46d9-883e-958fbd88378b. Audit-core accepts custody.
|
||||
Each run produces one receipt event that carries the per-step outcomes, check
|
||||
results, `reverted` and `budget`. Each run also produces an
|
||||
`execution.run.started` event, correlated with the receipt by `run_id`. Event
|
||||
ids are deterministic from `run_id`. The proposed `secret_policy` is `reject`.
|
||||
NetKingdom has to decide how a singular `target`/`action` relates to per-step
|
||||
targets and actions, and has to make `decision_refs` typed.
|
||||
|
||||
## Prepare sender registration and ingress for the executor
|
||||
|
||||
```task
|
||||
id: AUDIT-WP-0018-T02
|
||||
status: wait
|
||||
priority: high
|
||||
blocking_reason: "NetKingdom must confirm source, event types, tenant binding and the started event; the rapp-* package must name pod labels and ServiceAccount; railiance-platform must route the ESO-projected bearer."
|
||||
blocked_on: message-from:net-kingdom
|
||||
```
|
||||
|
||||
Prepare the following:
|
||||
|
||||
- a non-secret registry entry (`nk-bounded-executor`: exact source, exact
|
||||
tenants, write only, `secret_policy: reject`, and either `evidence_kind`
|
||||
`load-bearing` or `attributive` with a `completeness_trade`);
|
||||
- a NetworkPolicy that admits only the executor's pods in `sso`.
|
||||
|
||||
Then test on synthetic fixtures:
|
||||
|
||||
- accept on 202;
|
||||
- a retry returns a 200 duplicate;
|
||||
- a reused `run_id` with a different body is a 409 conflict;
|
||||
- wrong source or tenant is refused;
|
||||
- a secret-shaped step check is refused with 400.
|
||||
|
||||
The live registry seed and the rollout are founder-run.
|
||||
|
||||
## Detect runs that started without a receipt
|
||||
|
||||
```task
|
||||
id: AUDIT-WP-0018-T03
|
||||
status: wait
|
||||
priority: medium
|
||||
blocking_reason: "Depends on NetKingdom adopting the execution.run.started event and stating the admission window bound after which a missing receipt is a finding."
|
||||
blocked_on: message-from:net-kingdom
|
||||
```
|
||||
|
||||
Report every `execution.run.started` that has no
|
||||
`execution.attribution.receipt` with the same `correlation_id` after the
|
||||
declared window. Reuse the existing stream-completeness/cadence surface
|
||||
(`docs/stream-completeness.md`, `docs/cadence-registration.md`) instead of
|
||||
adding a new monitor. The report is a finding for the verifier and the
|
||||
founder. Audit-core does not infer what the run did.
|
||||
Loading…
Add table
Add a link
Reference in a new issue