Classify
A primeira leitura. Determina o tipo da issue (intent, feature, bug, refactor) e dá veredito CLARO ou VAGO. Escolhe a persona certa para o passo seguinte.
Cada estado é um rótulo no forge — qualquer monitor, em qualquer pod, retoma de onde o anterior parou. Sem coordenação adicional, sem ponto único ativo.
Cada estado é um rótulo persistido no próprio forge — a issue (e a PR derivada) carregam o estado no seu próprio metadado. Isso significa que qualquer monitor, em qualquer pod, consegue retomar de onde o anterior parou, sem coordenação adicional.
~workflow:nova │ ▼ stage 1 · classify │ ~workflow:em_revisao │ ├── veredito CLARO ───────────────► ~workflow:revisada │ │ │ ┌───────────┴───────────┐ │ intent │ │ feature/bug/refactor │ ▼ ▼ │ ~workflow:decomposta ~workflow:em_implementacao │ (architect abre 1 │ │ + checklist de derivadas) │ │ ▼ │ ~workflow:em_pr ────► trilho da PR │ └── veredito VAGO ──► ~refine:N + refino por persona: │ ├─ intent → ~workflow:em_refinamento (analyst) └─ feature/bug → ~workflow:em_arquitetura (architect/debugger) │ ↕ ~workflow:aguardando_stakeholder │ (humano remove o rótulo p/ destravar) │ ▼ volta para ~workflow:nova (até 5 voltas; N ≥ 5 → ~workflow:bloqueada)
PR aberta em auto/issue-N │ ▼ ~review:pendente │ ▼ reviewer-LLM persona ~review:em_andamento │ ├── falha ──► fix + push ──► reabre review │ └── ok ──► merge ──► ~review:concluida │ ▼ post-merge callback follow-ups + episodic memory
As etapas são roteáveis por 3 eixos independentes: qual worker, qual modelo, qual esforço de raciocínio.
O painel [d] mostra a matriz inteira editável ao vivo.
A primeira leitura. Determina o tipo da issue (intent, feature, bug, refactor) e dá veredito CLARO ou VAGO. Escolhe a persona certa para o passo seguinte.
Reescreve título, corpo e critérios de aceite até que a issue esteja implementável. Até 5 rodadas, com contador persistido em rótulo. Pausa em aguardando_stakeholder quando há gap de produto real.
Quebra uma intent ampla em entregáveis menores. Estratégia anti-flood: abre uma única issue derivada com checklist de próximas, e libera o leque conforme cada uma fecha.
Edita arquivos, instala dependências, roda apenas os testes impactados, comita e empurra. Resumível em-place; sessões acima do orçamento são promovidas a fresh. Despachado para o motor escolhido para esta etapa.
Brief unificado: lê estado real da PR (autor, reviewer, threads, último review, CI). Aprova, corrige e re-push, ou solicita mudanças. Sempre persona reviewer, independente do engine.
Pós-merge: coleta TODOs, débitos e aprendizados; abre derivadas; injeta o contexto do PR mergeado na memória episódica para enriquecer o próximo turno.
Quando o pipeline acorda, ele NÃO começa lançando trabalho novo. Ele primeiro recolhe o que ficou para trás, libera capacidade, retoma o que estava em andamento — e só então classifica o que chegou de novo. Essa ordem é o que evita duplicação e perda.
tick(N) │ ├─ ① reaper — quem ficou parado em em_implementacao/em_andamento > ~45 min? │ incrementa ~attempt:N; em N≥3, marca ~workflow:bloqueada. │ ├─ ② reconcile — quem completou (fire-and-forget)? Libera vaga ANTES de despachar. │ ├─ ③ resume — quem tem ~em_implementacao + entrada no ledger? Retoma. │ Sessão acima do orçamento → promove a fresh. │ ├─ ④ classify — issues ~workflow:nova ganham o primeiro veredito. │ ├─ ⑤ review/refine — vagas vão p/ refino sob persona certa; claras seguem. │ ├─ ⑥ implement/decompose — despachado para o engine escolhido p/ a etapa. │ ├─ ⑦ pr_review — só em PRs que este monitor reivindicaria │ (auto/issue-* ou repos com human-PR review habilitado). │ └─ ⑧ mentions — roteia menções e comentários por papel: issue+assignee → ~workflow:nova PR+qualquer → brief unificado comment dirigido → one-shot persona developer
Rótulo ~prioridade:0..3 reordena candidatos (0 primeiro). PR herda a prioridade da issue ligada.
Com mais de um monitor, cada item vai para um shard determinístico via hash do número. Sem coordenação. Sem item duplicado.
3 falhas seguidas de auth no worker pausam o alvo por um intervalo crescente. O tick passa adiante.
Antes de programar, o pipeline pede crítica. Por tipo de issue, uma persona reescreve até a tarefa estar implementável — ou pausa explicitamente em aguardando_stakeholder. Cinco rodadas máximas, contador durável no próprio rótulo.
Quando o architect quebra uma intent, ele NÃO cria 20 issues de uma vez. Abre uma derivada + checklist. Conforme fecha, libera a próxima. O leque cresce no ritmo do progresso real.
São dois mecanismos. Resume continua trabalho COMECADO e registrado. Reaper REIVINDICA trabalho parado por mais tempo do que o aceitável. Cada um com seu contador, seu teto e seu critério de bloqueio.
Menções e atribuições são roteadas por papel: issue+assignee injeta novo trabalho; PR+qualquer trigger lê estado real e age; comentário dirigido vira um-off. Idempotência cross-tick via rótulo processado.
Se o repo tem CI, o reviewer espera os checks e corrige até passar — sem rodar a suíte no pod. Se não tem CI, roda a suíte completa ali mesmo. Em CI pending, pula o despacho deste tick para não brigar contra um job que ainda vai terminar.
Cada dispatch tem teto de custo em USD. Sessões longas são promovidas a fresh quando passam do orçamento. O ledger JSONL persistido sobrevive a scale-to-zero do worker — auditoria não evapora.