T-099 — Migrar TASKS.md monolítico para 1-task-1-nota + Base de pipeline

Owner: Pedro · Frente: anouk-interno · Prazo: 2026-04-27 · Status: concluida · Prioridade: alta

Descrição

Migrar a fonte da verdade de tasks de tabela markdown monolítica (TASKS.md com 98 linhas em 7 colunas) para 1 nota por task com frontmatter rico, permitindo:

  1. Pipeline visual interativo via Obsidian Bases (kanban + 8 outras views)
  2. Filtros vivos por owner / frente / prazo / sprint / dependência
  3. Edição inline das propriedades (mudar status na nota → pipeline atualiza)
  4. Cross-link bidirecional entre tasks e demais artefatos do vault
  5. Escalabilidade — TASKS.md tabela já estava ficando inviável aos 98 itens; com 200+ vira ilegível

Critérios de conclusão

  • Pasta 00-projeto/tasks/ criada com folder note + template
  • Script de migração 99-operacao/scripts/migrate-tasks-to-notes.py (idempotente)
  • 98 notas geradas (T-001 a T-098), uma por task, com frontmatter completo
  • Base _bases/tasks-pipeline.base com 9 views (kanban, por owner, por frente, por prazo, sprint, completa, atrasadas, concluídas, dependências)
  • Script de export 99-operacao/scripts/export-tasks-dashboard.py que gera TASKS.md read-only
  • TASKS.md regenerado como dashboard read-only (resumo executivo + críticas + atrasadas + em-progresso + bloqueadas + todas ativas + concluídas)
  • Runbook 99-operacao/runbooks/runbook-tasks.md com convenções, troubleshooting, scripts
  • Esta task (T-099) criada manualmente seguindo o novo padrão como exemplo

Contexto

Discussão Pedro × Anouk em 27/04 — TASKS.md crescendo (98 itens, ~250 linhas) sem visão pipeline + sem filtros + sem cross-link bidirecional. Decisão: migrar para 1-task-1-nota seguindo o Caminho A discutido (Bases sobre notas individuais).

Decisões metodológicas:

  • Pasta: 00-projeto/tasks/ (vincula tasks ao bucket de governança do projeto)
  • Migração: todas 98 + parar edição manual de TASKS.md
  • TASKS.md vira read-only auto-gerado (export-tasks-dashboard.py)
  • Frontmatter rico: id, title, status, priority, owner, co_owners, frente, sprint, prazo, prazo_tipo, prazo_hora, created, completed, parent, depends_on, blocks, estimate, effort_real, tags, origem

Histórico de status

  • 2026-04-27 — concluída. 98 notas migradas + 6 artefatos novos (template, 2 scripts, base, folder note, runbook). Esforço real: ~1.5 h. Próximo ID: T-100.

Notas operacionais

O que funcionou:

  • Script idempotente — re-executar não quebra nada
  • Slugs de owner pré-mapeados (Pedro Villa → pedro, Antônio → antonio, etc.)
  • Title truncado no primeiro travessão ou ponto final

Pontos de atenção (refinar conforme uso):

  • Sprint slug derivado da seção da tabela origem — para tasks novas, definir sprint no frontmatter conscientemente
  • depends_on / blocks não são extraídos automaticamente — preencher manualmente quando relevante
  • effort_real em concluídas migradas vai vazio — preencher só em concluídas a partir de agora

Mudança de fluxo a partir de hoje:

  • Criar task = nova nota (não mais editar TASKS.md)
  • Atualizar status = editar frontmatter da nota
  • Visualizar pipeline = abrir _bases/tasks-pipeline.base
  • Visão executiva consolidada = TASKS.md (mas não editar — rodar export-tasks-dashboard.py)

Ver também