Curso / Lição 20
Lição 20 · Motor & método · 7 de 8

O método de engenharia reversa

Todo este curso repousa sobre dois mapas — alembic-complete-map.md e hermes-complete-map.md — e uma matriz de fusão derivada deles. Nada disso é confiável a menos que o método que os construiu seja. Esta lição ensina esse método em quatro princípios: o código vence, camadas honestas de profundidade, Proof-Gate em tudo, e builder ≠ validator. É a disciplina por trás da fusão — e generaliza para qualquer base de código que você precise entender de fora.

Leia primeiro (fonte primária)
docs/alembic-complete-map.md · docs/alembic-hermes-fusion-matrix.md

Esta lição destila a disciplina declarada nesses dois documentos do repositório — não inventa nada. Por que importa pra missão: foi exatamente esse método que tornou seguro construir um pacote @alembic/hermes real sobre o mapa do Hermes sem reler todas as 30k+ linhas de Python primeiro.

Objetivos desta lição
  • Aplicar a regra "o código vence": quando o doc e a fonte discordam, refletir a fonte e anotar o desvio.
  • Declarar camadas honestas de profundidade — mergulho, catálogo, fronteira [uncertain] — em vez de fingir cobertura total.
  • Respaldar todo claim com um Proof-Gate de prosa: um file:line, uma contagem de hits, um teste que existe.
  • Separar builder de validator: pôr quem não escreveu as conclusões para tentar quebrá-las.
0
princípios do método
0 + 1
pacotes reais (handoff dizia 11)
0
testes via npx vitest list
0
linhas do mapa (base dos hit-counts)

Sobre o que tudo isto repousa

O curso inteiro — toda decisão de fusão, todo pacote portado — se apoia em três artefatos: dois mapas de engenharia reversa e uma matriz derivada deles. Se o método que os produziu não for confiável, nada construído em cima é. Por isso o método vem primeiro.

A CADEIA DE CONFIANÇA · do método aos dois mapas, à matriz, ao código real portado
o MÉTODO 4 princípios alembic-complete-map.md o que o Alembic tem hoje hermes-complete-map.md o que o Hermes faz a MATRIZ de fusão clone/adapt/merge/skip @alembic/ hermes A confiança flui da esquerda para a direita — e desaba se a primeira caixa (o método) não se sustentar.

00 · O método em uma imagem

Antes dos detalhes, o mapa-mãe. Os quatro princípios não são uma lista solta: eles formam uma cadeia que transforma "li o repositório" em "produzi um mapa confiável". Cada princípio fecha um buraco específico por onde a mentira normalmente entra.

OS QUATRO PRINCÍPIOS · cada um tapa um buraco onde a engenharia reversa costuma mentir
1 · o código vence tapa: confiar no doc acima da fonte 2 · profundidade honesta tapa: fingir cobertura total 3 · Proof-Gate tapa: claim por fé, sem citação 4 · builder ≠ validator tapa: ponto cego do autor um mapa CONFIADO, não só lido seguro o bastante para construir em cima dele tire qualquer princípio e o leitor volta a ter que aceitar o mapa por fé

01 · O código vence, sempre

Em linguagem simples: quando o manual e a máquina discordam, acredite na máquina — e escreva no manual onde ele estava errado. Um documento de design descreve intenção; intenção desvia com o tempo. Um mapa de engenharia reversa que confia no doc acima da fonte herda toda mentira que o doc acumulou.

O próprio cabeçalho do mapa declara a regra: ele mapeia "o filesystem real como construído, não a intenção de design no HANDOFF.md — onde os dois divergem, o código vence e a divergência é anotada".

// docs/alembic-complete-map.md — a disciplina, declarada logo no início
// "This document maps the real filesystem as built, not the design intent in
//  HANDOFF.md — where the two diverge, the code wins and the divergence is noted."
// ex.: HANDOFF diz "11 packages / 284 tests"; a árvore tem 19 packages + 1 app,
//      415 tests (npx vitest list -> 415 cases) — o mapa reflete a decomposição
//      real e NOMEIA o desvio.

