Passo 3 · Planejamento·Fusão dos três acordes ENPT
Alembic · Blind Planning

Três acordes

Mission (Droid) + Workflow (Claude) + Swarm (Kimi) — mecânica extraída, UIs não copiadas — unificados em alembic.plan.ts sob Loop Engineering.

1

A ideia central


A Fase 1 do blind planning exige três REs independentes (RE-A Missions, RE-B Workflows, RE-C AgentSwarm). A Fase 2 funde em verbos Alembic — não um Frankenstein de UIs.

Acorde Mission (Droid): validation-contract antes do run; runner programático; sessão fresca por unit; validators no milestone; handoff JSON.

Acorde Workflow (Claude): alembic.plan.ts determinístico com phase(), agent(), parallel(); resume cache; sem Date.now() no corpo.

Acorde Swarm (Kimi): prompt_template + items[]; rampa 5+700ms; exclusive-deny; wire.jsonl por subagente.

Pense como… transcrever partituras de três bandas — não o palco deles. Alembic escreve uma partitura nova que chama os três movimentos numa só execução.

RE-A ≥500 linhas · RE-B ≥800 · RE-C ≥700. Cada claim comportamental: string do binário + path em disco ou linha do brightdata scrape.

2

Tabela de fusão


mission() agent() phase() swarm() Alembic Conductor · HarnessCore
Três acordes → API unificada. Fonte: PROMPT-BLIND-PLANNING.md § Fase 2, 03-three-chords-spec.md
PrimitivoMissionsWorkflowsSwarmAlembic
Unidade atômicaFeatureagent()items[]Unit / task
ParalelismoValidação milestoneparallel() cap 16rampa 5+700msconfigurável
Estado~/.factory/missions/script + cachewire.jsonl~/.alembic/runs/
3

alembic.plan.ts


Forma unificada (blind prompt)
export const meta = { name: '...', phases: ['discover','build','prove'] } as const;

export async function run(h: AlembicHooks) {
  await h.phase('discover', () => h.swarm({
    promptTemplate: 'Audit {{item}} read-only',
    items: ['api','ui','tests']
  }));
  if (await h.council({ board: 'tech-council', question: '...' }) === 'NO_GO') return;
  await h.phase('build', () => h.mission({
    units: [{ id: 'schema', proof: ['pnpm test'] }]
  }));
}
Regras de fusão R1–R5
R1 validation-contract before runner
R2 deterministic script body
R3 swarm exclusive per turn
R4 Council NO_GO → zero workers
R5 Validator ≠ builder
4

Experimente: escolha um acorde


DNA: validation-contract.md primeiro · propose → approve → runner · scrutiny + user-testing · ~/.factory/missions/<uuid>/
DNA: export const meta · phase(name, fn) · resumeFromRunId · cap 16 · sem Date.now()
DNA: prompt_template + {{item}} · min 2 items · rampa 5+700ms · exclusive-deny · wire.jsonl