diff --git a/SCOPE.md b/SCOPE.md index 3a7382d..f408325 100644 --- a/SCOPE.md +++ b/SCOPE.md @@ -386,8 +386,8 @@ type: security title: AppRole-scoped exec delivery description: Fetches one declared KV field through a lane AppRole and injects it into a child process using exec-env or a temporary npm config, with output redaction, explicit scoped-token - self-revocation, and non-secret cleanup evidence. This is CLI-local delivery; exec-file, wrapping, - and service delivery are absent. + self-revocation, and non-secret cleanup evidence. Adapters: exec-env, npm-config, exec-file; + `wrap` provides response-wrapped operator handoff. This is CLI-local delivery; service delivery is absent. keywords: [secrets, delivery, exec, npm, injection, redaction, openbao] ``` diff --git a/registry/capabilities/capability.security.credential-lifecycle.md b/registry/capabilities/capability.security.credential-lifecycle.md index b9c5232..1c822b2 100644 --- a/registry/capabilities/capability.security.credential-lifecycle.md +++ b/registry/capabilities/capability.security.credential-lifecycle.md @@ -29,8 +29,10 @@ external_evidence: confidence: low basis: No longitudinal consumer reliability measurement established by this review. name: Cataloged credential lifecycle -summary: CLI catalog, plan, exact OpenBao metadata apply, provisioning, verification, - delivery and revoke. +summary: Decision-gated CLI for cataloged OpenBao lanes covering catalog, plan, exact metadata + apply, provisioning, verification, exec delivery (exec-env/npm-config/exec-file), wrapped + handoff, rotate, revoke and lifecycle, with founder-signed trust admission and a local + evidence outbox. tags: - security - netkingdom @@ -56,6 +58,10 @@ availability: current_artifacts: - SCOPE.md - src/secrets_engine/decision_check.py + - src/secrets_engine/founder_admission.py + - docs/founder-admission.md + - tools/verify_service_jwt_boundary.py + - tools/check-keycape-recovery-selector.py consumption_modes: - CLI - source @@ -69,6 +75,10 @@ evidence: documentation: - SCOPE.md - src/secrets_engine/decision_check.py + - src/secrets_engine/founder_admission.py + - docs/founder-admission.md + - tools/verify_service_jwt_boundary.py + - tools/check-keycape-recovery-selector.py consumer_guidance: recommended_for: - Protected operation obtains and consumes exact human approval before its side @@ -82,13 +92,17 @@ consumer_guidance: known_limitations: - Production protected execution and independently anchored PDP authentication remain incomplete + - 'Founder-signed admission of the PDP trust file and recovery attempts is source only + (2026-10-21); the real producer key admission (SECRETS-WP-0014-T04) and native rollout + (T03) are outstanding.' + - service-jwt is login-only; it cannot carry engine actions yet. - 2026-10-14 architecture review estimates operational maturity separately; a registry entry does not authorize execution or establish deployment. --- # Cataloged credential lifecycle -CLI catalog, plan, exact OpenBao metadata apply, provisioning, verification, delivery and revoke. +Decision-gated CLI for cataloged OpenBao lanes covering catalog, plan, exact metadata apply, provisioning, verification, exec delivery (exec-env/npm-config/exec-file), wrapped handoff, rotate, revoke and lifecycle, with founder-signed trust admission and a local evidence outbox. ## Reuse boundary @@ -104,5 +118,7 @@ Production protected execution and independently anchored PDP authentication rem - [SCOPE.md](../../SCOPE.md) - [src/secrets_engine/decision_check.py](../../src/secrets_engine/decision_check.py) +- [docs/founder-admission.md](../../docs/founder-admission.md) +- [tools/verify_service_jwt_boundary.py](../../tools/verify_service_jwt_boundary.py) -Assessment: CUST-WP-0081, 2026-10-14. Relations identify interfaces to compose; they do not certify native integration. Existing external evidence levels are retained where present. New entries use conservative C1/R0 until consumer assessment exists. +Assessment: CUST-WP-0081, 2026-10-14; summary and artifacts refreshed 2026-10-21 (maturity unchanged). Relations identify interfaces to compose; they do not certify native integration. Existing external evidence levels are retained where present. New entries use conservative C1/R0 until consumer assessment exists. diff --git a/registry/indexes/capabilities.yaml b/registry/indexes/capabilities.yaml index aad3b05..16b5c3d 100644 --- a/registry/indexes/capabilities.yaml +++ b/registry/indexes/capabilities.yaml @@ -1,11 +1,13 @@ version: 1 -updated: '2026-10-14' +updated: '2026-10-21' domain: infotech capabilities: - id: capability.security.credential-lifecycle name: Cataloged credential lifecycle - summary: CLI catalog, plan, exact OpenBao metadata apply, provisioning, verification, - delivery and revoke. + summary: Decision-gated CLI for cataloged OpenBao lanes covering catalog, plan, exact metadata + apply, provisioning, verification, exec delivery (exec-env/npm-config/exec-file), wrapped + handoff, rotate, revoke and lifecycle, with founder-signed trust admission and a local + evidence outbox. domain: infotech status: draft owner: secrets-engine diff --git a/workplans/SECRETS-WP-0014-pdp-transport-and-responder-authentication.md b/workplans/SECRETS-WP-0014-pdp-transport-and-responder-authentication.md index 9728726..4629a3a 100644 --- a/workplans/SECRETS-WP-0014-pdp-transport-and-responder-authentication.md +++ b/workplans/SECRETS-WP-0014-pdp-transport-and-responder-authentication.md @@ -134,6 +134,20 @@ work. A local signature test is not admission. The approach is accepted. The remaining gate is the founder's actual signature over the real trust file once FLEX-WP-0024-T06 delivers the key. +2026-10-21 upstream path (read-only survey; Access repo is `access-engine`). No key +exists yet. The order is: +1. Founder resolves decision 18731e84, the CCR-2026-0050 custody scope; that unblocks + RPF-WP-0035-T14. Access approved its side in railiance-platform b3f12b2. +2. Platform creates the key (CAS0, KV v1) and emits `signer-cas-receipt.v1`. +3. Founder gives the go on FLEX-WP-0024-T07 (decision 4fab263d) for the attended R2 + signer window, kid `flex-auth-lifecycle-20261016-r1`. +4. Access runs `tools/prepare_signer_public_receipt.py`, which writes the exact + `pdp-trust.json` bytes. +5. This task: founder signature and root anchor install. +Access's trust-file projection matches `decision_signature.load_trust`: the same seven +keys, 32-byte base64url keys, and the same namespace. Its pin is +access-engine `docs/native-signer-public-pin.json`. No format work remains here. + ## Verify the admitted native consumer and rotation path ```task diff --git a/workplans/SECRETS-WP-0015-original-keycape-recovery-selector.md b/workplans/SECRETS-WP-0015-original-keycape-recovery-selector.md index 85fbf72..1f25d6f 100644 --- a/workplans/SECRETS-WP-0015-original-keycape-recovery-selector.md +++ b/workplans/SECRETS-WP-0015-original-keycape-recovery-selector.md @@ -159,3 +159,12 @@ new grant, live OpenBao read, backend write or retained-factor MFA is authorized Return exact bounded evidence to NK49T36/T18; MFA remains NK49T19. Human gate is never a worker wakeup. Cross-owner dependency is attached to derived case secrets15-nk49-readiness in the packet; do not strand the wait or invent a driver. + +2026-10-21 upstream path (read-only survey). NK-WP-0049-T33 waits on: +- T35 kc-tls owner metadata (railiance-cluster RCLUSTER-WP-0018-T02, todo). +- Founder decision 9f9d0d88 on T39 (ACME reissue vs. the original key). +- The attempt-host anchor (this task). +- NK49 attempt-assembly metadata: deadline, receipt location, verifier. +NK49-T40 carries the founder signature after T33. There is no pin drift: 0f44fbe..0aeb5a2 +changed only this workplan, and the selector, service_auth.py and check tool hashes are +unchanged. Do not edit those files before the attempt, because any edit forces an NK49 re-pin.