Lição 30 · Curso de Fusão · Parte 6 · Capstone · a máquina inteira, ponta a ponta
Alembic × Hermes · Curso de Fusão · Parte 6 · Capstone (a última lição)

Capstone — a máquina inteira, ponta a ponta

Trinta lições depois, você consegue segurar o sistema todo em uma única vista. O Alembic é um motor que transforma fontes brutas em conhecimento validado e realimenta o trabalho terminado em si mesmo — um loop fechado. A fusão com o Hermes adicionou as peças que faltavam para tornar esse loop auto-aprimorável: uma memória para onde escrever, uma passada de aprendizado com gate por onde escrever, e um curador para podar o que envelhece. Este capstone desenha o circuito completo, lista o que foi enviado e o que está deliberadamente estacionado, e fecha com um quiz que atravessa tudo o que você aprendeu. Sem fatos novos — apenas a figura montada.

Leia primeiro (fonte primária)
packages/hermes/src/index.ts & docs/alembic-hermes-fusion-matrix.md & docs/alembic-complete-map.md — lidos verbatim do repositório

Esta lição não traz nenhum fato novo: ela monta a figura a partir do que as 29 lições anteriores já provaram. Cada afirmação aqui é citada de arquivo real do monorepo — os 7 subsistemas com suas dispositions vêm do cabeçalho de packages/hermes/src/index.ts; os veredictos de fusão e a fronteira estacionada, de docs/alembic-hermes-fusion-matrix.md; as contagens, das §2 e §5 de docs/alembic-complete-map.md. Você pode verificar tudo no código.

Leia a versão simples, ou abra a camada técnica em qualquer seção.
O que você vai conseguir fazer ao fim do curso
  • Desenhar o único circuito que todo subsistema serve — distill → learn → sediment → prune — e dizer por que ele é fechado.
  • Nomear os 7 subsistemas da fusão com a disposition de cada um (CLONE / ADAPT) e o que cada um dá ao loop.
  • Defender por que o gate dentro do passo LEARN é a pedra angular (ADR-0018) — e não um detalhe.
  • Distinguir o que está estacionado (recuperável, na matriz) do que foi IGNORADO (decidido contra, com motivo).
  • Enunciar o fio condutor do curso inteiro: disciplina acima de capacidade — o poder vem das restrições, não em volta delas.
O que assumimos de você (a esta altura, quase tudo já é seu)
  • Você já atravessou as 29 lições anteriores — ou consegue ler um diagrama de blocos e um trecho de pseudocódigo sem susto.
  • Você lembra que o Alembic devolve Result<T, Error> em vez de lançar exceções, e que a chamada ao modelo passa por uma cintura estreita (o ModelAdapter).
  • Você não precisa decorar nenhum ADR — vamos citar o número e dizer o que ele decide, sempre.
01

A máquina em uma vista


Você passou o curso inteiro olhando uma peça de cada vez: a cintura, o funil, os gates, o swarm, os sete subsistemas. Agora vamos dar um passo atrás e olhar a máquina inteira de longe. Vista de longe, ela é simples: uma fábrica que pega matéria-prima (fontes), refina em peças confiáveis (conhecimento validado) e — esta é a parte genial — usa o que produziu para ficar melhor na próxima vez.

Analogia. Pense numa cozinha profissional que, no fim de cada serviço, anota o que deu certo, arquiva as receitas que ninguém mais pede e ajusta a despensa para o dia seguinte. A comida sai (o trabalho), mas a cozinha também aprende com cada serviço. O segredo não é um chef genial (o modelo) — é a rotina disciplinada em volta dele que faz a próxima refeição sair melhor que a anterior.

Esta lição não ensina nada novo. Ela faz uma coisa diferente e mais difícil: conecta. Cada uma das 29 lições anteriores foi uma estação isolada; aqui montamos o trem inteiro e andamos por ele de ponta a ponta. Se você consegue, ao fim, redesenhar o circuito de memória e prever a forma de um subsistema antes de abrir o arquivo, o curso cumpriu seu papel.

A unidade de trabalho que atravessa o motor (a viagem da Lição 1)
pedido tier routing adapter Result gates custo + span park / ship a cintura estreita
Diagrama em anel do circuito fechado distill, learn com gate, sediment e prune, com a próxima run no centro e uma seta tracejada de realimentação

O circuito que tudo serve: distill → learn → sediment → prune, e a próxima run, no centro, sabe mais. O cadeado sobre LEARN é a pedra angular — a passada nunca auto-aplica.