O desvio, em barras: o que o handoff dizia vs o que a árvore tem

O mapa não esconde a discordância — ele a registra. Dois números do HANDOFF.md estavam desatualizados; o mapa mostra o valor real ao lado do antigo e nomeia o desvio. Repare a distância:

DESVIO HANDOFF → CÓDIGO · pacotes e testes (o código vence, e a diferença fica à vista)
PACOTES handoff 11 (desatualizado) código 19 + 1 app (real ✓) TESTES handoff 284 (desatualizado) código 415 (npx vitest list ✓) A honestidade é o entregável: um mapa que disfarçasse esse desvio seria pior que nenhum mapa.

O mapa literalmente registra onde o handoff estava desatualizado (11 vs 19 pacotes, 284 vs 415 testes) e onde um "bug conhecido" estava na verdade corrigido (contrarian-last, lição 16). Essa honestidade é o entregável.

Doc vs fonte, lado a lado

INTENÇÃO (doc) vs REALIDADE (código) · por que a fonte ganha o empate
HANDOFF.md (intenção) descreve o que se PLANEJOU desvia silenciosamente do build risco: herdar mentiras o mapa repete o que o doc errou filesystem (realidade) é o que de fato EXECUTA testável, verificável, agora o código vence ✓ e a divergência é anotada Mesma pergunta, duas fontes — o empate sempre vai para o que você consegue executar e medir.
Preveja antes de continuar
O HANDOFF.md afirmava 11 pacotes. Quando o método foi aplicado e a árvore foi contada de fato, quantos pacotes (mais apps) o mapa registrou? Chute antes de revelar.
19 pacotes + 1 app. O handoff estava defasado por quase o dobro. Se você chutou "uns 11–12", caiu na armadilha que o princípio existe para evitar: confiar no doc. O mapa contou a árvore real, registrou 19 + 1, e anotou explicitamente o desvio dos 11 — porque expor a discordância é parte do entregável, não um constrangimento a esconder.

02 · Camadas honestas de profundidade

Em linguagem simples: você não consegue ler cada linha de cada arquivo com a mesma atenção — e fingir que conseguiu é a mentira mais comum da engenharia reversa. A saída honesta não é ler tudo; é declarar em que profundidade você leu cada parte. Pense em profundidade como um orçamento: gaste no que sustenta carga, e diga onde você não gastou.

TRÊS CAMADAS HONESTAS DE PROFUNDIDADE · do mapa do Alembic
MERGULHO subsistemas que sustentam carga: ler linha-a-linha, citar file:line, verificar invariantes contra testes cintura · funil · council · swarm CATÁLOGO a cauda longa: responsabilidade, API, deps, testes, gaps — estruturado, não exaustivo infra · docs · tui · web FRONTEIRA o que NÃO se sabe ainda: marcado [uncertain], declarado como fronteira de cobertura, nunca fingido §7.4 drivers · §7.16 testes de infra profundidade é um orçamento — gaste no que sustenta carga, e diga onde você não gastou

No mapa do Alembic isso aparece concretamente: a cintura estreita, o funil, o council e o swarm recebem tratamento profundo com citações de linha; a cauda longa (infra, docs, tui, web) recebe um catálogo estruturado (responsabilidade / API / deps / testes / gaps); e desconhecidos genuínos são marcados [uncertain] — por exemplo "[uncertain] se drivers reais de fonte vivem em outro pacote ou ainda não foram implementados" (§7.4) e "[uncertain] se algum teste de infra roda sob vitest" (§7.16). A fronteira é nomeada, não escondida.

