The points that fit the existing model and need NetKingdom to decide:
1.**`target`/`action` are singular in the canonical field list but per-step in
BEA section 6.** Proposal: the receipt-level `target` is the admission's
target and the receipt-level `action` is `bounded-execution`. Each step's
target and action go in `steps[]`. Audit-core needs one answer in the schema.
It will not pick one.
2.**`decision_refs` must be typed.** The admission id, the admission digest and
the approval reference are three different things. An untyped list cannot
be checked against the carrier.
3.**`delegation` stays absent** when there is none. `time_interval.bound` stays
absent when no bound is established. Unknown attribution stays the explicit
`unknown`. This is unchanged from `docs/cross-repo-evidence-admission.md`.
4.**Check results carry an id and a result only.** They carry no response
bodies, tokens, password values or LLDAP/OpenBao payloads.
## Registration (proposal)
| Registry field | Proposed value | Reason |
| --- | --- | --- |
| `name` | `nk-bounded-executor` | one identity per executor deployment |
| `sources` | `["net-kingdom.bounded-executor"]` | exact, no wildcard |
| `tenants` | the exact admission tenant(s) | not `*`; the executor acts for named tenants only |
| `may_write` / `may_read` | `true` / `false` | the verifier reads with its own read identity |
| `secret_policy` | `reject` | a receipt is kept by hash. If audit-core redacted it silently, the stored body would no longer match the hash the executor computed, so a secret-shaped field must refuse the event (`400 secret_shaped_field`). The executor treats that as a defect |
| `evidence_kind` | `load-bearing`, if the `started` + receipt pair is adopted. Otherwise `attributive` with an explicit `completeness_trade` | the pair is what makes a missing receipt detectable |
Ingress: a new NetworkPolicy in `deploy/networkpolicies.yaml` admitting
namespace `sso` and the executor's exact pod labels, following
`audit-core-tenant-engine-ingress`. Do not admit the whole `sso` namespace,
because Authelia, LLDAP and KeyCape run there too. The bearer is
ESO-projected by railiance-platform, like the other in-cluster senders. No token
value appears in this repository.
## What audit-core needs back
- **NetKingdom (NK-WP-0040-T02 / NK-WP-0056):**
- the versioned receipt schema, validator, path and digest, with positive and
negative fixtures, covering `steps`, `reverted`, `budget` and the typed
`decision_refs`;
- an answer to point 1;
- the exact `source` and event types;
- the tenant binding;
- a decision on the `started` event and the emission guarantee.
- **The rapp-\* package owner:** the exact pod labels and ServiceAccount, and
the image revision that emits.
- **railiance-platform:** the ESO projection of the sender bearer
(catalog/route via `warden route`), and the attended seed of the registry
entry.
- **Founder:** the live registry entry and NetworkPolicy rollout are an approved
live change. Audit-core prepares them; the founder runs them.