chore(m04): run Vault Phase 1 read-only inventory packet #607

Closed
opened 2026-05-29 16:51:33 +02:00 by codex · 2 comments
Collaborator

Scope

Run the first Vault sunset step as a read-only inventory packet.

This is Phase 1 from migrations/vault-to-infisical.md, carved out of parent #64 so Vault sunset does not start as a large runtime mutation.

Spec sources

  • migrations/vault-to-infisical.md Phase 1
  • modules/vault/module.yaml
  • modules/infisical/module.yaml
  • docs/specs/vault-to-infisical-migration-v0/03-notes-and-readme.md
  • runbooks/secrets-pipeline.md
  • Parent issue #64
  • Gate issue #539

Extracted context

  • M02 restore confidence is closed after post-M01 DR evidence.
  • M03 secrets/access hardening is closed for current closeout; future token rotation stays in M10.
  • ADR-0024 says Infisical is the primary backend and Vault is a migration source only.
  • Phase 1 inventory is read-only and must not print secret values.

Acceptance criteria

  • Produce a metadata-only inventory report: Vault engines, paths, key names/counts, and any unreadable paths by status/error class.
  • Do not print, commit, paste, or store secret values.
  • Do not write to Infisical.
  • Do not edit Vault data.
  • Do not stop, restart, seal, unseal, or sunset Vault.
  • Cross-check the inventory shape against module secret references where practical.
  • If Vault is sealed, token access is missing, or any command would expose values, stop and report the safe blocker only.
  • Recommend Phase 2 split/no-go based on inventory quality.

Out of scope

  • Mirroring secrets to Infisical.
  • Per-module cutover.
  • Runtime restarts.
  • Vault shutdown or volume cleanup.
  • VPS1000 / Iskra cross-host secret migration; if found, file/mark as a separate M08/W3e follow-up.

Safety

This is class/security-sensitive because Vault contains platform secrets. Read-only does not mean casual: evidence must be metadata-only.

## Scope Run the first Vault sunset step as a read-only inventory packet. This is Phase 1 from `migrations/vault-to-infisical.md`, carved out of parent #64 so Vault sunset does not start as a large runtime mutation. ## Spec sources - `migrations/vault-to-infisical.md` Phase 1 - `modules/vault/module.yaml` - `modules/infisical/module.yaml` - `docs/specs/vault-to-infisical-migration-v0/03-notes-and-readme.md` - `runbooks/secrets-pipeline.md` - Parent issue #64 - Gate issue #539 ## Extracted context - M02 restore confidence is closed after post-M01 DR evidence. - M03 secrets/access hardening is closed for current closeout; future token rotation stays in M10. - ADR-0024 says Infisical is the primary backend and Vault is a migration source only. - Phase 1 inventory is read-only and must not print secret values. ## Acceptance criteria - Produce a metadata-only inventory report: Vault engines, paths, key names/counts, and any unreadable paths by status/error class. - Do not print, commit, paste, or store secret values. - Do not write to Infisical. - Do not edit Vault data. - Do not stop, restart, seal, unseal, or sunset Vault. - Cross-check the inventory shape against module secret references where practical. - If Vault is sealed, token access is missing, or any command would expose values, stop and report the safe blocker only. - Recommend Phase 2 split/no-go based on inventory quality. ## Out of scope - Mirroring secrets to Infisical. - Per-module cutover. - Runtime restarts. - Vault shutdown or volume cleanup. - VPS1000 / Iskra cross-host secret migration; if found, file/mark as a separate M08/W3e follow-up. ## Safety This is `class/security-sensitive` because Vault contains platform secrets. Read-only does not mean casual: evidence must be metadata-only.
codex added this to the 04 - Vault sunset milestone 2026-05-29 16:51:33 +02:00
Author
Collaborator

#607 inventory result recorded locally in state/reports/m04-vault-phase1-inventory-2026-05-29.md.

Sanitized finding:

secret engines: cubbyhole/, identity/, ssh/, sys/
policy: safe-session-signer
AppRole: safe-session-api
SSH role: safe-session
KV secret/ engine: not observed

Interpretation: this does not look like a general Vault-to-Infisical secret mirror problem. It looks like Vault is currently a narrow internal SSH signer for safe-session-api.

Created follow-up #609 to decide the safe-session/Vault signer future before any Vault sunset continues.

No secret values were printed, no Infisical writes were performed, and Vault was not restarted/stopped/sealed/unsealed.

#607 inventory result recorded locally in `state/reports/m04-vault-phase1-inventory-2026-05-29.md`. Sanitized finding: ```text secret engines: cubbyhole/, identity/, ssh/, sys/ policy: safe-session-signer AppRole: safe-session-api SSH role: safe-session KV secret/ engine: not observed ``` Interpretation: this does not look like a general Vault-to-Infisical secret mirror problem. It looks like Vault is currently a narrow internal SSH signer for `safe-session-api`. Created follow-up #609 to decide the safe-session/Vault signer future before any Vault sunset continues. No secret values were printed, no Infisical writes were performed, and Vault was not restarted/stopped/sealed/unsealed.
Author
Collaborator