Em uma frase: não finja que leu tudo igual. Diga em que profundidade leu cada parte — leitura cuidadosa onde importa, panorama no resto, e um aviso honesto "aqui eu não cheguei". É a diferença entre um mapa em que dá pra confiar e um que só parece completo.
Como aparece no mapa do Alembic: os subsistemas de carga (cintura, funil, council, swarm) recebem mergulho com citações file:line e invariantes checadas contra testes; a cauda longa (infra, docs, tui, web) recebe um catálogo estruturado (responsabilidade / API / deps / testes / gaps); e os desconhecidos genuínos ficam [uncertain] — ex. docs/alembic-complete-map.md §7.4 (drivers de fonte) e §7.16 (se algum teste de infra roda sob vitest). A fronteira é nomeada, não apagada.

A mesma ideia, como orçamento gasto por subsistema

Profundidade é finita. Veja como o orçamento de atenção se distribui: muito nos quatro subsistemas que sustentam carga, um nível estruturado na cauda longa, e um marcador explícito onde a leitura parou.

ORÇAMENTO DE PROFUNDIDADE · onde a atenção foi gasta (mergulho » catálogo » fronteira)
cintura/funil/council/swarmmergulho · file:line infra / docs / tui / webcatálogo · estruturado §7.4 drivers de fonte[uncertain] fronteira §7.16 testes de infra sob vitest[uncertain] fronteira Barra longa = leitura linha-a-linha verificada. Barra média = catálogo. Tracejado curto = "li o suficiente para saber que não sei" — e marquei. O comprimento da barra É a honestidade da cobertura.

03 · Proof-Gate em tudo

Em linguagem simples: toda afirmação precisa de um recibo. A nota de método da matriz de fusão é explícita: "Nada aqui é decidido de memória; todo 'o Alembic tem/não tem X' cita evidência do mapa." Um claim é respaldado por um artefato verificável — um file:line que você abre, uma contagem de hits que você reproduz com grep, um teste que existe. É a mesma disciplina de Proof Gate que o próprio motor usa (lição 17), voltada para dentro, sobre a documentação.

O portão: claim → citação → falsificável (ou volta)

Cada afirmação passa por um portão antes de entrar no mapa. Se ela traz uma citação que um cético consegue abrir e checar, passa. Se não traz, ela não é um fato — é uma asserção, e volta para virar verificável ou ser cortada.

PROOF-GATE DA PROSA · todo claim ou traz um recibo checável ou não entra no mapa
claim chega "o Alembic tem/não tem X" tem citação checável? SIM ✓ entra no mapa é um fato NÃO volta: vira verificável OU é cortado recibos válidos: file:line · hit-count (grep) · comando + saída

Como um gap vira fato: a contagem de hits

"O Alembic não tem memória" parece uma afirmação de memória — e seria, se fosse só dita. O método a transforma em prova com uma contagem reproduzível sobre as 1488 linhas do mapa: a palavra memory aparece 1 vez, e de forma incidental; não há pacote de memória na seção 7. Esse 1 é o recibo que torna o gap um fato.

GAP FUNDAMENTADO · "memory = 1 hit incidental" sobre o mapa de 1488 linhas ⇒ gap genuíno
grep "memory" no mapa (1488 linhas) → 1 hit, incidental · nenhum pacote em §7 gap genuíno (não opinião) alvo: @alembic/hermes → memory/ A contagem é reproduzível por qualquer um: é o que separa "acho que falta memória" de "falta memória, eis a prova".

04 · Builder ≠ validator

Em linguagem simples: quem faz não é quem confere. A mesma separação que o motor impõe (o Verifier da lição 18, o Validator Gate da lição 17) governa o próprio trabalho de documentação. O curso que você está lendo foi escrito por um agente e revisado por outro — o brief que produziu estas lições declara "Builder ≠ validator" como regra dura. Um mapa checado apenas pelo seu autor herda os pontos cegos do autor; um revisor independente é a versão humana-e-agentic do Verifier read-only.