Por que isto importa. Um sistema autônomo só é confiável se você consegue segurá-lo inteiro na cabeça. O capstone existe para te dar exatamente esse modelo mental único — o anel — em volta do qual todos os detalhes que você aprendeu se encaixam.
02

O único loop que tudo serve


Todo subsistema e toda invariante deste curso existem para fazer um único circuito girar com segurança: distill → learn → sediment → prune. As fontes são destiladas em Learnings (o funil, T0→T3); uma run terminada propõe escritas duráveis (a passada de aprendizado); escritas aprovadas sedimentam na memória e nas skills; e o curador poda o que cai em desuso — realimentando o que a próxima run sabe.

O circuito fechado — quatro estágios, e o gate como chave
DISTILLfunil T0→T3 · L15 LEARN (gate)propõe→dispõe · L8/L23 SEDIMENTmemory + skills · L7/L12 PRUNEcurador · L9 PRÓXIMA RUNsabe mais uma run terminada alimenta a próxima

Repare no cadeadinho sobre a caixa LEARN. Essa é a pedra angular (ADR-0018): o loop é gated pelo Validator, nunca auto-aplica. Sem ele, um sistema auto-aprimorável deriva sobre as próprias saídas ruins. O gate é o que torna "aprende consigo mesmo" seguro, em vez de uma catástrofe de realimentação.

Preveja antes de virar

O Hermes em Python tinha um AIAgent que escrevia direto na memória ao fim do loop. Por que o Alembic não pôde copiar isso literalmente (CLONE) e teve de ADAPTAR a passada de aprendizado?

Porque escrever automático na memória violaria o princípio do validador como gate de emissão (ADR-0006), e nada na biblioteca pode lançar exceção (ADR-0009). A única forma que sobra é a passada propõe → dispõe sobre ports que nunca lançam — as restrições determinam o desenho. É por isso que learning/ é um ADAPT, e não um CLONE (ADR-0018 nomeia os dois motivos).
Em linguagem de gente: imagine uma fábrica que aprende. Ela recebe matéria-prima, monta o produto, e antes de "aprender" qualquer lição daquele dia, um inspetor precisa aprovar a lição. Lições aprovadas entram no manual; o que ninguém usa há tempos sai do manual (mas vai pra um arquivo, nunca pro lixo). No dia seguinte, a fábrica abre um manual um pouco melhor.
Com os termos reais: o funil (@alembic/etl) destila fontes em Learnings T0→T3; ao fim de uma run, learning/ roda a passada propose → dispose em que um reviewer propõe escritas e o Validator gate dispõe (aprovado → applied[], gate-sim-store-não → failed[], reprovado → rejected[]); escritas aprovadas sedimentam no MemoryStore/SkillStore; runCurator move skills ociosas active → stale → archived sem nunca deletar. Tudo sobre FsPort/Clock injetados e Result never-throws.
03

O que foi enviado


A fusão entregou sete subsistemas dentro do pacote @alembic/hermes — exatamente os que fecham o loop auto-aprimorável. Cada um tem uma disposition honesta (foi CLONADO quase literal do Hermes, ou ADAPTADO ao estilo do Alembic) e um papel claro no circuito.

0
subsistemas na fusão
~565
testes verdes
0
invariantes
0
gates
0
ADRs

As contagens são verificadas pela própria fundação do curso (Lição 01): o complete-map registrou 19 pacotes + 1 app a 415 testes, que cresceram para ~565 depois que @alembic/hermes aterrissou — os mesmos ~565 que o estudo de caso da Lição 6 verifica verdes com um pgrep vazio. [uncertain] o total exato de hoje pode diferir por alguns à medida que testes são adicionados; trate ~565 como a figura as-built de quando o hermes foi enviado.

Os sete subsistemas, e o que cada um dá ao loop

SubsistemaDispositionO que dá ao loopLição
memoryCLONEo store durável para onde a sedimentação escreve (snapshot congelado + multi-store)7
learningADAPTa passada com gate propõe→dispõe — a pedra angular8
curatorCLONEpoda active→stale→archived (nunca deleta)9
clarifyCLONEa superfície de pergunta do gate humano T410
webCLONEsearch/extract sobre um backend injetado11
skillsCLONEmemória procedural com disclosure progressivo12
mediaCLONEtranscribe/vision na nuvem sobre backends injetados13
Por que "memory" aparece como CLONE O cabeçalho de index.ts descreve memory/ como um CLONE fiel do store de snapshot congelado do Hermes — e, aditivamente, um ADAPT do modelo multi-store do Agent-Swarm. Na tabela acima resumimos pela disposition da peça canônica (o snapshot congelado = CLONE); a Lição 7 abre as duas metades.

