Skip to content

[FEAT] Board flow analysis from GitHub Projects V2 #252

Description

@clickmatos

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.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)
  • Migration 023_github_projects.sql — project_boards, project_items, project_status_events
  • 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
  • Migration aplicada e checada em staging antes do merge do PR feat(platform): board flow analysis from GitHub Projects V2 #170
  • 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).

Implementation notes

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions