Linear Sync Engine · projeto Espelho · board FER lido em 2026-09-03

Roteiro Espelho

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.

147unidades abertas em 8 pais
321arestas "blocked by" no board
7 → 3níveis no grafo → disparos no roteiro
99panes grok simultâneos no pico
14bundles verticais (1 pane, 2–3 tickets)

O que o grafo diz

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íveis pelo board, sem intervenção

NívelUnidadesQuem está lá
014C-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
114C-03, C-09, C-11 e 11 itens de qualidade/desktop
217C-04, C-07, os 11 E-SCHEMA, I-04, I-14, S-05, S-07
369C-05, C-06, C-08, 55 unidades do mirror, 13 do ingest
43011 E-RPC, 11 W, 5 I, T-03, T-06, W-09
52W-05, W-14
61INTEGRATION

Bloqueadores por dependentes transitivos

UnidadeIssueDependentes
C-02FER-611117
C-03FER-615111
C-07FER-63851
C-04FER-63740
C-11FER-61739
C-10FER-61216
C-05FER-65515
C-08FER-65714
S-04FER-61414
C-09FER-61612

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.

Três movimentos que removem a espera

  1. Tier 0 em paralelo, com um pane de merge. C-02 a C-12 são declarações de tipos com nomes congelados na spec. As 11 arestas internas (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.
  2. Bundles verticais. As 22 arestas 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.
  3. Gatilho por evento para o que sobra. Apenas três unidades esperam algo fora do seu disparo: 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.

Roteiro de disparos

dispara na abertura do disparobundle: 1 pane, vários ticketsgatilho: dispara quando o bloqueador fecha

Disparo 0 1 pane

C-01: workspace, pins de toolchain, oxlint + oxfmt. Cria a estrutura que os outros 11 contratos ocupam. É a única espera real do roteiro.

Tier 0 — contratos1 pane
C-01

Disparo 1 21 panes

Todo o Tier 0 restante mais as 10 unidades sem nenhum bloqueador. Cada pane trabalha no próprio worktree e entrega um branch.

Tier 0 — contratos11 panes
C-02C-03C-04C-05C-06C-07C-08C-09C-10C-11C-12
Qualidade e operação2 panes
Q-08Q-10
Spikes3 panes
S-03S-04S-08
Desktop Tauri4 panes
T-01T-02T-05T-06b
UI web1 pane
W-13

Merge Tier 0 1 pane

Um 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.

Disparo 2 99 panes

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.

Mirror por entidade51 panes
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-User
Ingest22 panes
I-01I-02I-03I-04I-05I-06+ I-07I-08I-09I-10I-11I-12I-13I-14I-15I-16I-17I-18I-19I-20I-21I-22I-23
Qualidade e operação8 panes
Q-01Q-02Q-03Q-04Q-05Q-06Q-07Q-09
Spikes3 panes
S-05S-06S-07
Desktop Tauri2 panes
T-03T-06após T-05
UI web13 panes
W-01W-02W-03+ W-14W-04W-06W-07W-08W-09após I-20W-10W-11W-12W-15W-16+ W-05

Gatilhos 3 eventos

W-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.

Integração1 pane
INTEGRATIONapós todas as 65 unidades que a bloqueiam

Do "sobre doubles" ao app real

O 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:

InsumoUsado emPor quê
Client id e secret do OAuth app do LinearI-22, W-15Login PKCE contra o Linear real
URL pública para o webhook e o secret de assinaturaI-01, RUN-REALO Linear precisa alcançar o ingest
Workspace Linear Free de testeQ-07Job de integração serializado contra API real
Certificado Apple e credenciais de notarizaçãoT-05Build assinado do desktop; opcional para rodar local

Prompt inicial

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.