Documentação / Agentes

Orquestrar na prática

Armadilhas do board autônomo — o sintoma, por que acontece e o que fazer — para quem coordena vários cards.

As ferramentas estão em Ferramentas MCP e o contrato em Escrever um contrato. Esta página é o que o orquestrador precisa lembrar enquanto o board roda — cada item já custou rodada perdida quando foi ignorado.

deps disparam sozinhas

Sintoma: o filho começa no instante em que o pai vira done, ou continua parado quando você esperava que parasse.

Num board autônomo, uma task pending cujas deps estão todas done é despachada sozinha — inclusive no nascimento, se as deps já estavam prontas. Crie o filho antes do done do pai se quiser que o autodispatch o pegue. O outro lado: ao pausar uma frente, marque os dependentes como blocked com pergunta (update_task / pergunta estruturada); senão eles começam sozinhos assim que o pai fechar.

send_to_card só enfileira

Sintoma: a tool volta ok e o agente trata a mensagem como lida e cumprida.

A entrega entra na fila do card e o veredito real vem por get_delivery. unconfirmed é comum: o app digitou, o agente ainda não acusou. Confirme lendo o card com read_card antes de assumir efeito.

Opção de recusar exige releitura

Sintoma: o briefing diz “se não tiver contexto, diga e pare” — e o orquestrador segue como se o card estivesse ativo.

Quando a mensagem dá ao card a opção de recusar, leia o scrollback depois. Não conte o card como ativo sem ver a resposta.

read_report mira o card

Sintoma: o orquestrador passa o id da task e não acha o report, ou lê o report errado numa rodada seguinte.

O target de read_report é o id do card, não o da task. Para várias rodadas no mesmo card, use afterSeq igual ao seq anterior. Um card ligado a várias tasks pode devolver ambiguous: true: confira o taskId dentro do report. O aviso de report na tela pode nomear outra task do mesmo card — o payload é a fonte.

Review wanted exige papel de revisor

Sintoma: o implementador chama done/failed e a tool recusa; ou um card vivo “revisa” sem gravar veredito.

Com review: "wanted", só um card ligado como reviewer grava done/failed. Para reusar um revisor que já está no board, use send_to_card com linkTaskId e linkRole: "reviewer" (ou link_task_card com o mesmo papel) — sem o vínculo, a mensagem não vira julgamento.

Gates na árvore compartilhada

Sintoma: vermelho que não é seu, ou verde que some na próxima corrida.

Gates e suítes pesadas na árvore que vários cards editam misturam trabalho em voo; o report do gate nomeia os arquivos que estavam sujos. Comando pesado seu: run_locked ou acbridge gate-lock -- (mesmo lock do gate-runner; --scope machine quando mede desempenho). Ferramenta fora do repo (binário, CLI instalada): declare em gateToolPaths no contexto do board para o runner achar o caminho.

Território entre repos

Sintoma: dois cards em repos diferentes “no mesmo path relativo” e o guard colide; ou um arquivo compartilhado sem rastro.

Em board com vários repositórios, use caminho absoluto no território — o relativo colide entre repos. Para um arquivo que dois cards precisam, use shared:<caminho> (<nota>). overrideTerritory (só orquestrador, na entrega) passa o guard com motivo e fica na trilha da task — não é atalho silencioso.

Reuso de card e contexto

Sintoma: o card afim “esquece” o contrato ou mistura duas tasks.

Reutilize um card só com folga de contexto. Perto do teto da janela, abra task nova em card novo — o custo de um spawn é menor que o de um relatório contaminado.

Depois de crash ou relogin

Sintoma: o card reabre e parece o mesmo agente, mas a sessão ou o modelo mudaram.

Sessões podem voltar trocadas; um card restaurado à mão pode estar em outra sessão ou outro modelo. Confira o banner e o scrollback antes da próxima task.

Provider sem canal de report

Sintoma: o card trabalhou e o report nunca chega (ou chega sob id errado).

Alguns providers não expõem o catálogo MCP de forma confiável (ex.: daemon compartilhado). Receba o resultado por send_to_card / mensagem e feche a task como reviewer — não espere um report que o shim não consegue assinar. Ver acbridge (CLI).