audit-core/workplans/AUDIT-WP-0018-bounded-executor-receipt-custody.md
tegwick 5ac637bf5f
Some checks are pending
CI Smoke / host-smoke (push) Waiting to run
CI Smoke / container-smoke (push) Waiting to run
AUDIT-WP-0018: approved by the founder (proposed -> ready), NK-WP-0056-T02 follow-up
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
2026-10-31 15:37:43 +01:00

3.5 KiB

id type title domain repo status flavor owner topic_slug created updated related state_hub_workstream_id
AUDIT-WP-0018 workplan Hold bounded-executor execution-attribution receipts infotech audit-core ready implementation audit-core audit-evidence-dependencies 2026-10-31 2026-10-31
NK-WP-0056
NK-WP-0040
AUDIT-WP-0014
932c94fc-2e7c-55eb-b6d5-70832d3996b5

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

id: AUDIT-WP-0018-T01
status: done
priority: high
state_hub_task_id: "7c1fb849-ddb3-558f-8a50-5c711e2c7b56"

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

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
state_hub_task_id: "3f251d30-e62d-5849-88d9-d033097b4f7d"

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

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
state_hub_task_id: "ec2cd9b7-be65-5792-b546-ffd0b3937856"

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.

Founder decision 2026-10-31

Approved by the founder (proposed -> ready) after the NK-WP-0056-T02 owner answers (hub decision 19afd15e). Founder adopted the execution.run.started event plus one receipt per run with an admission-level target/action, steps[] detail and labelled decision_refs.