ll-skills 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +105 -0
  3. package/agents/ll-implementador.md +23 -0
  4. package/bin/install.js +475 -0
  5. package/hooks/ll-skills-check-update.js +157 -0
  6. package/package.json +38 -0
  7. package/skills/ll-atualizar/SKILL.md +68 -0
  8. package/skills/ll-decidir-antes/SKILL.md +81 -0
  9. package/skills/ll-decidir-antes/referencias/protocolo-entrevista.md +112 -0
  10. package/skills/ll-decidir-antes/referencias/template-spec.md +238 -0
  11. package/skills/ll-desarmar/SKILL.md +254 -0
  12. package/skills/ll-desarmar/referencias/execucao-adversarial.md +217 -0
  13. package/skills/ll-desarmar/referencias/humanos-e-substitutos.md +116 -0
  14. package/skills/ll-desarmar/referencias/placar-e-realimentacao.md +140 -0
  15. package/skills/ll-orquestrar/SKILL.md +100 -0
  16. package/skills/ll-pesquisar/SKILL.md +159 -0
  17. package/skills/ll-pesquisar/referencias/frente-de-pesquisa.md +147 -0
  18. package/skills/ll-pesquisar/referencias/sintese-e-fontes.md +148 -0
  19. package/skills/ll-pesquisar-mercado/SKILL.md +112 -0
  20. package/skills/ll-pesquisar-mercado/referencias/dossie.md +375 -0
  21. package/skills/ll-pesquisar-mercado/referencias/indice-e-fechamento.md +122 -0
  22. package/skills/ll-pesquisar-mercado/referencias/padroes-de-pesquisa.md +149 -0
  23. package/skills/ll-verificar-entrega/SKILL.md +73 -0
  24. package/skills/ll-verificar-entrega/referencias/briefs-auditoria.md +291 -0
  25. package/skills/ll-voltar-do-futuro/SKILL.md +239 -0
  26. package/skills/ll-voltar-do-futuro/referencias/anti-padroes-e-fundamentos.md +201 -0
  27. package/skills/ll-voltar-do-futuro/referencias/vetores-e-testes.md +228 -0
