Lição 3 · Curso de Fusão·Parte 1 · O motor · A matriz de fusão
Alembic × Hermes · O Curso de Fusão · Parte 1 · O motor
A matriz de fusão
Agora você tem dois sistemas: o motor Alembic (Lição 1) e o Hermes Agent que você fez reverse-engineering (Lição 2). A matriz é a ponte — uma decisão item a item sobre o que fazer com cada capacidade do Hermes. Quatro verbos, uma regra cada, sempre julgada contra um mapa verificado, nunca de memória.
Cada seção tem um modo Simples e um toggle Técnico com o detalhe de implementação.
Ao fim desta lição você será capaz de
Explicar as duas perguntas que decidem o destino de cada capacidade — e por que ambas são respondidas contra um mapa verificado.
Distinguir os quatro verbos (CLONE · ADAPT · MERGE · IGNORE) e aplicar a regra de cada um.
Justificar por que a coluna IGNORE vale tanto quanto a de construir — a matriz também é uma ferramenta de poda.
Reconhecer por que o loop de aprendizado é a pedra angular, e por que ele virou ADAPT no envio.
Suposições tolas (o que presumimos de você)
Que você leu (ou tem por perto) as Lições 1 e 2 — sabe o que é o motor Alembic e que o Hermes foi mapeado por reverse-engineering.
Que você entende a ideia de uma capacidade: uma habilidade isolada de um agente (memória, busca na web, delegação…).
Nada além disso. Os termos técnicos (Result, gate, swarm, funnel) aparecem definidos quando importam.
01
A grande ideia
Imagine que você herdou a oficina de outro mecânico (o Hermes) e já tem a sua própria (o Alembic). Você não joga tudo da oficina herdada na sua, nem ignora tudo. Você pega cada ferramenta, uma de cada vez, e decide: levo igual? refaço do meu jeito? encaixo numa que já tenho? ou descarto porque a minha é melhor?
É isso que a matriz de fusão faz com as capacidades do Hermes. Ela não é uma lista de desejos — é uma planilha de decisões justificadas. Metade do valor está em dizer não com um motivo escrito.
Analogia: a matriz é a triagem de uma mudança de casa. Cada caixa (capacidade) passa por: fica, adapta, junta com outra, ou doa. Ninguém empilha caixa sem decidir — senão a casa nova vira a bagunça da antiga.
Cada capacidade entra na triagem e sai com exatamente um destino — nunca empilhada sem decisão.
O artefato real
A matriz vive em docs/alembic-hermes-fusion-matrix.md no monorepo. Sua estrutura: §1 a legenda dos verbos, §2 as quatro tabelas de veredicto, §3 as duas CLONEs-chave, §4 o esboço do pacote @alembic/hermes, §5 a ordem de implementação.
Cada veredicto é ancorado em contagens de hits sobre dois mapas verificados — não em impressão. A disciplina anti-fabricação é estrutural: o que não pôde ser confirmado foi marcado [uncertain] em vez de chutado.
02
O método: duas perguntas, um veredicto
Cada capacidade do Hermes passou por duas perguntas. E o ponto crucial: cada uma é respondida contra um mapa verificado — não de cabeça.
Q1 — O Alembic já tem um equivalente? Respondida contra docs/alembic-complete-map.md, com contagens de hits sobre o mapa e os pacotes nomeados como evidência.
Q2 — A versão do Hermes é superior ou inédita? Respondida contra docs/hermes-complete-map.md.
O veredicto sai do par de respostas. O que não deu para confirmar foi marcado [uncertain] em vez de adivinhado.
Preveja antes de revelar
Uma capacidade do Hermes existe no Alembic só de forma parcial (um equivalente diferente, incompleto). Qual dos quatro verbos isso provavelmente recebe?
ADAPT. Equivalente parcial → não é inédito (não é CLONE) nem uma superfície pronta para absorver (não é MERGE) nem redundante (não é IGNORE). Você reimplementa a ideia do Hermes no estilo do Alembic. Guarde isso — vamos ver as quatro regras agora.
Duas perguntas no topo, quatro veredictos embaixo. O destino segue do par de respostas.
Evidência, não impressão
Cada veredicto troca uma impressão por uma contagem de hits que qualquer pessoa pode reabrir e checar.
A frase "contra um mapa verificado" é o coração do método. Em vez de "acho que o Alembic não tem busca na web", a matriz escreve web search=0 hits sobre docs/alembic-complete-map.md. Cada veredicto carrega esse número.
Isso transforma a fusão em algo auditável: qualquer pessoa pode reabrir o mapa, rodar a mesma contagem e checar a decisão. É a mesma disciplina de prova (Proof Gate) que o resto do Alembic aplica a código — aqui aplicada a decisões de arquitetura.
03
Os quatro verbos
Uma regra por verbo. Decore estas quatro linhas e você lê a matriz inteira.
As duas perguntas no topo abrem em quatro veredictos. Cada cartão traz a regra de uma linha do seu verbo.
Verbo
Quando
CLONE
Inédito no Alembic; portar o design do Hermes de perto, adaptando os tipos a @alembic/*.
ADAPT
O Alembic tem um equivalente parcial / diferente; reimplementar a ideia do Hermes no estilo do Alembic.
MERGE
O Alembic já tem uma superfície relacionada; dobrar a capacidade do Hermes dentro dela — uma superfície mais rica.
IGNORE
O Alembic já faz tão bem ou melhor, ou está fora do escopo da missão. Sempre justificado.
Flashcard · verbo
Quando uma capacidade vira CLONE?
clique para virar
Quando é inédita no Alembic (mapa mostra zero ou hits incidentais). Porta-se o design de perto, adaptando os tipos.
Flashcard · verbo
Qual a diferença entre ADAPT e MERGE?
clique para virar
ADAPT: existe um equivalente parcial → você reimplementa. MERGE: existe uma superfície pronta → você dobra dentro dela.
Flashcard · verbo
IGNORE quer dizer "ruim"?
clique para virar
Não. Quer dizer "o Alembic já faz tão bem ou melhor" ou "fora de escopo". É uma recusa justificada, não um descarte.
CLONE copia o desenho; ADAPT refaz a ideia; MERGE dobra duas superfícies em uma; IGNORE recusa, com motivo.
DicaUm jeito rápido de lembrar: CLONE = copiar o desenho, ADAPT = redesenhar, MERGE = encaixar, IGNORE = recusar com motivo.
04
CLONE — os cinco inéditos de alto valor
Estes não têm equivalente no Alembic (o mapa mostra zero ou hits incidentais), então são portados de perto.
Capacidade
Fonte no Hermes
Por que CLONE
Memória em arquivo (frozen-snapshot)
memory_tool.py §3.2 (1089 LOC)
MEMORY.md/USER.md limitados, injetados como um snapshot congelado no início da sessão. Fundamental para o loop de aprendizado.
Loop de auto-revisão (aprendizado)
background_review.py §1.10
O mecanismo "auto-melhorável" de manchete — a maior lacuna do Alembic. (Enviado como ADAPT; veja o destaque adiante.)
Curator (ciclo de vida das skills)
curator.py + skill_usage.py §3.3
active→stale→archived, nunca deleta. Dá controle de qualidade ao loop.
Busca / extração web
web_tools.py §3.1 (1377 LOC)
HTTP+JSON puro sobre múltiplos backends. Reforça a camada SOURCE do funil.
Clarify (humano-no-loop)
clarify_*.py §3.7
Perguntas estruturadas + gateway bloqueante. Vira a superfície de "perguntar" do gate humano T4.
O que atravessa é o design e a disciplina, retipados aos invariantes do Alembic — não as linhas de Python.
Guarde isto"CLONE" não é copiar-e-colar o Python. É portar o design de perto, adaptando aos tipos e invariantes do Alembic (Result, FsPort, Zod). E um veredicto pode mudar entre o plano e o envio.
O esboço de @alembic/hermes (§4 da matriz)
@alembic/hermesmemory/# CLONE: snapshot congelado MEMORY.md/USER.md (memory_tool.py §3.2)web/# CLONE: web_search / web_extract sobre HTTP+JSON (web_tools.py §3.1)clarify/# CLONE: perguntas estruturadas + gateway bloqueante (clarify_*.py §3.7)curator/# CLONE: ciclo active→stale→archived das skills (curator.py §3.3)review/# o loop de aprendizado — entrou como ADAPT (ADR-0018)
A ordem de implementação (§5) começa por memory/ — "fundamental, fácil, zero binds externos" — porque o loop de aprendizado depende dela.
05
MERGE — dobrar numa superfície relacionada
Aqui o Alembic já tem uma superfície parecida. Em vez de criar uma nova, você funde a capacidade do Hermes dentro dela — uma superfície só, mais rica.
Capacidade
Alembic hoje
Por que MERGE
Cliente MCP
O Alembic é um servidor MCP, read-only — sem cliente (MCP=8 hits)
Adicionar a capacidade de consumir servidores MCP externos. Alto valor; o SDK TS deixa isso mais limpo que o original em Python. Parado como follow-up, ainda não conectado.
Automação completa de browser
Envolve o agent-browser read-only (browser=13 hits)
Manter read-only como padrão; fundir a superfície de interação atrás de um opt-in explícito.
Autoria + telemetria de skills
Carrega skills (skill=22 hits) mas não tem autoria por agente
Fundir create/edit/patch dentro de loop-engineering para que skills feitas por agente alimentem o Curator.
Verifier / mixture-of-agents
verifier-panel do council (verifier=19 hits)
O quórum de N-lentes + veto do Alembic é o equivalente mais rico do MoA — mantém-se o do Alembic.
O cliente não vira pacote novo: dobra na superfície MCP que já existe — e fica parked até ser conectado.
CuidadoMERGE de alto valor ainda pode ser parked. O cliente MCP é um MERGE excelente, mas a matriz o marca como follow-up ainda não conectado — listar não é o mesmo que enviar.
06
ADAPT & IGNORE — o resto, justificado
ADAPT (equivalente parcial → reimplementar): session-search com FTS5, skills-hub, conceitos de kanban no swarm, blueprints de cron, transcrição em nuvem, análise de visão.
IGNORE — e a parte interessante é justamente a justificativa:
Capacidade
Por que IGNORE
Delegação de subagente (delegate_tool.py, 3188 LOC)
O swarm do Alembic (swarm=63 hits: orquestrador 3-tier, lead-worker, profundidade limitada, fila dependency-gated) já faz isso nativamente e melhor. Guarda-se um insight portável: na delegação assíncrona, "a conclusão reentra como um novo turno, nunca no meio do contexto".
Backends de terminal (6 contextos)
A factory do Alembic já entrega docker/podman/no-sandbox + isolamento por git-worktree. Redundante.
Computer use, TTS neural local, faster-whisper
Stacks de ML só-Python ou fora da missão distill→venture. Difíceis de portar, sem valor para a missão.
23 adaptadores de plataformas de mensagens
O Alembic é um motor interno (ADR-0001), não um gateway de assistente pessoal. Os clientes L4 são API/MCP/CLI/cockpit — não Telegram/WhatsApp.
IGNORE não é "ruim": o swarm 3-tier do Alembic já delega melhor. Guarda-se só um insight de cache-safety.
A coluna IGNORE é metade do valor. Cada linha aqui é uma recusa que mantém o Alembic um motor interno, e não um gateway de assistente pessoal. Dizer "não" com motivo é design.
07
A pedra angular: por que o loop de aprendizado fica acima de tudo
A linha mais importante da matriz
"O Alembic tem um funil de destilação e um gate de validação, mas nenhum loop fechado de auto-melhoria. O loop de aprendizado do Hermes é a peça que falta, e ele compõe com o que o Alembic já tem em vez de substituir."
O funil transforma fontes em Learnings — mas nada realimenta esses learnings de volta para o motor. O Hermes fecha esse ciclo. Dois motivos de ele encaixar tão bem:
Encaixa na cintura estreita. A memória vive dentro do system prompt, congelada no início da sessão — exatamente a disciplina que mantém o cache de prefixo do prompt quente. O fork de revisão herda o prompt em cache, verbatim.
Encaixa no pipeline de gates. O reviewer é, ele mesmo, gateável — as escritas passam pelo Validator Gate existente do Alembic antes de sedimentar. Isso dá o "aprenda só com vitórias validadas".
A memória mora dentro do prompt, congelada — não invalida o cache de prefixo.Escritas duráveis atravessam o Validator Gate antes de sedimentar: nada entra sem validação.
Hoje + Hermes = o loop fechado fundido. O reviewer propõe; o Validator dispõe; o curator mantém limpo.
Três faixas: o que existe, o que o Hermes acrescenta e o ciclo fundido onde cada run fica mais esperto.
CLONE no papel, ADAPT no envio. A matriz listou o loop de aprendizado como CLONE, mas ele foi enviado como ADAPT (ADR-0018): não existe um AIAgent em Python para forquilhar como daemon thread, e auto-escrever burlaria o Validator Gate. Então o reviewer propõe e o Validator do Alembic dispõe. Essa nuance é a Lição 4.
Por que a disposição mudou entre o plano e o código
O original do Hermes forquilha o próprio loop do agente como uma thread em background depois do run. No Alembic não há esse objeto AIAgent para forquilhar — a arquitetura é diferente. Portar "de perto" (CLONE) seria importar uma forma que não existe aqui.
Pior: deixar o reviewer escrever direto na memória/skills passaria por cima do Validator Gate, violando a invariante de que escritas duráveis são validadas. A solução (ADR-0018) separa os papéis: o reviewer propõe um patch; o Validator Gate dispõe (aprova/rejeita) antes de sedimentar. Resultado: "aprende só com vitórias validadas". É por isso que o veredicto correto, no código, é ADAPT — não CLONE.
08
Experimente — classifique a capacidade
Você é o arquiteto agora. Para cada capacidade do Hermes abaixo, escolha o verbo. O painel diz se acertou e por quê — com a evidência da matriz.
Exemplo resolvido — passo a passo
1
Capacidade: "Memória em arquivo (snapshot congelado)".
2
Q1 — já existe no Alembic? Quase não: o mapa mostra memory=1 hit incidental, sem pacote de memória. → praticamente inédito.
3
Q2 — é valiosa / inédita? Sim, e é fundamental para o loop de aprendizado.
4
Veredicto: inédito + valioso → CLONE. Vai para @alembic/hermes → memory/.
5
Agora você: use o classificador abaixo para fazer o mesmo com delegação de subagente, cliente MCP e session-search. Decida o verbo antes de tocar o botão.
Delegação de subagente
delegate_tool.py · 3188 LOC
Capacidade 1 / 4
Por baixoO classificador é puro HTML/JS desta página — cada veredicto e sua justificativa vêm direto das tabelas que você acabou de ler. Nada aqui chama rede.
09
Confusões comuns
"A matriz é uma lista de desejos de features." Não — é tanto uma ferramenta de poda quanto de construção. Metade do valor está na coluna IGNORE: cada item é uma recusa justificada que mantém o Alembic um motor interno, e não um gateway de assistente pessoal.
"CLONE quer dizer copiar-e-colar o Python." Não — CLONE é portar o design de perto, adaptando aos tipos e invariantes do Alembic (Result, FsPort, Zod). E um veredicto pode mudar entre plano e envio: o loop de aprendizado foi CLONE → ADAPT por razões de princípio.
Poda é auditável. Cada IGNORE cita a evidência que a torna segura: swarm=63 hits contra delegate_tool.py; a factory contra os backends de terminal; ADR-0001 (motor interno) contra os 23 adaptadores de mensagens. A recusa é tão ancorada quanto a construção.
O veredicto é uma decisão de design, não um rótulo fixo. CLONE→ADAPT do loop (ADR-0018) mostra que a matriz é o plano; o ADR registra o envio. Quando a forma da arquitetura ou uma invariante (passar pelo Validator Gate) exige, o verbo muda — e o motivo fica escrito.
O mesmo item, dois momentos: o plano dizia CLONE; o envio, por princípio, registrou ADAPT.
10
Recapitulando
Recap 1 de 5
Duas perguntas, um veredicto
Q1: o Alembic já tem? Q2: a versão do Hermes é melhor/inédita? Ambas respondidas contra um mapa verificado (contagens de hits) — nunca de memória.
1
Recap 2 de 5
Quatro verbos, uma regra cada
CLONE inédito → portar de perto · ADAPT parcial → reimplementar · MERGE superfície afim → fundir nela · IGNORE já tão bom / fora de escopo → recusar com motivo.
2
Recap 3 de 5
IGNORE é metade do valor
Delegação (swarm=63), backends de terminal (factory), ML só-Python e 23 adaptadores de mensagens (ADR-0001) são recusas justificadas — poda que mantém o Alembic um motor interno.
3
Recap 4 de 5
O loop é a pedra angular
O Alembic destila em Learnings mas não realimenta o motor. O loop do Hermes fecha o ciclo — e compõe com o funil (cintura estreita) e o gate (escritas gateáveis) em vez de substituir.
4
Recap 5 de 5
O veredicto pode mudar
O loop era CLONE no papel, virou ADAPT no envio (ADR-0018): sem AIAgent para forquilhar e para não burlar o Validator Gate. O reviewer propõe, o Validator dispõe.
5
Slide 1 / 5Use ←→
Em uma frase, para você mesmo: "A matriz decide cada capacidade por ____ e ____; os quatro verbos são ____; e o ____ é a pedra angular porque fecha um ciclo que o Alembic não tinha." Se você preenche as quatro lacunas, está pronto para a Lição 4.
11
Verifique
Revisão cumulativa
Três perguntas. O placar conta abaixo.
1. delegate_tool.py (delegação de subagente, 3188 LOC) recebe IGNORE. Por quê?
Correto: c. A matriz cita swarm=63 hits — um orquestrador 3-tier com lead-worker, profundidade limitada e fila dependency-gated. IGNORE aqui é "já tão bom ou melhor", não "fora de escopo". Um insight portável é guardado: a conclusão reentra como um novo turno, nunca no meio do contexto.
2. Por que o cliente MCP é um MERGE e não um CLONE?
Correto: b. O Alembic se expõe via MCP (servidor, read-only) mas não consegue consumir servidores MCP externos. O cliente dobra dentro dessa superfície existente — um MERGE. É de alto valor, mas parked como follow-up ainda não conectado.
3. O que faz do loop de aprendizado a pedra angular de toda a matriz?
Correto: d. O Alembic destilava em Learnings mas não tinha caminho de volta para o motor. O loop acrescenta exatamente isso, encaixa na cintura estreita (memória congelada no prompt) e no pipeline de gates (escritas gateáveis) — composição, não substituição.
Acertos: 0/3
As cinco linhas que você leva desta lição
A matriz é uma planilha de decisões justificadas, não uma lista de desejos.
Cada capacidade passa por duas perguntas, ambas contra um mapa verificado.
Quatro verbos: CLONE (portar) · ADAPT (refazer) · MERGE (encaixar) · IGNORE (recusar com motivo).
A coluna IGNORE vale tanto quanto construir — é poda que mantém o foco do motor.
O loop de aprendizado é a pedra angular e foi CLONE→ADAPT (o reviewer propõe, o Validator dispõe).
Pergunta para levar à Lição 4: se o reviewer apenas propõe e o Validator dispõe, como uma proposta vira memória durável sem burlar o gate — e o que acontece com uma proposta rejeitada? É o loop fechado, em detalhe.