net-kingdom/workplans/NK-WP-0040-execution-attribution-receipt.md
tegwick ad4ec6e7a7
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 3s
Review: NK-WP-0040 ready, NK-WP-0042 backlog (operator decision)
NK-WP-0042 waits until the voluntary MFA journeys are usable (ADR-0016).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 299762@bnt-lap001
Assistant-Session: d3d3cea1-869c-44f1-be2a-3d6d3550e72e
2026-09-24 01:23:00 +02:00

61 lines
2 KiB
Markdown

---
id: NK-WP-0040
type: workplan
title: "Define an execution-attribution receipt for Railiance runs"
domain: infotech
repo: net-kingdom
status: ready
flavor: planning
owner: claude-code
topic_slug: netkingdom
created: "2026-09-23"
updated: "2026-09-24"
related: [RCLK-WP-0002]
state_hub_workstream_id: "e2533f3a-aa43-59b3-bff3-8e64b6149487"
---
Raised by the railiance-clock identity review
(`history/2026-09-23-railiance-clock-identity-and-layer-review.md`, Ruling 1).
IAM Profile v0.3 defines who acts: human, service and agent principals, and
delegation. Playbook Capability Contract v0.1 defines what is selected and who
is responsible. No NetKingdom contract defines the record that ties **one
execution** to its actor chain, artifact and result.
## Draft the receipt fields as a Playbook Capability Contract amendment
```task
id: NK-WP-0040-T01
status: todo
priority: medium
state_hub_task_id: "9d02685a-a3d9-5b9f-b09e-aef1f196a97f"
```
Draft a v0.2 amendment that adds an execution-attribution receipt with these
fields:
- issuer and subject of the initiating actor
- delegation reference (`actor_sub`/`act.sub`) when present
- executing workload binding and runtime principal
- tenant and environment
- run ID
- source commit and artifact digest
- target inventory reference and action
- decision and approval IDs
- attributed time interval, with its clock source and bound when one exists
The receipt must never embed bearer credentials. Unknown attribution is kept
explicit, not inferred. Start from the field list in railiance-clock's review.
## Agree the evidence holder and schema with audit-core and Railiance
```task
id: NK-WP-0040-T02
status: todo
priority: medium
state_hub_task_id: "963120c1-7c72-5806-942b-6f49e4c66e54"
```
audit-core holds evidence (layer model §3.3, Evidence role). Railiance
executes and emits. Agree who emits, who holds and how the receipt is
validated. Add a schema under `canon/schemas/` and a validator beside the
existing playbook-capability tooling.