@@ -0,0 +1,238 @@
1
+ # Template comentado — SPEC.md + PROGRESS.md
2
+
3
+ Leitor: o agente da skill `ll-decidir-antes`, na fase 4. Você escreve o SPEC.md a partir da FILA.md fechada; o consumidor é um implementador autônomo que NÃO conhece esta skill e pode rodar por dias — a spec é tudo o que ele tem. Autossuficiência é o requisito; cada seção abaixo vem com o seu papel e o que a invalida.
4
+
5
+ Orçamento: o SPEC.md inteiro cabe em ~300 linhas. Detalhe fino (mapa do sistema, comparativos de pesquisa, copy literal extensa) entra por referência de caminho, lido just-in-time — spec longa é spec que o implementador para de consultar. Após aprovação, o SPEC.md é append-only: decisões novas são entradas novas com supersede explícito, nunca reescrita silenciosa.
6
+
7
+ Precedência entre seções: em conflito, a de número menor vence. Declare isso no preâmbulo — sem hierarquia explícita, o implementador sob pressão sacrifica o inegociável para salvar a preferência.
8
+
9
+ ---
10
+
11
+ ## §0 — Cabeçalho e preâmbulo
12
+
13
+ Papel: contrato de leitura. Fixa autossuficiência, precedência e o "não re-litigar" antes de qualquer conteúdo. Invalidado por: pivô de escopo aprovado pelo dono → versão nova, com a anterior preservada no git.
14
+
15
+ <template>
16
+ # SPEC: <nome> — v1 (<data>) — status: APROVADA
17
+
18
+ Para o implementador: leia este arquivo inteiro antes de qualquer código. Ele é
19
+ autossuficiente — os materiais de origem só são abertos nos caminhos citados aqui,
20
+ no trecho citado. As decisões da seção 3 foram tomadas com o dono do projeto: são
21
+ contrato, não sugestões — não as re-litigue. Em conflito entre seções, a de número
22
+ menor prevalece (2 > 3 > 4 > 5).
23
+ </template>
24
+
25
+ ## §1 — Objetivo e resultado final
26
+
27
+ Papel: âncora anti-drift. É o parágrafo que o implementador relê a cada marco para responder "o que estou construindo mesmo?". Um parágrafo, com o teste de sucesso de mais alto nível — comportamento de ponta a ponta, não lista de features. Invalidado por: mudança de objetivo = spec nova, não edição.
28
+
29
+ <template>
30
+ ## 1. Objetivo e resultado final
31
+ Quando este trabalho terminar, um assinante importa um extrato CSV do banco, revisa
32
+ as transações categorizadas automaticamente e exporta o relatório mensal em PDF —
33
+ de ponta a ponta, sem intervenção manual. Teste de mais alto nível: o fluxo
34
+ importar → revisar → exportar completa com `fixtures/extrato-real.csv` e o PDF
35
+ gerado contém as 3 seções do relatório.
36
+ </template>
37
+
38
+ ## §2 — Invariantes (inegociáveis)
39
+
40
+ Papel: a constituição. Lista numerada, ≤15 itens, linguagem normativa MUST/NEVER — o implementador segue palavras normativas com mais fidelidade que parágrafos. Ficam no topo porque compactação de contexto e primazia preservam o início do arquivo. Entram aqui: stack travada, contratos que não podem quebrar, proibições absolutas. Invariante só muda pelo dono, via escalada — nunca pelo implementador.
41
+
42
+ <template>
43
+ ## 2. Invariantes (MUST/NEVER)
44
+ I-01. MUST manter todas as suítes existentes verdes em todo commit.
45
+ I-02. NEVER deletar, desabilitar ou editar teste ou critério de aceite — mudança
46
+ neles é escalada (seção 7), sem exceção.
47
+ I-03. MUST usar o Postgres já provisionado; NEVER introduzir outro datastore.
48
+ I-04. NEVER rodar migração destrutiva, deleção de dados ou push forçado fora do
49
+ que um marco autoriza explicitamente.
50
+ I-05. MUST manter compatibilidade do endpoint público `GET /api/v1/reports`
51
+ (contrato em `docs/spec-relatorios/mapas/api.md`).
52
+ </template>
53
+
54
+ ## §3 — Decisões tomadas (mini-ADRs, append-only)
55
+
56
+ Papel: onde o porquê vive. Sem o porquê e a alternativa rejeitada, o implementador re-decide errado no primeiro atrito — e redescobre com entusiasmo exatamente a alternativa que o dono rejeitou. A **Origem** separa o que é escalável do que não é: resposta do dono = contrato fechado; assunção = escalável por evidência contrária. Transcreva da FILA.md só as decisões materiais (todo ALTO; MÉDIO que muda contrato); o restante fica na FILA, referenciada por caminho.
57
+
58
+ Regras herdadas do registro (falhas reais que esta seção previne):
59
+ - Decisão que cita um entregável **nomeia o entregável** (arquivo, rota, migração, tela). "Alimenta o CTA" sem nomear o CTA é re-pergunta na semana 2.
60
+ - Decisão contra a recomendação carrega a marca e as consequências aceitas — e não é re-litigada.
61
+ - Supersede é explícito: entrada nova com `Supersede: DEC-NNN`; a original ganha ~~strikethrough~~ + data + quem decidiu. Nunca reescrita silenciosa.
62
+
63
+ <template>
64
+ ## 3. Decisões
65
+ ### DEC-004 — Identidade de contato: chave canônica ao lado (dono, 2026-08-20)
66
+ - Escolha: coluna canônica DERIVADA ao lado da original, sem backfill.
67
+ - Porquê: com DEC-001 = big-bang, o schema novo nasce sem custo de migração
68
+ incremental; a original preserva o histórico de auditoria.
69
+ - Alternativa rejeitada: normalizar in place — reescreveria os 4 writers de
70
+ `contact-service` e quebraria a trilha de auditoria.
71
+ - Origem: resposta do dono (entrevista, PERGUNTA 4/12).
72
+ - Entregáveis: migração `migrations/2026xxxx_add_canonical_key.sql`; atualização
73
+ de `src/services/contact-identity.ts`.
74
+
75
+ ### DEC-007 — Retenção de uploads: 90 dias (dono, CONTRA a recomendação, 2026-08-20)
76
+ - Escolha: reter CSVs originais por 90 dias. Recomendação era 30 dias (custo de
77
+ storage + LGPD); dono aceitou o custo pelo suporte a re-processamento.
78
+ - Risco aceito conscientemente: ~3× storage; revisão de política LGPD é pendência
79
+ P-02 (dono: humano, marco M4). NÃO re-litigar.
80
+
81
+ ### ASS-002 — Datas: date-fns (assunção, two-way door)
82
+ - Default: date-fns, já presente no lockfile e usada em 12 módulos.
83
+ - Porquê: troca posterior é um codemod local; não condiciona outra decisão.
84
+ - Escalar se: a evidência exigir aritmética de timezone que date-fns não cobre.
85
+ </template>
86
+
87
+ ## §4 — Critérios de aceite (verificáveis por comando)
88
+
89
+ Papel: o oráculo. Critério bom é binário, observável e inequívoco — teste: duas pessoas poderiam discordar se passou? Então não é critério. Formato QUANDO/O SISTEMA (ou Given/When/Then), com valores exatos e caminhos de erro cobertos.
90
+
91
+ **Regra dura: critério sem comando de verificação executável não entra nesta seção.** Ele vira pendência com dono nomeado e marco (seção 5c) até ganhar um comando — foi assim que "maximizar cache ≥90%" vazou numa execução real: estava escrito, ninguém tinha como verificar, e quem pegou a falha foi o dono olhando a fatura. Verificação é por comando, nunca por julgamento do implementador.
92
+
93
+ <template>
94
+ ## 4. Critérios de aceite
95
+ CA-03 — Importação com linha inválida
96
+ QUANDO o CSV contém uma linha com valor não numérico, O SISTEMA importa as
97
+ demais linhas e lista a rejeitada com o motivo "valor inválido na coluna N".
98
+ Verificação: `npm test -- import.spec.ts -t "linha inválida"` → exit 0.
99
+
100
+ CA-07 — Endpoint protegido
101
+ QUANDO a requisição não tem token, `GET /api/v1/reports` responde 401 com corpo
102
+ `{"error":"unauthorized"}`.
103
+ Verificação: `curl -s -o /dev/null -w "%{http_code}" localhost:3000/api/v1/reports` → `401`.
104
+ </template>
105
+
106
+ Contra-exemplo (não entra): "a importação lida bem com dados ruins" — não falseável; ou o CA-03 sem a linha de Verificação — vira P-NN com dono, não critério.
107
+
108
+ ## §5 — Fora de escopo, liberdades e pendências
109
+
110
+ Papel: a cerca dos dois lados — previne tanto scope creep quanto paralisia. (a) lista o que NÃO construir (o não-escopo é listado, não omitido); (b) lista as two-way doors delegadas ao implementador — cada uma registrada no PROGRESS.md quando tomada; (c) pendências que sobraram da entrevista, cada uma com dono e marco — pendência sem dono some.
111
+
112
+ <template>
113
+ ## 5. Escopo negativo, liberdades, pendências
114
+ (a) Fora de escopo — não construir: exportação para Excel; multi-moeda;
115
+ onboarding novo (fica como está).
116
+ (b) Liberdade do implementador (registrar no PROGRESS.md ao decidir): estrutura
117
+ interna de componentes; naming de módulos novos; texto de mensagens de erro
118
+ (tom: direto, sem jargão).
119
+ (c) Pendências: P-02 — revisão LGPD da retenção de 90d (dono: humano, até M4);
120
+ P-03 — comando de verificação para o custo por request (dono: implementador,
121
+ definir no M1 e promover a CA).
122
+ </template>
123
+
124
+ ## §6 — Marcos
125
+
126
+ Papel: fatiamento em unidades de sessão. 3–7 marcos; cada um cabe numa sessão de trabalho — marco gigante é o modo de falha "tentar tudo e esgotar contexto no meio". `passes` nasce `false` e é mecânico: só vira `true` com os comandos passando (impede declaração prematura de conclusão). Estado dos marcos vive AQUI (é a exceção de mutabilidade da spec: só o campo `passes` muda, e só de false para true).
127
+
128
+ <template>
129
+ ## 6. Marcos
130
+ ### M1 — Parser de CSV com rejeição por linha — passes: false
131
+ - Entregável: `src/import/parser.ts` + `import.spec.ts`.
132
+ - Verificação (todas passam): `npm test -- import.spec.ts`; `npm run typecheck`.
133
+ ### M2 — Categorização automática — passes: false
134
+ - Entregável: `src/import/categorize.ts`; cobre CA-04, CA-05.
135
+ - Verificação: `npm test -- categorize.spec.ts`; `npm run typecheck`.
136
+ </template>
137
+
138
+ ## §7 — Protocolo de execução
139
+
140
+ Papel: o anti-drift. Este texto vai **completo e verbatim** em toda spec (parametrize `<comando de sanidade>` e os orçamentos) — qualquer agente que receba o SPEC.md o segue sem conhecer a skill que o gerou.
141
+
142
+ <template>
143
+ ## 7. Protocolo de execução
144
+ Estas regras regem o implementador desta spec e prevalecem sobre hábitos ou
145
+ instruções genéricas de sessão.
146
+
147
+ Início de cada sessão:
148
+ 1. Leia esta spec inteira, depois PROGRESS.md e `git log --oneline -20`.
149
+ 2. Rode a sanidade (`<comando de sanidade>`) e confirme baseline verde ANTES de
150
+ implementar. Vermelho herdado: registre no PROGRESS.md e restaure o verde
151
+ antes de avançar qualquer marco.
152
+ 3. Escolha o próximo marco `passes: false` na ordem da seção 6. Um marco por
153
+ sessão/ciclo.
154
+
155
+ Durante o marco:
156
+ 4. Releia as seções 1 e 2 ao iniciar cada marco.
157
+ 5. `passes: true` somente com os comandos de verificação do marco passando nesta
158
+ sessão — nunca por julgamento.
159
+ 6. Critérios de aceite e testes não são editáveis (I-02). Critério errado ou
160
+ inatingível é motivo de escalada, não de edição.
161
+ 7. Decisão two-way tomada em voo (seção 5b): uma linha no PROGRESS.md com o
162
+ porquê.
163
+ 8. PROGRESS.md é cronológico e append-only: feito, decisão, surpresa, próximo
164
+ passo. Commits pequenos e descritivos a cada unidade verde. Antes de
165
+ registrar qualquer progresso (aqui ou ao dono), audite cada afirmação contra
166
+ um resultado de ferramenta desta sessão — comando rodado, teste executado,
167
+ arquivo lido. Afirmação sem resultado que a sustente não é registrável.
168
+
169
+ Escalada — pare o marco e escale se, e somente se:
170
+ (a) a ação é irreversível e nenhum marco a autoriza (migração destrutiva,
171
+ deleção de dados, push forçado, gasto externo);
172
+ (b) a evidência do código contradiz uma decisão da seção 3 ou torna um
173
+ invariante da seção 2 insatisfazível;
174
+ (c) o orçamento estourou: <N> tentativas no mesmo erro, ou <limite> de
175
+ tempo/tokens no marco.
176
+ Fora dessas classes, decida e registre — sem perguntar por cadência nem por
177
+ conforto.
178
+
179
+ Ambiguidade nova (o humano pode não estar presente):
180
+ 9. Escreva `decisoes/DEC-P-NNN.md` (formato ao fim da spec) com pergunta,
181
+ opções com custo, recomendação, impacto e fonte. Se ela não bloqueia o marco
182
+ atual, continue; se bloqueia, passe ao próximo marco desbloqueado. Nunca
183
+ decida silenciosamente uma one-way door; nunca pare tudo por uma ambiguidade
184
+ localizada.
185
+ 10. A realidade mudou algo que a spec referencia (rota reescrita por marco
186
+ anterior, arquivo movido, decisão que envelheceu): não obedeça a referência
187
+ morta nem "conserte" a spec — registre a contradição no PROGRESS.md e trate
188
+ como escalada (b). A resposta do dono entra na seção 3 como entrada nova com
189
+ `Supersede: DEC-NNN`.
190
+
191
+ Precedência: seção 2 > 3 > 4 > 5. Intenção: spec > código existente. Fato
192
+ descoberto: código > spec — reporte o conflito em vez de resolvê-lo
193
+ reinterpretando a spec.
194
+ </template>
195
+
196
+ ---
197
+
198
+ ## PROGRESS.md — esqueleto (criado por você na fase 4, mantido pelo implementador)
199
+
200
+ Estado mutável fica aqui, fora da spec — a spec permanece estável e cacheável; o par spec/progress é o que permite a qualquer sessão nova reconstruir o estado só do filesystem.
201
+
202
+ <template>
203
+ # PROGRESS — <nome da spec>
204
+
205
+ ## Estado
206
+ - Marco atual: M1 — <título> · passes: false
207
+ - Sanidade: <verde|vermelho> (<data>, `<comando>`)
208
+ - Pendências abertas: P-02 (dono: humano, até M4) · DEC-P-001 (aguarda humano)
209
+ - Próximo passo: <concreto>
210
+
211
+ ## Diário (append-only, mais recente por último)
212
+ - <data hora> — M1: parser implementado; `npm test -- import.spec.ts` verde;
213
+ commit abc123. passes: true.
214
+ - <data hora> — [two-way, §5b] mensagens de erro em pt-BR sem código interno —
215
+ tom da spec pede "sem jargão".
216
+ - <data hora> — [surpresa] `contact-service` já normaliza telefone na
217
+ escrita (src/services/contact.ts:88) — sem conflito com DEC-004; registrado.
218
+ </template>
219
+
220
+ ## decisoes/DEC-P-NNN.md — formato da ambiguidade serializada
221
+
222
+ A mesma anatomia de uma pergunta da entrevista, gravada em arquivo para o humano responder assincronamente. Inclua este formato ao fim do SPEC.md (após a seção 7) para o implementador copiar.
223
+
224
+ <template>
225
+ # DEC-P-001 — <a pergunta em uma linha>
226
+ - Contexto: <o que a spec diz + o que o código mostra, com arquivo:linha>
227
+ - Opções:
228
+ A) <opção> — <custo/consequência> ← recomendada, porque <porquê>
229
+ B) <opção> — <custo/consequência>
230
+ - Impacto: <marcos afetados; bloqueia M-n? o que segue enquanto isso>
231
+ - Status: AGUARDANDO HUMANO (<data>)
232
+ </template>
233
+
234
+ ---
235
+
236
+ ## Fecho da fase 4
237
+
238
+ Escritos os dois arquivos: confira que toda decisão ALTO da FILA.md está na seção 3 ou referenciada; que cada critério da seção 4 tem comando; que cada pendência tem dono e marco; que a seção 7 está completa com sanidade e orçamentos preenchidos. Commit. Siga para a fase 5 do SKILL.md.
@@ -0,0 +1,254 @@
1
+ ---
2
+ name: ll-desarmar
3
+ description: Executa os testes desarmadores e as POCs com critério de aceite pré-registrado — confere cada teste contra a anatomia de 8 partes antes de rodar, executa com disciplina "reprova primeiro" (amostra adversarial, ground truth independente, auditoria de contexto limpo) e fecha o placar com veredicto medido por falha. Use quando pedirem para rodar os testes do premortem, executar uma POC ou spike com critério de aceite, desarmar riscos ou premissas, validar barato uma premissa antes de construir, ou preencher o placar de veredictos.
4
+ ---
5
+
6
+ # Desarmar
7
+
8
+ Listar risco não desarma nada. Uma falha prevista só sai da lista quando um teste barato
9
+ rodou contra um aceite pré-registrado e devolveu um número. Esta skill executa esses testes
10
+ e fecha o placar — é a metade do premortem que costuma faltar, e sem ela o exercício inteiro
11
+ vira teatro: a sensação de risco endereçado enquanto o plano segue intocado.
12
+
13
+ O padrão de qualidade é o inverso do intuitivo: **o teste vale pelo que consegue reprovar**.
14
+ Aprovação fácil é o resultado mais perigoso, porque compra confiança sem pagar por ela — num
15
+ caso real, um critério aprovado pelos números agregados escondia recall de 7,7%, e só uma
16
+ auditoria adversarial de contexto limpo o reprovou; depois de corrigido, passou com 100%.
17
+ Reprovar é sucesso do método: **CONFIRMADA, COM ROTA DE SAÍDA QUANTIFICADA** é o resultado
18
+ de maior valor que esta skill produz, porque redesenha o produto antes da primeira linha de
19
+ código.
20
+
21
+ ## Arquivos desta skill
22
+
23
+ Resolva o **caminho absoluto do diretório desta skill** no início — os briefs precisam dele
24
+ literal, e subagentes não herdam este contexto.
25
+
26
+ | Arquivo | Quem lê | Quando |
27
+ |---|---|---|
28
+ | `referencias/execucao-adversarial.md` | você, todo executor e todo auditor | D2 e D3 |
29
+ | `referencias/humanos-e-substitutos.md` | você e quem monta o kit | D1, quando um teste exige terceiros |
30
+ | `referencias/placar-e-realimentacao.md` | você | D4 e D5 |
31
+
32
+ Quando a skill `ll-voltar-do-futuro` estiver instalada ao lado,
33
+ `../voltar-do-futuro/referencias/vetores-e-testes.md` é a fonte canônica do **desenho** do
34
+ teste (anatomia de 8 componentes, padrões por tipo de incógnita). Aqui a leitura é de
35
+ **conformidade e execução** — o teste já existe, a pergunta é se ele está pronto para rodar.
36
+
37
+ ## Regras invioláveis
38
+
39
+ 1. **O aceite congela antes de rodar.** Nenhum teste executa sem critério numérico
40
+ pré-registrado e sem a frase "reprova se ___". Teste incompleto volta para ser completado
41
+ **antes** da execução, com data de congelamento no plano. Completar critério depois de ver
42
+ os dados não é teste, é justificação.
43
+ 2. **Reprova primeiro.** Quem executa procura ativamente o resultado que reprova: o formato
44
+ raro, o caso limítrofe, a classe de entrada esquisita. Passar sem esforço adversarial não
45
+ é aprovação — é auditoria pendente.
46
+ 3. **Amostra adversarial e ground truth independente do sistema testado.** Amostra fácil
47
+ produz aprovação falsa, e aprovação falsa é pior que não testar. Sem verdade externa, você
48
+ está medindo o sistema contra si mesmo.
49
+ 4. **Número agregado não é veredicto.** Todo resultado sai quebrado por classe de entrada. A
50
+ média esconde exatamente a classe onde o produto morre; a fronteira de validade só aparece
51
+ na quebra.
52
+ 5. **O aceite não se ajusta post-hoc.** Ficou no fio (79,7% contra aceite de 80%)? Isso é
53
+ DESARMADA COM CONDIÇÕES, com a condição escrita — nunca DESARMADA.
54
+ 6. **Simulação não vira humano.** Substituto de terceiros roda com o perfil oculto do
55
+ instrumento e com o que ele prova e o que **não** prova escrito no resultado.
56
+ 7. **A decisão pré-comprometida se executa.** O número dispara o ramo que já estava escrito;
57
+ ele não reabre a discussão. Racionalizar o número ruim no dia seguinte é o modo de falha
58
+ que o pré-compromisso existe para impedir.
59
+
60
+ ## Entradas
61
+
62
+ Reúna os testes de onde eles estiverem, nesta ordem de prioridade:
63
+
64
+ - `docs/premortem/premortem.md` — o bloco **(c)** de cada falha, na ordem de letalidade, com
65
+ o TOP 3 primeiro. Esta é a entrada canônica.
66
+ - `docs/decisoes-em-aberto.md` e o **Estado da decisão** de `docs/README.md` — decisões em
67
+ aberto do dossiê de pesquisa cujo método de resolução já está especificado.
68
+ - Um teste descrito pelo usuário na conversa, ad-hoc. Trate igual: ele atravessa o mesmo
69
+ portão de D0 antes de rodar.
70
+
71
+ Sem nenhuma das três, não há o que executar: peça a falha ou a decisão que o teste desarma,
72
+ porque teste sem premissa alvo não tem como ter aceite.
73
+
74
+ Artefatos que esta skill escreve:
75
+
76
+ ```
77
+ docs/desarmar/plano-de-testes.md # pré-registro congelado, com data
78
+ docs/desarmar/resultados/<slug>.md # um relatório por teste
79
+ docs/desarmar/kits/<slug>/ # protocolo + formulário dos testes com humanos
80
+ docs/premortem/placar.md # o placar (ou docs/desarmar/placar.md sem premortem)
81
+ ```
82
+
83
+ ## D0 — Congelar o pré-registro
84
+
85
+ Escreva `docs/desarmar/plano-de-testes.md`: uma seção por teste, copiando **literalmente** o
86
+ bloco (c) de origem, e submeta cada uma ao portão de conformidade.
87
+
88
+ | # | Pergunta de conformidade | Falta ⇒ o que fazer antes de rodar |
89
+ |---|---|---|
90
+ | 1 | Existe a afirmação falsificável, uma frase no presente do indicativo? | Escreva-a a partir da falha. Se não sai, o teste ataca um tema, não uma premissa: volte à falha. |
91
+ | 2 | A amostra está descrita com n **e** composição adversarial? | Desenhe a composição: os casos escolhidos para quebrar, nomeados um a um. |
92
+ | 3 | O ground truth é independente do sistema testado? | Nomeie a fonte externa (gabarito oficial, dois revisores com adjudicação, critério preditivo). |
93
+ | 4 | O aceite tem número, unidade e direção, e é **conjunto**? | Acrescente os critérios que faltam — um de qualidade, um de cobertura, um de operação. Um número sozinho quase sempre tem jeito trivial de passar. |
94
+ | 5 | Existe "reprova se ___", com um resultado plausível? | Redija a frase. Se nenhum resultado plausível reprova, o critério está frouxo e o teste é cerimônia. |
95
+ | 6 | Prazo e custo declarados, ≤ ~2 semanas, sem construir o produto? | Redesenhe para a versão de mesa (simulação, planilha, amostra de 30, script) que ataca a mesma premissa. |
96
+ | 7 | A decisão pré-comprometida está escrita nos **dois** ramos? | Escreva o "se… então…" agora, antes de qualquer dado. |
97
+ | 8 | Está dito o que este teste bloqueia? | Nomeie a decisão que ele antecede. Teste que roda depois dela é autópsia. |
98
+
99
+ Feche cada seção com a linha `Pré-registro congelado em {data}` e o orçado (prazo + custo).
100
+
101
+ > **Checkpoint 1 (humano).** Em ≤ 12 linhas: a lista dos testes prontos na ordem em que vão
102
+ > rodar, o custo e prazo somados, o que cada um bloqueia, o que foi completado no portão, e
103
+ > — separadamente — os testes que dependem de terceiros, com a pergunta que só o humano
104
+ > responde: **recrutar as pessoas agora ou rodar o substituto declarado?** Siga após a
105
+ > resposta.
106
+
107
+ ## D1 — Triagem em três trilhas
108
+
109
+ - **(A) Executável agora por agente** — script sobre dados reais, amostra processada,
110
+ simulação com verdade conhecida, orçamento bottom-up com preços reais. Vai para D2.
111
+ - **(B) De duração** — regime contínuo, cron por N dias, operação sem intervenção. Instale
112
+ hoje (timer/cron, dashboard de 3–5 métricas, log em arquivo), registre a **data de
113
+ leitura** e marque **EM CURSO**. O dia 1 costuma render correções reais: capture-as.
114
+ - **(C) Depende de terceiros** — entrevista, avaliação cega, parecer profissional. Leia
115
+ `referencias/humanos-e-substitutos.md`, monte o kit completo em `docs/desarmar/kits/<slug>/`
116
+ e execute a decisão do Checkpoint 1.
117
+
118
+ Um subagente por teste, em paralelo. Dois testes que compartilham a mesma amostra ou o mesmo
119
+ pipeline ficam com **um único** agente, dono dos dois de ponta a ponta — decomponha por
120
+ fronteira de contexto, nunca por fase. Para roteamento e limites de fan-out, a skill
121
+ `ll-orquestrar` vale aqui integralmente.
122
+
123
+ ## D2 — Execução paralela, um subagente por teste
124
+
125
+ Executores em `subagent_type: general-purpose`, modelo **Sonnet** para execução bem
126
+ especificada e **Opus** quando o teste exige julgamento adversarial dentro da própria
127
+ execução (adjudicação semântica, personas com perfil oculto, análise jurídica). Cada um grava
128
+ seu relatório e devolve só o caminho e um resumo curto — o orquestrador lê arquivos, não
129
+ transcritos.
130
+
131
+ <brief-modelo-executor>
132
+ Você executa um teste desarmador de {PROJETO} — um experimento barato desenhado para
133
+ reprovar uma premissa antes que ela custe caro.
134
+
135
+ CONTEXTO E MOTIVAÇÃO
136
+ O projeto ainda não construiu {o que está em jogo}. Este teste decide, nesta semana, se
137
+ {premissa} sobrevive. O critério de aceite foi congelado em {data}, ANTES de existir
138
+ qualquer dado — ele não pode ser reinterpretado, relaxado ou completado por você. Um
139
+ resultado que reprova é o desfecho mais valioso possível aqui: economiza meses. Um resultado
140
+ que aprova sem ter sido atacado é o mais perigoso, porque compra confiança falsa.
141
+
142
+ DADOS E REFERÊNCIAS (leia antes de rodar)
143
+ 1. {abs}/docs/desarmar/plano-de-testes.md, seção "{título do teste}" — afirmação
144
+ falsificável, amostra, ground truth, aceite, "reprova se", decisão pré-comprometida.
145
+ 2. {abs da skill}/referencias/execucao-adversarial.md — disciplina de execução, receitas por
146
+ tipo de incógnita, o que registrar, e o esqueleto obrigatório do relatório.
147
+ 3. {caminhos dos dados, scripts, credenciais e artefatos do projeto que este teste usa}
148
+
149
+ INSTRUÇÕES
150
+ Monte a amostra adversarial descrita no plano — os casos escolhidos para quebrar, não os
151
+ fáceis; se um caso previsto não existir nos dados, registre a substituição e por quê.
152
+ Estabeleça o ground truth independente antes de olhar a saída do sistema. Rode. Procure
153
+ ativamente o resultado que reprova: quebre os números por classe de entrada, inspecione
154
+ manualmente os casos-limite, e teste a hipótese "este número está alto porque estou medindo
155
+ a coisa fácil". Trabalho determinístico (hash, dedupe, contagem, replay) fica em script, não
156
+ em julgamento de modelo. Use o mesmo tier de modelo que o produto usará — medir com um tier
157
+ melhor infla qualidade, medir com um pior infla custo.
158
+ Todo defeito que você encontrar e corrigir no caminho é achado de primeira classe: registre
159
+ o defeito, a correção e o re-teste. Se a correção mudar o resultado, o relatório mostra os
160
+ dois números, antes e depois.
161
+
162
+ CONTRATO DE SAÍDA
163
+ Grave {abs}/docs/desarmar/resultados/{slug}.md no esqueleto de execucao-adversarial.md
164
+ §Relatório: o que rodou (amostra real, ground truth, comandos/caminhos reproduzíveis, modelo,
165
+ período) → dados medidos quebrados por classe → aceite critério a critério com o número ao
166
+ lado → fronteira de validade (onde vale e onde não vale, com número) → achados colaterais e
167
+ correções estruturais → custo e prazo real contra o orçado → o que este teste NÃO prova.
168
+ Termine com **Veredicto proposto** e uma frase de justificativa; a atribuição final é do
169
+ orquestrador.
170
+ Devolva na resposta, em ≤ 200 palavras: o caminho do arquivo, o veredicto proposto, os
171
+ números que decidem, e o que ficou sem medir.
172
+
173
+ LIMITES
174
+ Não altere o critério de aceite por nenhum motivo — divergência entre o plano e a realidade
175
+ dos dados vira uma nota "Desvio do plano" no relatório, não uma correção silenciosa. Não
176
+ escreva nem edite arquivos fora de {caminhos permitidos}. Não construa produto: se o teste
177
+ parecer exigir isso, pare e reporte.
178
+
179
+ CRITÉRIOS DE SUCESSO
180
+ O relatório traz n real e composição da amostra; cada critério do aceite tem um número
181
+ medido ao lado, não um adjetivo; existe pelo menos uma tabela por classe de entrada; a
182
+ fronteira de validade nomeia uma condição onde o sistema **falha**; comandos e caminhos
183
+ permitem outra pessoa reproduzir; custo e prazo reais estão registrados contra o orçado.
184
+ </brief-modelo-executor>
185
+
186
+ ## D3 — Auditoria adversarial de contexto limpo
187
+
188
+ Todo teste que **passou** atravessa esta etapa; os que passaram folgado, com prioridade —
189
+ folga é sintoma de amostra fácil até prova em contrário. O auditor roda em **Opus**, em
190
+ subagente novo, e nunca vê o raciocínio do executor: só a amostra, os dados brutos, o aceite
191
+ pré-registrado e o relatório. O protocolo e o brief-modelo do auditor estão em
192
+ `referencias/execucao-adversarial.md` §Auditoria.
193
+
194
+ Auditoria que reprova um critério aprovado é o retorno mais alto da rodada inteira: rode o
195
+ ciclo de correção, re-teste, e grave a trajetória — reprovou com X, corrigiu com Y, passou
196
+ com Z.
197
+
198
+ ## D4 — Placar
199
+
200
+ Leia `referencias/placar-e-realimentacao.md` e escreva o placar: uma linha por falha, com
201
+ **vocabulário fechado**. O veredicto é atribuído por você, depois da auditoria, nunca pelo
202
+ executor.
203
+
204
+ | Veredicto | Atribua quando |
205
+ |---|---|
206
+ | **DESARMADA** | O aceite passou em todos os critérios conjuntos, atravessou a auditoria, e a fronteira de validade está escrita com número. Desarmar não é aprovar tudo: é delimitar onde vale. |
207
+ | **DESARMADA COM CONDIÇÕES** | Passou no fio ou passou porque uma decisão de desenho o sustenta. A condição vira requisito nomeado, não recomendação. |
208
+ | **CONFIRMADA, COM ROTA DE SAÍDA QUANTIFICADA** | O premortem estava certo e o teste mediu **qual alavanca resolve**, com número. Redesenho fundamentado antes do código — o resultado de maior valor. |
209
+ | **EM CURSO** | Teste de duração instalado e rodando, com data de leitura marcada e as correções do dia 1 registradas. |
210
+ | **PENDENTE, COM SUBSTITUTO DECLARADO** | Exige terceiros; o substituto rodou, a fronteira epistêmica está escrita, o instrumento está corrigido e pronto, e o item foi reclassificado de bloqueio para validação pré-lançamento. |
211
+
212
+ O placar carrega também, em seções próprias: **achados colaterais** (bugs reais e decisões de
213
+ arquitetura que os testes cravaram — testes desenhados para falsear premissas encontram o que
214
+ nenhuma revisão de código encontra), **custo da rodada** (real contra orçado, por teste) e **o
215
+ que continua com o humano**, com dono e marco.
216
+
217
+ > **Checkpoint 2 (humano).** Apresente o placar em uma tela: veredicto por falha com o número
218
+ > que o sustenta, o que cada decisão pré-comprometida obriga agora, e as escolhas que só o
219
+ > humano faz — recrutar as pessoas dos itens pendentes, aceitar o redesenho das CONFIRMADAS,
220
+ > ou parar.
221
+
222
+ ## D5 — Realimentação e decisão disparada
223
+
224
+ 1. **Execute a decisão pré-comprometida de cada teste.** O ramo já estava escrito: aplique-o
225
+ como decisão tomada, registrando qual ramo disparou e o que ele obriga. Reabrir a
226
+ discussão aqui anula o valor do pré-compromisso.
227
+ 2. **Devolva os números ao dossiê**, quando `docs/README.md` existir: linha nova na seção
228
+ correspondente com a conclusão **e os números**, Estado da decisão reescrito, e caveat no
229
+ cabeçalho de todo documento que o teste superou — sem reescrever em silêncio e sem deletar
230
+ (`referencias/placar-e-realimentacao.md` §Realimentação).
231
+ 3. **Feche as decisões em aberto** que os testes resolveram e marque as que continuam abertas
232
+ com o motivo.
233
+ 4. **Handoff**: os requisitos que os testes cravaram (condições das DESARMADAS COM CONDIÇÕES,
234
+ redesenhos das CONFIRMADAS, decisões de arquitetura dos achados colaterais) entram como
235
+ decisões **já tomadas** na skill `ll-decidir-antes` — elas não voltam a ser perguntadas.
236
+ Feche nomeando esse próximo passo; o placar é o entregável final desta skill, e
237
+ invocar a `ll-decidir-antes` é decisão do usuário.
238
+
239
+ ## Verificação antes de entregar
240
+
241
+ Reporte ao usuário o resultado destas quatro checagens, que são as que mais falham:
242
+
243
+ - **Pré-registro intacto**: cada aceite no relatório bate literalmente com o do plano
244
+ congelado. Diga quantos conferiu e liste qualquer desvio registrado.
245
+ - **Reprovação possível**: nenhum teste passou sem uma classe de entrada onde o sistema
246
+ falha estar nomeada com número. Um relatório sem nenhum número ruim descreve uma amostra
247
+ fácil, não um sistema bom.
248
+ - **Auditoria**: quantos testes aprovados foram auditados em contexto limpo e quantos
249
+ critérios a auditoria reprovou.
250
+ - **Orçamento**: custo e prazo reais somados contra o orçado, por teste.
251
+
252
+ Diga também o que ficou sem medir e por quê. "O teste 3 não rodou porque a fonte de ground
253
+ truth não existe sem dois revisores humanos" é resultado válido e esperado; preencher a
254
+ lacuna com uma aprovação plausível não é.