QUEM CONFERE? · auto-revisão (herda pontos cegos) vs revisor independente (os pega)
builder = validator autor escreve o mapa o MESMO autor confere ✗ pontos cegos PASSAM builder ≠ validator autor escreve o mapa OUTRO agente confere ✓ pontos cegos PEGOS

O análogo: o Verifier read-only do motor, aplicado à documentação

A separação não é nova — é a mesma que o motor já enforce internamente. O Verifier (lição 18) e o Validator Gate (lição 17) são checagens read-only feitas por algo que não produziu o trabalho. Aplicar isso à própria documentação é só estender a disciplina do código para a prosa.

A MESMA SEPARAÇÃO, DOIS DOMÍNIOS · motor (código) ↔ documentação (mapa/curso)
NO MOTOR (código) worker produz Verifier / Validator read-only, independente NA DOCUMENTAÇÃO (mapa/curso) builder escreve revisor independente não escreveu o mapa Mesmo padrão: quem CONFERE nunca é quem PRODUZIU. Estender do código para a prosa é só aplicar a invariante que o motor já vive (lições 17 e 18).

Os quatro princípios como camadas de defesa — e o que vaza se você tira uma

Cada princípio é uma camada que bloqueia uma forma específica de o mapa mentir. Removida uma camada, a mentira que ela parava volta a passar. Por isso os quatro são necessários juntos, não um buffet de boas práticas opcionais.

CAMADAS DE DEFESA · cada princípio para uma mentira · tire-o e ela vaza (→)
CAMADA (princípio) a mentira que ela bloqueia se você tira → 1 · o código vence "o doc descreve a verdade" (intenção tratada como realidade) herda as mentiras do doc 2 · profundidade honesta "eu li tudo a fundo" (cobertura total fingida) buracos viram afirmações 3 · Proof-Gate "é assim porque eu digo" (claim sem recibo checável) vira ensaio, não mapa 4 · builder ≠ validator "eu mesmo já conferi" (ponto cego do autor) erros do autor passam As quatro juntas = um mapa confiável. Qualquer fenda aberta, e o leitor volta a aceitar o mapa por fé.
Por que isso generaliza

Estes quatro princípios não são específicos do Alembic. Caia em qualquer base de código desconhecida e o método é o mesmo: leia a fonte acima do README quando discordarem, e anote a discordância; orce sua profundidade e a declare; respalde todo claim com uma citação que você possa re-checar; e ponha alguém que não escreveu suas conclusões para tentar quebrá-las. A disciplina é o que permite a um mapa ser confiado em vez de meramente lido — e é exatamente o que tornou seguro construir um pacote @alembic/hermes real sobre o mapa do Hermes sem reler todas as 30k+ linhas de Python primeiro.

O payoff concreto: construir sem reler 30k linhas

A recompensa do método não é estética — é alavancagem. Um mapa confiável do Hermes virou a interface sobre a qual a fusão foi construída: a matriz decidiu o que portar, e o pacote real foi escrito a partir do mapa, sem que ninguém precisasse reler todas as 30k+ linhas de Python do Hermes primeiro. O mapa pagou o custo de leitura uma vez; todo trabalho seguinte gastou o mapa, não a fonte bruta.

O MAPA COMO ALAVANCA · ler a fonte UMA vez → confiar no mapa → construir muitas vezes em cima dele
Hermes: 30k+ linhas de Python a fonte bruta método (lido 1×) mapa CONFIÁVEL camadas declaradas, todo claim com recibo a matriz decide clone / adapt / merge / skip portar tool a tool sem reler a fonte bruta @alembic/hermes construído com segurança O custo de ler a fonte é pago UMA vez; depois você gasta o mapa, não as 30k linhas — essa é a alavancagem que a confiança compra. Só funciona se o mapa for confiável: um mapa por fé propagaria erros para cada tool portada.

05 · O método inteiro, em um fluxograma