Explore o circuito, estação por estação

Clique em cada estágio para ver qual subsistema o alimenta e onde ele vive no código. É a mesma viagem do anel, agora interativa.

estágio

DISTILL LEARN SEDIMENT PRUNE
04

O que está deliberadamente estacionado (a fronteira)


Engenharia honesta nomeia o que não está pronto. A matriz de fusão marca várias capacidades como ainda-não-enviadas — de propósito, com motivos. E distingue duas coisas que parecem iguais mas não são: estacionado (recuperável, com disposition na matriz) e IGNORADO (decidido contra, com justificativa). As duas batem uma lista vaga de backlog.

Estacionado · MERGE

Cliente MCP

O Alembic é um servidor MCP (read-only), mas ainda não consome servidores MCP externos. A matriz sinaliza isto como um MERGE de alto valor em @alembic/harness — o SDK em TS o torna mais limpo que o original em Python. Estacionado, não rejeitado.

Estacionado · plano

O backfill do corpus completo

O ADR-0006 manda profundidade de qualidade-fronteira sobre todo o corpus WIKI_LLM, via o modelo mais barato acima de um piso. Esse backfill orçado de uma vez é um plano, não uma run concluída.

Estacionado · produto

Artefatos de Design + GTM

A Fase D (interfaces autênticas) e a Fase E (docs de produto/GTM) do plano de orquestração estão escopadas mas pendentes; o motor está construído, as superfícies de produto não (coerente com o ADR-0001: superfícies vivem nos produtos, não no motor).

IGNORADO · com motivo

O que foi decidido contra

Delegação de subagentes (o swarm já faz melhor, Lição 19), TTS neural local e faster-whisper local (ML só-Python, sem porte limpo pro Node), e os 23 adapters de plataformas de mensagem (fora de escopo pra um motor interno, ADR-0001). As Lições 3 e 21 percorrem esses veredictos.

Por que "estacionado" é uma feature, não uma falha

Um sistema que entrega tudo de uma vez não entrega nada bem. A fusão desenhou uma fronteira apertada — os sete subsistemas que fecham o loop auto-aprimorável — e adiou o resto explicitamente, com motivos datados. Trabalho estacionado é recuperável (está na matriz com uma disposition); trabalho rejeitado é justificado (um IGNORE com motivo). Ambos batem um backlog vago. Isto é a doutrina de portfólio (ADR-0016) em miniatura: WIP limitado, tudo rastreado.

Exemplo trabalhado · estacionado ou ignorado?
1
Pergunta: o "cliente MCP" e a "delegação de subagentes" estão no mesmo balde? Decida cada um.
2
Cliente MCP: tem disposition MERGE na matriz e um caminho ("mais limpo em TS"). Logo é estacionado — recuperável, alguém pode pegar amanhã.
3
Delegação de subagentes: tem um veredicto IGNORE com motivo ("o swarm já faz melhor"). Logo é decidido contra — não volta sem nova evidência.
4
Agora você: em qual balde cai o faster-whisper local, e por quê? (Dica: leia o motivo na Lição 13.) Resposta: IGNORADO — é ML só-Python, sem porte limpo pro Node; a media usa a transcrição na nuvem sobre um backend injetado.
05

O fio condutor: disciplina acima de capacidade


Se você levar uma única ideia de trinta lições, leve esta: o poder do motor vem das suas restrições, não em volta delas. Cada restrição remove uma classe inteira de falha — e juntas elas deixam um sistema autônomo rodar sem um humano vigiando cada passo, que era o objetivo desde o começo.

A restriçãoA classe de falha que ela removeADR
never-throws (run devolve Result)fan-out frágil: uma falha de provedor degrada uma faixa, não derruba a run0009
ports injetados (FsPort/Clock/backends)não-testável e não-replayável: tudo vira fake-ável e determinístico0008
fail-closed (DEFAULT_TIER = T4, budget guard)o caso desconhecido que gasta/age sozinho: o default é negar0004 / 0011
Validator gate (propõe→dispõe)auto-derivar: a auto-melhoria não escreve sem aprovação0006 / 0018
plan-VM determinístico (sem Date.now()/Math.random())replay desonesto: a mesma entrada sempre dá a mesma run0008
O mesmo padrão, cinco vezes. Note a forma: cada linha é "uma restrição → uma falha que some". Não é coincidência. O curso inteiro é a história de um motor que escolheu menos liberdade no lugar certo para ganhar mais confiança no todo. É por isso que ele roda à noite, sozinho, e você dorme tranquilo.