Codex update after M04 batch.

Phase 1 read-only inventory is complete enough to close this atomic issue:

  • durable report: state/reports/m04-vault-accelerated-sunset-decision-2026-05-29.md;
  • Vault is present, initialized/unsealed, healthy, raft active;
  • useful non-system engine identified as ssh/;
  • auth methods identified as approle/ and token/;
  • active dependency narrowed to safe-session-api SSH signing path;
  • current readiness evidence confirms no runtime mutation happened yet and safe-session is still on Vault signer;
  • DeepSeek V4 Pro redteam blocked live CA replacement without dual-trust handoff, which is now captured by merged #618.

No secret values were printed or committed. No Vault data was edited. No Vault stop/restart/seal/unseal/sunset happened.

Next work remains under parent #64: CA bootstrap gate, safe-session runtime cutover, smoke/rollback evidence, then Vault quarantine. Destructive deletion remains separately gated.

Codex update after M04 batch. Phase 1 read-only inventory is complete enough to close this atomic issue: - durable report: `state/reports/m04-vault-accelerated-sunset-decision-2026-05-29.md`; - Vault is present, initialized/unsealed, healthy, raft active; - useful non-system engine identified as `ssh/`; - auth methods identified as `approle/` and `token/`; - active dependency narrowed to `safe-session-api` SSH signing path; - current readiness evidence confirms no runtime mutation happened yet and safe-session is still on Vault signer; - DeepSeek V4 Pro redteam blocked live CA replacement without dual-trust handoff, which is now captured by merged #618. No secret values were printed or committed. No Vault data was edited. No Vault stop/restart/seal/unseal/sunset happened. Next work remains under parent #64: CA bootstrap gate, safe-session runtime cutover, smoke/rollback evidence, then Vault quarantine. Destructive deletion remains separately gated.
codex closed this issue 2026-05-29 22:53:55 +02:00
Sign in to join this conversation.
No labels
W6d-automerge-calibration
agent/claude-code
agent/codex
agent/hermes
agent/iskra
agent/ollama
agent/patchwarden
automerge-candidate
class/security-sensitive
cutover-gate
dependency/blocked
dependency/blocks-others
dependency/cross-repo
dependency/needs-confirmation
domain:agents
domain:ci
domain:docs
domain:forgejo
domain:infra
domain:memory
domain:runtime
domain:signal
domain:ux
flow/architecture
flow/blocked
flow/deployed
flow/done
flow/implementation
flow/intake
flow/maintained
flow/observed
flow/ready
flow/refining
flow/retired
flow/review
iterating
judge/codex-candidate
judge/hermes-candidate
judge/low-confidence
judge/needs-refinement
judge/operator-needed
judge/p0
judge/p1
judge/p2
judge/p3
judge/park
judge/patchwarden-candidate
judge/stale-priority
kind/adr
kind/bug
kind/chore
kind/feature
kind/infra
kind/ops
kind/refactor
kind/research
large-impact
merge/auto
merge/manual
merge/manual-dependency-conflict
merge/manual-failing-tests
merge/manual-merge-conflict
merge/manual-missing-review
merge/manual-operator-preference
merge/manual-red-zone
merge/manual-security-sensitive
merge/manual-unclear-scope
merge/manual-unknown
meta
mode:operator-only
mode:patchwarden-iskra-approved
mode:safe-auto
needs-operator-decision
needs-triage
not-ready
observed/erroring
observed/needs-followup
observed/pending
observed/retire-candidate
observed/unused
observed/used
operator-emotional
owner-attention
phase/02
phase/03
priority:p0
priority:p1
priority:p2
priority:p3
proposed
ready-for-agent
ready-for-operator
recovery
review:claude-reviewed
review:codex-reviewed
review:dziadek-reviewed
review:needs-human
risk/exposure
risk/process
risk/product
risk/runtime
safety:external-write
safety:no-prod-mutation
safety:prod-impact
safety:secret-touch
size/large
size/medium
size/small
size/tiny
size/unknown
source/adr
source/agent-generated
source/manual
source/operator-chat
source/voice-note
status:blocked
status:codex-ready
status:merged:pending-evidence
status:needs-evidence
status:operator-needed
status:parked
tier/full
tier/lite
tier/stacked
tier:0-platform-substrate
tier:1-iskra-value-layer
tier:2-tools-products-modules
type:bug
type:chore
type:docs
type:feat
type:policy
type:research
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
pdurlej/platform#607
No description provided.