You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[FEAT] Board flow analysis from GitHub Projects V2 #252
Como líder de engenharia usando o Iris, eu quero visibilidade sobre o tempo que um item de trabalho passa em cada fase do board (não só do PR aberto ao merge) para entender se a IA está de fato acelerando a entrega ponta a ponta, ou só a fase de código enquanto a fila antes/depois permanece o mesmo gargalo.
Registrada retroativamente em 2026-09-16. O trabalho já foi implementado no PR #170 antes de existir uma issue rastreando-o — esta issue formaliza o que já foi decidido e construído, seguindo a Issue Tracking rule do CLAUDE.md e o precedente de "issue e plano primeiro, depois código" que o PR #238 (mergeado) estabeleceu para integrações externas a partir do caso Datadog (#15).
Acceptance criteria
Cliente GraphQL read-only para GitHub Projects V2 (platform/lib/integrations/github-projects/client.ts)
Sync incremental idempotente por node id, nunca lança exceção que derrube o cron (sync.ts)
Portões de qualidade de dado antes de qualquer métrica (board-quality.ts): synthetic_items, mass_import, done_not_closed, bulk_movement, field_completeness, assignee_concentration, history_coverage
Métricas de fluxo como funções puras testáveis (board-flow.ts): lead time, tempo por coluna, throughput, WIP aging, CFD
Validado contra um board real (198 itens, 754 eventos) via scripts/board-flow-dryrun.ts
Dashboard em /[tenant]/flow consumindo os dados já validados
Sync/upsert exercitado contra Postgres real (Docker/Supabase local)
Scope / non-goals
Dentro: leitura read-only de um board GitHub Projects V2 por organização; métricas de fluxo agregadas por board; portões de qualidade de dado.
Fora: qualquer escrita no board; ranking ou métrica por indivíduo (assignee_concentration expõe só percentual agregado, nunca login — Regra Absoluta #2 do CLAUDE.md); vocabulário de coluna hardcoded (nomes de coluna são heurística configurável, nunca fixos).
Se encaixa em qual estágio?
Stage 3 (prep) — integração de fonte de dado analítica externa, mesma categoria que a integração Datadog (#15), sob o precedente formalizado no ADR 2026-05-13 de docs/DECISIONS.md (via PR #238).
Doc de referência: docs/integrations/github-projects.md (adicionada pelo próprio PR, cobre a decisão de arquitetura de ler ProjectV2ItemStatusChangedEvent em vez de fazer snapshot periódico)
User story
Como líder de engenharia usando o Iris, eu quero visibilidade sobre o tempo que um item de trabalho passa em cada fase do board (não só do PR aberto ao merge) para entender se a IA está de fato acelerando a entrega ponta a ponta, ou só a fase de código enquanto a fila antes/depois permanece o mesmo gargalo.
Registrada retroativamente em 2026-09-16. O trabalho já foi implementado no PR #170 antes de existir uma issue rastreando-o — esta issue formaliza o que já foi decidido e construído, seguindo a Issue Tracking rule do
CLAUDE.mde o precedente de "issue e plano primeiro, depois código" que o PR #238 (mergeado) estabeleceu para integrações externas a partir do caso Datadog (#15).Acceptance criteria
platform/lib/integrations/github-projects/client.ts)sync.ts)023_github_projects.sql—project_boards,project_items,project_status_eventsboard-quality.ts): synthetic_items, mass_import, done_not_closed, bulk_movement, field_completeness, assignee_concentration, history_coverageboard-flow.ts): lead time, tempo por coluna, throughput, WIP aging, CFDscripts/board-flow-dryrun.ts/[tenant]/flowconsumindo os dados já validadosScope / non-goals
Dentro: leitura read-only de um board GitHub Projects V2 por organização; métricas de fluxo agregadas por board; portões de qualidade de dado.
Fora: qualquer escrita no board; ranking ou métrica por indivíduo (
assignee_concentrationexpõe só percentual agregado, nunca login — Regra Absoluta #2 doCLAUDE.md); vocabulário de coluna hardcoded (nomes de coluna são heurística configurável, nunca fixos).Se encaixa em qual estágio?
Stage 3 (prep) — integração de fonte de dado analítica externa, mesma categoria que a integração Datadog (#15), sob o precedente formalizado no ADR
2026-05-13dedocs/DECISIONS.md(via PR #238).Implementation notes
feat/github-projects-flow)docs/PLAN-datadog.md) — mesmo padrão declient.ts+syncOrganization()que nunca lança + upsert idempotente + slot no cron diáriodocs/integrations/github-projects.md(adicionada pelo próprio PR, cobre a decisão de arquitetura de lerProjectV2ItemStatusChangedEventem vez de fazer snapshot periódico)