Sprint 009 — o detalhe da pessoa¶
Período: 2026-08-12 a 2026-08-18 (cadência de uma semana) Feature: 010 — detalhe da pessoa Plano: plan.md Origem: #211, pedida durante o sprint 007 Análise: rodada antes do código, seis correções, a crítica sendo de fronteira
Objetivo do sprint¶
Ao fim deste sprint, clicar numa pessoa mostra o que a plataforma sabe dela — e o que ela recusou afirmar.
São 88 evidências de vínculo pessoa-equipe e zero vínculos materializados. A tela existe para mostrar as três coisas: o que a origem declarou, que a plataforma não promoveu, e por quê.
Lições aplicadas¶
Do registro acumulado, 37 lições. As que entram como restrição:
| Lição | Origem | Como está sendo aplicada |
|---|---|---|
| L08 | Sprint 002 | contrato antes da primeira função pública — e ele recusa três funções de propósito |
| L11 | Sprint 002 | sem tocar a configuração de iterations |
| L18 | Sprint 003 | a aceitação avalia os 13 SC com evidência, nunca a suíte verde |
| L21 | Sprint 004 | F1 e F2 são consultas sem consumidor; a página está no mesmo sprint |
| L22, L23 | Sprint 004 | gate por código de saída — e desde a #229 ele vale de verdade |
| L25 | Sprint 004 | a rota usa identificador interno; login é da origem, muda, e não é único |
| L27 | Sprint 005 | ciclo completo antes do código — quinta feature seguida |
| L28 | Sprint 005 | "a função devolve" e "a tela mostra" são afirmações diferentes: os testes da página vão ao HTML |
| L30 | Sprint 005 | os números vêm do banco: 75 pessoas, 88 evidências, 4 232 designações, 4 241 autorias |
| L32 | Sprint 006 | a tela não afirma o que não observou: a não promoção é explicada com base no dado |
| L34 | Sprint 007 | duas opções com nomes distintos — assigned_to e authored_by —, nunca uma person_id |
| L36 | Sprint 008 | quando duas medidas parecem se contradizer, o elo é hipótese — e a análise desta feature isolou seis antes de afirmar |
A L34 entra antes de doer. Ela nasceu de "vivo" significar duas coisas na feature 008; aqui a palavra perigosa é "as issues da pessoa", que são três conjuntos — designadas, abertas, e a união. A união é a que não corresponde a nada, e FR-009 a proíbe.
Sprint no GitHub¶
Projeto: The Band
Iteração: não existe para este sprint — limitação declarada. Configurar iterations do ProjectV2 recria as existentes (L11), e já custou reatribuir 96 itens.
Tipos: a organização tem Task, Bug e Feature. Épico e user stories são tipados Feature.
User stories selecionadas¶
| # | User story | Épico | Issue | Priority | Estimate | Estado |
|---|---|---|---|---|---|---|
| US1 | Ver o que a plataforma sabe de uma pessoa | #233 | #234 | P1 | 8 | a fazer |
| US2 | Ver as equipes, e o que a plataforma recusou promover | #233 | #235 | P1 | 8 | a fazer |
| US3 | Ver o trabalho: issues e repositórios | #233 | #236 | P1 | 8 | a fazer |
As três são P1, e nenhuma é P0. Diferente do sprint 008: ali a ferramenta ficava inutilizável e a saída era SQL. Aqui a plataforma funciona — o que falta é enxergar o que ela já sabe.
Tarefas¶
Detalhadas em 010/tasks.md. Cada tarefa é filha da user story que ela atende — nunca do épico.
| # | Tarefa | Atende | Issue | Estimate | Fase | Estado |
|---|---|---|---|---|---|---|
| T001 | Listar as equipes que a origem declara | US2 | #237 | 3 | F1 | a fazer |
| T002 | Contar os papéis cadastrados | US2 | #238 | 2 | F1 | a fazer |
| T003 | Contar designações e autorias separadas | US3 | #239 | 3 | F2 | a fazer |
| T004 | Filtrar issues por pessoa, com dois nomes | US3 | #240 | 3 | F2 | a fazer |
| T005 | Agrupar os repositórios da pessoa | US3 | #241 | 3 | F2 | a fazer |
| T006 | Abrir a página da pessoa | US1 | #242 | 5 | F3 | a fazer |
| T007 | Ligar o nome à página | US1 | #243 | 2 | F3 | a fazer |
| T008 | Dizer o que a plataforma não promoveu | US2 | #244 | 5 | F3 | a fazer |
| T009 | Mostrar o trabalho sem somar | US3 | #245 | 5 | F3 | a fazer |
Total: 31 de complexity, nove tarefas. É o maior desde o sprint 005, e a razão é a tela: três seções, cada uma com uma distinção que não pode ser achatada.
O que a análise mudou, antes do código¶
| # | Achado | Correção |
|---|---|---|
| A1 | repositories_of_person/2 devolve identificador e contagens, e nada diz o nome do repositório. O nome é de CMPO, uma terceira fronteira que o plano não declarava. A implementação resolveria por linha, violando FR-016 |
CMPO no plano e em T005/T009; o nome vem de uma consulta virando mapa |
| A2 | dois no_longer_observed_at — issue e designação — sem regra para o cruzamento |
FR-008a: a issue manda |
| A3 | o plano dizia quatro consultas; são oito, e V8 media "um número que não cresce" | oito, aserido, com a tabela do que é cada uma |
| A4 | o terceiro caso da explicação era plausível e sem conteúdo | verificável: ninguém alocou papel a esta pessoa nesta equipe |
| A5 | as 288 issues sem autor eram afirmação sem verificação | SC-009a e V10: a soma das autorias fecha com 4 241 |
| A6 | o componente era justificado por três usos | são dois, e fica no limiar — declarado |
O A1 não é sobre lógica, é sobre registro. repository_live/show.ex já compõe três fronteiras,
então não havia violação — mas um plano que afirma duas autoriza a próxima pessoa a cruzar uma sem
pensar.
Escopo confirmado¶
Feature 010 completa — F1 a F3, T001 a T009.
As três fases são o MVP: F1 e F2 são consultas sem consumidor, e a L21 diz que isso não é funcionalidade entregue.
O corte possível é por user story, na ordem da spec. US1 sozinha já entrega o clique que hoje não existe.
Fora do escopo deste sprint¶
| Fora | Por quê |
|---|---|
| cadastrar papel, ou alocar pessoa a papel | é a #99 e a #100; esta feature exibe a ausência |
| promover a evidência a vínculo | depende do papel existir |
| módulo que monte a página | dissolveria a fronteira entre EO, WorkItems e CMPO — princípio IX |
| um lugar para as 288 issues sem autor | não têm pessoa |
| contribuição por commit, ou revisão de PR | não é coletado hoje |
| editar dado da pessoa | criaria uma segunda verdade sobre o que a origem declara |
Riscos e dependências¶
| Risco | Mitigação |
|---|---|
| exibir a soma de designação com autoria | FR-009; o teste procura o número proibido — refute html =~ ">19<" |
| ler nível de acesso como papel | FR-004; o teste faz refute sobre a palavra na seção de equipes |
| resolver o nome do repositório por linha | uma consulta virando mapa; o teste conta as consultas e exige oito |
| a explicação da não promoção envelhecer | o motivo vem do dado, com o terceiro caso previsto antes de existir |
| vínculo ausente desaparecer da tela | FR-006; o teste marca a evidência e exige que apareça com a data |
| issue ausente contar por causa da designação | FR-008a; o teste monta o cruzamento |
Nenhuma dependência de outra branch. A 014-detalhe-da-pessoa sai de main, e não há migração.
Definition of Done do sprint¶
- [ ]
mix gatesverde pelo código de saída — dez gates - [ ] V1 a V10 do quickstart verificados
- [ ] no dado real: a página de uma das 75 pessoas abre e mostra as três seções, com a explicação da não promoção
- [ ] a invariante das autorias conferida: a soma fecha com 4 241
- [ ] as nove issues encerradas ou repriorizadas com justificativa
- [ ] PR com revisor pedido e conferido por
requested_reviewers(L14), ligado ao projeto - [ ]
sprint-review.mdescrito, separando feito de não feito - [ ]
licoes-aprendidas.mdatualizado - [ ]
aceitacao.mdcom os 13 SC avaliados um a um - [ ] a tela olhada em 360 px — e não só asserida em HTML, que é a dívida que atravessou três sprints