Assistant: codex Assistant-Model: gpt-6-astra Assistant-Session: 01a10780-6d41-7952-9718-dfbc1f41236f
142 lines
8.4 KiB
Markdown
142 lines
8.4 KiB
Markdown
# Current delivery state — 2026-10-04
|
|
|
|
CCR-2026-0032 is applied. The exact self-token amendment was approved and applied
|
|
through attended Warden login. Dedicated manual ArgoCD application
|
|
informed-decision-requester owns SA/store/ExternalSecret at 4332c39. Store Valid
|
|
and ExternalSecret SecretSynced; native bounded proofs pass against candidate
|
|
804d89fb. See docs/evidence/2026-10-04-requester-delivery.json and
|
|
docs/evidence/infd-requester-proof*.json. Final receiving review-pod projection
|
|
and service cutover acceptance remain under INFD-WP-0007. Issuer rotation is a
|
|
separate approved operation; none was performed for this delivery.
|
|
|
|
The original design record below describes preparation history. Current policy
|
|
adds only self lookup/revoke; the updated helper accepts the exact legacy policy
|
|
or final policy and refuses all other drift. Its receipts contain fixed phases
|
|
and booleans, never CLI bytes. The earlier execution digest is superseded: CCR
|
|
is now applied, so the metadata child deliberately refuses replay.
|
|
|
|
# Informed-decision requester workload delivery
|
|
|
|
Status: founder-approved design for owner integration; execution pending,
|
|
CCR-2026-0032, RPF-WP-0051. Demand: INFD-WP-0005-T05,
|
|
message cd811073-d6db-41cf-8a57-10df0b360eab. Source preparation is authorized by
|
|
the founder's RPF-WP-0050 scope selection and continuation instruction.
|
|
|
|
2026-10-04: Bernd answered "I approve" to the prepared design boundary, including
|
|
namespace-level ESO trust and credential persistence beyond the reader token's
|
|
lifetime. This supplies the design judgment. Owner binding/runtime acceptance
|
|
and the separately reviewed live deployment remain; no repeated design decision
|
|
is needed unless the boundary materially changes. CCR status remains proposed
|
|
and auth claims unconfirmed while the implementation gates are open.
|
|
|
|
## Exact proposed boundary
|
|
|
|
The existing KV-v2 path `platform/workloads/informed-decision/sitting-requester`
|
|
and field `CLIENT_SECRET` remain issuer custody. New policy
|
|
`workload-kv-read-informed-decision-sitting-requester-eso` reads only its exact
|
|
data path. The founder-approved amendment also grants auth/token/lookup-self
|
|
read and auth/token/revoke-self update. It grants no KV write, metadata read/list,
|
|
wildcard or sibling access. KV ACLs apply to the entire path, not individual fields;
|
|
future fields at this path require review of the reader's risk.
|
|
|
|
The prospective auth role `informed-decision-sitting-requester-eso` binds only
|
|
ServiceAccount `informed-decision/informed-decision-eso` and audience `openbao`.
|
|
Token TTL, maximum and explicit maximum are 900 seconds, with no default policy
|
|
or periodic token. The review Deployment retains its own ServiceAccount `review`;
|
|
the new ServiceAccount serves ESO authentication only. ESO's actual TokenRequest
|
|
permission for this account must be verified through the owner before promotion.
|
|
|
|
The proposed ClusterSecretStore `openbao-informed-decision-sitting-requester`
|
|
admits only namespace `informed-decision`. The proposed ExternalSecret and target
|
|
Secret are `informed-decision-sitting-requester`, key `client-secret`, refreshed
|
|
every five minutes. Explicit target annotations contain source annotation copying.
|
|
Any ExternalSecret in this namespace can use the store; it is a namespace boundary,
|
|
not pod-level admission. Namespace writer access remains part of owner review.
|
|
|
|
The mount proposal projects only that key at
|
|
`/var/run/secrets/informed-decision/requester/client-secret`, read-only, mode 0440,
|
|
without subPath or environment delivery. The existing review pod runs as
|
|
UID/GID/fsGroup 10001. Kubernetes rotation changes the projected file; the owner
|
|
callback must reopen it per exchange rather than caching the credential forever.
|
|
Missing custody must fail closed and the required Secret projection is not optional.
|
|
|
|
## Runtime composition remains an owner gate
|
|
|
|
The owner implements `IntakeApprovalClient` with an injected access-token callback;
|
|
the deployed runtime does not yet compose the private intake listener or this
|
|
file-backed client-credentials exchange. This packet deliberately introduces no
|
|
invented environment setting or runtime JSON key. The owner must accept and compose
|
|
the file callback, exact issuer/token endpoint, bounded transport with CA checks,
|
|
RS256/JWKS signature verification, and claim/scope refusal before promotion.
|
|
|
|
Existing verified requester contract: client `informed-decision-sitting-requester`,
|
|
subject `informed-decision`, audience `approval-engine`, tenant `tenant:platform`,
|
|
service principal, role `informed-decision-sitting-requester`, and scope exactly
|
|
`approval:create`. The maximum existing JWT lifetime is fifteen minutes. Human
|
|
answering uses the existing browser client; no approval/read/consume scope or
|
|
workload acceptance route is introduced. No client registration, custody seed or
|
|
rotation occurs in this work. Existing CCR-2026-0026/0027 remain applied.
|
|
|
|
## Concrete metadata child for review
|
|
|
|
`scripts/informed_decision_requester_metadata.py` is a silent contained child,
|
|
not yet approved to run live. It requires the actual CCR's SHA256, approved
|
|
status and confirmed exact binding, and an attended platform-admin identity
|
|
without root or ambient token environment overrides. It checks both current
|
|
policy and role before any write, refuses differing objects, writes only missing
|
|
metadata objects from stdin, and verifies both afterward. Only an API 404 means
|
|
absence; denial and transport errors stop the operation. It neither reads/writes
|
|
KV values nor applies Kubernetes objects, and retains no token or subprocess
|
|
output in a file or receipt.
|
|
|
|
After owner acceptance, exact CCR/binding approval and fresh founder go, review
|
|
the exact helper and policy digests and run from that checkout in the founder's
|
|
terminal:
|
|
|
|
```sh
|
|
BAO_ADDR=http://127.0.0.1:18200 VAULT_ADDR=http://127.0.0.1:18200 \
|
|
warden access openbao-platform-admin-login --exec -- \
|
|
python3 scripts/informed_decision_requester_metadata.py \
|
|
--expected-ccr-sha256 <SHA256-OF-THE-APPROVED-CCR>
|
|
```
|
|
|
|
The argument binds the approved CCR, whose status/binding changes produce a new
|
|
digest; the current proposed digest is not an execution authorization. Exit 0
|
|
means metadata readback passed; 2 means source/approval/envelope refusal; 3 means
|
|
an existing object differs; 4 means command failure; 5 means malformed response
|
|
or readback failure. The founder retains warden's actual completion/revocation
|
|
line; its exit code alone does not establish handoff or session cleanup.
|
|
Metadata success is not native reader or runtime acceptance.
|
|
|
|
The review manifests live in
|
|
`docs/provisioning-windows/2026-10-04-1000/informed-decision/`. No active
|
|
Kustomization references them. ESO/runtime promotion needs its own owner path,
|
|
cluster/node and headroom checks, diff/server dry-run and approved immutable
|
|
image/config. Neither this command nor the packet activates that promotion.
|
|
|
|
## Owner receipt and abort contract
|
|
|
|
Record only non-secret identities, timestamps, source digests, readiness and
|
|
capability booleans in `receipt-contract.json` or its accepted successor. Native
|
|
checks must prove exact role identity/effective policy and all TTL bounds; ESO
|
|
SecretSynced; safe annotation metadata; exact-file projection; sibling data GET
|
|
and parent metadata LIST denial; wrong namespace/ServiceAccount/audience denial;
|
|
and create-only exchange with approve/read/consume refused. Never print a real
|
|
Secret, annotation contents, token/accessor or raw child error. Use the maintained
|
|
secret-annotation helper for actual Secret metadata checks.
|
|
|
|
Rotation review must prove the callback observes a changed file and stops using
|
|
the predecessor after coordinated issuer rotation. No issuer rotation is
|
|
performed merely to prove metadata preparation. Reader token expiry/revocation
|
|
and attended admin-session cleanup require native receipts.
|
|
|
|
The founder is the proposed driver and abort owner for the attended metadata
|
|
step; confirm attendance at the actual window. The receiving owner must name
|
|
its runtime verification/abort owner before promotion. On a partial failure,
|
|
stop and establish actual state; do not overwrite conflicts or automatically
|
|
delete objects. Owner-reviewed rollback withdraws this new ESO/runtime projection
|
|
and disables only this new reader role, revoking its outstanding tokens through
|
|
admin custody. Already materialized target Secrets need separately approved
|
|
removal; `deletionPolicy: Retain` does not erase them. Existing verifier and
|
|
attended-reader roles and the KeyCape client remain intact. If value exposure
|
|
occurred, use the separate issuer incident/rotation procedure.
|