O Alembic não é poderoso apesar das suas regras. Ele é poderoso por causa delas.— o fio condutor das 30 lições
06

O mapa das seis partes


Antes de recapitular, aqui está o curso inteiro em uma imagem: as seis partes e o que cada uma cobriu. Cada parte é uma estação do mesmo caminho que você seguiu na Lição 1 — pedido → tier → adapter → gates → custo → park/ship.

Mapa de seis painéis-módulo do curso de fusão com resumos por parte e uma faixa com sete subsistemas, quatro invariantes e cinco gates

As seis partes do Curso de Fusão. Você está na Parte 6 — a máquina montada, ponta a ponta.

Parte 1 · O motor. O engine, o reverse-engineering do Hermes e a matriz de fusão (L1–6). Onde você aprendeu a ler o sistema.
Parte 2 · Mergulhos profundos. Os 7 subsistemas, um a um (L7–13). Onde você aprendeu cada peça do loop.
Parte 3 · A arquitetura. A cintura estreita, o funil, as invariantes, os gates, o swarm (L14–19). Os ossos do motor.
Parte 4 · Método e labs. O método de reverse-engineering + dois labs práticos (L20–23). Onde você pôs a mão.
Parte 5 · Engenharia. ADRs, test-safety, proveniência, custo, determinismo (L24–29). A disciplina que sustenta tudo.
Parte 6 · Capstone. A máquina inteira, ponta a ponta (L30 — você está aqui). A figura montada.
07

Recapitulando em 7 slides


A vista de longe

Uma fábrica que aprende

O Alembic transforma fontes brutas em conhecimento validado e realimenta o trabalho terminado em si mesmo. Um loop fechado — não uma linha reta.

O circuito

distill → learn → sediment → prune

Destila fontes, aprende com gate de runs terminadas, sedimenta na memória e nas skills, poda o que envelhece — e a próxima run sabe mais.

A pedra angular

O gate dentro do LEARN

O loop é gated pelo Validator, nunca auto-aplica (ADR-0018). É o que separa "aprende sozinho" seguro de uma catástrofe de realimentação.

O que foi enviado

Sete subsistemas

memory · learning · curator · clarify · web · skills · media. Seis CLONE, um ADAPT (learning). Exatamente os que fecham o loop.

A fronteira honesta

Estacionado ≠ ignorado

Estacionado = recuperável, com disposition na matriz (cliente MCP, backfill, design/GTM). IGNORADO = decidido contra, com motivo (subagentes, whisper local).

O fio condutor

Disciplina > capacidade

never-throws, ports injetados, fail-closed, Validator gate, plan-VM determinístico. Cada restrição remove uma classe de falha — e juntas dão a autonomia.

A partir daqui

Abra o código

Você consegue ler qualquer subsistema de packages/hermes/src/ e prever a forma antes de abrir. O próximo passo é exatamente esse: abrir e confirmar.

1 / 7setas

Cartões de memória — o curso inteiro

Vire cada cartão (clique, ou Enter/Espaço) e tente responder antes de ver o verso. É prática de recuperação sobre os seis módulos.

O circuito
Quais são os quatro estágios do loop fechado?
clique para virar
distill → learn → sediment → prune. Fontes viram Learnings; runs terminadas propõem escritas (com gate); aprovadas sedimentam; o curador poda — e a próxima run sabe mais.
A pedra angular
Por que o gate no LEARN é o keystone do loop?
clique para virar
Porque o loop é gated pelo Validator, nunca auto-aplica (ADR-0018). Sem ele, um sistema auto-aprimorável deriva sobre as próprias saídas ruins.
A fusão
Quantos subsistemas a fusão entregou, e qual é o único ADAPT?
clique para virar
Sete — memory, learning, curator, clarify, web, skills, media. Seis CLONE; o único ADAPT é learning/ (a passada com gate).
A fronteira
Qual a diferença entre estacionado e IGNORADO?
clique para virar
Estacionado: recuperável, com disposition na matriz (ex.: cliente MCP, MERGE). IGNORADO: decidido contra, com motivo (ex.: subagentes — o swarm já faz melhor).
O fio condutor
Em uma frase, de onde vem o poder do motor?
clique para virar
Das suas restrições, não em volta delas. Cada uma (never-throws, ports, fail-closed, gate, plan-VM) remove uma classe de falha — juntas dão a autonomia.
As contagens
Quantos testes, e por que o número é honesto?
clique para virar
~565 verdes (415 base + hermes), verificados com pgrep vazio (Lição 6). É marcado [uncertain] de propósito: o total exato pode variar à medida que testes entram.
As Dez ideias para levar do curso inteiro
  1. O Alembic é uma fábrica que aprende: ela produz trabalho e usa o que produziu para melhorar na próxima vez.
  2. Tudo serve um circuito fechado: distill → learn → sediment → prune.
  3. O gate dentro do LEARN é a pedra angular — o loop é gated pelo Validator e nunca auto-aplica (ADR-0018).
  4. A fusão entregou sete subsistemas: seis CLONE, um ADAPT (learning).
  5. O curador nunca deleta: o pior destino de uma skill é archived, que é recuperável.
  6. Estacionado (recuperável, na matriz) é diferente de IGNORADO (decidido contra, com motivo).
  7. A cintura estreita (ModelAdapter + Result) é a dobradiça por onde toda chamada passa.
  8. O never-throws torna o fan-out seguro: uma falha degrada uma faixa, não a run.
  9. O plan-VM determinístico (sem relógio/aleatório) é o que torna o replay honesto.
  10. O poder do motor vem das suas restrições — disciplina acima de capacidade.
