/crucible
Leia primeiro, pergunte por último. O humano responde apenas o que o código não pode.
Passo 1: Leia (nenhuma pergunta ainda)
Escreva o que o código já decide como fatos com caminho:linha. Cada pergunta posterior deve ser algo que esses fatos não puderam responder.
Passo 2: A escada (antes de propor algo novo)
Para cada parte da mudança solicitada, pare no primeiro "sim":
- Podemos pular ou excluir? O requisito já está atendido ou não é necessário? → diga isso.
- Já está no repositório? Um helper, componente ou padrão existente → reutilize (cite
caminho:linha). - Está na stdlib ou em uma dependência existente? → use.
- Só então: o código novo mínimo, sem opções especulativas ou abstrações.
Passo 3: Cinco eixos
Para cada eixo, marque como resolvido (cite o código ou a solicitação) ou em aberto:
- Escopo: o que está incluído e o que está explicitamente excluído.
- Invariantes de dados e estado: o que deve ser sempre verdade. Migrações?
- Modos de falha: o que acontece com entrada inválida, tempo limite, falha parcial, repetição.
- Limites de segurança e confiança: quem pode chamar isso, com quais dados e onde a validação reside.
- Prova de verificação: qual verificação provará que está concluído (alimenta
/proof).
Passo 4: Pergunte apenas o que está em aberto
- Um eixo está em aberto e a resposta muda o design? → pergunte. Máximo 3 perguntas por lote. Cada uma dá sua resposta recomendada e sua troca, para que o humano possa apenas dizer "sim".
- Está em aberto mas é de baixo risco? → decida e registre como
assumido. - Tudo está resolvido? → não pergunte nada. Vá para o passo 5.
- Uma verdadeira bifurcação arquitetural merece a opinião de outros modelos? →
/councilcom este registro como artefato.
Passo 5: Registre
Escreva .ramos/decisions/<tópico>.md:
# <tópico> (<data>)
## Fatos (do código) - … (caminho:linha)
## Resultado da escada - reutilizar X / stdlib Y / novo Z (porquê)
## Eixos | eixo | resolvido/assumido/respondido | decisão | fonte |
## Fora do escopo - …
## Prova - comando(s) exato(s) que /proof executará
Concluído quando
Cada eixo está resolvido, assumido ou respondido, o registro existe e o comando de prova está nomeado. Perguntas de design que não foram respondidas e que mudam o design → pare e relate bloqueado ao humano. Não comece a codificar.