Junte os quatro princípios numa única rotina. Diante de qualquer base de código desconhecida, siga estas setas: cada losango é uma pergunta que escolhe o caminho, e o ciclo só termina quando o mapa está pronto para ser confiado — não apenas escrito.

FLUXOGRAMA DO MÉTODO · da fonte ao "mapa confiável" (os quatro princípios em sequência)
base de código desconhecida abra a FONTE, não só o README fonte diverge do doc? SIM código vence + anote o desvio NÃO → classifique a profundidade mergulho (carga) · catálogo (cauda) · [uncertain] (fronteira) cada claim tem citação checável? NÃO ↑ cite ou corte; releia a fonte SIM → revisor INDEPENDENTE consegue quebrar? SIM ↑ conserte e repasse NÃO ✓ MAPA CONFIÁVEL seguro construir em cima
Por que os dois loops voltam à fonte: tanto um claim sem citação quanto um ponto cego pego pelo revisor mandam você de volta à fonte — porque o conserto certo nunca é "suavizar a prosa", e sim reler o código e ancorar a afirmação. O método se recusa a fechar enquanto restar algo aceito por fé.
O que torna o veredito "confiável" (não só "escrito"): o mapa só sai pela direita quando sobrevive às três checagens — o empate vai para o código, todo claim tem recibo, e um agente que não o escreveu não conseguiu derrubá-lo. Foi esse mapa que sustentou o @alembic/hermes.

06 · Confiança ganha: o que sobe quando você cita

Os princípios têm um efeito mensurável: quanto maior a fração de claims com recibo (citação checável), mais o mapa é confiável — e menos ele depende da fé do leitor. Arraste o slider e veja a confiança subir enquanto a "área de fé" encolhe. É uma ilustração da relação, não uma métrica do repositório.

100% com recibo Verde = checável por um cético em segundos · vermelho = aceito por fé. O método empurra a barra toda para o verde.

Confiança não é fluência
Um mapa pode estar lindamente escrito e ainda ser não confiável — se cada claim for uma asserção sem recibo. O que torna um mapa confiável não é a prosa, é a fração checável: file:line, hit-counts, comandos com saída. Por isso o método mira 100% de claims com recibo, não 100% de páginas.

07 · Aplique a um repo qualquer (passo a passo → agora você)

Você viu os quatro princípios e o fluxograma. Agora rode o método na mão sobre um repositório novo, devagar — depois um passo é seu. Recuperar o procedimento (não só lê-lo) é o que fixa.