08

Verifique seu entendimento — o curso inteiro


Quatro perguntas que atravessam os seis módulos. Escolha e leia o porquê de cada opção — o feedback ensina tanto quanto a pergunta.

Checagem cumulativa final

Acerte as quatro para fechar o curso. A pontuação aparece abaixo.

1. Um modelo devolve um 429 fundo dentro do adapter de um worker do swarm. Trace o caminho seguro: o que o orquestrador observa, e quais dois mecanismos garantem isso?
(b). O throw (ou 429) do adapter vira uma falha tipada com a flag retryable na cintura; o swarm re-estabelece a fronteira never-throws com runSwarmSafe. O orquestrador só vê resultados discriminados uniformes — por isso a falha de um provedor degrada uma faixa, não a run.
2. A passada de aprendizado aprova uma proposta de score alto, mas o MemoryStore está acima do orçamento. A mesma run então re-propõe um fato que já está na memória. Onde os dois caem?
(d). failed = o gate aprovou mas o store recusou (acima do orçamento). Um fato já existente re-proposto é um no-op de sucesso contado como applied — "reforce, não duplique" (L8/L23). Os três baldes existem exatamente para manter isso distinto.
3. Você adiciona um oitavo subsistema e chama Date.now() no seu alembic.plan.ts para um id, depois roda o suite via vitest puro com um teste que abre um socket. Duas coisas dão errado. Quais?
(b). Duas regras forçadas mordem: a plan-VM bane relógio/aleatório em plan modules (use um Clock/fábrica de id injetados), e é o test:safe — não o vitest puro — que mata o grupo do worker + faz o sweep. A receita (L29) coloca as duas no "pronto".
4. Por que o loop auto-aprimorável é um ADAPT (não um CLONE) do Hermes, em uma frase que conecta dois ADRs?
(c). O ADR-0018 nomeia os dois motivos (não havia AIAgent em Python para forkar; e, "mais importante", o princípio do gate de emissão). O 0006 proíbe sedimento sem gate e o 0009 proíbe lançar, então a única forma que sobra é a passada com gate, baseada em ports — as restrições determinam o desenho (L24).
Acertos: 0/4
Em uma frase, para você mesmo: "O Alembic fecha o loop ____ → ____ → ____ → ____, o gate em ____ o torna seguro, e seu poder vem de ____." Se você consegue preencher as seis lacunas, o curso cumpriu seu papel.
09

Próximos passos


Você agora consegue ler qualquer subsistema de @alembic/hermes e prever a forma antes de abrir; traçar uma chamada ao modelo pela cintura e um corpus pelo funil; defender cada veredicto de fusão; diagnosticar um vazamento de worker órfão; e seguir a receita para adicionar um subsistema seu. A fronteira estacionada — o cliente MCP, o backfill do corpus, as superfícies de design e GTM — é o trabalho natural seguinte, e a matriz já diz como abordar cada um. O loop está construído; fazê-lo girar mais rápido e mais largo é a estrada à frente.

Obrigado por ler. Trinta lições, dois labs, uma máquina. Tudo aqui foi tirado dos próprios mapas, ADRs e código enviado do repositório — citado no pé de cada página — para que você possa verificar qualquer afirmação contra o código. O melhor próximo passo é abrir packages/hermes/src/ e ler um subsistema de ponta a ponta; você vai descobrir que ele lê exatamente como você agora espera.
O curso acabou, mas o motor não. Ele continua rodando — destilando, aprendendo com gate, sedimentando, podando — toda vez que uma run termina. Agora você sabe por que isso é seguro.