access-engine/workplans/FLEX-WP-0040-bounded-execution-pdp-gate.md
tegwick c02f2e5c8e
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
FLEX-WP-0040: 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:31:28 +01:00

4.5 KiB

id type title domain repo status flavor owner created updated related state_hub_workstream_id
FLEX-WP-0040 workplan Bounded execution PDP gate: decide executor steps under an approved admission infotech access-engine ready implementation access-engine 2026-10-31 2026-10-31
NK-WP-0056
FLEX-WP-0039
FLEX-WP-0031
1b0a9f9e-9d09-52da-8dd0-8269dd3d27ec

FLEX-WP-0040 — Bounded execution PDP gate

NetKingdom's proposed Bounded Execution Admission v0.1 (NK-WP-0056) lets the founder approve, at aal2, an exact digested admission that a bounded executor consumes once. Owner answer: docs/bounded-execution-admission-pdp.md. PDP gating is in scope and recommended for production; the T06 pilot may run on local enforcement without it.

Today the typed task path (docs/trusted-service-task-source.md) serves only the secrets-engine v2 contract, requires an unconsumed claim, and the Approval claim carries no approver assurance. Everything below lands as proposed source, evaluated in tests only. No deployment, caller trust or credential is admitted by this workplan.

1. Settle the claim inputs with approval-engine

id: FLEX-WP-0040-T01
status: wait
priority: high
state_hub_task_id: "2fe53d9e-738c-5b1f-ab05-96d83894d47e"

Wait: approval-engine answers to NK-WP-0056-T02 (binding to {admission_id, admission_digest}, approver assurance aal2, consume scope) plus our two additions: consumed_by and consumed_at in the claim. Record the agreed claim fields here. Gate: written claim field list with owner ack.

2. Pack owner and semantic review

id: FLEX-WP-0040-T02
status: wait
priority: medium
state_hub_task_id: "a7f9a307-01a5-56a6-9c96-fdb4c83118f5"

Wait: founder confirms the proposal — access-engine owns pack mechanics and fixtures; NetKingdom (BEA owner) owns what a ceiling admits; gate-house reviews authority-ceiling semantics. Gate: decision recorded.

3. Generalise the typed path caller map

id: FLEX-WP-0040-T03
status: todo
priority: medium
state_hub_task_id: "c9382486-55d9-5b40-b64e-d7c14343bbf6"

Replace the single hard-wired secrets-engine mapping with an owner-installed caller map; first new entry system:serviceaccount:sso:nk-bind-executor → service:nk-bind-executor. Gate: existing secrets-engine v2 tests unchanged and passing; unknown service accounts refuse; generic /v1/check still refuses task execution.

4. Vocabulary and admission digest

id: FLEX-WP-0040-T04
status: todo
priority: medium
depends_on: [FLEX-WP-0040-T01]
state_hub_task_id: "226afa23-3f6f-5b25-a2e6-48e7d086d597"

Add actions start and execute-step on resource type bounded-execution-admission (system net-kingdom). The executor submits the admission document; access-engine recomputes its digest by NK's BEA digest rule and requires equality with the claim's admission digest. Gate: digest fixtures shared with NetKingdom's validator agree byte-for-byte.

5. Policy pack net-kingdom.bounded-execution (DENY by default)

id: FLEX-WP-0040-T05
status: todo
priority: medium
depends_on: [FLEX-WP-0040-T02, FLEX-WP-0040-T03, FLEX-WP-0040-T04]
state_hub_task_id: "cc5e1435-57e0-5011-b8f3-dbffe959b91c"

start: claim valid and unconsumed, approver HUMAN at aal2 and not the executor, executor equals admission executor, now inside window. execute-step: claim consumed once by this executor inside the window; step id/operation/target/mode/scope match the digested plan.steps and lie inside scope_ceiling; max_concurrent respected. Fixtures from net-kingdom/examples/bounded-execution-admission/bind-rotation-svc-authelia.yaml including out-of-ceiling, wrong executor, expired window, replayed consume and missing assurance. Gate: pack validates, all fixtures pass, the existing apply gap test stays as characterisation.

6. Live gate readiness

id: FLEX-WP-0040-T06
status: wait
priority: low
depends_on: [FLEX-WP-0040-T05, FLEX-WP-0039-T01]
state_hub_task_id: "f62be506-96d0-50fd-9874-b2a4df6f1dc8"

Wait: FLEX-WP-0039 readiness surface and a founder rollout decision for a pin serving the pack, with the executor's declared fail-closed stance. Gate: founder-approved rollout; no live change from this repo's agents.

Founder decision 2026-10-31

Approved by the founder (proposed -> ready) after the NK-WP-0056-T02 owner answers (hub decision 19afd15e). The T06 pilot runs without the gate and records it as not-evaluated; a second admission needs this gate or a founder-recorded exception.