Curso / Lição 30  ·  EN
Lição 30 · Capstone · a máquina inteira

Capstone: a máquina inteira, de ponta a ponta

Trinta lições adentro, você consegue segurar o sistema inteiro numa só vista. O Alembic é um motor que transforma fontes brutas em conhecimento validado e realimenta trabalho concluído de volta em si mesmo — um loop fechado. A fusão Hermes adicionou as peças que faltavam para tornar esse loop auto-aperfeiçoante: uma memória para gravar, uma passagem de aprendizado com gate para gravar através, e um curador para podar o que fica obsoleto. Este capstone desenha o circuito completo, lista o que foi entregue e o que está deliberadamente estacionado, e termina com um quiz transversal sobre tudo que você aprendeu. Sem fatos novos — só o quadro montado.

O único loop que tudo serve

Todo subsistema e invariante neste curso existe para fazer um circuito girar com segurança: distillar → aprender → sedimentar → podar. Fontes são distilladas em Learnings (o funil, T0→T3); uma run concluída propõe gravações duráveis (a passagem de aprendizado); gravações aprovadas sedimentam em memória e skills; e o curador poda o que fica sem uso — realimentando o que a próxima run sabe.

DISTILLARfunil T0→T3 (L15) APRENDER (gate)propor→gate (L8/L23) SEDIMENTARmemória + skills (L7/L12) PODARcurador (L9) PRÓXIMA RUNsabe mais uma run concluída alimenta a próxima

Note o gate dentro da caixa APRENDER. Essa é a pedra angular (ADR-0018): o loop é com gate de Validator, nunca auto-aplicar. Sem ele, um sistema auto-aperfeiçoante deriva sobre seus próprios outputs ruins. O gate é o que torna "aprende consigo mesmo" seguro em vez de uma catástrofe de feedback.

O que foi entregue

7
subsistemas
~565
testes verdes
4
invariantes
5
portões
18
ADRs

As contagens são verificadas na fonte pela própria fundação do curso (Lição 01): o complete-map registrou 19 pacotes de workspace + 1 app em 415 testes, que cresceram para ~565 após o @alembic/hermes aterrissar — os mesmos 565 que o estudo de caso da Lição 6 verifica verdes com um pgrep vazio. [uncertain] o total atual exato pode diferir por alguns conforme testes são adicionados; trate ~565 como o número as-built quando o hermes foi entregue.

SubsistemaDisposiçãoO que dá ao loopLição
memoryCLONEo store durável onde gravações sedimentam7
learningADAPTa passagem propose→dispose com gate — a pedra angular8
curatorCLONEpoda active→stale→archived (nunca deleta)9
clarifyCLONEa superfície de pergunta do portão humano T410
webCLONEsearch/extract sobre um backend injetado11
skillsCLONEmemória procedural com disclosure progressivo12
mediaCLONEtranscribe/vision em nuvem sobre backends injetados13

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-entregues — de propósito, com razões:

E o que foi deliberadamente IGNORADO (não estacionado — decidido contra): delegação de subagentes (o swarm já faz melhor, Lição 19), TTS local neural e faster-whisper local (ML só-Python, sem port Node limpo), e os 23 adaptadores de plataforma de mensageria (fora de escopo para 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 traçou uma fronteira apertada — os sete subsistemas que fecham o loop auto-aperfeiçoante — e explicitamente adiou o resto com razões datadas. Trabalho estacionado é recuperável (está na matriz com uma disposição); trabalho rejeitado é justificado (um IGNORE com uma razão). Ambos batem um backlog vago. É a doutrina de portfólio (ADR-0016) em miniatura: WIP limitado, tudo rastreado.

O fio condutor: disciplina sobre capacidade

Se você levar uma ideia de trinta lições, leve esta: o poder do motor vem das suas restrições, não de contorná-las. Nunca-lança (ADR-0009) torna o fan-out seguro. Portas injetadas tornam tudo testável e replayável. Defaults fail-closed (DEFAULT_TIER = T4, o budget guard) fazem o caso desconhecido negar. O gate do Validator torna o auto-aperfeiçoamento seguro. A proibição da VM de plano torna o replay honesto. Cada restrição remove uma classe de falha, e juntas elas deixam um sistema autônomo rodar sem um humano vigiando cada passo — que era o objetivo inteiro.

Quiz capstone — através do curso inteiro

1. Um modelo retorna um 429 fundo na chamada de adapter de um worker do swarm. Trace o caminho seguro: o que o orquestrador observa, e quais dois mecanismos o garantem?
Correto: b. O throw (ou 429) do adapter vira uma falha tipada com flag retryable na cintura; o swarm reestabelece a fronteira nunca-lança com runSwarmSafe. O orquestrador só vê resultados discriminados uniformes — por isso a falha de um provedor degrada uma lane, não a run.
2. A passagem 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 já na memória. Onde caem os dois?
Correto: d. failed = gate aprovou mas store recusou (acima do orçamento). Um fato existente re-proposto é um sucesso no-op contado como applied — "reforce, não duplique" (L8/L23). Três baldes existem precisamente para manter isso distinto.
3. Você adiciona um oitavo subsistema e chama Date.now() no seu alembic.plan.ts para um id, depois roda a suíte via vitest puro com um teste que abre um socket. Duas coisas dão errado. Quais?
Correto: b. Duas regras impostas mordem: a VM de plano proíbe relógio-de-parede/aleatório em módulos de plano (use um Clock/fábrica de ids injetados), e test:safe — não vitest puro — é o que mata o grupo de workers + varre. A receita (L29) assa ambos em "pronto".
4. Por que o loop auto-aperfeiçoante é um ADAPT (não um CLONE) do Hermes, em uma frase conectando dois ADRs?
Correto: c. A ADR-0018 nomeia ambas as razões (sem AIAgent Python para fork; e, "mais importante", o princípio do portão de emissão). 0006 proíbe sedimento sem gate e 0009 proíbe lançar, então a única forma que sobra é a passagem com gate, baseada em portas — as restrições determinam o design (L24).

Para onde ir depois

Você agora consegue ler qualquer subsistema @alembic/hermes e prever sua forma antes de abri-lo; traçar uma chamada de modelo pela cintura e um corpus pelo funil; defender todo veredicto de fusão; diagnosticar um vazamento de worker órfão; e seguir a receita para adicionar um subsistema próprio. A fronteira estacionada — o cliente MCP, o backfill do corpus, as superfícies de design e GTM — é o trabalho seguinte natural, 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 veio dos próprios mapas, ADRs e código entregue do repositório — citados ao 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 achar que ele lê exatamente como você agora espera.