Layer L2: @alembic/council — O Motor de Decisão
Esta camada implementa debate qualitativo + scoring quantitativo + verificação maker-checker com preservação de dissent. É o principal mecanismo de qualidade para tiers pagos (T3) e para o Factory review.
Debate Engine (debate.ts)
// debate.ts:31
/** The DebateEngine. Phases serial, members within phase IN PARALLEL.
* Contrarian is forced last by board loader — real sequencing, not prompt claim. */
// debate.ts:130
const result = await boundMember.adapter.run(input); // nunca lança
if (!result.ok) { return failure... }
const scores = parseAxisScores(result.text);
const vote = buildVote({ memberId, axes: scores.value, rationale: result.text });
Verifier — Maker-Checker (verifier.ts)
// verifier.ts:19
/** Maker-checker Verifier. READ-ONLY BY ARCHITECTURE.
* Aceita só DebateResult + ContextPack. Não pode re-chamar modelo. */
// verifier.ts:84
export type ClaimOracle = (evidence: VerifierEvidence) => { proven: boolean; evidence: string };
// verifier.ts:49
export const MAX_LOOPS = 3;
// loopCount > 3 → parkedTier = T4 (humano)
Verifier Panel + T3 Emission Gate (verifier-panel.ts)
// verifier-panel.ts:21
// 3 lentes:
Coherence (reusa verifyDecision)
Faithfulness (evidence presente + confidence ≥ 0.5 + strength ≥ 3)
Domain (GO precisa de validation evidence + diversidade)
// DEFAULT_PANEL_QUORUM = 2
// preserve-dissent veto: hard failure em qualquer lente → rejeita
Como o Dissent é Preservado
O contrarian é forçado por board loader a ser o último membro da última phase (board.ts). O verifier e o panel são projetados para aceitar e reportar dissent explicitamente, em vez de forçar consenso.
Como Verificar Esta Camada (verify)
pnpm test packages/council # Foco: # - debate.test.ts # - verifier*.test.ts (oráculos + parked T4) # - verifier-panel.test.ts (lentes + quorum + dissent veto)
Common confusions: Achar que "council é só debate de LLMs". Não — o debate é só o maker. O checker (verifier + panel) é programático, determinístico e o verdadeiro gate de qualidade.
Practice task: 1. Leia debate.ts:34-39 (comentário sobre contrarian sequencing). 2. Leia verifier.ts:19-37 (maker-checker architecture). 3. Rode um council T3 e capture o VerificationReport completo. 4. Identifique qual lente hard falhou em um caso de NO-GO. 5. Compare o que acontece quando loopCount > MAX_LOOPS.
Por que L2 é Crítico
Esta camada é o principal mecanismo de qualidade para qualquer decisão cara (T3) ou para o Factory review. O fato de o verifier ser read-only e baseado em oráculos determinísticos é uma das maiores contribuições arquiteturais do projeto.
Entender linha a linha o debate engine, o verifier e o panel é entender como o Alembic consegue afirmar "decisões com dissent preservado e grounded evidence" em vez de "o LLM achou que era boa ideia".
Sem esta camada, o sistema inteiro perderia a capacidade de fazer afirmações fortes sobre qualidade de decisão em tiers pagos.
Esta é uma das camadas mais sofisticadas do projeto do ponto de vista de engenharia de decisão.
O design de separar maker (debate) de checker (verifier + panel) com oráculos determinísticos e preserve-dissent veto é uma contribuição real de engenharia de sistemas de decisão agênticos.
Qualquer um que queira estender o sistema de decisão ou auditar sua robustez precisa dominar estas linhas.
Esta camada, junto com L1 Adapters, forma o núcleo de "decisão confiável" do projeto.
Deep Line-by-Line Analysis
debate.ts:108-159 — O fluxo completo de execução de um membro: bindMember → buildModelInput (passando priorPhases para que o contrarian veja tudo) → adapter.run (sempre Result) → parseAxisScores (tolerante) → buildVote.
debate.ts:162-170 — runPhase usa Promise.all para executar os membros da phase em paralelo.
verifier.ts:22-37 — O comentário de arquitetura explica perfeitamente a separação maker/checker e por que o verifier é read-only.
verifier-panel.ts:34-44 — O design de 3 lentes com hard claims + quorum + preserve-dissent veto é o que torna o gate T3 realmente forte.
Este nível de rigor em um sistema de decisão agêntico é raro e é uma das razões pelas quais o Alembic consegue fazer afirmações fortes sobre qualidade mesmo em tiers pagos.
Depois de dominar L2 Council, fica muito mais claro por que o projeto investiu tanto em separação de responsabilidades e oráculos determinísticos.
Esta é uma das camadas mais maduras e bem pensadas do motor de destilação agêntica.
Entender L2 Council em profundidade é essencial para qualquer pessoa que queira trabalhar com tomada de decisão de alto custo em sistemas agênticos.
Esta deep dive completa a visão das principais camadas de decisão do projeto.
O próximo passo natural seria L3 Swarm ou L4 Harness, mas L2 já dá uma visão muito sólida do mecanismo de decisão de alto nível.
Deep Line-by-Line Walkthrough
debate.ts:108-159 — Fluxo completo de um membro: bind → buildModelInput (com priorPhases) → adapter.run (Result) → parseAxisScores → buildVote.
debate.ts:162 — runPhase despacha todos os membros da phase em paralelo.
verifier.ts:84 — ClaimOracle é uma função pura sobre VerifierEvidence. Nunca chama modelo.
verifier.ts:49 — MAX_LOOPS = 3. Acima disso → parkedTier = T4.
verifier-panel.ts:40 — FAITHFULNESS_CONFIDENCE_FLOOR = 0.5 + STRENGTH_FLOOR = 3.
Quorum + preserve-dissent veto é o que torna o gate T3 realmente rigoroso.
Source Anchors (Evidência Direta)
| Arquivo:linha | Conceito |
|---|---|
/packages/council/src/debate.ts:31 | DebateEngine architecture |
/packages/council/src/debate.ts:130 | adapter.run por membro |
/packages/council/src/verifier.ts:19 | Maker-checker Verifier |
/packages/council/src/verifier.ts:84 | ClaimOracle definition |
/packages/council/src/verifier-panel.ts:21 | 3 lenses + quorum |
/packages/council/src/verifier-panel.ts:40 | FAITHFULNESS floors |
/packages/council/src/consensus.ts | MIN_VALID_AGENTS + spread |
/packages/council/src/board.ts | Board loader + contrarian last |