147 unidades abertas, 321 arestas de bloqueio, 7 níveis de profundidade. O plano reduz isso a três disparos e dois gatilhos. Nenhuma unidade espera outra dentro do mesmo disparo.
Toda a profundidade nasce no Tier 0. A cadeia C-02 → C-03 → C-04 → C-08 cria 4 dos 7 níveis. Fora do Tier 0, nenhuma unidade fica a mais de dois saltos de distância de um contrato.
| Nível | Unidades | Quem está lá |
|---|---|---|
| 0 | 14 | C-01, C-02, C-10, C-12, S-03, S-04, S-08, Q-08, Q-10, T-01, T-02, T-05, T-06b, W-13 |
| 1 | 14 | C-03, C-09, C-11 e 11 itens de qualidade/desktop |
| 2 | 17 | C-04, C-07, os 11 E-SCHEMA, I-04, I-14, S-05, S-07 |
| 3 | 69 | C-05, C-06, C-08, 55 unidades do mirror, 13 do ingest |
| 4 | 30 | 11 E-RPC, 11 W, 5 I, T-03, T-06, W-09 |
| 5 | 2 | W-05, W-14 |
| 6 | 1 | INTEGRATION |
| Unidade | Issue | Dependentes |
|---|---|---|
C-02 | FER-611 | 117 |
C-03 | FER-615 | 111 |
C-07 | FER-638 | 51 |
C-04 | FER-637 | 40 |
C-11 | FER-617 | 39 |
C-10 | FER-612 | 16 |
C-05 | FER-655 | 15 |
C-08 | FER-657 | 14 |
S-04 | FER-614 | 14 |
C-09 | FER-616 | 12 |
Os 12 contratos do Tier 0 e o spike S-04 concentram 297 das 321 arestas. As 24 restantes são internas a um mesmo app.
Caminho crítico: C-02 → C-03 → C-04 → C-08 → W-16 → W-05 → INTEGRATION. Sete unidades em série, se o board for seguido ao pé da letra.
C-02 → C-03, C-04 → C-08…) viram trabalho de merge, não de espera. Só C-01 roda sozinho antes, porque ele cria o workspace em um repo com zero commits.E-SCHEMA → E-MIGRATION e E-SCHEMA → E-REPO ficam dentro de um pane só: um grok por entidade faz schema, migration e repositório em sequência, com o contexto quente. Mesma regra para W-16 + W-05, W-03 + W-14 e I-06 + I-07. Os tickets no Linear não mudam; só o brief do pane cobre 2 ou 3 deles.W-09 espera I-20, T-06 espera T-05, e INTEGRATION espera todas. Cada conclusão dispara a próxima na mesma hora. Nenhuma "onda" é aguardada.Só C-01: workspace, pins de toolchain, oxlint + oxfmt. Cria a estrutura que os outros 11 contratos ocupam. É a única espera real do roteiro.
C-01Todo o Tier 0 restante mais as 10 unidades sem nenhum bloqueador. Cada pane trabalha no próprio worktree e entrega um branch.
C-02C-03C-04C-05C-06C-07C-08C-09C-10C-11C-12Q-08Q-10S-03S-04S-08T-01T-02T-05T-06bW-13Um grok integra os 11 branches de contrato em main, resolve imports cruzados e roda o gate de tipos. Quando fecha, 96 unidades destravam de uma vez.
Tudo que depende só de contratos ou do Disparo 1. É o pico de paralelismo. Os bundles entram aqui. Merge por milestone em paralelo, um grok por milestone, conforme os branches chegam.
E-BOOTSTRAP-AttachmentE-BOOTSTRAP-CommentE-BOOTSTRAP-CycleE-BOOTSTRAP-IssueE-BOOTSTRAP-IssueLabelE-BOOTSTRAP-OrganizationE-BOOTSTRAP-ProjectE-BOOTSTRAP-ProjectMilestoneE-BOOTSTRAP-TeamE-BOOTSTRAP-UserE-BOOTSTRAP-WorkflowStateE-RECONCILE-AttachmentE-RECONCILE-CommentE-RECONCILE-CycleE-RECONCILE-IssueE-RECONCILE-IssueLabelE-RECONCILE-OrganizationE-RECONCILE-ProjectE-RECONCILE-ProjectMilestoneE-RECONCILE-TeamE-RECONCILE-UserE-RECONCILE-WorkflowStateE-RPC-AttachmentE-RPC-CommentE-RPC-CycleE-RPC-IssueE-RPC-IssueLabelE-RPC-OrganizationE-RPC-ProjectE-RPC-ProjectMilestoneE-RPC-TeamE-RPC-UserE-RPC-WorkflowStateE-SCHEMA-Attachment+ E-MIGRATION-Attachment + E-REPO-AttachmentE-SCHEMA-Comment+ E-MIGRATION-Comment + E-REPO-CommentE-SCHEMA-Cycle+ E-MIGRATION-Cycle + E-REPO-CycleE-SCHEMA-Issue+ E-MIGRATION-Issue + E-REPO-IssueE-SCHEMA-IssueLabel+ E-MIGRATION-IssueLabel + E-REPO-IssueLabelE-SCHEMA-Organization+ E-MIGRATION-Organization + E-REPO-OrganizationE-SCHEMA-Project+ E-MIGRATION-Project + E-REPO-ProjectE-SCHEMA-ProjectMilestone+ E-MIGRATION-ProjectMilestone + E-REPO-ProjectMilestoneE-SCHEMA-Team+ E-MIGRATION-Team + E-REPO-TeamE-SCHEMA-User+ E-MIGRATION-User + E-REPO-UserE-SCHEMA-WorkflowState+ E-MIGRATION-WorkflowState + E-REPO-WorkflowStateE-WEBHOOK-AttachmentE-WEBHOOK-CommentE-WEBHOOK-CycleE-WEBHOOK-IssueE-WEBHOOK-IssueLabelE-WEBHOOK-ProjectE-WEBHOOK-UserI-01I-02I-03I-04I-05I-06+ I-07I-08I-09I-10I-11I-12I-13I-14I-15I-16I-17I-18I-19I-20I-21I-22I-23Q-01Q-02Q-03Q-04Q-05Q-06Q-07Q-09S-05S-06S-07T-03T-06após T-05W-01W-02W-03+ W-14W-04W-06W-07W-08W-09após I-20W-10W-11W-12W-15W-16+ W-05W-09 dispara quando I-20 fecha. T-06 dispara quando T-05 fecha. INTEGRATION dispara quando o último dos 65 bloqueadores fecha. Nada aguarda em fila além disso.
INTEGRATIONapós todas as 65 unidades que a bloqueiamO board termina em INTEGRATION, que roda ingest, web e desktop ponta a ponta sobre doubles. "App funcionando real e oficial" pede uma unidade a mais, que ainda não existe no board.
Proposta: unidade RUN-REAL sob FER-609. Subir o ingest contra o workspace Linear do dono, receber um webhook real, abrir a UI web e o desktop conectados, e ver uma issue criada na UI aparecer no Linear. Critério de parada do orquestrador.
Origem: derivada do seu pedido "só parar com o app funcionando real". Não está no board. Eu crio o ticket se você confirmar.
Para esse último passo, quatro insumos só você tem. Sem eles o roteiro para antes do fim:
| Insumo | Usado em | Por quê |
|---|---|---|
| Client id e secret do OAuth app do Linear | I-22, W-15 | Login PKCE contra o Linear real |
| URL pública para o webhook e o secret de assinatura | I-01, RUN-REAL | O Linear precisa alcançar o ingest |
| Workspace Linear Free de teste | Q-07 | Job de integração serializado contra API real |
| Certificado Apple e credenciais de notarização | T-05 | Build assinado do desktop; opcional para rodar local |
Um prompt, e o orquestrador segue até o critério de parada. O prompt traz só o que não existe no board: missão, ponteiros, lane, parada e insumos. As regras de cada unidade já vivem no ticket.
Missão: executar o projeto Linear Sync Engine até RUN-REAL verificado. Fontes, nesta ordem: o board (Linear, projeto a79e3ef5, label Espelho) para cada unidade; o artifact "Roteiro Espelho" para a ordem dos disparos e os bundles. Não repetir aqui o que está lá. Lane: 1 grok via herdr por pane (skill herdr-executors); worktree e branch por pane; merge em main só por grok de merge, um por milestone. Sem teto de panes: disparar tudo que estiver desbloqueado. Critério de parada: RUN-REAL verificado por mim. Antes disso, não parar; a cada /clear, retomar do board. Insumos que só eu tenho: [OAuth client id/secret] [URL pública + webhook secret] [workspace Free de teste] [certificado Apple ou "pular T-05"]. Se um faltar, seguir com o resto e me marcar no Linear na issue travada.
Fonte dos números: consulta GraphQL ao Linear em 2026-09-03, 157 issues do projeto, 321 relações do tipo blocks. Arquivo graph.json no scratchpad da sessão.