APPROVAL-WP-0007-T01 done: required_assurance floor; executor ingress; alignment answer

- Optional required_assurance {"level": aal1|aal2|aal3} at issue, schema v7.
  Enforced at add_entry (403), claim (assurance_unsatisfied) and consume (409)
  from the verified token level only; inherited on supersession; legacy rows
  NULL. Served only when declared so undeclared claims keep exact bytes.
- deploy/networkpolicies.yaml: pod-scoped ingress for sso +
  app.kubernetes.io/name=bounded-executor on 8080 (hub 39a3bffa). Not applied.
- docs/decision-services-alignment-answer.md: owner answer to the NetKingdom
  decision services review (hub 81cafbf3): roles accepted, T02 split proposed,
  presentation_ref at create declined with an entry-level counter-proposal.

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

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 5502@bnt-lap001
Assistant-Session: 68b3b02f-5d0f-4e71-8421-796f62e50196
This commit is contained in:
tegwick 2026-10-31 23:07:05 +01:00
parent e5f31477d4
commit e9e9f93317
14 changed files with 540 additions and 13 deletions

View file

@ -27,6 +27,10 @@ provenance. The prior v5 image was
`sha256:251941a5cb2724b57cc32cff6b693b1ab0be695bee4f56f02d51961189c0fa49`.
It refuses a v6 store: rollback requires the matching verified pre-v6 backup
and the stopped-single-writer restore procedure in `docs/storage-operations.md`.
Source has since moved to schema v7 (`approvals.required_assurance`,
APPROVAL-WP-0007-T01); the pinned image predates schema v7. Deploying v7 needs a
new release, a verified pre-v7 backup and a founder-run rollout like the v6 one.
The earlier September v5 release evidence remains historical at
[the image evidence](../docs/evidence/2026-09-10-human-control-image.json).

View file

@ -28,6 +28,35 @@ spec:
ports:
- {protocol: TCP, port: 8080}
---
# NetKingdom bounded executor (NK-WP-0056, APPROVAL-WP-0007; hub request
# 39a3bffa). One Job per admission in namespace sso, ServiceAccount
# nk-bind-executor. It GETs and consumes its own approval on 8080.
# Pod-scoped on purpose: namespaceSelector and podSelector sit in ONE `from`
# element, so both must match. Labelling all of sso as an approval-engine
# client would also admit KeyCape, Authelia and LLDAP. Network admission is
# not authority: the executor still needs its KeyCape token and scopes.
# Prepared in source; live apply is founder-run.
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: approval-engine-bounded-executor
namespace: approval-engine
spec:
podSelector:
matchLabels:
app.kubernetes.io/name: approval-engine
policyTypes: [Ingress]
ingress:
- from:
- namespaceSelector:
matchLabels:
kubernetes.io/metadata.name: sso
podSelector:
matchLabels:
app.kubernetes.io/name: bounded-executor
ports:
- {protocol: TCP, port: 8080}
---
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata: