Plano de Teste — OpenSpec Vault Persistence
Plano de Teste — OpenSpec Vault Persistence
Verifica que artefatos OpenSpec criados por agentes em containers efêmeros
persistem em brain/openspec/changes/ no vault e aparecem no frontend.
T1 — Symlink criado corretamente no boot
Como testar:
# Inspecionar um container sandbox em execução
docker exec vault-job-<id> ls -la /work/openspec/
Esperado:
changes -> /vault-openspec
Falha se: changes for uma pasta comum (não symlink) ou não existir.
T2 — Artefato criado pelo agente persiste no vault
Como testar:
- Abrir uma sessão REPL no vault (ou disparar um job)
- Dentro do container, criar um artefato de teste:
mkdir -p /work/openspec/changes/test-persistence
echo "# Teste de persistência" > /work/openspec/changes/test-persistence/proposal.md
- Derrubar o container:
docker rm -f vault-job-<id>
- Verificar no vault:
ls /brain/openspec/changes/test-persistence/
cat /brain/openspec/changes/test-persistence/proposal.md
Esperado: arquivo existe no vault após o container morrer.
Falha se: arquivo sumiu com o container.
T3 — Segundo container lê artefatos do container anterior
Como testar:
- Com o artefato
test-persistence/proposal.mdjá no vault (T2 passou) - Subir novo container para o mesmo worktree
- Verificar:
docker exec vault-job-<novo-id> cat /work/openspec/changes/test-persistence/proposal.md
Esperado: conteúdo visível, sem precisar re-criar.
T4 — /opsx:propose do OpenSpec escreve no vault
Como testar:
- Em uma sessão de agente, rodar:
/opsx:propose test-openspec-write
- Após o agente criar os artefatos, verificar no host:
ls /root/kodama-vault/brain/openspec/changes/test-openspec-write/
Esperado: proposal.md (e demais artefatos) visíveis no vault.
T5 — Artefatos aparecem no frontend do vault
Como testar:
- Com
test-persistence/proposal.mdno vault - Acessar https://vault.kodama.solutions
- Verificar na sidebar:
openspec > changes > test-persistence > proposal - Clicar no arquivo — deve renderizar o markdown normalmente
Esperado: arquivo navegável na sidebar, conteúdo renderizado.
Como funciona: brain-fs.ts faz walkMd(BRAIN) — qualquer .md embrain/openspec/changes/ aparece automaticamente. Nenhuma mudança no frontend
é necessária.
T6 — Migração de artefatos locais existentes
Cenário: container antigo (sem o mount) criou artefatos locais em/work/openspec/changes/ antes deste PR existir.
Como testar:
- Criar pasta local manualmente dentro de um container:
mkdir -p /work/openspec/changes/legacy-change
echo "# Legacy" > /work/openspec/changes/legacy-change/proposal.md
- Parar e reiniciar o container (sem recriar — simula restart)
- O entrypoint detecta pasta local e migra para o vault
Esperado: após restart, changes vira symlink e conteúdo está no vault.
T7 — Graceful degradation sem o mount
Cenário: VAULT_OPENSPEC_HOST_PATH não setado E brainHostPath não temopenspec/changes/ (edge case de ambiente sem vault).
Esperado: entrypoint loga aviso WARN: /vault-openspec não montado e
o container sobe normalmente com openspec/changes/ local.
Não quebra o container — apenas não persiste.
Cleanup pós-teste
# Remover artefato de teste do vault
rm -rf /root/kodama-vault/brain/openspec/changes/test-persistence
rm -rf /root/kodama-vault/brain/openspec/changes/test-openspec-write