Founder direction 2026-10-06 and ops-mason plan keycape-secrets-engine-openbao-client-custody (658cdbc, MASON-WP-0009): the client secret lives only in OpenBao. - CCR-2026-0033: consumer file and secrets-engine D1-D4 removed; KV metadata declared (cas_required, max_versions=2, delete_version_after=0s, custom_metadata); target.domain infotech; live order and roll-forward rollback revised; status stays proposed. - New sibling CCR-2026-0034 + policy: attended OIDC operator reader on auth/netkingdom, read data path + revoke-self only, 5m/4 uses, no default policy, bound groups=net-kingdom-admins and /assurance/level=aal2 (KeyCape 7d96ee4). Proposed, bound claims unconfirmed (founder item for both readers). - credential-change.py: OIDC roles carry token_max_ttl/explicit_max_ttl/no_default_policy/ num_uses/type and bound_claims_type (string only); token_revoke_self policy option; validated openbao.kv_metadata. Tests added. - Custody child: consumer write and check-secret-file removed; cas=0 create / --rotate cas=<current>; compare-before-write metadata put; refusals unchanged. - Founder runbook (keycape/founder-runbook.md), window docs, RPF-WP-0035-T09 (waits on A1/A2/A3). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Assistant: claude-code Assistant-Model: opus Assistant-Process: 132360@bnt-lap001 Assistant-Session: 769b1afd-4330-4c86-96b2-e510e26db42b
7.8 KiB
Remaining dependency requirements — 2026-10-04
Review scope: RPF-WP-0050-T03, RPF-WP-0051-T02/T03 and the selected RPF-WP-0035-T02 service-login lane. Source work is implemented where independent of receiving-owner facts. Both preparation workplans are blocked on the deliveries below. Completed design judgments are retained.
| Platform task | Receiving repo / owner task | Required independent delivery | Reopen condition |
|---|---|---|---|
| RPF-WP-0051-T02 | informed-decision / source phase of INFD-WP-0005-T05 | Process-owned private listener and explicit runtime configuration consuming compose_intake; authenticated bounded TokenReview transport using API-server CA; exact owner deploy renderer with private Service, NetworkPolicy, TokenReview RBAC and projected registries; final immutable image/config/source | Accept source composition and publication receipt, reviewed deployment proposal and named native verification/abort attendance. Do not require this owner's entire live T05 completion as a predecessor. |
| RPF-WP-0051-T03 | informed-decision receiving runtime; founder execution gate | Complete T02 source packet, approve exact final live action, then native ESO/auth/file/exchange and revocation/rotation/cleanup receipts | Native delivery and owner runtime acceptance, after platform metadata and separately approved runtime promotion. Source proofs are already complete. |
| RPF-WP-0035-T02 | secrets-engine / service-auth source acceptance in SECRETS-WP-0008-T06 | Explicit consumer host, protected file path and owner, mode-0600 delivery mechanism, refresh/rotation/revocation ownership and bounded validation interface | Source acceptance of those coordinates, independent of obtaining a working OpenBao service token. The entire live consumer task must not precede platform login provisioning. |
| RPF-WP-0035-T02 | key-cape / KEY-WP-0037-T02/T03/T04; net-kingdom deployment authority | Accept proposed issuer coordinates and separate consumer delivery; reviewed single-client/env-preserving registration operation with immutable image/config; independently approved custody and actual registration/issuance receipts | Protected custody, real registration and validated provider claims are returned. Platform then performs its separately approved isolated JWT mount/role/self-policy operation and login proof. |
| RPF-WP-0050-T03 | user-engine / USER-WP-0035-T02 and provider owner | Provider-supported single-use password-setup-link delivery contract and intended-recipient evidence; retained value-safe failure/retry behavior | Real handoff receipt. SMTP and invitation delivery already exist and are not reprovisioned. |
Delivered owner work and platform checks
Informed-decision source acceptance: implementation
eb9614c2677c7f07c9d78eee7543f95f329d2c83, exact-primary receipt
f06b7e9c53d3477f1e690ed8259f2eaab3661f91. Requests/replies:
17bcfb39-f8c0-4cda-acce-de7af6d0afbc and
d304e328-1e77-4a02-ae47-783a7290b6ce. Its RequesterTokenProvider and
compose_intake are implemented with 37 focused owner tests. Exact source
binding/mount acceptance is supplied; live claims are not confirmed.
Platform independently verified railiance01's node address and the actual
external-secrets controller ServiceAccount, then checked permission to create
serviceaccounts/token in informed-decision through SubjectAccessReview.
The explicit subresource query returned yes. Receipt:
docs/evidence/2026-10-04-requester-eso-tokenrequest-review.json. This is an
authorization check; no token was minted and it does not prove Secret delivery.
The earlier slash-resource spelling gave a different result and is not accepted
as the TokenRequest receipt. The explicit subresource query is authoritative.
KeyCape source packet: 44cc067aa2c7dadffc75b631baa221a5f5caa531;
managed IDs/index locally at f485d6fe9c7389b7f29d97e5da51b14eb0692eb3.
Replies 58826056-55f2-4300-9b42-05ceeec9c26a and
eb20a78c-0b9b-41e6-b349-dfaa9873633b name the real owner tasks. Its latest
exact-primary sync is pending: Repo Manager refused grandfathered
ADHOC-2026-09-27-T02 without UUID. KeyCape/repo-manager must reconcile the
source identity through the required scoped decision, then return an applied/noop
receipt for the actual current commit. Platform does not invent UUIDs or bypass
the refusal. This is separate from actual provider registration/custody.
Implemented platform issuer-reader preparation
The KeyCape packet's candidate path platform/services/keycape/secrets-engine-openbao
is outside the platform-mount applier scope (platform/workloads/ only) and was
corrected on 2026-10-06 to platform/workloads/keycape/secrets-engine-openbao,
field CLIENT_SECRET.
Revised 2026-10-06 (founder direction: the secret lives only in OpenBao; ops-mason
plan keycape-secrets-engine-openbao-client-custody, 658cdbc, MASON-WP-0009).
The secrets-engine consumer file and secrets-engine D1-D4 are withdrawn. Two readers:
- Issuer: CCR-2026-0033, unchanged ESO reader. Policy
workload-kv-read-keycape-secrets-engine-openbao-eso, Kubernetes roleexternal-secrets-keycape-secrets-engine-openbao(external-secrets/external-secrets, audience openbao, 15m, no default policy). The store admits sso only; target Secretsso/keycape-secrets-engine-openbao-clientkeyclient-secret. It must stay on Kubernetes auth. - Operator: sibling CCR-2026-0034, OIDC role
keycape-secrets-engine-openbao-operator-workload-kv-readonauth/netkingdom. Policyworkload-kv-read-keycape-secrets-engine-openbao-operatorgrants read on the data path and update onauth/token/revoke-selfonly. The token is 5m, 4 uses, service type, with no default policy. Bound claims aregroups=net-kingdom-adminsand/assurance/level=aal2(KeyCape 7d96ee4: MFA is not pinned on the openbao-admin client). secrets-engine reads the value into memory per command, with no copy at rest.
CCR-2026-0033 now declares the KV metadata: cas_required=true, max_versions=2,
delete_version_after=0s, and custom_metadata as in the plan. Its target.domain is
corrected to infotech. The custody child
scripts/keycape_secrets_engine_openbao_custody.py (source only, never run) writes
KV with cas=0, or with cas=<current> under --rotate, then compares the
metadata before it writes. It writes no consumer file. Both CCRs remain proposed with
bound claims unconfirmed. Confirming them is a founder item for both readers.
Founder approvals: A1 design, A2 both CCRs, A3 custody-child decision id (not
632a8893). Live order: custody child → platform applies policies/roles/ESO (Secret
sso/keycape-secrets-engine-openbao-client exists) → NetKingdom env patch (NK-WP-0046)
→ KeyCape registration merge (KEY-WP-0037-T03) → KeyCape restart immediately → live
issuance check (KEY-WP-0037-T04) → OpenBao JWT role/login proof (RPF-WP-0035-T02).
Exact founder commands, including the metadata-only survey:
keycape/founder-runbook.md. Payloads and ESO stay outside active GitOps in this
window's keycape/ directory. No value exists by implication of these drafts.
Dependency boundary
Owner source readiness precedes platform promotion. Platform native delivery
proof follows its own authorized apply, and receiving live acceptance follows
that delivery. Requiring a receiving repo's full live completion before platform
supplies its credential would create a mutual wait. Where an owner composite
task includes both phases, the wait is qualified as message-from:<owner> for
the exact independent source receipt until that owner names a separate source
task; no fabricated task ID or complete-task dependency is introduced.
Once source deliveries arrive, reopen only the affected platform task. The founder-approved informed-decision design needs no repeat decision unless scope changes. Live actions still require a fresh reviewed execution packet and go; the historical 10:00 preparation window is not a standing execution grant.