docs(migrations): vault-to-infisical Phase 1-5 execution #64
Labels
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
4 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
pdurlej/platform#64
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Execute the migration plan in migrations/vault-to-infisical.md. Phase 0 (freeze) is done. Phases 1-5 documented but not executed.
Spec sources
Extracted context
What done looks like
Escape hatch: if Vault sealed or token expired, STOP
Risk: risk/runtime, risk/exposure, owner-attention
Trace: Issue #59 item 5, decomposed by glm 2026-05-05, parent #59
Audit feedback (claude orchestrator)
This issue is conceptually correct but scope is too wide for a single PR. Phases 1-5 of
migrations/vault-to-infisical.mdcover: secret inventory, mirroring, per-module cutover ordering, runtime cutover, decommission. Each is a substantial change with its own runtime evidence + rollback semantics.Required amendment before
ready-for-agentSplit into 3-5 child issues, one per migration phase:
docs(migrations): vault-to-infisical Phase 1 — secret inventorydocs(migrations): vault-to-infisical Phase 2 — mirror to Infisicaldocs(migrations): vault-to-infisical Phase 3 — per-module cutover ordering + rollback(Phases 4-5 stay deferred per current issue body's "separate issues" note)Each child uses the
atomic_task.mdtemplate fully + carriesproposed+owner-attentionlabels (this is cutover-gate work). Reference this issue (#64) as parent in their## Trace.After split, this #64 closes with a "split into #N1, #N2, #N3" comment.
The split itself can be done by glm (as a meta-decomposition follow-up) or by claude (orchestrator) — operator choice.
Phase 1 Lite delivery design surfaced as #73
Cross-ref for context:
#73(ops(security): Codex SSH key delivery via ssh-agent with TTL) is a Phase 1 Lite slice of this issue's parent topic — secrets management strategy / vault → infisical migration.#73 is narrower than #64: it's specifically about how the Codex agent receives an SSH private key without plaintext on disk. Path: Bitwarden item → ssh-agent stdin (TTL 1h) → never on disk → Codex uses via socket. Migration path to Phase 1 Full Infisical resolver = one-line swap of key source.
Why Phase 1 Lite first: pre-empts the recommended Bitwarden-tempfile approach in
pdurlej/iskra-openclaw#44, which has 4 paper cuts (disk forensics, no TTL, process-restart leakage, argv leak). Removes them with a 5-line bash change in Codex runtime startup, no architectural commitment to Phase 1 Full.Calling it out here so #64's design space accounts for the SSH-key special case: SSH keys are "just secrets" from the resolver's POV (bytes through stdin/stdout), but ssh-agent on the consumer side is the right safe-handling primitive.
— Claude (overnight pass, 2026-05-05 noc, post-Oracle-GPT-5.5-pro-consult)
pdurlej/platformapdurlej/iskra-openclaw— co gdzie mieszka #74claude referenced this issue2026-05-13 18:42:50 +02:00
W4e handoff note — 2026-05-24
Role: executor
Intent: handoff
Needs owner: no
Opened #442 to record that Vault sunset remains Milestone 04 follow-up, not W4 runtime work. W4's contribution is the Infisical-primary decision from ADR-0024; #64 should still start with read-only Phase 1 inventory and keep the existing gated/reversible migration phases.
Runtime: none.
M04 gate result from #539: keep #64 as the parent/umbrella, but do not execute it as one large issue.
Created first child: #607 — Vault Phase 1 read-only inventory packet.
Current classification: split / parent only. Phase 2+ should not be created until Phase 1 inventory confirms the real Vault contents and module references. No Vault runtime mutation was performed.
#607 Phase 1 inventory changes #64 sequencing.
The live Vault shape is not a bulk KV secret store ready for mirror-to-Infisical. It appears to be the internal
safe-sessionSSH signer:Follow-up #609 now gates Vault sunset. #64 should remain parent/umbrella, but Phase 2 mirror is currently no-go unless a later inventory finds actual KV secrets.
Codex current M04 state after merged PRs #612, #613, #614, #615, #618.
Completed:
Current RS2000 read-only evidence:
/etc/ssh/trusted-user-ca-keys.pemis present with one active CA line.safe-session-apiis still not inlocal-openssh-camode.VAULT_*env refs still exist insafe-session-apiandnp.Next gates, in order:
m04-safe-session-ca-bootstrap-approvedbefore executing the dual-trust CA bootstrap.safe-session-local-ca-preflight.shmust pass.m04-vault-runtime-cutover-approvedbefore restarting onlysafe-session-apiwith the local CA overlay.m04-vault-destructive-cleanup-approved.No destructive/runtime mutation has happened in this comment/update.
M04 status checkpoint after #619/#610:
safe-session-apino longer has a live Vault runtime dependency and is running withSAFE_SESSION_SIGNER_MODE=local-openssh-ca.Remaining gates before Vault destruction:
m04-vault-quarantine-approved.m04-vault-destructive-cleanup-approved.Next planned non-destructive step: open/execute the Post-M04 DR refresh work item, then stop for operator decision before quarantine.
M04/M02 checkpoint after #624:
Merged evidence:
state/reports/m02-post-m04-dr-refresh-2026-05-30.mdstate/reports/m02-post-m04-vps1000-sandbox-drill-2026-05-30.mdInterpretation:
Next possible step, only with explicit phrase:
m04-vault-quarantine-approved-> stop only Vault, smoke safe-session/SSH/Uptime/readiness, prove rollback bydocker start.Destructive cleanup remains blocked until a later separate phrase:
m04-vault-destructive-cleanup-approved.Role: executor
Intent: checkpoint
Needs owner: no
M04-D Vault quarantine is complete and green.
Evidence PR: #626
Sanitized runtime result:
home-platform-vault-1is present and exited.safe-session-apiremainslocal-openssh-ca, running and healthy.internal-opscert forllmopsafter Vault stop.llmops.vault-sunset-readiness.shstill passes.Destructive cleanup remains pending. Operator has given conditional approval phrase for the next step, but execution should wait for the 10-minute observation pass, DeepSeek V4 Pro redteam, and exact cleanup scope confirmation.
Next: run timed observation + DeepSeek redteam, then decide whether M04-E destructive cleanup can proceed.
M04-E Vault destructive cleanup complete.
Role: executor
Actor: codex
Evidence file:
state/reports/m04-vault-destructive-cleanup-2026-05-30.mdSanitized result:
bdb756e3c7bc3dba0d4362cf826f6eee1fa5c534.home-platform-vault-1.home-platform_vault_data,home-platform_vault_logs.hashicorp/vault:1.21.3,hashicorp/vault:1.21.2./opt/pdurlej-platform/runtime/legacy-import/*and/opt/vps-home-platform-infra/env/*.internal-opsreturned 200,cloud-notefailed as expected, SSH cert login returnedllmops.Out of scope / follow-up:
/root/*and/home/llmops/vps-home-platform-infra/*were not active runtime references and were not deleted in M04-E. Move them to low-priority M10 host cleanup if still useful.Secret output: none.
Closing M04 Vault sunset execution.
Completed evidence:
bdb756e3c7bc3dba0d4362cf826f6eee1fa5c534.m04-vault-destructive-cleanup-approved.state/reports/m04-vault-destructive-cleanup-2026-05-30.md.internal-ops,cloud-noterejected as expected, SSH cert login returnedllmops, unhealthy containers 0.Residual historical host references were moved to low-priority M10 follow-up: #628.
Secret output: none.