Assistant: codex Assistant-Model: gpt-6-astra Assistant-Session: 01a140c4-354a-7823-8f0d-8f717397f786
79 KiB
| id | type | title | domain | repo | status | flavor | owner | created | updated | related | state_hub_workstream_id | |||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| RPF-WP-0035 | workplan | Implement reviewed credential lanes with separate owner gates | financials | railiance-platform | blocked | implementation | codex | 2026-09-05 | 2026-10-13 |
|
975db491-5412-5e27-8e34-14a2417bb039 |
Credential lane implementation
One S3 queue for three designed lanes; each task keeps its own approval, execution and closure boundary. This replaces the implementation tasks in the three completed design workplans, not the designs themselves. No approval is inherited by consolidation. INTENT binding: secure custody, dependable delivery, stable consumer interfaces. Incident custody remains in RPF-WP-0027/0029.
Consolidate completed designs and owner dependencies
id: RPF-WP-0035-T01
status: done
priority: medium
state_hub_task_id: "0f3606bb-e95b-5484-8a57-bcdd6e3916fd"
Completed 2026-09-05. Preserved the three designs under
docs/credential-lane-designs/, identified native owner responsibilities and
linked each superseded task below. Owners have not been sent new requests and
no new external acceptance is claimed. STATE-WP-0085-T09 is already done;
the signing dependency belongs to the proposed FLEX-WP-0020-T05 cutover.
Accept and provision secrets-engine service JWT login
id: RPF-WP-0035-T02
status: wait
decision_id: 62aa95e4-3ccc-4867-8806-5e3db005b483
depends_on: [KEY-WP-0039-T02, MASON-WP-0009-T05]
blocking_reason: "Agent work, not a human gate: claim refusals (KEY-WP-0039-T02 probe) and capabilities-self deny, then ops-mason MASON-WP-0009-T05."
priority: high
state_hub_task_id: "e0c82ea9-05a5-537e-8fbf-67534263572e"
2026-10-11: requalified — the remaining waits are other owners' tasks, not a human gate. See the-custodian docs/decisions/2026-10-11-security-unblock-decisions.md.
Supersedes RPF-WP-0032-T02. Design:
docs/credential-lane-designs/secrets-engine-service-jwt.md.
Platform owns the exact JWT mount/role/policy, effective-policy negative tests and a metadata-only custody receipt. KeyCape owns issuer/JWKS and service registration (KEY-WP-0009); secrets-engine owns service authentication and authority consumption (SECRETS-WP-0008-T06, SECRETS-WP-0007-T04).
Unblock: live registration and protected client custody, reviewed exact source and attended apply authority. Issuer/JWKS and consumer source claims now agree; see the 2026-09-27 return below. A service login does not grant lane mutation authority. Do not build another identity provider or lifecycle engine here.
Done when: approved exact role succeeds for the intended service, wrong issuer/audience/subject/claims and unrelated secret access fail, bounded TTL and revocation are proven, the consumer explicitly opts into the verified contract, and rollback/cleanup receipts contain no secret material.
2026-10-09 (T03 source): founder ruled the tenant segment stays coulomb
(ops-mason b72ff77d). New CCR request type workload-kv-operator-matrix
(scripts/operator_matrix_lane.py): exact per-entry capabilities, OIDC role on
the existing netkingdom mount only, and exact agent denies on all four data
and metadata paths appended to the live agent-high-risk-boundary (live content
preserved; partial presence refused). scripts/fluid_telegram_custody_move.py
copies the four undocumented infotech entries with CAS 0, verifies all, then
metadata-deletes the sources. scripts/kv_duplicate_retire.py retires
activity-core/default/llm-connect-provider-secrets only if no live non-admin
policy grants it. Founder session (each helper prints nothing; read the receipts):
cd ~/railiance-platform
export BAO_ADDR=http://127.0.0.1:18200 VAULT_ADDR=http://127.0.0.1:18200
W='warden access openbao-platform-admin-login --exec --'
# 1. dry-runs (no value reads, no writes)
$W python3 scripts/fluid_telegram_custody_move.py --dry-run --confirm 'MOVE fluid-telegram hall-of-helix to coulomb' --receipt ~/ft-move-dry.json
$W python3 scripts/kv_duplicate_retire.py --dry-run --confirm 'RETIRE activity-core/default/llm-connect-provider-secrets' --receipt ~/kv-retire-dry.json
# 2. lane: approve, confirm binding, apply
python3 scripts/credential-change.py approve CCR-2026-0039 --reviewer "platform-owner, fluid-telegram-owner, key-cape-owner (founder Bernd Worsch)" --comment "Approve ops-mason plan fluid-telegram-operator-credential-lane (spec 41a0ca27): four-entry matrix at coulomb/fluid-telegram/hall-of-helix, OIDC role on netkingdom, agent denies." \
&& python3 scripts/credential-change.py confirm-binding CCR-2026-0039 --reviewer founder --comment "groups=[fluid-telegram-operators] (LLDAP, member tegwick) and /assurance/level=aal2 match key-cape b2ed890f." \
&& $W python3 scripts/credential-change.py applier-apply CCR-2026-0039 --confirm "DELEGATED APPLY CCR-2026-0039" --actor founder --record-state-hub --quiet
# 3. custody move, then duplicate retirement
$W python3 scripts/fluid_telegram_custody_move.py --confirm 'MOVE fluid-telegram hall-of-helix to coulomb' --receipt ~/ft-move.json
$W python3 scripts/kv_duplicate_retire.py --confirm 'RETIRE activity-core/default/llm-connect-provider-secrets' --receipt ~/kv-retire.json
2026-10-09 (T03 founder session): CCR-2026-0039 applied at 10:30Z; readback
matched for the 8 boundary denies, policy and role. Custody move moved: all
four entries copied at coulomb v1 (operator-session from infotech v4) and the
infotech entries metadata-deleted. Duplicate
activity-core/default/llm-connect-provider-secrets retired; its first dry-run
refused on mount-wide platform/metadata/* survey grants, after which the check
was narrowed to data-path grants (64ae594). Receipts:
docs/evidence/2026-10-09-fluid-telegram-t03-founder-session.json.
2026-10-03: the historical D1 routing was withdrawn because provision/delivery already completed. Owner routing now uses decision ab85ae8a-12a0-4945-ae64-1d3d86d5b26f, specifically independent archive readback and coordinated interim audit bearer revocation acceptance. needs_human and the wait remain; resolving a decision requires owner receipt re-check, not automatic completion.
2026-10-03 (CUST-WP-0075): gate check. SECRETS-WP-0007-T04 is done (2026-09-27), so the gate named in the design is open. It is not the last one: the design says to confirm the exact live client registration and protected client-side custody before writing, and positive-login proof needs a real KeyCape service JWT. KeyCape's contract (openbao-service-auth-contract.md) and KEY-WP-0009 claim source registration only; the live registration of secrets-engine-openbao and its client-credential custody are "a separate approved custody action" that no workplan task owns yet (SECRETS-WP-0008-T06 waits on this task). Re-qualified with blocked_on: message-from:key-cape; key-cape was asked for the owning task id, which will replace it as depends_on. The design stays proposed and no child command was written. Not approvable in D1 yet.
2026-10-04: Founder authorized the prepared coordination request. Sent
b4fc62ea-f92c-4410-919a-9f3cce2d406b to key-cape on preparation thread
f84637fa-2355-4971-a2dc-7f1fd01710a8, referencing platform source
6b91d510395215d178d60ee8884e7fc00930a0cf. Requested actual registration and
protected-custody owning tasks/status/revisions and non-secret receipts. Source
registration is not live custody; no value fetch or live registration was
requested. T02 remains waiting on the owner return and separate execution gates.
2026-10-04 blocked-task review: KeyCape returns 58826056/eb20a78c now identify
KEY-WP-0037-T02/T03/T04, replacing the unowned-registration wait with real
dependencies. Prepared proposed CCR-2026-0033 and exact-path issuer policy/auth,
sso-only ESO and evidence checklist from the returned candidate coordinates.
No issuer/consumer value, registration or native issuance is supplied by them.
secrets-engine must return independent source acceptance of consumer host/path,
protected delivery and rotation/revocation ownership; awaiting that source phase
does not depend on its full live service-login task. KeyCape's exact-primary sync
remains pending its scoped historical identity repair. Requirements and acceptance
boundaries: docs/provisioning-windows/2026-10-04-1000/dependency-requirements.md.
This workplan was already blocked and remains blocked on its open owner/live gates.
2026-10-06: secrets-engine returned consumer custody source acceptance
(message 680136e2, SECRETS-WP-0012, commit a3897c2). CCR-2026-0033 finalized as
proposed: KV path corrected to platform/workloads/keycape/secrets-engine-openbao
(applier scope), consumer copy coordinates with D1-D4 pending founder choice,
rotation/revocation ownership, live order and rollback. Attended custody child
scripts/keycape_secrets_engine_openbao_custody.py with fake-only tests
(tests/test_keycape_secrets_engine_openbao_custody.py) refuses without an exact
founder decision id recorded in the approved CCR. Nothing executed, generated or
applied; nothing added to active GitOps. The founder approval it needs is T09.
2026-10-09: KEY-WP-0037 finished 2026-10-07 (registration live, issuance
verified 10/10, key-cape e0b5fae); CCR-2026-0033/0034 applied. Source for this
lane is now complete as CCR-2026-0038 (proposed,
credential-change-requests/CCR-2026-0038-secrets-engine-service-jwt-login.yaml).
The delegated applier gained a narrow service-jwt-login request type
(scripts/service_jwt_lane.py): auth mount fixed to keycape-services, policy
must equal the generated login-self policy, role/config keys allow-listed,
TTLs at most 15m, uses 1..16, token_no_default_policy, refusal if the mount
exists with another type, and a value-free readback compare after the writes.
Policy secrets-engine-login-self now also carries explicit deny on
platform/{data,metadata}/workloads/keycape/secrets-engine-openbao so
ops-mason invariant (ii) (no capability on the client-secret path) holds even
if identity groups were ever attached. Tests: tests/test_service_jwt_lane.py
(8) plus the updated contract test; full suite unchanged apart from 5
pre-existing failures unrelated to this lane.
Founder apply (one line; approval, binding confirmation and silent apply):
cd /home/worsch/railiance-platform && python3 scripts/credential-change.py approve CCR-2026-0038 --reviewer "platform-owner, key-cape-owner, secrets-engine-owner (founder Bernd Worsch)" --comment "Approve service-JWT login lane: mount keycape-services, role secrets-engine-openbao, policy secrets-engine-login-self (self endpoints + deny on the client-secret path)." && python3 scripts/credential-change.py confirm-binding CCR-2026-0038 --reviewer founder --comment "Bound claims match KeyCape registration: aud secrets-engine-openbao, sub service:secrets-engine, principal_type service, tenant tenant:platform, roles secrets-engine, scope openbao:login; issuer https://kc.coulomb.social RS256." && warden access openbao-platform-admin-login --exec -- python3 /home/worsch/railiance-platform/scripts/credential-change.py applier-apply CCR-2026-0038 --confirm "DELEGATED APPLY CCR-2026-0038" --actor founder --record-state-hub --quiet
Done after that: login proof with a real KeyCape service JWT (SECRETS-WP-0012-T03 probe-openbao; policies exactly [secrets-engine-login-self], capabilities-self deny on the guarded paths, revoke-self), negative claim checks, then publish the consumer contract file and ops-mason MASON-WP-0009-T05 rechecks invariant (ii).
Implement the platform operator-write CCR contract and Fluid lane
id: RPF-WP-0035-T03
status: wait
decision_id: 62aa95e4-3ccc-4867-8806-5e3db005b483
blocking_reason: "Founder session done 2026-10-09; waits on ops-mason verification (MASON-WP-0005-T05) and the FT-WP-0002 owner salt CAS probe."
priority: high
depends_on: [MASON-WP-0005-T05, FT-WP-0002]
state_hub_task_id: "f47e5bc5-6f3c-54bb-aa35-260ad03892ba"
2026-10-11: requalified — founder part done; remaining waits are owner tasks. See the-custodian docs/decisions/2026-10-11-security-unblock-decisions.md.
Supersedes RPF-WP-0033-T02. Design:
docs/credential-lane-designs/fluid-telegram-operator-kv.md.
Platform owns the per-path capability schema/validator, exact OpenBao policy and accepted custody coordinates. MASON-WP-0005 owns construction coordination and engine integration; KeyCape/NetKingdom own OIDC/MFA and group membership; FT-WP-0002 owns client CAS, prefix correction, output containment and Telegram application acceptance. Retain the existing read-only CCR semantics.
Unblock: accept tenant/path and per-entry field/capability matrix; confirm actual group/assurance and callbacks, reviewed construction contract and writer authority. Contract review can proceed without a live credential; the final schema cannot be treated as accepted solely because a draft exists.
Done when: validation rejects broad/unsupported grants, the consumer proves CAS=0 first-write behavior and no value output, approved identities can perform only the exact matrix, negative/expiry/revocation checks pass, custody is seeded through the separate writer, and the verified route has a safe handoff receipt. The unattended adapter remains a separate demand and gets no operator session.
2026-10-03: the historical D1 routing was withdrawn because provision/delivery already completed. Owner routing now uses decision ab85ae8a-12a0-4945-ae64-1d3d86d5b26f, specifically independent archive readback and coordinated interim audit bearer revocation acceptance. needs_human and the wait remain; resolving a decision requires owner receipt re-check, not automatic completion.
Accept the needed signing lane and deliver it to the owning runtime
id: RPF-WP-0035-T04
status: done
priority: medium
state_hub_task_id: "35a85846-61d5-54ce-8b18-ede45733d53c"
Supersedes RPF-WP-0034-T02. Design:
docs/credential-lane-designs/state-hub-preflight-signing.md.
Platform owns signing-key custody, exact read policy/role and scoped delivery acceptance. State Hub owns API chart/env wiring, all-replica rotation fencing and health. FLEX-WP-0020-T05 owns the rename preflight/cutover dependency; STATE-WP-0085-T09's adoption-plan delivery is already complete.
Unblock: State Hub/repo-manager and the consuming migration owner confirm that this transitional State Hub lane is still needed during retirement; record the target runtime, namespace/SA/auth audience and an executable rotation fence, plus approved writer and deployment window. Do not broaden the lane into a general repository-rename authority or provision for a stale demand.
Done when: protected one-time generation, API-only ESO delivery, negative access checks and a non-mutating signed preflight pass; every API replica uses the accepted version; rotation/invalidation and recovery are evidenced. No repository rename is part of S3 lane acceptance. If demand is withdrawn, record the owning decision and cancel this task explicitly rather than provision it.
2026-09-05 continuation: verified the live primary cluster identity and healthy
single API replica; the signing ExternalSecret is still absent. Added a writer
guard against wrong-cluster kubeconfigs before any OpenBao access. The default
workstation kubeconfig's local port-forward listener was unavailable. Activation
still needs the contained attended OIDC/MFA login and the acceptance evidence
above; source preparation is not live completion. See
history/2026-09-05-preflight-signing-activation-readiness.md.
Completed 2026-09-05: user-led attended activation generated version 1 and
rotated to version 2 with every API replica stopped. Exact access and negative
identity checks passed; ESO delivery and API-only exposure passed; the recovered
single API replica accepts new signed preflight and rejects its predecessor by
signature, with healthy primary identity and no preflight blockers. State Hub
chart commit 49e3182, Helm revision 59. No repository rename executed.
Evidence: docs/evidence/RPF-WP-0035-T04-signing-activation-2026-09-05.json;
closure: history/2026-09-05-preflight-signing-activation-complete.md.
Admit KeyCape approval-engine client custody and delivery
id: RPF-WP-0035-T05
status: done
needs_human: false
intervention_note: ""
priority: high
state_hub_task_id: "e15d62c9-e5da-5721-a135-87c050f7851c"
Answers KEY-WP-0013-T02 (State Hub message
278a3ebe-b529-49f6-bd1a-e3ebcf318260). Admission:
docs/credential-lane-designs/keycape-approval-clients.md; requests
CCR-2026-0017 (secrets-engine-approval) and CCR-2026-0018
(approval-engine-operator).
Platform owns the two custody paths, exact-path read policies, Kubernetes auth roles and the KeyCape-side ESO delivery. KeyCape owns the client registrations, issuance, claim set and disablement; approval-engine owns approval semantics and audit of emitted actions.
2026-09-08 admission response: both proposed KV paths confirmed unchanged; field
client_secret corrected to CLIENT_SECRET for the uppercase KV convention and
CCR validator. Kubernetes delivery references confirmed against the live sso
namespace, which already resolves KEYCAPE_RAPP_QONTO_CLIENT_SECRET through the
same secretKeyRef{key: client-secret} shape on image main-153258b. Attended
authority named as the governed openbao-platform-admin-login lane
(founder_required); KeyCape's refusal to treat its generic warden plan
database match as authorization was correct. Rollout agreed as one attended
session with the KeyCape reading build pinned but undeployed, ordered after the
Authelia issuer precondition in message c8b1ad10-dae8-48fb-a0ea-7e2a101c54bf.
Policies, ClusterSecretStores and ExternalSecrets are written and validated,
none applied.
Unblock: owner approval of both CCRs, a KeyCape image that reads both
environment names, the settled Authelia iss pin, and a founder-attended window
date. Verifier-side custody only — no client-side read lane is admitted, and no
scope beyond the two declared sets.
Done when: both CCRs are approved, the attended window seeds both KV paths
with CAS=0, policies/roles/stores/ExternalSecrets apply and sync, the KeyCape
build resolves both environment names, KeyCape evidences live JWKS signature and
exact claim bindings with excess scopes denied (operator consume, human
consume), platform evidences cross-path/wrong-identity/out-of-namespace denial,
and every receipt is metadata-only. If either registration is abandoned, KeyCape
disables it before the KV version is destroyed.
2026-09-08 actual upstream issuer returned
The admitted KeyCape one-shot probe verified the actual signed upstream issuer
as https://auth.coulomb.social at 21:44:44 UTC. Signature, audience,
validity window and nonce checks passed and the pinned Job exited 0. All
five temporary resources and the Pod were removed; normal KeyCape Deployment
and config Secret metadata are unchanged. See
docs/evidence/2026-09-08-keycape-upstream-issuer-proof.json.
T05's unknown-issuer input is resolved. The configuration owner still ensures
authelia.issuer equals that exact HTTPS value before the custody window.
Both CCRs remain proposed and await the named reviews; this probe grants no
custody mutation or client-side read. Keep the current authority preflight and
this signed-token proof as separate receipts. Live ESO/client/approval and
separate audit/client-side custody acceptance remain open.
2026-09-09 configuration and review-queue return: NetKingdom pinned the verified
HTTPS issuer, using an atomic UID/resourceVersion test and independent readback.
Secret revision 58713343; unrelated configuration and signing key unchanged;
no Deployment rollout. Receipt: docs/evidence/2026-09-09-keycape-upstream-issuer-pin.json.
The two existing CCRs remain proposed. They now link to concrete pending review
decisions, with platform-operator and key-cape-owner named explicitly. See
docs/credential-lane-designs/keycape-approval-clients-review.md. T05 owns this
human dependency; HFACT consumes it without a duplicate approval request.
Custody/ESO activation, client verification and the separate client-side/audit
lanes remain open. Current CLI apply plans refuse the proposed requests.
2026-09-09 admission: the user explicitly approved both CCRs in the named
platform-operator and key-cape-owner roles. Both source requests are approved
and both linked Hub decisions are resolved. Receipt:
docs/evidence/2026-09-09-keycape-approval-admission.json. The completed review
intervention is cleared; T05 is progress while the contained first-provision
procedure is exercised and the admitted attended rollout is carried through.
Verifier-side scope, separate client-side/audit lanes and live acceptance remain
as defined in the reviewed requests.
2026-09-09 verifier-side return: both CCRs are verified after recorded user approval,
CAS=0 version-1 custody, native read/auth denials and revocation, Valid stores,
SecretSynced delivery, compatible KeyCape rollout and live positive/negative
service checks. Existing human OpenBao login passed again on the new image.
Receipt: docs/evidence/2026-09-09-keycape-verifier-admission.json. Failed attempts restored the compatible
configuration/image and detached delivery; final resume reused version 1.
T05 is done against its verifier-only acceptance criteria. Its former "remains progress for client-side reads" statement expanded the task past its reviewed scope; that residual now has the live owner task RPF-WP-0035-T06 below. Neither Warden fetch selector is resolvable through these verifier-only CCRs. Do not re-request the completed two named reviews or reseed these paths. Rotation is a distinct, version-guarded operation.
Dispose of the ungoverned whynot-design npm duplicate
id: RPF-WP-0035-T07
status: wait
decision_id: 1591daa1-6e85-4dfd-aadd-5a9fe1ef47fa
blocking_reason: "Hold kept by D3 until SECRETS-WP-0006-T06 moves publishing off the legacy whynot-design npm path; then rotate and prove a fresh publish."
priority: high
depends_on: [SECRETS-WP-0006-T06]
state_hub_task_id: "0dd7c9a5-65a0-53fc-b6c3-5ad96ee56f7b"
2026-10-11: requalified after founder decision D3 (trust root, build-mode default) resolved — see the-custodian docs/decisions/2026-10-11-security-unblock-decisions.md.
Found by the attended session on 2026-09-10 while settling the npm field
question. secret/coulomb/whynot-design/npm/publish exists at version 1,
created 2026-07-03T15:00:44Z and never updated — five days after the governed
lane at platform/workloads/coulomb/whynot-design/npm-publish was verified
(CCR-2026-0001, 2026-06-28). It sits outside that lane's exact-path policy and
outside any CCR here. Receipt:
docs/evidence/2026-09-10-npm-lane-field-resolution.json.
Only metadata was read. Its field names were not enumerated, its value was not read, and nothing was deleted — a location holding real credential material is disposed of deliberately, not tidied away in the session that found it.
The likely explanation, unconfirmed: secrets-engine reports the lane's field under a lowercase name that is absent from the governed path, and their catalog declares this legacy location. If their proven pilot publish read from here, then a working production lane has been running off an ungoverned duplicate, and the governed lane's acceptance evidence describes a path the consumer does not use. That is worth establishing before anything is removed.
Operator decision, 2026-09-15: destroy the legacy path after confirming the
governed lane is the live consumer. Do not wrap secret/coulomb/whynot-design/npm/publish
in a CCR. Value remains unread. Platform will ask secrets-engine which path
publish actually reads before any attended destroy.
Unblock: admit the governed exact-path AppRole policy and coordinated catalog
path/field migration under SECRETS-WP-0006-T06; prove native delivery from the
governed lane before the attended legacy destroy. secrets-engine confirmed the
legacy source path on 2026-09-21 (message 355424d4-17ab-435e-9e1d-6921775cb4a2).
No comparison of values, fingerprints, lengths or shapes is needed or authorized.
Done when: the legacy path's provenance and consumer are established, the governed lane is confirmed as the one in use or the consumer is moved to it as a reviewed lane change, the duplicate is destroyed under the September 15 operator decision and the disposition is recorded. Do not bring the legacy duplicate under a CCR. If the value proves to be live and ungoverned, treat it as an exposure with the same custody rules as RPF-WP-0027: never record the value, fingerprint, length or shape.
2026-10-03: human gate routed to hub decision 1591daa1-6e85-4dfd-aadd-5a9fe1ef47fa (D3: Trust root and secret custody: unseal/recovery holders, break-glass, and the deferred rotation of exposed material) by CUST-WP-0075; resolving that decision raises C-40 here.
Admit the separate approval client-side readers
id: RPF-WP-0035-T06
status: done
decision_id: 62aa95e4-3ccc-4867-8806-5e3db005b483
priority: high
intervention_note: ""
state_hub_task_id: "68bff751-e48b-548b-8fb4-dfb3b16210c2"
2026-10-11: requalified after founder decision D1 (attended window standing rule) resolved — see the-custodian docs/decisions/2026-10-11-security-unblock-decisions.md.
Current return, 2026-09-10: CCR-2026-0020 is cancelled on the requesting
Approval Engine owner's explicit withdrawal, source
849c75bb094613ff6ac1a1d4cda56a745520c5a1:docs/keycape-service-registrations.md.
No presenter exists and no reader is wanted. The validator now accepts terminal
cancellation of an incomplete request only with owner/source/reason evidence,
retained declared omissions and a disabled, non-resolvable front door. Apply
remains refused. No live identity, policy, role, custody or verifier was changed.
Human approval follows existing INFD-WP-0001-T07/T08; future service requesters
need a separate narrow registration, not this withdrawn bundle.
Operator binding confirmed, 2026-09-14: The user explicitly selected
net-kingdom-admins and authorized applying CCR-2026-0019. Its OIDC role is
secrets-engine-approval-client-workload-kv-read, aligned with the platform
applier naming rule; policy and exact KV scope are unchanged. The metadata dry
run passes with no warnings. Attended apply and exact role/policy readback passed; the enclosing Warden
command exited successfully after its self-revocation/cleanup. Receipt:
docs/evidence/2026-09-14-ccr0019-operator-binding.json. Scoped delivery proof
remains pending; the front door stays non-resolvable. Completed CCR-2026-0017/0018
remain closed and T06 stays wait.
Consumer procedure returned in source, 2026-09-10:
secrets-engine@98d72ceb1dbcff2d2a80fb8c3058d76777a0ac93:docs/approval-service-auth.md
specifies the requested private 0700 runtime directory, 0600 file outside Git,
path-only use, claim/consume lifetime and attended cleanup including hard-stop
residual inspection. CCR-2026-0019 retains this source-review comment without
changing admission status. Exact group, required-owner review, attended apply and
native positive/negative/cleanup evidence remain. No role or credential changed.
Separate retained owner decision: KeyCape's 2026-09-10 return
21427688-725f-4dea-aab4-7c78fd4328d2 identifies the already-live, unpresented
CCR-2026-0018 registration. Approval Engine, KeyCape and Platform must explicitly
decide retention/expiry or coordinated disablement. Reader cancellation neither
disables that live registration nor accepts indefinite retention. Keep this
disposition in T06; it is separate from the wanted CCR-2026-0019 factory reader.
No unilateral issuer/config/Secret change is authorized by this closeout.
Operator decision, 2026-09-15: coordinated disablement with KeyCape and
Approval Engine. Platform will not disable the live registration or verifier
delivery unilaterally. T06 stays wait until both owners confirm the joint
disablement sequence.
Residual handoff from RPF-WP-0035-T05; consumes the completed verifier custody without extending CCR-2026-0017/0018. Owner: railiance-platform with the named secrets-engine and approval-engine operator consumers.
Prepare separate exact-reader admissions for existing version-1 paths:
platform/workloads/secrets-engine/approval-client and
platform/workloads/approval-engine/operator-client, field CLIENT_SECRET.
Name each actual actor/placement, bounded authentication/reader policy, protected
consumer delivery, cleanup/revocation and rollback, then obtain the required
owner reviews for those concrete requests. No reseeding, rotation, shared reader,
reuse of the sso verifier Secret, or implicit operator consume grant.
2026-09-09 preparation return: both exact-reader admissions are prepared as
CCR-2026-0019 (secrets-engine) and CCR-2026-0020 (approval-engine-operator),
with their exact-path read policies written and committed. Design:
docs/credential-lane-designs/keycape-approval-client-side-readers.md. Both
reuse existing version-1 custody; no reseed, rotation, shared reader or verifier
Secret reuse. Both are in_flight and unapproved; nothing is applied.
Read-only survey findings that decided the two shapes. Namespace
secrets-engine holds only ServiceAccount secrets-engine with no workload,
and flex-auth/flex-auth-secrets-engine is that consumer's PDP, not the
service; secrets-engine consumes the client secret through an operator-run CLI
reading SECRETS_ENGINE_APPROVAL_CLIENT_SECRET_FILE (SECRETS-WP-0009-T03,
revision 9eb07fd). So reader 1 is an attended operator-workstation OIDC lane,
not an ESO lane. approval-engine has no namespace, workload or Service; its
manifest is unapplied, and no owner source names who presents the operator
client — approval-engine verifies these tokens and never holds them.
Unblock: reader 1 needs the exact NetKingdom/KeyCape group claim for the
authorized operator, plus secrets-engine confirming the file mode and removal
step; openbao.auth is declared missing rather than filled with a placeholder
that would later read as a confirmed binding. Reader 2 needs its owner to name
the presenting actor and placement, or to record that no client-side reader is
wanted so the request is cancelled. Naming a reader for the widest approval
scope without that decision is the failure this task exists to avoid.
Done when: each reader has a named actor and placement, a completed and
reviewed auth binding, admitted delivery, and its owner approvals; positive and
negative checks pass, including cross-path, wrong-identity and parent-list
denial and operator consume denial; or the request is explicitly cancelled by
its owner. Rotation stays a distinct version-guarded operation shared with
CCR-2026-0017/0018.
Consumer input supplied 2026-09-09: secrets-engine now implements per-request
secrets-engine-approval exchange from a protected temporary client-secret file,
with exact approval-engine / tenant:platform / read-or-consume scope, no token
file and no fallback. The pinned KeyCape image and actual Approval Engine source
passed its disposable component exercise; only the PDP was a sequencing double.
See secrets-engine/docs/approval-service-auth.md and the metadata receipt
secrets-engine/docs/evidence/2026-09-09-approval-identity-exercise.json.
Routing check: warden route show keycape-secrets-engine-approval-client is
unknown; generic openbao-api-key routes ownership only and is not a delegable
lane. Do not advertise a working fetch command before this task supplies its
own accepted native delivery return. Client-side admission is not ready for a
new human decision until exact requests and contained execution/rollback checks
are reviewable; the completed verifier reviews must not recur in that queue.
Done when: each retained consumer admission is approved and implemented, or its requesting owner explicitly cancels it (CCR-2026-0020 now satisfies that branch); actual consumer authentication/delivery succeeds; sibling/listing/wrong-reader and scope refusals plus reader expiry/revocation/cleanup are evidenced; version-1 custody and verifier availability remain intact. Return the source and metadata receipts to HFACT-WP-0001-T03, SECRETS-WP-0009-T03 and APPROVAL-WP-0002-T01/T05. Audit receiver/sender custody remains AUDIT-WP-0009-T09 and must not be folded into this client-identity grant.
2026-10-03: the historical D1 routing was withdrawn because provision/delivery already completed. Owner routing now uses decision ab85ae8a-12a0-4945-ae64-1d3d86d5b26f, specifically independent archive readback and coordinated interim audit bearer revocation acceptance. needs_human and the wait remain; resolving a decision requires owner receipt re-check, not automatic completion.
Admit the two factory audit-sender custody lanes
id: RPF-WP-0035-T08
status: wait
decision_id: "ab85ae8a-12a0-4945-ae64-1d3d86d5b26f"
blocking_reason: "Approved conditionally (ab85ae8a, standing change rule): executes once independent archive readback and the interim bearer revocation receipt exist; owner work with audit-core."
priority: high
assignee: railiance-platform
intervention_note: null
blocked_on: message-from:audit-core
state_hub_task_id: "0ef52c26-2669-5cd1-8149-b1f6fcdda6cb"
2026-10-11: requalified — ab85ae8a resolved under the standing build-mode change rule. See the-custodian docs/decisions/2026-10-11-security-unblock-decisions.md.
2026-10-03 correction (CUST-WP-0075, informed-decision sitting draft 55fb078): the D1 routing was wrong. First provision and delivery already ran on 2026-09-11, with seed and delivery receipts, and the review packet says not to repeat them. The task is not a provisioning-window act. It was taken off decision D1, and its blocking_reason now names what actually remains. railiance-platform should re-qualify it further if the receiver rollout has since happened.
2026-10-03 (CUST-WP-0075): re-qualified. The receiver rollout already happened: Audit Core c82e0442de0f carries evidence_kind and native producer accepted/duplicate and scope/read-refusal checks passed 2026-09-11 10:42 UTC (docs/credential-lane-designs/factory-audit-senders-review.md, factory-native-acceptance.md). Remaining: independent archive readback and audit bearer-revocation acceptance. Still not a provisioning-window act.
Consume AUDIT-WP-0009-T09/T11's exact declarations for approval-engine and
informed-decision: tenant:platform, write-only, load-bearing, redact. Source
preparation supplies two approved CCRs, independent exact-path policies/ESO
projections, and the attended factory_audit_custody.py first-provision helper.
Its CAS and request-provenance checks preserve unrelated senders and recover
interrupted writes without generating replacements. The user approved all named review roles on 2026-09-11. Native
provision/delivery/receiver-ingestion acceptance remains open.
The 2026-09-11 native read-only check found an additional deployment dependency: receiver image c2fe39a is 1/1 Ready but does not support evidence_kind. The synthetic native probe now refuses before any credential read. Current receiver source passes. AUDIT T09/T11 retain compatible release/source-manifest rollout; Approval Engine's missing namespace remains its owner prerequisite.
Review packet. Preparation evidence. Do not fold these senders into CCR-2026-0019 or the cancelled CCR-2026-0020.
2026-10-03: the historical D1 routing was withdrawn because provision/delivery already completed. Owner routing now uses decision ab85ae8a-12a0-4945-ae64-1d3d86d5b26f, specifically independent archive readback and coordinated interim audit bearer revocation acceptance. needs_human and the wait remain; resolving a decision requires owner receipt re-check, not automatic completion.
Dependency review — 2026-09-06
2026-09-09 tenant question resolved — no change needed
The tenant:coulomb / tenant:platform discrepancy raised against T02 is not a
discrepancy. KeyCape confirms decision 5ed3fb35-eca9-413a-82b9-95171ba85bf6
binds the approval chain to the landlord zone and was applied to exactly two
registrations, secrets-engine-approval and approval-engine-operator.
codex-railiance-platform is not in that chain and correctly stays
tenant:coulomb, as do secrets-engine-openbao and the human directory default.
KEY-WP-0013-T04 records this and their
TestServiceRegistrationTenantsAreExactPerDecision pins every reviewed client's
tenant against the real fixture, so a reintroduced alias fails their build.
docs/credential-lane-designs/secrets-engine-service-jwt.md already says
tenant:coulomb and is therefore correct as written. Bind the exact role to
tenant:coulomb. Do not "correct" it to tenant:platform later; that would
break the issued claim.
SECRETS-WP-0008-T02 now records the local PIP claim/validation join implemented and tested. Its remaining gate is the unreachable approval-engine claim endpoint and access-engine Check (SECRETS-WP-0007-T04). Do not carry forward the old local stub as a blocker. T02 still needs the accepted service issuer/JWKS, claims, audience and consumer binding. T03 still needs confirmed operator group/tenant and consumer semantics; T04 is already complete. No new owner acceptance inferred.
2026-09-08 attended capability preflight
HFACT-WP-0001's continued execution verified the existing first-provision
front door without provisioning anything. warden plan selected
openbao-platform-admin-login / founder_required / one oidc_login. The native
scripts/openbao-attended-exec.py supplied the existing WSL browser launcher;
a direct attempt had no launcher and failed before handoff. Its first revocation
result was unconfirmed and is preserved in the receipt rather than silently
reclassified. The two subsequent contained sessions completed self-revocation
and helper cleanup.
scripts/keycape-approval-custody-preflight.py --receipt <new-private-file> is
a silent, read-only command for that envelope. The installed Bao CLI supports
one path per token capabilities call; the final run used six single-path calls.
Create/update authority is present on both exact policy paths, both Kubernetes
auth-role paths and both KV data paths from CCR-2026-0017/0018. This is authority
metadata, not a secret-data read or policy/role/KV mutation. Receipt:
docs/evidence/2026-09-08-keycape-approval-custody-preflight.json.
T05 remains wait: both CCRs are still proposed, the actual upstream ID-token issuer precondition remains open, and no verifier-side credential is provisioned. Client-side retrieval and audit-sender custody are still separate owner returns. The capability receipt is not a review approval or service readiness proof.
Sender approval recorded — 2026-09-11
The user replied "good, go on" to the explicit CCR-2026-0021/0022 question naming platform-operator, audit-core-owner and both producer owners. Both exact requests are approved; their existing State Hub decisions are resolved. This clears the review request only. Receiver rollout, namespace readiness, attended custody and positive/negative native evidence remain the execution gates.
Native receiver and attended execution return — 2026-09-11
Audit Core c82e0442de0f is deployed and passes the native synthetic contract. Its existing 32-event chain/head is unchanged. The owner Approval Engine namespace now exists and all four ESO objects pass strict server dry-run. The two exact ingress rules are applied; sender custody/ESO application is not.
Warden selected founder_required/oidc_login and attempted the reviewed silent seed command through the contained wrapper. Login failed before command handoff; no custody receipt was created. Warden could not confirm remote session revocation. Await operator browser/MFA feedback and login/session resolution. Approvals remain valid; T08 waits for the identity act, not review.
The receiver check now selects component=receiver, so retained attestation-job pods cannot falsely block a stable receiver. Eighteen custody tests pass. Native return.
Attended custody retry succeeded — 2026-09-11
The user requested a retry and completed the attended identity act. Both CCRs are applied: independent version-1 custody and registry CAS 7→8 succeeded, preserving other senders/fields. Warden exited 0 with self-revocation confirmed for this session. This does not retrospectively attest the earlier failed login's remote session state. The old login wait is cleared; T08 is progress for ESO delivery, exact native reader/namespace refusals, receiver reload and producer acceptance. No token is reseeded or rotated on continuation. Seed receipt.
Delivery prepared; fresh login did not hand off — 2026-09-11
The delivery helper and custody receipt are committed at 44314ca and exactly
projected on primary/railiance01. Seven delivery tests and 18 custody tests
(including 11 actual disposable OpenBao cases) pass. The fresh attended
delivery invocation exited 5 before command handoff; no native delivery
receipt exists, no ESO application or receiver restart ran. The receiver
remains 1/1 Ready on c82e0442de0f. Warden could not confirm revocation for this
failed login; that is separate from the successful seed session. T08 now waits
for this delivery identity act. Neither CCR review nor first provision reopens.
Delivery return. Use the reviewed delivery command with a new receipt after login feedback. Actual producer ingestion/duplicate/refusal and bearer revocation acceptance remain open under AUDIT-WP-0009-T09/T11.
Native delivery accepted — 2026-09-11 08:27 UTC
The user returned and requested another login attempt. It succeeded and the reviewed delivery command completed in 28 seconds. Both native ESO readers passed exact-path access and explicit sibling/registry/metadata/listing denials, wrong-SA/namespace refusal and the coding-agent deny check. Each 900-second reader session was revoked and lookup refusal verified. Both intended ExternalSecrets are Ready; exact producer value and ESO ownership match. The disallowed namespace produced an explicit store restriction and no Secret; the uniquely owned namespace is now absent.
Registry version 8 matches the delivered receiver JSON. Audit Core reloaded and remains 1/1 Ready on c82e0442de0f; /readyz reports operational/durable with tamper_evidence=false, as bounded by AUDIT-WP-0009-T12. Warden exited 0 and confirmed self-revocation for this successful session. Earlier failed login receipts remain historical and are not retroactively attested.
The login wait is cleared. T08 remains progress and CCR21/22 remain applied for native producer ingestion/duplicate/scope/read-refusal and bearer revocation acceptance under AUDIT T09/T11. No credentials were reseeded or rotated. No producer was deployed and no factory attempt or paid call ran. Native delivery receipt.
Native producer return — 2026-09-11 10:42 UTC
Both actual source adapters used their own ESO-delivered credential inside a bounded native Job. Each synthetic event received 202, retained its durable outbox after an injected lost receipt, and received duplicate 200 after a fresh process reopened the outbox. Each source's reconciliation reported exactly one record for its unique probe class. Wrong source/tenant, seven archive read routes, sibling reconciliation and invalid-bearer requests were refused.
The first Informed Decision probe exposed a private-store startup defect:
fsGroup volumes add inherited setgid to a newly created 0700 directory.
Informed Decision 1a12223 corrects creation without repairing unsafe existing
data. The regression failed before the fix; the available suite now passes
335 tests with 39 optional checks skipped. Native retry verifies the exact
corrected helper. Six probe tests and eleven rebuilt-container checks pass,
including actual setgid-volume startup, restart/restore and cleanup.
All temporary probe Jobs, Pods, ConfigMaps and NetworkPolicies are verified absent. Receiver c82e0442 remains operational/durable; tamper_evidence=false. Producer verification requires no operator registry read or new OpenBao login. Independent readback is a separate attended command consuming the successful receipt; it must not rerun the producer jobs. Both attended verification-login attempts this session ended before handoff (exit 5; remote revocation unconfirmed), so independent archive readback remains pending.
This proves synthetic outbox delivery/recovery with native sender credentials, not domain-transaction atomicity, deployed producer services or human binding. An invalid bearer is not a revoked formerly valid bearer. AUDIT T09/T11 and RPF T08 remain progress for independent readback and audit bearer-revocation acceptance; CCR21/22 remain applied. Service/policy/human admission and native runtime/spend gates remain separate. Factory attempts and paid calls remain 0.
Independent audit readback — 2026-09-11 13:11 UTC
The existing attended readback command completed with exit 0 while the user
was present. Independent read-only identity operator found both retained
factory-audit-20260911104152-94aced producer events with exact source and
tenant:platform; receiver integrity is intact across 36 events. The wrapper
confirmed this session's self-revocation and private-helper cleanup. Prior
failed sessions' unconfirmed revocation remains historical unresolved evidence.
This supersedes the earlier readback-login wait. No producer jobs were rerun, no credentials were reseeded and no event was written by the reader. The inherited zero registry-read count belongs to the producer phase; the attended reader did consume registry version 8. CCR21/22 stay applied and owner tasks stay progress pending formerly-valid audit-bearer revocation acceptance. Service/domain-transaction/human and factory runtime/spend admission remain separate; factory attempts and paid model calls remain zero.
Receipt: native readback.
T06 native reader acceptance — 2026-09-14
The scoped Warden login lane secrets-engine-approval-client-login now routes
to the applied OIDC reader and the platform's silent preflight. The installed
Warden package still carries an older catalog; use the explicit source catalog
WARDEN_ROUTING_CATALOG=/home/worsch/ops-warden/registry/routing/catalog.yaml
until its next normal installation refresh. This lane authenticates the reader;
it is not a raw secret fetch or retained-file delivery interface.
Live effective-policy and capability checks passed: only exact data/metadata
read, no sibling secret, parent listing, write or control-plane authority.
A second contained session read existing version 1 into an operator-owned 0600
file in a private 0700 runtime tmpfs directory. The native consumer exchanged
separate read and consume scopes; Approval Engine verified the read token before
returning 404 for a fresh nonexistent approval, and refused the consume-only
token's read request with 403. No approval was created, bound or consumed.
Both Warden sessions exited 0 after self-revocation/helper cleanup; temporary
credential file and directory were removed. Four refusal/path/redirect tests
pass. Receipts are in platform docs/evidence/2026-09-14-ccr0019-{reader-preflight,delivery-check}.json.
Remaining: an actual nonmember login refusal, real approval claim/consume, separate narrow requester admission and deployed Informed Decision review with an explicitly admitted human mandate. The reader group alone grants no review mandate. T03 and CCR delivery activation remain open; no OpenRouter key was read.
T03 scoped review deployment — 2026-09-14
The operator explicitly admitted net-kingdom-admins as the human review group
for only the T03 apply, verify and read-only key-check records, separately from
its credential-reader membership. The review service is live and ready at
https://decisions.coulomb.social with verified KeyCape groups, fresh MFA and a
dedicated caller-bound Flex Auth policy. Its mandate does not grant consumption.
The new secrets-engine-requester client has subject secrets-engine, tenant
tenant:platform, role secrets-engine-requester, and only approval:create.
CCR-2026-0024 and CCR-2026-0025 provide distinct verifier and attended reader
custody. Native signature, subject, scope and TTL checks passed; excess scopes
and a wrong secret were refused. Existing consumer identity is unchanged.
Three real requested approvals were created with human control, required count
one, and zero entries. Platform evidence is
docs/evidence/2026-09-14-t03-native-approval-requests.json.
Review image: sha256:8f55bcecf37a8d65f96e073510b1ffb4636c0a91d75e1ee7d582ad4bce8b953a. Policy image: sha256:c9f028b49dfcede930a9cc48757ec8371ecc71d20b1bfee2733e55298dffcc7c. Review tests: 339 passed, 39 optional integration tests skipped; 11 container checks and HIGH/CRITICAL image scan passed. Policy checks: 57 local and 6 native caller checks passed, using synthetic subjects, not human binding evidence. Approval Engine CPU request was reduced from 25m to 10m after observing 1m use; review requests 20m and its PDP 5m. Limits are unchanged. Native services ready.
Remaining T03 gate: the operator's exact signed-in account is needed to address three prepared immutable memos, followed by real acknowledgements and acceptance in Informed Decision. No human entry or consume has been generated by an agent. Then execute claim -> validated PDP Check -> CAS consume separately for apply, verify and exec using scoped attended authority, and capture native denial, revocation, workload health and key-check evidence. No OpenRouter credential has been read and no inference or spend was performed. T03 remains waiting; this entry supersedes earlier statements that requester or group admission is missing.
2026-09-27 T02/T07 source follow-up
T02 now has the exact proposed RS256 configuration, bounded JWT role and
self-only policy in openbao/. Operator correction: platform infrastructure
belongs to tenant:platform; KeyCape registration and consumer preflight are
corrected together. Existing live registrations must be migrated and verified.
Public discovery confirms issuer/JWKS/token endpoint. Registration/custody,
attended provisioning and live rejection/cleanup evidence remain required;
T02 stays wait. No service credential or backend entitlement was issued.
T07 consumed the confirmed legacy consumer return. The stale value-comparison ask is removed. WARDEN-WP-0037-T03's no-rotation hold stays in force until the governed native migration is evidenced. Legacy destruction follows migration; neither source reconciliation nor the historical pilot is that evidence.
Loose-end review — 2026-09-27
T08 now explicitly waits for formerly-valid audit-bearer revocation acceptance from AUDIT-WP-0009-T09/T11. Native delivery, producer checks and independent readback already passed; do not reopen login, seed or review gates. T02/T03/T06/T07 retain their latest exact service registration, signed-in human acceptance, owner delivery/disposition and governed-consumer migration dependencies. No credential value was read or changed.
Founder approval of the CCR-2026-0033 custody child
id: RPF-WP-0035-T09
status: done
needs_human: false
priority: high
decision_id: 2ab717e1-7881-491e-aed4-28946550c289
depends_on: []
state_hub_task_id: "7c753be6-42f1-58a6-a4a4-a7ed686f461f"
Packets: credential-change-requests/CCR-2026-0033.yaml (custody child, KV
metadata, issuer ESO reader, live_order, rollback) and CCR-2026-0034.yaml
(attended operator OIDC reader, in-memory, 5m/4 uses). Revised 2026-10-06 per
founder direction; the consumer file is removed. Exact founder commands:
docs/provisioning-windows/2026-10-04-1000/keycape/founder-runbook.md. 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). Each live step after the custody run needs its own go.
2026-10-11 evidence reconciliation: T09's approval obligation is complete.
Authoritative founder decision 2ab717e1-7881-491e-aed4-28946550c289 is resolved,
decided by Bernd Worsch at2026-10-06T13:07:18.627943Z, and explicitly covers
A1 design, A2 CCR33/CCR34 plus owner reviews/bound claims, and A3 one custody run.
The approval comments in both CCRs record those exact grants; both source records
are applied. MASON-WP-0009-T02/T03 additionally record the October8 approval/owner-delivery
reconciliation and reference KeyCape
docs/evidence/2026-10-07-secrets-engine-openbao-issuance.json. Closing this approval task clears
its obsolete human gate. It grants no new run, credential access, rotation or
service execution: RPF35T02/T12, MASON9T05 and SECRETS8T06 retain their actual
native/adoption obligations. Historical per-step exclusions remain above.
Retire the approval-engine-operator client delivery and custody (CCR-2026-0018)
id: RPF-WP-0035-T10
status: wait
priority: medium
blocked_on: message-from:approval-engine
blocking_reason: "Blue lane under the standing change rule (removing access, with reviewed order, rollback and receipts): executes once approval-engine confirms there is no presenter. No founder window needed."
state_hub_task_id: "af2d4dba-f83a-5819-9a8b-671bae799364"
2026-10-11: access removal is blue lane (canon build-mode-change-authorization_v0.1); no founder window.
key-cape proposed a joint disablement on 2026-10-10 (message 7f2128fb).
Precondition: approval-engine reconfirms there is no presenter. The order is the
reverse of provisioning, so KeyCape never starts with a client whose secret is
missing. key-cape removes the registration and restarts (1), checks that
invalid_client is returned (2), and net-kingdom removes
KEYCAPE_APPROVAL_ENGINE_OPERATOR_CLIENT_SECRET from Deployment sso/keycape
(3). Platform steps, amended from the proposal:
- Delivery. In one commit, remove ExternalSecret
sso/keycape-approval-engine-operator-clientfromargocd/platform-addons/openbao-secretstore/keycape-approval-clients.externalsecrets.yamland ClusterSecretStoreopenbao-keycape-approval-engine-operatorfromopenbao-keycape-approval-clients.clustersecretstore.yaml. Keep the secrets-engine-approval objects. Then bumptargetRevisionofargocd/railiance01/applications/openbao-secretstore.application.yaml. The app is pinned and has no automated sync, so nothing changes live until an attendedargocd app sync openbao-secretstore --pruneruns after step 3. Verify, value-free, that the ExternalSecret, the store and Secretsso/keycape-approval-engine-operator-clientare gone. The target iscreationPolicy: OwneranddeletionPolicy: Retain, so the Secret should follow its owner; delete it explicitly if it does not. Then delete OpenBao roleauth/kubernetes/role/external-secrets-keycape-approval-engine-operatorand policyworkload-kv-read-keycape-approval-engine-operator, and remove their source files. Also remove policyworkload-kv-read-approval-engine-operator-client(CCR-2026-0020, cancelled) if it exists live. - Custody. Run the metadata delete of
platform/workloads/approval-engine/operator-client, the destruction foreseen indocs/credential-lane-designs/keycape-approval-clients.md. A disabled client's secret has no recovery value; a narrowed successor gets a fresh secret through the mint-secret lane atplatform/workloads/keycape/<client_id>. Only after step 2'sinvalid_clientreceipt. Keep the agent boundary denies for that path until the delete is verified, then drop them.
2026-10-10: key-cape agreed the amended steps 4 and 5 (message 59304e33,
KEY-WP-0013 c528daa). Waits on approval-engine confirming there is no presenter,
and on the founder's window.
The manifest edits wait for the scheduled window, so a stray targetRevision
bump cannot remove KeyCape's secret before step 3.
Complete independent service-JWT source preparation and execution design
id: RPF-WP-0035-T11
status: done
priority: high
state_hub_task_id: "7952c8cd-c066-5b72-a025-78d24341c1ab"
2026-10-11: Platform-scoped agent loaded this checkout's AGENTS.md and INTENT,
RPF35-T02, actual CCR38/login contract/typed applier and Secrets Engine's native
claim/PDP/CAS/provider/apply flow. Frozen Secrets v2 manifest and all named staged
bytes/proof were hash-verified. Independent tests reproduced three source
counterexamples while retaining the frozen files: close exception can coexist
with native_verified=true; successful result needs no source/session fingerprints;
HTTP200 mixed errors+data envelope is accepted. Original 37 tests plus the three
counterexample tests pass (40 cases, synthetic/local only). Proposed owner design
docs/credential-lane-designs/secrets-engine-task-execution-entitlement.md binds
an explicit metadata-only execute-ccr action, immutable typed owner bodies,
CAS/journal replay control, 120s/12-use owner-held task token, independent payload
validation, native ACL endpoint bounds, revoke/readback and recovery. This completed
preparation record is established before the formal source review. It grants no
live authority and does not close T02 or represent acceptance by another owner.
Formal review artifact follows under this work item; all implementation/live
obligations are retained in T12 and existing T02 rather than a finished residual.
Implement and prove the separately approved task execution entitlement
id: RPF-WP-0035-T12
status: progress
priority: high
depends_on: [RPF-WP-0035-T11]
state_hub_task_id: "914bf383-c13f-5247-9af0-91d7e3a4784a"
Review the proposed task-execution-grant schema and exact metadata-only execute-ccr backend with Secrets Engine/access-engine/approval-engine; implement trusted service subject and served consume verification, durable one-shot reservation, bounded owner-held token issuer/middleware and exact source/payload enforcement. Obtain separate exact founder approval/attendance before provisioning or live actions. Prove disposable intended result and identity/action/target/body/time/replay/crash/ cleanup negatives, and return owner-native acceptance. Existing service login policy and defaults stay unchanged. T02 still owns login/claim/TTL/use/MASON acceptance; Secrets T06 separately owns dispatcher adoption and steady-state default migration.
2026-10-11 T11 refinement (same source-review trial): the exact Secrets Engine
v3 manifest 6bb05bac74e4939c3e42db2ae95c5f9fb4616bb20cc285811a315c26669ebce1
and all named bytes/proof were verified and independently re-reviewed. The three
v2 counterexamples are corrected: close exceptions cannot pass through stale true
flags, complete typed source/session/attempted/revoke evidence is required, and
mixed HTTP200 errors/data fails closed. 49 maker/current-provider tests plus three
independent regressions passed (52, synthetic/local only). Platform source review
docs/reviews/2026-10-11-secrets-service-jwt-v3-platform-review.json approves only
the corrected boundary verifier and truthful packet. Prior changes-requested v2
review is retained; this is not a second native success or changed authority.
No native or founder go is granted. T02, T12 and Secrets T06 remain open; the
metadata-only execute-ccr pilot is explicitly insufficient for generic lifecycle
adoption. All consume-verification/journal/action/body/backend implementation and
native acceptance gates remain real prerequisites, not architecture promises.
2026-10-11 T11 readiness refinement: independently reviewed frozen consumer
manifest 709b9dddd1c8f00a995b1ff14264323fbe080ed95df244270ce9607528878fa7.
Platform source review docs/reviews/2026-10-11-secrets-execution-readiness-v2-platform-review.json
approves the local fail-closed guard and proposed consumer contract direction only.
All ten current protected backend handlers pass provider args through readiness
before authorization/consume; session revoke checks before handle reads. Configured
auto/explicit service-jwt therefore cannot burn a protected-action approval or
open the insufficient login-self backend. Explicit env/bootstrap and self-only
probes retain their existing contracts; local compromise/reactivate and disabled
destroy remain separate. Existing ambient-token route readiness reads are unchanged,
not claimed governed by this guard. 58 isolated tests passed: original36 plus20
provider/action cases, handler enumeration and actual session-revoke ordering.
Prior v2 changes-requested and v3 boundary source reviews remain unchanged, same
T11 trial. No runtime grant, native acceptance, new Access/Approval semantics,
backend entitlement or full Lifecycle adoption is approved. T02/T12/SecretsT06 and
WP13 implementation/native gates remain open; the metadata pilot substitutes for
none of the ordinary generic lifecycle outcomes.
Complete independent KEY39 v4 lifecycle source review preparation
id: RPF-WP-0035-T13
status: done
priority: high
state_hub_task_id: "8f6966fa-6e9a-58b2-8b40-c47340ec19d1"
2026-10-11: Platform agent loaded its owner instructions/INTENT and RPF35-T02,
actual applied CCR38, exact native role/policy source and frozen KEY39 lifecycle
v4 manifest d079f85c47d5c2635e1ee633ea4d1346b1737ce2be9ca273f22a38e620f418d8.
All staged entry hashes were verified without changing the reviewed inputs.
Source role omits expiration_leeway: its observed actual default must be confirmed
natively, with -1→0 and 0→150 normalization preserved as a bounded model. Source
claims and login-only policy are unchanged. The supplied 41 lifecycle tests pass;
five independent cases also pass, including a new exceptional-response-close
elapsed-bound counterexample and four current-leeway normalization checks.
A 10ms HTTP request can take over70ms because exceptional finally response.close
runs outside the hard elapsed timer. Unknown native login is correctly recorded,
but source total elapsed enforcement is incomplete. This completed owner
preparation record exists before the formal exact source review entry. No
credential was requested/read, native action run, owner checkout edited or native
session grant inherited. T02 retains native role/policy/leeway, negative claims,
cleanup acceptance and MASON gates; KEY39 producer handoff and founder attendance
remain prerequisites. Source correction/re-review is required, not a native success.
2026-10-11 T13 correction preparation (same trial): exact KEY39 v5 manifest
d1f997624db46693a7126a6eb6435f6b3a353d5bd67dcc8a539683e4b7147285
and all entry hashes verified. The v4 exceptional-close finding is addressed:
one 20ms abort is clipped to original remaining time and the nonresettable
aggregate cleanup budget; zero calls after aggregate expiry; failed abort stays
unconfirmed/unknown with signal state restored. 46 supplied lifecycle checks and
five independent regressions pass; the unchanged runner's earlier17 tests remain
valid against identical source SHA. Existing T13 preparation record is retained
before the formal v5 exact source review. V4 changes-requested review and earlier
failed history remain retained, with no native success, inherited grant or scope
promotion. Actual private producer admission, fresh installed role/leeway/policy
observation, authenticated founder window and native refusal/cleanup remain gates.
2026-10-11 T11 journal preparation refinement (source-only): independently
inspected frozen root-maker v2 manifest
341cac1de945d2fbe8f516119909bd44fc37e85dccfb38b451981d4de2d402e7,
verified all input hashes, and ran14 supplied tests plus5 independent checks.
The actual four-process race admits once; a separately forked process exiting
immediately after pending intent leaves durable unknown/nonresumable state.
Private SQLite modes, lock admission and binding/replay protections remain guarded.
Three independent counterexamples show after_call accepts False,0.0 or text'0'
as persisted integer ordinal0, contrary to before_call's exact integer validation.
Completed preparation under this existing done ownerT11 record precedes formal
review; require identical ordinal/call-digest validation before confirmation so
malformed calls cannot clear pending outcome. RPF35-T12 retains caller/PDP/consume
validation, exact body compiler/adapter and owner-private cleanup/recovery after
unknown; this unintegrated primitive proves none of those or full contract/native
acceptance. Inputs/prior reviews are preserved; no privileged/native action occurred.
2026-10-11 T11 journal v3 correction preparation (same trial): frozen manifest
905ff6666d05df6a19d165a535579d917d7de31a43e066c2afc34a57e8cbdc9d
verified against every file. Strict after_call integer0..63 and64hex string digest
validation now precedes SQLite confirmation; False,0.0 or text'0' cannot clear
pending external outcome.15 supplied tests plus5 independent regressions pass,
including realfork abrupt exit after durable intent and privatefile checks.
This existing completed ownerT11 refinement precedes the formal corrected-source
review. Prior v2 refusal is retained; no extra success/authority trial is counted.
Acceptance is only unintegrated journal source. Actual caller/PDP/consume validation,
independently compiled body/ordinal plan, restricted adapter, owner-private unknown
cleanup recovery and native/whole-contract adoption remain live RPF35-T12 gates.
2026-10-11 T13 node-route source preparation refinement (same trial): exact
successor manifest 23a972abc5175e121e594726d2b7f7a28c62109253f58f12623eaf2e5564a035
verified against all entries. Platform Service openbao-ui-gateway8080 and its
nginx /v1 proxy agree with the proposed bounded founder-held node port-forward;
workstation tunnel/DNS assumptions are not reused as node evidence.54 supplied
lifecycle/route checks plus6 independent public-health/abort checks pass, offline.
Initial execute/recovery health pin and repeated pre-create check fail before
native/Secret effects; public-preflight reads neither stdin nor Kubernetes.
Completed ownT13 preparation precedes this fresh exact source review, not reuse
of v5 acknowledgment. Main execute currently reads private stdin before execute's
health gate; the packet's pre-token-input phrase is not accepted. Private producer
handoff must preserve actual ordering or move the health gate before credential
input when implemented. Public cluster digest detects drift, not authenticated
estate identity. No route was opened or observed; no source packet authenticates
a founder approval. Native role/plugin version and raw/effective expiration,
clock-skew and not-before leeways require actual owner observation/semantic proof.
Issuer readiness_state/Argo ownership is not established by the inspected source;
unmapped means production-tier. If adopted/production-approved, temporary direct
CAS requires an explicit reviewed one-use maintenance exception and close-down
entry, plus reconciliation, before native go. No helper/source acknowledgment
waives that gate. Private token producer/callback/client/custody admission and
actual native negative/revoke/restoration/cleanup remain prerequisites.
2026-10-11 T13 v7 node-route preparation refinement (same trial): exact frozen
manifest 90aabec336008d7d51e37c04b5ff96ba8ed6630821cca1a4c333d803367247f7
and all entries verified.58 supplied lifecycle/route checks plus9 independent
checks pass offline. Actual main now verifies source/public health before private
stdin; execute preserves the original wall/monotonic window rather than renewing
it. Actual child-process partial-pipe counterexample shows unbounded stdin.read
remains blocked beyond a synthetic20ms original window (still alive after100ms
without EOF). No credential/native/provider access is involved. Before private
producer admission, require byte-capped, deadline-bounded JSON input and EOF within
the original window, with fail-closed fixed receipt and no protected effects.
This completed ownT13 preparation precedes formal v7 source changes-requested
review. Retain v6 qualified health-gate agreement and all prior reviews; neither
v7 health ordering nor any source acknowledgment establishes custody completion,
actual route/plugin/leeway/readiness/Argo identity or founder/runtime authority.
Native and private-producer gates remain open; no owner checkout write occurred.
2026-10-11 T13 v8 bounded-input correction preparation (same trial): exact
frozen manifest 316fd6005cc4cb7fe14ea69a5fd408aed13e6122afef60afd13d97952b27cf4a
and all entry hashes verified.65 supplied tests plus12 fresh independent checks
pass offline, including a standard buffered stdin pipe with complete JSON/noEOF
interrupted within original20ms window and restored SIGALRM state; exact64KiB
JSON/EOF accepted and extra byte refused, UTF8 token bytecap enforced, original
wall deadline clips longer monotonic budget. Original preinput window is retained.
Completed ownT13 preparation precedes fresh exact source review; v7 refusal and
v6 qualified agreement/prior reviews retained. This accepts child bounded-input
source only. No parent-ready handshake exists: producer must not eagerly pipe
private inputs, and producer/session/window readiness protocol remains an
unimplemented admission gate. No custody/native completion, sourcepacket approval
authentication, route/plugin/leeway/readiness/Argo observation or inherited grant.
Native prerequisites and producer handoff remain open; no owner checkout changed.
2026-10-11 T11 journal v4 canonical-format preparation refinement (same trial):
exact frozen manifest 22c6d225d393b994ab7b44a43904ced1b6d7f74e0e2bebf71ffe99f87191ef4c
and entry hashes verified. Actual access-engine pkg/api/canonical.go RequestDigest/
CanonicalDigest, Approval binding.py and Secrets authorization/approval_consume
all use sha256:<64 lowercase hex> request digests. V4 now preserves this exact
request value without prefix stripping; plan/call/evidence content hashes remain
explicit bare64hex.15 supplied checks plus15 fresh independent checks pass,
including malformed prefix/bare/uppercase/trailing whitespace refusal before
reservation, exact persistent value/reopen/mismatch replay, private-file mode,
real child crash after pending intent, ill-typed confirmations and pending-unknown
refusal. Completed ownT11 preparation precedes formal v4 source review; prior v2
refusal/v3 approval and T13 v7 refusal/v8 source acknowledgment retained.
Acceptance is unintegrated primitive source only; no data migration/native use
of v3 journal has occurred. RPF35-T12 caller/PDP/consume validation, independent
owner plan compiler/restricted adapter, private runtime custody, bounded execution
and owner-private unknown cleanup recovery remain open. No checkout/native writes.
2026-10-11 T13 paired ready-child/launcher preparation refinement (same trial):
exact NetV9 manifest 84542ddcff00932fc7ce22dcb2626be8942a3c006c5098a62fdd6b2478d0cd14
and KeyproducerV2 55a8e794af983ca2202e7a0054d0415a120d2c95018fb03fdb5f28313a109d58
verified against all entries.74 Net checks plus31 Key checks and10 independent
checks pass offline including a truthful-unknown counterexample: adapter uncertain
private delivery with confirmed=false is copied into launcher receipt, but
consumer_outcome_unknown incorrectly remains false after local SSH teardown.
Complete bytes may have reached remote child before adapter timeout/EOF; local
terminate does not establish remote no-effects. Require sticky propagation of
uncertain delivery into consumer outcome before early return, retain unknown
unless independently established native outcome/recovery. Bad markers/source
pins/injection reject before private reads; extra marker authority/lines reject;
prohibited child output never forwards. Child-ready synchronization is not
authentication/approval. Proposed founder directSSH profile is incompatible with
warden quiet-output lane and not admitted here. Completed ownT13 preparation
precedes formal paired source review; preserve v7 refusal/v8 acknowledgment and
journal histories. No transport grant, coding-agent/private custody admission,
live SSH, credential/native action or owner checkout write. All native role/plugin/
leeway/route/issuer readiness/Argo/maintenanceexception gates remain prerequisites.
2026-10-11 T13 paired producerV4 correction preparation (same trial): exact
producer manifest d6f641dc1e4aae7d36658d4199d89af14d2fd7a4bd4e526856eb340234f2d33e
and unchanged NetV9 84542ddcff00932fc7ce22dcb2626be8942a3c006c5098a62fdd6b2478d0cd14
entry hashes verified.74 Net tests,40 producer checks,9 actual local fakeSSH/
realwrapper/child synthetic roundtrip regressions and12 fresh Platform checks
pass (135 total). V2 deliveryunknown now remains sticky consumerunknown with
completion=false after earlyreturn/localteardown. V3 Net FIFO acquisition finding
and originalbudgetreset are corrected: actualCLI starts original5s timer before
regular/nofollow/bytebounded contract acquisition, each later preparation phase
clips remaining time. ActualCLI FIFO refuses promptly; expired original budget
never validates/spawns/reads private files. Completed ownT13 preparation precedes
formal corrected pair source agreement. Preserve V2 Platform refusal, Key old
exactV2 acknowledgment and NetV3 refusal; no old acknowledgment repinned.
Agreement is only reviewed source synchronization/launcher behavior, not admission.
Founder authenticated SSH host/profile/channel/runtime pins, exclusive sameUID
file custody and explicit tmpfs file allowance/cleanup, verified human and
coding-agent producer/client/source, native role/plugin/leeway/route/issuer
readiness/Argo/maintenanceexception, refusal/revoke/restoration/readback and
unknown owner recovery remain prerequisites. Warden quietlane cannot carry ready
controlstdout; no transport/custody/native grant. No owner checkout/liveSSH/native.
2026-10-11 RPF35-T12 source implementation progress: durable journal source v4
was independently accepted/committed; owner-derived typed plan compiler component
v2 is prepared at immutable manifest
41cda74ab32384c789ea8a760475671aadad4e5121335c8f60567ff53d66665b
with40 offline tests. Completed own bounded source-preparation ADHOCT02 anchor
was persisted at7adbcb4 before the qualified Platform contract/readiness receipt.
T12 progresses for actual source implementation underway, not native acceptance
or full descriptor/authority readiness. The compiler derives local CCR/HCL/role
bodies, matches actual independently pinned Secrets catalogue and revalidates
source/body before fixed calls; no body/target chosen by service is dispatched.
Independent technical integration review and exact full ExecutionContract/owner
grant/baseline/estate/deadline matching, initiating human/User/Tenant PIP/transport
representation/service identity, served PDP/claim/consume correspondence, journal
call dispatch/restricted adapter, native token TTL/uses/custody/revoke/cleanup and
owner-private unknown recovery remain unimplemented integration/native gates.
Actual CCR42 has no eligible approved pilot/catalogue; no source metadata is
invented. T02 and original negative/capability/native evidence remain unchanged;
T11/T13 history retained, no defaultflip/nativego or SecretsT06 closure follows.
2026-10-13 T12 source correction: the compiler hashed the catalogue sources but used cached Python modules with matching paths, which did not establish executing those exact bytes. A failing regression reproduced the substitution. Catalogue, package and dependencies now execute from the verified snapshot in temporary private modules; ambient modules remain untouched and cleanup runs on refusal. 45 compiler plus 15 journal tests pass. The v2 source review remains historical; this change needs its own integration review. T12 retains all existing full contract, identity/consume, dispatch, custody and native acceptance requirements. RPF-IN-0012 remains open for the independent contract/wrapped-delivery return; this code correction does not authorize either operation.
2026-10-16 T12 source preparation (isolated owner checkout; not owner delivery): added durable precommitted cleanup obligations and separate outcome evidence to the existing Journal, plus a fixed three-method owner cleanup driver. Same live postconsume admission can clean after a business timeout/failed/unknown outcome; cleanup closes business dispatch and cannot replay or restore admission after a crash. Empty obligations no longer produce cleanup-confirmed. Real SQLite multiprocess races and abrupt process death before/after a separately durable synthetic effect verify refusal on reopen. Current compiler/journal/cleanup suite: 73 passed, local source/fixture only. Details: docs/task-execution-cleanup.md. No native adapter or production mediator exists; full grant/request/cleanup binding, authenticated consume/identity, ephemeral token issuance, deadline/use checks, native effect/revoke/absence, audit and protected recovery remain prerequisites. T12 remains progress. No CCR38 default/entitlement or live grant was changed.
2026-10-16 T12 second source package: Compiler Plans now bind deterministic cleanup commitments and can bind the complete independently installed engine execution descriptor. A fixed disposable-loopback native adapter actually materializes exact per-operation metadata ACL/task token, executes six source-derived metadata calls, and verifies self-revocation/accessor invalidation and policy retirement. Each cleanup request has its own durable intent. Native fault tests cover lost response after real write and policy deletion while task revoke fails. All initiating identity/approval/consume/grant/state/source admission in this fixture is synthetic; no production authority or complete native owner acceptance is claimed. Exact remaining owner schema/admission and mediator work: docs/task-execution-native-fixture.md. T12 stays progress; no live grant, credential/default change or owner sync performed.
2026-10-16 T12 third source package: implemented proposed task-execution-grant immutable projection and exact compiler/native-fixture integration through the existing descriptor grant ID/SHA fields. Only typed review.comments/evidence.events are excluded; separate append-only checks reject removal/rewrite/reordering and unknown guessed evidence exclusions refuse. Owner-pinned grant bytes and validator source must match independently reconstructed descriptor/source/cleanup/ACL/token bodies before a native fixture can materialize. Proposed source records gain no execution authority; no real grant, policy or legacy applier registration added. Details and remaining production gates: docs/task-execution-grant-projection.md. T12 remains progress; no owner sync or production effect performed by this package.
2026-10-16 T12 fourth source package: connected the Secrets-owned strict task handoff to actual Approval ExecutionConfirmationClient independent GET before consume-confirmed/native fixture work. Platform accepts no supplied authorization boolean/object/callback and preserves its exact owner descriptor/grant/Plan join. Durable CAS/GET intents precede native ordinals through the repaired journal prefix API. Actual source-server fixture uses signed Access/enforced synthetic TokenReview, real Approval WSGI/SQLite with distinct synthetic human/service identities, actual strict Secrets signature/CAS validation and disposable native OpenBao. Untouched actual task policy remains signed DENY; separately named synthetic fixture policy is never production admission. Read-scope denial after CAS records consumed/unknown with zero native effects. Exact dependency/source hashes, tests and remaining gates are retained with the source package and in docs/task-execution-mediator-seam.md. No real grant/custody, policy default, owner sync or native production acceptance is performed; T12 stays progress.