Exemplo resolvido · entender um repositório desconhecido até um mapa confiável
1
Abra a fonte, não o README. Comece pela árvore real (packages/*, src/index.ts, testes). Onde o README ou o HANDOFF.md divergirem do que a árvore mostra, o código vence — e você anota o desvio (foi assim que "11 pacotes" virou "19 + 1 app" no mapa).
2
Classifique a profundidade. Identifique os subsistemas que sustentam carga e mergulhe neles (linha-a-linha, file:line, invariantes contra testes). A cauda longa vira catálogo (responsabilidade / API / deps / testes / gaps). O que você não verificou vira [uncertain] — a fronteira de cobertura, nomeada.
3
Proof-Gate cada claim. Antes de escrever "o repo tem/não tem X", anexe o recibo: um file:line clicável, uma contagem de hits reproduzível (ex.: memory=1 hit incidental ⇒ gap), ou um comando com saída (npx vitest list → 415). Sem recibo, o claim volta — vira verificável ou é cortado.
4
Builder ≠ validator. Entregue o mapa a alguém (humano ou agente) que não o escreveu, com a missão de quebrá-lo. Os pontos cegos do autor só aparecem aqui — é o Verifier read-only do motor (lições 17–18) aplicado à documentação.
5
Veredito. Sobreviveu às três checagens (código venceu o empate, todo claim tem recibo, o revisor não derrubou)? Então o mapa é confiável — seguro para construir em cima, como o @alembic/hermes sobre o mapa do Hermes.
Agora você: o README de um repo diz "feito em 8 módulos"; sua contagem da árvore dá 12 módulos + 2 apps, e você ainda não leu o módulo de billing. Pelos princípios, o que o seu mapa registra para a contagem, e como você marca o billing? Decida antes de revelar.
Contagem: registra 12 módulos + 2 apps (o código vence) e anota o desvio dos 8 do README — exatamente o padrão "11→19+1". Billing: marca [uncertain] e o coloca na fronteira de cobertura, porque você não leu — nunca fingir leitura. Dica: o procedimento é sempre o mesmo — só trocam os números e os arquivos.

Mapa vs ensaio: o que a disciplina compra

A diferença entre um mapa e um ensaio bem escrito não é o estilo — são os recibos. Veja o contraste:

DimensãoEnsaio (aceito por fé)Mapa (Proof-Gate)
Fonte da verdadeo que o doc/README afirmao filesystem real; o código vence
Coberturaimplícita, "li tudo"declarada: mergulho / catálogo / [uncertain]
Claim típico"o sistema tem memória""memory=1 hit incidental ⇒ gap" (checável)
Quem confereo próprio autorrevisor independente (builder ≠ validator)
Falsificável?não — é asserçãosim — abra o file:line e cheque

08 · Como isso se encaixa

As outras lições ensinam peças do motor — a cintura, o funil, os gates, o swarm. Esta lição é diferente: ela ensina a peça que produziu o curso inteiro. O método de engenharia reversa não roda dentro de uma execução do Alembic; ele é a disciplina que, aplicada por fora, gerou os dois mapas, a matriz de fusão derivada deles e — por extensão — cada uma das 30 lições que você está lendo. É a única peça do curso cujo "downstream" é o próprio curso.

Onde você está na metodologia: a pipeline de produção corre da esquerda para a direita — os quatro princípios (o método) leem a fonte uma vez e destilam dois mapas; os dois mapas alimentam a matriz de fusão; e os três artefatos juntos autorizam tanto o pacote @alembic/hermes quanto este curso. Clique nos passos abaixo para acender o fluxo nó a nó, ou veja o mapa interativo completo em a metodologia (mapa interativo) →.

FLUXO · o método (upstream) → produz os dois mapas + a matriz → que produzem o curso e o pacote (downstream)
ESTA LIÇÃO · o método código vence · profundidade honesta · Proof-Gate · builder ≠ validator lê a fonte 1× alembic-complete-map.md o que o Alembic tem hermes-complete-map.md o que o Hermes faz a matriz de fusão clone / adapt / merge / skip ESTE curso · 30 lições + pacote @alembic/hermes A seta tracejada lembra: o método não só alimenta os mapas — ele é a própria disciplina de autoria do curso (builder ≠ validator também na prosa).

As peças que esta lição conecta — cada link abre a lição irmã, com o porquê da ligação:

09 · Na prática

Sinceridade primeiro: não existe um único comando alembic <método> que "faça engenharia reversa" — o método é uma disciplina humana-e-agentic, não um subcomando. [uncertain] Mas três de seus quatro princípios têm um análogo executável no repositório, e é isso que você roda para provar que aplicou o método. O Proof-Gate do método é, literalmente, a baseline de build do repo.

1 · O Proof-Gate, como comando

O princípio 3 ("todo claim traz recibo") tem um recibo canônico para o repositório inteiro: a baseline que tem que ficar verde. É o comando que o próprio CLAUDE.md declara como obrigatório a cada mudança.

# o Proof-Gate do repositório — a baseline que todo claim sobre "está verde" cita
pnpm -r typecheck && pnpm -r build && pnpm -w test

# saída esperada (forma; números variam conforme o estado da árvore):
#   Tasks: N successful, N total      (turbo: typecheck + build em todos os pacotes)
#   Test Files  NN passed (NN)
#   Tests       415 passed (415)      <- o "estado verificado" do mapa, reproduzível
#   exit code 0  -> o gate passou; qualquer não-zero falha fechado

Esse 415 é exatamente o recibo que a Lição (seção 01) cita como "estado verificado": não é uma lembrança, é a saída de um comando que qualquer cético reproduz.

2 · Coerência da árvore real, como comando

O princípio 1 ("o código vence") exige confrontar o que a fonte de fato declara com o que os docs afirmam. Para a camada de modelos/adapters há um comando real que valida a forma declarada contra a implementação — offline, $0, sem rede:

# valida o MODEL_REGISTRY + coerência de adapters contra o código real (offline, sem rede)
alembic doctor --client-stack

# saída esperada (forma): um relatório de checagens, cada uma OK/FALHA,
# fail-closed se a forma declarada divergir da implementação.
# [uncertain] doctor cobre a camada de modelos/adapters, NÃO "o método" inteiro;
# é o análogo executável MAIS PRÓXIMO de "a fonte tem que bater com o doc", não o método em si.

3 · A fronteira e o builder ≠ validator não são comandos

Os princípios 2 (camadas honestas) e 4 (revisor independente) não têm um subcomando — são disciplina de leitura e de processo. O artefato deles vive no repositório como prosa verificável: os mapas em docs/.

# os dois mapas que o método produziu — leia o cabeçalho de disciplina e os marcadores [uncertain]
docs/alembic-complete-map.md      # cabeçalho "the code wins … divergence is noted"; §7.4 e §7.16 marcados [uncertain]
docs/hermes-complete-map.md       # o mapa do Hermes sobre o qual a matriz e o pacote foram construídos
docs/alembic-hermes-fusion-matrix.md  # nota de método: "nothing here is decided from memory"

# reproduza um "gap fundamentado" você mesmo (o Proof-Gate do princípio 3, na mão):
grep -c "memory" docs/alembic-complete-map.md   # a contagem de hits que torna "falta memória" um fato, não uma opinião

[uncertain] o número exato de hits do grep depende da versão atual do mapa; o ponto do método é que o número é reproduzível — não que seja um valor fixo. Rode e use o que sair como o recibo.

Experimente · aplique o método a UM arquivo, na mão (≈10 min)
1
Entre no repo e escolha um alvo pequeno. cd /Users/acf/Documents/Projects/appfy/alembic e escolha um pacote — ex. packages/contracts. Abra src/index.ts e src/registry.ts: a fonte, não o README.
2
Código vence (princípio 1). Confronte um claim do HANDOFF.md ou do CLAUDE.md com a árvore. Conte os pacotes de fato: ls -d packages/*/ | wc -l. Onde o doc divergir, anote o número real — você acabou de reencenar o "11 → 19 + 1".
3
Profundidade honesta (princípio 2). Decida: este arquivo eu li linha-a-linha (mergulho), só catalogei (responsabilidade/API/deps), ou não cheguei ([uncertain])? Escreva a etiqueta ao lado do nome. Nomear a fronteira já é metade do método.
4
Proof-Gate (princípio 3). Rode a baseline e cite a saída: pnpm -r typecheck && pnpm -r build && pnpm -w test. Para um claim de presença/ausência, use grep -c <termo> docs/alembic-complete-map.md como recibo. Sem recibo, o claim não vale.
5
Builder ≠ validator (princípio 4). Peça a outro agente (claude -p "…", codex exec …, kimi -p "…" — quais existirem na sua máquina) para tentar quebrar suas três etiquetas. [uncertain] a disponibilidade desses CLIs é host-dependente; o que importa é que quem confere não é você.
O que procurar. Você termina com: um número real que contradiz (ou confirma) o doc + a divergência anotada; uma etiqueta de profundidade por arquivo; pelo menos um recibo de comando; e um veredito de alguém que não escreveu suas notas. Isso é o método rodado de ponta a ponta — em um arquivo, sem reler o repositório inteiro.

Confusões comuns

"Marcadores [uncertain] fazem o mapa parecer incompleto." Eles o tornam honesto. Um mapa sem marcadores de incerteza é ou trivialmente pequeno ou mentindo sobre sua cobertura. Nomear a fronteira é o que permite ao leitor confiar em tudo o que não está marcado.
"Citar file:line é só formatação." Não — é o Proof Gate para a prosa. Um claim com citação clicável é um que um cético pode falsificar em segundos; um claim sem ela é uma afirmação a ser aceita por fé. As citações são o que torna isto um mapa e não um ensaio.

Fixe os conceitos (flashcards)

Clique pra virar. Tente lembrar a resposta antes de virar — recuperação ativa fixa mais que reler.

Princípio 1
Doc e fonte discordam — o que o método faz?
clique pra virar ↻
Resposta
O código vence: reflete a fonte e anota o desvio. Ex.: 11→19+1 pacotes, 284→415 testes.
Princípio 2
Não dá pra ler tudo a fundo. E daí?
clique pra virar ↻
Resposta
Declare camadas: mergulho (carga), catálogo (cauda longa), [uncertain] (fronteira). Profundidade é orçamento.
Princípio 3
O que é o Proof-Gate da prosa?
clique pra virar ↻
Resposta
Todo claim traz recibo checável: file:line, hit-count (grep) ou comando+saída. Sem recibo, não entra.
Princípio 4
Qual o análogo do Verifier na documentação?
clique pra virar ↻
Resposta
Builder ≠ validator: o mapa é revisado por um agente que não o escreveu, pegando os pontos cegos do autor.

Revisão cumulativa — recupere de memória

Antes de clicar: responda de cabeça. As quatro opções têm o mesmo tamanho de propósito — sem pista pela forma.

1. O mapa e o HANDOFF.md discordam na contagem de pacotes. O que o método faz?
Correto: b. "O código vence, e a divergência é anotada." O mapa registra 19 pacotes + 1 app / 415 testes contra os 11 / 284 do handoff, e nomeia o desvio. a inverte a regra: o doc descreve intenção, que desvia — confiar nele herda a mentira. c é absurdo: "a média" de 11 e 19 não corresponde a nenhuma árvore real. d esconde a discordância, justo o que o princípio existe para tornar visível — expor o desvio é parte do entregável.
2. Um engenheiro reverso não consegue ler cada arquivo na profundidade total. Qual é o movimento honesto?
Correto: d. Profundidade é um orçamento: gaste no que sustenta carga, estruture o resto, e seja explícito sobre o que não verificou. a é a mentira mais comum da engenharia reversa — fingir cobertura total. b troca a fonte pelo README, violando o Princípio 1. c pula em silêncio: o erro não é não-ler, é não-marcar — a fronteira tem que ser nomeada, não escondida.
3. Qual é o análogo, na documentação, do Verifier read-only do motor?
Correto: a. Revisão independente é a mesma separação que o motor impõe com seu Verifier e Validator Gate (lições 17–18). b confere ortografia, não conclusões — não pega ponto cego de raciocínio. c ajuda o Proof-Gate (Princípio 3), mas se quem cita é o próprio autor, os pontos cegos dele permanecem. d não checa nada — velocidade não é validação.
4. Por que "o Alembic não tem pacote de memória" conta como fato, e não como opinião?
Correto: c. O Proof-Gate transforma o gap em fato com um recibo que qualquer um reproduz por grep — o 1 hit incidental é a prova. a é apelo à autoridade: experiência não é recibo. b confia no doc (viola o Princípio 1) e ainda por cima é circular. d é literalmente "decidido de memória" — exatamente o que a nota de método da matriz proíbe.
💬 Travou em algo? Eu sou seu professor neste curso — pergunte. "Como eu marco uma fronteira [uncertain] sem parecer preguiçoso?", "Que recibo serve quando não há teste?", "Como rodo um revisor independente sozinho?". É só dizer.