ALEMBIC • LEARN COMPLETE • FASE 1 (VISUAL-TEACH-STUDIO + VISUAL-DOCS)
Evidence Inventory + Source Map — Linha-a-Linha
PATTERN: 04-CODE-UNDERSTANDING + 13-FLOWCHART + 16-IMPLEMENTATION-PLAN (do html-effectiveness gallery interno do visual-teach-studio)

Evidence Inventory + Source Map

Missão: Dominar a estrutura exata de 235 arquivos .ts do motor de destilação agêntica. Cada número, path e fluxo é derivado de leitura direta (subagentes explore + HANDOFF + filesystem). Fatos rotulados. Base para todos os estúdios linha-a-linha.

Resumo Executivo (4 gates + 235 arquivos)

235 arquivos .ts em packages/*/src + apps/cli
7 pacotes @alembic/* (contracts é o spine Zod-first)
1 CLI + 1 Factory runner (.factory/run.ts)
4 gates obrigatórios: pnpm typecheck • build • test (284+) • detect (impeccable)
Como construído (FACT)
3 subagentes explore paralelos (48–60 tool calls cada) + leituras manuais de HANDOFF.md, todos package.json, pnpm-workspace, turbo.json, .factory/*, contracts model/result, harness funnel/bridge, adapters registry/core, council debate/verifier, etl pipeline/pii/stores, factory run + prompts, swarm orchestrator, cli commands. Dados de 2026-06-01 HEAD.

1. Inventário Completo por Pacote (Evidence com paths exatos)

Pacote (src/)# .tsResponsabilidade Principal (subagente)Arquivos Críticos (paths absolutos chave)Cross-deps
@alembic/contracts6Narrow waist: ModelRunInput/Result discriminado (ok), Tier, Registry, WikiPackage, BusinessSignal, Learning, Result helpers, tryCatchAsync. Puro (só Zod).model.ts (ModelRunInput + TokenUsage), result.ts, tier.ts (T0-T4 + escalate), registry.ts, domain.ts, wiki.ts, index.tsapenas zod
@alembic/adapters25L1: ModelAdapter.run → Result (nunca lança). Registry + router + 15+ providers (anthropic, openai-compatible, local-cli, pi-dev, codex-oauth, offline) + cross (retry, circuit-breaker, cost, http, token-store, clock, logger, errors).registry.ts, adapter-core.ts + tests, retry.ts + test, circuit-breaker.ts + test, cost.ts + test, anthropic.ts, openai-compatible.ts, local-cli.ts, pi-dev.ts, codex-oauth.ts, http.ts, errors.ts, router.ts, token-store.ts, offline.ts + test@alembic/contracts (24 imports)
@alembic/council11+testsL2: Debate (runDebate, phases, contrarian last), scoring 5 eixos 0-10 + thresholds (GO≥7), Verifier (maker-checker + 3+ quorum + dissent), VerifierPanel (faithfulness + domain lenses), ContextPack, Consensus (fail-closed MIN=3), Board YAML.debate.ts, verifier.ts, verifier-panel.ts, scoring.ts, consensus.ts, context-pack.ts, board.ts, response.ts, index.ts + 7 testscontracts + adapters (debate) + yaml
@alembic/etl17+testsL0/T0-T3 funnel: runT0Pipeline (walkCorpus excluindo Models/Prompts, dedupe SHA, validate, score 6 eixos, residue), priors (FAMILY_PRIORS → tier routing), pii.ts (redact + assertRedactedForEmit gate para canais privados), stores (append-only content-addressed JSONL: opportunity-graph + learnings), budget guard, FsPort injectable, jsonl streaming, dedupe ledger.pipeline.ts, pii.ts, stores.ts, priors.ts, score.ts, validate.ts, dedupe.ts, fs-port.ts, jsonl.ts, budget.ts, index.ts + 5 test/*.ts + fixtures/corpuscontracts (pesado)
@alembic/harness16+testsL4: runFunnel (T0-T3 + council + budget/PII gates → FunnelReport), bridge (distillAndMarket, marketing-factory), HarnessCore (fanout council/swarm), thin transports (cli/http/sse/mcp), manifest-store (append/read content-addressed), events.funnel.ts + test, bridge.ts + test, core.ts, server.ts + test, mcp.ts + test, cli.ts, manifest-store.ts + test, http.ts, events.ts, logger.ts, index.tscontracts + adapters + council + etl + swarm + marketing-factory (38 imports)
Componente#Responsabilidade (subagente)Arquivos CríticosNotas
@alembic/swarm22L3: runSwarm (orchestrator com TaskQueue dep-gated, journal append-only para resume/recover, MAX_DEPTH=2, lead vs leaf workers, park por tier/T4/irreversível, PARL reward, withWorktree isolate, spawnBackgroundCommand detached, runWorker/process + report protocol .inprogress→.complete).orchestrator.ts, queue.ts, worker.ts, process.ts, store.ts, types.ts (Zod TaskSpec), park.ts, reward.ts, background.ts, worktree.ts, monitor.ts, index.tsUsado por factory para ADW real + harness
@alembic/factory
(104+ .ts)
104+Software factory (vendored/adapted de sandcastle MIT): run() + orchestrate (Effect-heavy), SandboxFactory (docker/podman bind-mount worktree isolado), AgentProvider (claudeCode/codex etc com stream parse), PromptResolver/Preprocessor/ArgSubst (!cmd + {{}} guards), Orchestrator loop (maxIters, parallel), Display, Output structured extraction. Sem deps runtime @alembic/* (só effect/zod/clack).run.ts, Orchestrator.ts, SandboxFactory.ts + sandboxes/docker.ts, AgentProvider.ts, PromptResolver.ts, templates/ (5 scaffolds com parallel-planner-with-review), cli.ts/main.ts, index.ts, global.d.tsEntry: pnpm factory (usa .factory/run.ts + prompts versionados)
.factory (runner + prompts)1 .ts + 5 .mdLoop ADW concreto sobre GitHub ready-for-agent (plan via gh → parallel implement/review em Docker sandboxes → publish PR). Gates completos antes de commit/PR. Nunca force-push main.run.ts, plan-prompt.md (emite JSON ), implement-prompt.md (TDD red-green-refactor + CODING_STANDARDS), review-prompt.md (adversarial + invariantes), merge-prompt.md, CODING_STANDARDS.md (Result never-throws, no any, 2 spaces, named exports, conventional commits, ≤50loc/fn etc), DockerfileInvariantes idênticos ao engine
apps/cli7+testsSuperfície fina: runDistill (build registry offline/live, preflight, runFunnel do harness, render report), runStatus, runIngest. Tudo via Result (never throw). Zod args + env.commands.ts (distill/status/ingest), args.ts (Zod + parse), config.ts (liveRegistryOptions + preflight), index.ts (bin), logger.ts + e2e/command testsDepende harness + etl + adapters + contracts
Root monorepoTurbo (build/typecheck/test order), pnpm workspace, vitest workspace (exclui factory heavy tests), tsconfig base (strict + paths @alembic/*), scripts factory/detect.package.json, pnpm-workspace.yaml, turbo.json, tsconfig*.json, vitest*.ts, .factory/run.ts (invocado via tsx)Factory excluído de vitest root

2. Arquitetura em 6 Camadas — Diagrama (SVG inline)

L-1 Ingestionagent-browser • collector • materialize L0 ETL + SubstrateT0 pipeline • pii redact • priors • stores JSONL • dedupe SHA • budget L1 AdaptersModelAdapter.run → Result (nunca lança) • 15+ providers + retry/circuit/cost L2 Councildebate • scoring 5 eixos • verifier (dissent + quorum 3+) • T3+ gate → T4 humano L3 Swarm (ADW) + L4 Harness (funnel + bridge) Harness (L4) + Funnel T0-T3runFunnel • bridge (CLI/HTTP/MCP) • manifest-storepackages/harness/src/funnel.ts + bridge.ts Council + Verifier (L2)runDebate • verifyDecision • panel lenses • parked T4packages/council/src/debate.ts + verifier*.ts Factory + Swarm (L3 + meta).factory/run.ts (ADW plan→parallel review) • runSwarm (orchestrator + journal + worktree)packages/factory + packages/swarm + .factory/* CLI + Root Gatesapps/cli/commands.ts (distill via runFunnel) • turbo • pnpm detect • CODING_STANDARDS → CLI / HTTP / MCP / Factory

SVG ensina o fluxo de dados + camadas (não decorativo). Cintura estreita: toda chamada de modelo passa por ModelAdapter.run → Result discriminado (ver model.ts:30 e adapter-core.ts).

3. Source Map — Ordem de Leitura Recomendada (não comece aqui)

  1. HANDOFF.md (visão completa + 4 invariantes) + packages/contracts/src/model.ts:30 (ModelRunInput) + result.ts (narrow waist).
  2. apps/cli/src/commands.ts:24 (runDistill → runFunnel) + config.ts.
  3. packages/harness/src/funnel.ts + bridge.ts (L4).
  4. packages/adapters/src/registry.ts + adapter-core.ts (L1 contrato universal + runWithGuards).
  5. packages/council/src/debate.ts + verifier.ts + verifier-panel.ts (L2 com dissent forçado).
  6. packages/etl/src/pipeline.ts + pii.ts + stores.ts (T0 + redaction + append-only).
  7. .factory/run.ts:22 + prompts (ADW real usando o engine para evoluir a si mesmo).
  8. Não comece aqui: docs/ (output visual), node_modules/, dist/, terraform (detalhe deploy), .turbo.

4. Como Verificar Este Inventário (Gates + Validator)

pnpm install
pnpm typecheck
pnpm build
pnpm -w test          # 284+ passed
pnpm detect           # impeccable no docs/ (inclui este HTML)

# Validator oficial visual-teach-studio (exige 4+ sections, 1+ SVG, 1+ interaction, 6+ anchors, verify/confusions/practice)
python3 /Users/acf/.codex/plugins/visual-teach-studio/skills/visual-teach-studio/scripts/validate_visual_teach_output.py \
  /Users/acf/Documents/Projects/appfy/alembic/docs/learn-alembic-complete

Common confusions: Achar que "factory é só código de exemplo" (é o ADW rodando em produção sobre o próprio engine) ou que "council é só prompt" (tem verifier programático com oráculos + quorum + parked T4).

5. Practice Task (toque o código real)

Tarefa: Rode pnpm factory --help (ou inspecione .factory/run.ts:22) e identifique onde o planner emite o JSON <plan> que vira branches factory/issue-N. Depois abra packages/harness/src/funnel.ts e localize a chamada para council em T3. Anote as linhas.

Critério de sucesso: Você consegue apontar 3 arquivos exatos (com linha aproximada) responsáveis por: (1) nunca lançar em chamada de modelo, (2) redaction de PII antes de emit, (3) fail-closed no verifier T3+.

Ao completar, registre em learning-records/00xx-source-map.md.

Gerado Fase 1 com dados de 3 subagentes explore + leitura direta. Próximo: Fase 2 (hot paths com anotações file:line + quizzes). Validator re-executado após correções. Cobertura atual: contracts/adapters/harness/council/etl/ingestion/factory/.factory/swarm/cli/root (100% pacotes principais).