Mechanical rename produced by scripts/msd-rename.cjs: gsd/Gsd/GSD -> msd/Msd/MSD across contents and paths, upstream package/repo coordinates -> @golem15/msd-core and golem15com/msd-core. Deep links into upstream history, sibling upstream packages, the GSD-2 import feature, CHANGELOG.md and .changeset/ are kept as-is. Hand edits on top: MSD block-letter banner and logos, LICENSE copyright line, package/plugin identity, regenerated lockfile, install-tree fixtures, derived registries and benchmark baseline; migration checksum baseline re-locked (MSD keeps its own install state, so no install had applied the old sums); sort-order and regex-escaped expectations in tests adjusted.
173 lines
6.4 KiB
Markdown
173 lines
6.4 KiB
Markdown
# Como depurar uma execução com falha
|
||
|
||
**Objetivo:** Recuperar quando uma execução de fase falha, trava ou produz trabalho incompleto — e retomar de forma limpa sem perder o progresso ou repetir o trabalho que já foi concluído com sucesso.
|
||
|
||
**Pré-requisitos:** Você executou `/msd-execute-phase N` e a execução parou antes de gravar `VERIFICATION.md`, ou você vê saída inesperada, arquivos ausentes ou um indicador de progresso travado.
|
||
|
||
---
|
||
|
||
## Detectar se a execução travou ou falhou
|
||
|
||
Antes de tomar qualquer ação de recuperação, determine o que realmente aconteceu.
|
||
|
||
### Se você ver "Spawning…" sem saída após 1–5 minutos
|
||
|
||
Isso é normal, não é um travamento. Os subagentes MSD são executados em uma janela de contexto isolada. A nota de atividade na linha de spawn confirma isso. Não interrompa a sessão.
|
||
|
||
Se já se passaram mais de 10 minutos sem resultado, verifique a barra lateral do Claude Code. Se a tarefa do agente aparecer como concluída mas nenhuma saída tiver aparecido, o resultado pode ter sido perdido em uma troca de contexto — execute novamente o mesmo comando:
|
||
|
||
```bash
|
||
/msd-execute-phase 1
|
||
```
|
||
|
||
O MSD verifica a existência de arquivos `SUMMARY.md` antes de despachar os executores. Planos que já possuem um são ignorados automaticamente.
|
||
|
||
### Se a execução parou no meio de uma onda com uma mensagem de erro
|
||
|
||
Verifique o histórico do git para ver quais planos foram commitados com sucesso:
|
||
|
||
```bash
|
||
git log --oneline -20
|
||
```
|
||
|
||
Planos que commitaram seu trabalho terão uma entrada como `feat(01-02): …`. Planos sem um commit estão incompletos e serão executados novamente quando você executar o comando novamente.
|
||
|
||
### Se o executor commitou o código mas não gravou SUMMARY.md
|
||
|
||
O MSD detecta isso na próxima execução e apresenta uma porta de retomada segura com três opções:
|
||
|
||
- **Fechar manualmente** — inspecione os commits você mesmo, escreva `SUMMARY.md` e execute novamente.
|
||
- **Executar novamente do zero** — reverta ou substitua os commits parciais antes de despachar um novo executor.
|
||
- **Marcar e pular** — registre a anomalia e continue, apenas com sua confirmação explícita.
|
||
|
||
---
|
||
|
||
## Diagnosticar a causa raiz
|
||
|
||
### Execute `/msd-debug --diagnose`
|
||
|
||
Se a execução produziu saída incorreta, código com stubs ou uma falha de verificação, use o modo somente de diagnóstico para investigar sem aplicar nenhuma correção:
|
||
|
||
```bash
|
||
/msd-debug --diagnose "Phase 2 executor produced stubs instead of real code"
|
||
```
|
||
|
||
`--diagnose` para na causa raiz sem tocar nos seus arquivos. Ele cria um arquivo de sessão em `.planning/debug/<slug>.md` para que você possa retomar a investigação mais tarde, se necessário.
|
||
|
||
Para iniciar uma sessão de depuração completa que também aplica uma correção:
|
||
|
||
```bash
|
||
/msd-debug "Login middleware not handling 401 correctly after phase 3"
|
||
```
|
||
|
||
O MSD coleta sintomas, executa uma investigação estruturada usando o método científico e propõe uma correção. Se `tdd_mode: true` estiver definido na sua configuração, ele exige um teste com falha antes de aplicar qualquer correção.
|
||
|
||
### Verificar sessões de depuração ativas
|
||
|
||
```bash
|
||
/msd-debug list
|
||
```
|
||
|
||
Mostra todas as sessões abertas com sua hipótese atual e próxima ação. Para retomar uma sessão específica:
|
||
|
||
```bash
|
||
/msd-debug continue <slug>
|
||
```
|
||
|
||
---
|
||
|
||
## Executar uma análise post-mortem com `/msd-forensics`
|
||
|
||
Se a causa não estiver clara a partir da saída de erro — por exemplo, planos referenciam arquivos inexistentes, a execução produziu resultados inesperados ou o estado parece corrompido — execute uma investigação forense:
|
||
|
||
```bash
|
||
/msd-forensics "Phase 3 execution stalled after wave 1"
|
||
```
|
||
|
||
O MSD analisa o histórico do git, a completude dos artefatos em `.planning/`, a consistência de STATE.md, o trabalho não commitado e as worktrees órfãs. Ele grava um relatório estruturado em `.planning/forensics/report-<timestamp>.md` e apresenta as etapas de remediação recomendadas.
|
||
|
||
`/msd-forensics` é somente leitura — ele nunca modifica os arquivos do seu projeto.
|
||
|
||
**O que ele detecta:**
|
||
|
||
- **Loop travado** — o mesmo arquivo aparece em três ou mais commits consecutivos em uma janela de tempo curta (confiança ALTA se as mensagens de commit forem semelhantes)
|
||
- **Artefatos ausentes** — uma fase tem commits mas não tem `SUMMARY.md` ou `VERIFICATION.md`
|
||
- **Trabalho abandonado** — alterações não commitadas com STATE.md mostrando execução em andamento e o último commit com mais de duas horas de idade
|
||
- **Falha ou interrupção** — alterações não commitadas combinadas com um estado de execução ativo e worktrees órfãs
|
||
- **Desvio de escopo** — commits recentes tocam arquivos fora do conjunto de arquivos esperado da fase atual
|
||
|
||
---
|
||
|
||
## Retomar a execução após a recuperação
|
||
|
||
Assim que o problema subjacente for resolvido, execute novamente o comando de execução:
|
||
|
||
```bash
|
||
/msd-execute-phase 1
|
||
```
|
||
|
||
O MSD ignora planos cujo `SUMMARY.md` já existe e despacha executores apenas para os planos restantes.
|
||
|
||
Se precisar executar novamente apenas uma onda específica:
|
||
|
||
```bash
|
||
/msd-execute-phase 1 --wave 2
|
||
```
|
||
|
||
---
|
||
|
||
## Reverter com `/msd-undo`
|
||
|
||
Se a execução produziu código que você deseja descartar completamente, reverta usando o manifesto do plano em vez do `git revert` manual:
|
||
|
||
### Reverter um único plano
|
||
|
||
```bash
|
||
/msd-undo --plan 03-02
|
||
```
|
||
|
||
Reverte todos os commits do plano `02` da fase `3`. O MSD exibe uma porta de confirmação antes de gravar qualquer alteração.
|
||
|
||
### Reverter uma fase inteira
|
||
|
||
```bash
|
||
/msd-undo --phase 03
|
||
```
|
||
|
||
Reverte todos os commits da fase `3`. O MSD verifica se alguma fase subsequente depende desta fase e avisa você antes de prosseguir.
|
||
|
||
### Selecionar interativamente a partir de commits recentes
|
||
|
||
```bash
|
||
/msd-undo --last 5
|
||
```
|
||
|
||
Mostra os cinco commits MSD mais recentes e permite que você selecione quais reverter.
|
||
|
||
---
|
||
|
||
## Restaurar o contexto da sessão após uma pausa
|
||
|
||
Se você retornou ao projeto após uma reinicialização de contexto ou uma nova sessão:
|
||
|
||
```bash
|
||
/msd-resume-work
|
||
```
|
||
|
||
Restaura o contexto completo da sua sessão a partir do último handoff, incluindo a fase atual, bloqueadores e onde a execução parou.
|
||
|
||
Como alternativa, para ver sua posição atual e avançar automaticamente para o próximo passo correto:
|
||
|
||
```bash
|
||
/msd-progress --next
|
||
```
|
||
|
||
---
|
||
|
||
## Relacionados
|
||
|
||
- [Executar uma fase](execute-a-phase.md)
|
||
- [Recuperar e solucionar problemas](recover-and-troubleshoot.md)
|
||
- [Comandos](../COMMANDS.md)
|
||
- [Índice da documentação](../README.md)
|