T-103 — Integridade referencial task→pessoa→time + slugs canônicos + validador

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

Descrição

Garantir que owner da task aponte para slug canônico do arquivo da pessoa em 00-projeto/directory/pessoas/, criando integridade referencial task → pessoa → time.

Antes desta task:

  • Tasks usavam slugs curtos (pedro, antonio, igor)
  • Pessoas usavam slugs completos no arquivo (pedro-villa.md, antonio-pavanelli.md)
  • Mismatch impedia “vinculação inteligente” — herdar teams/empresa/frente da pessoa via base.

Depois:

  • 62 owners normalizados em 68 tasks (slugs curtos → completos)
  • Validador automático confere integridade
  • Template e runbook documentam a convenção

Critérios de conclusão

  • OWNER_SLUG_MAP atualizado em migrate-tasks-to-notes.py (mapeia para slug completo)
  • Script 99-operacao/scripts/normalize-task-owners.py criado (idempotente)
  • Re-execução normalizou 68 tasks (62 owners atualizados)
  • Script 99-operacao/scripts/validate-tasks.py criado com 5 checks (owner existe, owner tem teams, depends_on/blocks reais, deprecated slugs, dependências circulares)
  • Validador passa com 0 erros após normalização (35 pessoas, 35 com teams, 11 owners únicos em uso, 102 tasks)
  • Template 00-projeto/tasks/_template.md atualizado com tabela errado/correto + nota sobre vinculação automática
  • Runbook atualizado: convenção de owner canônico + comandos validate / normalize
  • Base _bases/tasks-pipeline.base atualizada — filtros 👤 Pedro / 👤 Antônio agora usam slugs canônicos (pedro-villa, antonio-pavanelli)
  • Esta task (T-103) criada usando o novo padrão (owner: pedro-villa)

Contexto

Pedro pediu em 27/04: “Quando eu vou cadastrar uma task, ela deveria ser vinculada a uma pessoa que já está cadastrada à lista de pessoas no diretório. Cada pessoa deve ser amarrada a um time. Assim já herdamos todas as informações de maneira inteligente.”

Como a “vinculação inteligente” funciona:

  1. Task tem owner: pedro-villa — slug canônico
  2. Existe arquivo 00-projeto/directory/pessoas/pedro-villa.md com frontmatter:
    teams: [anouk-projeto]
    empresa: Anouk Partners
    frente: anouk-interno
    cargo: Líder do projeto
  3. Validador confere o link
  4. Bases podem (com queries futuras ou manualmente) cruzar dados

Limitação Bases: não faz JOIN entre Bases diferentes ainda. Mas a integridade está garantida — quem precisar de cross-data pode usar Dataview ou queries customizadas.

Histórico de status

  • 2026-04-27 — concluída. 0 erros de integridade · 35 pessoas com teams · validator + normalizer prontos.

Notas operacionais

Comandos do dia-a-dia:

# Validar integridade (rodar antes de commitar mudanças em tasks/pessoas)
python 99-operacao/scripts/validate-tasks.py
 
# Normalizar slugs em tasks legadas (caso alguém crie task com slug curto por engano)
python 99-operacao/scripts/normalize-task-owners.py
 
# Re-gerar TASKS.md auto-gerado
python 99-operacao/scripts/export-tasks-dashboard.py

Como criar nova task corretamente:

  1. Copiar 00-projeto/tasks/_template.md
  2. Preencher owner: <slug> — usar slug do arquivo da pessoa, não nome curto
  3. Validar: python 99-operacao/scripts/validate-tasks.py → 0 erros

Pessoas com slug igual ao nome curto (não precisam mudar): gabriel · rafael · blaschek · marcos · lucas · daniel-jackel · leandro-braga-cardoso · leandro-delecrodio · philipe-cardoso · fabio-sodeyama · amanda-ferreira · guilherme-elmec · humberto-schott · ygor-chrispin · vlamir-mazotti · mauricio-nascimento · sergio-hilario · rodrigo-eisenbraun · camila-silva · luciana-cruz · cristiane-soares · lucas-montemor · darley-silva · gustavo-moreira · taiany-campioni · jean-luc

Pessoas que tiveram slug atualizado (curto → completo):

  • pedro → pedro-villa
  • antonio → antonio-pavanelli
  • igor → igor-reginato
  • michael → michael-sousa
  • ricardo → ricardo-betancourt
  • bruno → bruno-serapiao
  • tatiana → tatiana-souza
  • gianlucca → gianlucca-piva
  • carolina → carolina-araujo

Ver também