Passo 2 · Modelo mental · Modelo mental · Arquitetura O·W·V ENPT
Factory Droid CLI Missions · Curso Visual

Orquestrador · Worker · Validator

Três papéis, um runner programático: planejar antes, implementar feature a feature, validar em milestones.

Leia a versão simples ou abra a camada técnica em qualquer seção.
1

A ideia central


Missions divide o trabalho de agentes em três camadas que não compartilham um único chat inchado.

Orquestrador — o gerente de projeto. Sessão longa com interactionMode: mission. Escreve o contrato de validação antes de fixar features, mantém artefatos compartilhados, chama propose_mission para aprovação e depois start_mission_run. Não acumula detalhe de implementação.

Worker — o implementador. O mission runner dispara uma sessão fresca por feature de features.json. Cada worker recebe spec + skill, implementa com TDD local e devolve handoff JSON. Workers não declaram "pronto" — validators decidem.

Validator — o inspetor. Ao completar features de um milestone, o sistema auto-injeta features scrutiny-validator e user-testing-validator. Sub-droids revisam código e testam fluxos reais contra IDs do contrato. Falhas viram fix features; o loop repete.

Pense como… uma produção cinematográfica. O diretor (orquestrador) tem roteiro e cronograma mas não opera cada câmera. Cada cena tem equipe dedicada (worker) com call sheet limpo. No fim de cada ato, QC (validators) roda dailies e lista de refilmagens. O diretor não escolhe manualmente "take 47" — um runner programático avança a fila.

Tipos de sessão (constantes no binário)

mission-orchestrator, mission-worker, tag mission-session. Sessões filhas indexadas via decompMissionId em session-discovery-index.json.

Mission runner

Loop programático pós-start_mission_run: "pega a lista de features e dispara um worker por feature em ordem." Retomar após pausa continua na feature pendente. Heurística de custo: total runs ≈ #features + 2 × #milestones (+ rounds de fix).

Proibição crítica

Prompt no binário: NEVER create features with skillName scrutiny-validator or user-testing-validator — o sistema auto-injeta no fim do milestone.

Delegação ad hoc via Task

Orquestrador pode chamar Task com subagent_type: "worker" para exploração — distinto do runner formal executando features.json.

2

Em uma figura


User /missions exec --mission Orchestrator interactionMode=mission mission-planning + define-mission-skills validation-contract BEFORE features ~/.factory/missions/<uuid>/ artifacts propose_mission → approve → start_mission_run Mission Runner Feature Worker 1 feature ≈ 1 fresh session handoffs/*.json worker-transcripts Milestone? yes scrutiny + user-testing auto-injected validators no → next feature Mission Control Ctrl+T · orchestrator only
Fluxo de cima para baixo (diagrama RE mermaid): orquestrador planeja e aprova; runner executa workers em sequência; gates de milestone injetam validators; Mission Control só na sessão orquestradora.
USER → /missions or droid exec --mission
  → ORCHESTRATOR (interactionMode=mission)
    → mission-planning + define-mission-skills
    → ~/.factory/missions/<uuid>/
    → propose_mission → (approve) → start_mission_run
      → MISSION RUNNER (programmatic, sequential)
        → FEATURE WORKER (fresh session each)
        → handoffs/*.json
        → milestone? → scrutiny-validator + user-testing-validator
        → pass? → next milestone : fix features → re-validate
  → MISSION CONTROL (Ctrl+T, orchestrator only)
3

No código


As duas tools mission-specific do orquestrador e os eventos de progresso que o runner emite.

Binary tool enum (NY) + progress_log vocabulary (dw)
# Orchestrator tools
propose_mission   # present proposal to operator
start_mission_run # kick programmatic runner

# Progress events (progress_log.jsonl)
mission_run_started
worker_started
worker_selected_feature
worker_completed
worker_failed
milestone_validation_triggered

# Validator skillNames (auto-injected — do NOT add manually)
scrutiny-validator
user-testing-validator
~/.factory/droids/ (custom sub-droids)
worker.md                      # generic feature worker
scrutiny-feature-reviewer.md   # per-feature code audit
user-testing-flow-validator.md # assertion IDs from contract

state.json enum

planningawaiting_inputinitializingrunningpaused / orchestrator_turncompleted | cancelled

4

Experimente: três camadas


Clique em cada papel. Veja o que ele controla — e o que deliberadamente não faz.

Controla: mission.md, validation-contract.md, features.json, propose_mission, start_mission_run, Mission Control.
Não faz: implementar feature linha a linha nem declarar milestone "pronto".
Controla: spec de uma feature, procedimento da skill, TDD, handoff JSON (salientSummary, commitId, skillFeedback).
Não faz: julgar correção — entrega evidência; validators decidem.
Controla: gates scrutiny (test/lint/typecheck), testes de fluxo contra IDs VAL-*, screenshots em evidence/.
Não faz: ser criado manualmente em features.json — auto-injetado no fim do milestone.
Próximo: os arquivos em disco — o que cada artefato contém e como handoffs ligam workers a validators.