Skip to content

Manutencao/paridade com sdd - #5

Merged
ronifabio merged 14 commits into
mainfrom
manutencao/paridade-com-sdd
Sep 8, 2026
Merged

Manutencao/paridade com sdd#5
ronifabio merged 14 commits into
mainfrom
manutencao/paridade-com-sdd

Conversation

@ronifabio

@ronifabio ronifabio commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

Closes #5

O que este PR faz e por quê

Comparei este template com o utf-sdd-template e encontrei uma diferença que não
era de propósito: o SDD recebeu cinco rodadas de manutenção depois que este aqui
parou, e o miolo do método ficou uma geração atrás. As diferenças de identidade da
disciplina — Gitflow, Angular com BaaS, a ficha com oito RAs, a jornada vivendo no
protótipo em vez de num documento — continuam intactas. O que este PR traz é o que
ficou para trás sem querer, mais dois defeitos que faziam o ciclo mentir.

Os dois defeitos são o motivo principal deste PR.

O primeiro: o utf-task.md mandava os revisores rodarem
git diff <SHA-do-passo-0>..HEAD, mas nesse ponto o trabalho do implementador
ainda não está commitado — está no working tree. Com ..HEAD o comando compara o
SHA com ele mesmo e devolve nada, então os dois revisores vinham emitindo parecer
sobre diff vazio, e "APROVADO" não significava coisa alguma. Faltava também um
git add -A depois do implementador: arquivo novo não rastreado não aparece em
git diff de jeito nenhum, e componente e teste recém-criados são o miolo de quase
toda tarefa.

O segundo: o caminho dos pareceres aparecia em três formas diferentes dentro do
mesmo arquivo, e numa quarta no utf-issue.md. Como a contagem de rodadas é a
listagem do diretório, gravar num caminho e contar noutro faz o ciclo achar que
está sempre na rodada 1 — e o limite de duas rodadas, que é o freio contra o loop
infinito de correção, deixa de existir. Agora há uma forma só, com um passo
explícito de normalização do número.

O resto é paridade. A Fase 0 ganhou o portão de commit, que confere com
git status --porcelain se o documento anterior foi commitado antes de seguir —
sem ele o portão existia só como texto no guia, e os quatro documentos acabavam
empilhados num commit único no fim, com a autoria sumindo. O /utf-issue ganhou a
retomada de estado, para não reescrever spec já aprovada. O tutor ganhou os modos
passo, prd, design, architecture e setup, com a oferta no portão de cada
etapa. Entraram os modelos comentados de spec e plano, os templates de Issue para
bug e tarefa técnica, e a seção do tutorial que explica o caminho curto — no bug, o
primeiro commit é um teste que reproduz a falha. A auditoria final foi invertida:
a documentação é atualizada antes do auditor rodar, porque duas das quatro coisas
que ele confere são exatamente essas atualizações.

O Portão de Entendimento caiu de 400 para 250 caracteres, alinhando com o outro
template. Tirei as datas fixas da ficha, que envelhecem em silêncio — prazo vive no
Moodle. E o CONTRIBUTING agora diz a quem as regras de Gitflow se aplicam: ao
projeto que a equipe constrói, não a este repositório, que não tem produção nem
release. Essa ambiguidade tinha consequência prática — um agente rodando aqui lia a
constituição e tentava abrir branch a partir de uma develop que não existe.

Por fim, entra o site do método em site/, publicado no Pages por um workflow com
guarda de repositório, para o repositório de cada equipe não tentar publicá-lo. O
conteúdo foi escrito para este template, não copiado do outro: Gitflow com a branch
nascendo da develop antes da aprovação da spec, Angular e BaaS no lugar de NestJS,
e os onze artefatos deste método.

Depois do merge, falta um passo manual: em Settings → Pages, trocar a origem
para GitHub Actions. Sem isso o deploy falha, e não há como configurar isso por
arquivo.

Apontamentos da revisão

Não se aplica — PR de manutenção, sem spec.md.

ronifabio and others added 14 commits September 8, 2026 13:48
Alinha o limite ao utf-sdd-template, que baixou o mesmo numero. Os 400
pediam um paragrafo longo mesmo em PR de manutencao de uma linha, e o
efeito era texto inflado para passar no CI em vez de explicacao. Toca o
workflow do CI, o guia (secao 9 e Apendice B), o CONTRIBUTING e o
template de PR — os quatro lugares que afirmavam o numero.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Prazo de entrega vive no Moodle, nao no repositorio: data em arquivo
versionado envelhece sem ninguem perceber, e o template e reusado a cada
semestre. A tabela das tres entregas perde a coluna Data e ganha a nota
dizendo onde a data esta.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
… commitado

Cada etapa da Fase 0 passa a rodar `git status --porcelain` no documento
que a antecede e a PARAR se houver alteracao pendente. Sem isso o portao
da Fase 0 existia so como texto no guia: nada no fluxo impedia seguir com
quatro documentos por commitar, que acabavam empilhados num commit unico
no fim — e ai o `git log` nao prova mais qual decisao foi de quem.

Cadeia coberta: /utf-design confere o prd, /utf-architecture confere prd e
design-tokens, /utf-setup confere docs/ inteiro. O /utf-backlog ja exigia
o commit do PRD em prosa; agora a exigencia tem comando que a verifica.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sem essa regra, rodar /utf-issue numa historia ja em andamento fazia o
fluxo recomecar do Passo 1 e reescrever uma spec que o usuario ja tinha
aprovado — apagando o commit de aprovacao dele como referencia. Agora o
fluxo descobre o estado pela pasta specs/ e entra no passo certo, o que
tambem e o mecanismo que fecha a Issue depois da ultima tarefa.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
O tutor do Angular tinha 4 modos; o do utf-sdd-template tem 9. Portados os
que fazem sentido aqui (o modo `flows` fica de fora: neste template a
jornada vive no prototipo, nao num docs/user-flows.md):

- `passo <n>` — le o diff da tarefa um arquivo por vez, no ritmo do aluno.
  E onde se aprende sintaxe: inject(), signal(), async aparecem pela
  primeira vez com cinco linhas na frente, nao no PR com quarenta arquivos.
- `prd | design | architecture` — explica um documento da Fase 0 em cima do
  documento do aluno, antes de ele commitar uma decisao que nao sabe
  defender na arguicao.
- `setup` — explica o scaffold: o app, a fonte de dados, e por que a suite
  nasce verde e vazia. O /utf-setup despacha sozinho, sem perguntar, porque
  e o unico momento do semestre em que o aluno recebe dezenas de arquivos
  que nao viu nascer.

Cada etapa da Fase 0 passa a oferecer o tutor no portao. O modo `depois`
tambem ganhou o caso da tarefa ainda nao commitada e um grep de commit que
nao confunde `tarefa 1` com `tarefa 10`.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
O /utf-issue descrevia a spec e o plano em prosa, e o formato saia
diferente a cada historia — o que faz o revisor de conformidade procurar
criterio numerado onde nao ha e o /utf-task nao achar a proxima tarefa.

Agora a forma esta escrita, com um comentario em cada secao dizendo por que
ela existe: o teste que prova um criterio de aceite, o "Fora de escopo" que
segura o inchaco da spec, o "Assume que" que exige TODO e Issue, e as
"Duvidas em aberto" que precisam estar vazias antes da aprovacao. Os
modelos moram em docs/ de proposito: specs/ so tem spec de verdade.

Adaptados ao template: dependencia contra a develop (Gitflow), o teste e um
.spec.ts, o contrato e com o json-server ou o BaaS, e o caso de "Assume que"
mais comum aqui e a colecao que so migra para o BaaS na E3.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Bug e tarefa tecnica nao passam pelo /utf-issue e nao tem spec, mas ate
agora o template nao dizia como eles entram: a Issue nascia em branco e o
aluno escrevia uma linha, que e justamente o oposto do que se precisa —
sem spec, a descricao da Issue E a especificacao.

Dois modelos de Issue com a etiqueta manutencao ja aplicada, e a secao do
tutorial que amarra as quatro regras do caminho curto. A que mais importa
e a terceira: no bug, o primeiro commit e um teste que reproduz a falha e
falha de verdade — sem ele nada prova que o bug foi embora nem que nao
volta. E se o PRD nunca disse o que deveria acontecer ali, nao era bug: e
historia nova, e volta para o ciclo completo.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Cinco paginas estaticas, sem build e sem dependencia de runtime: inicio, o
ciclo, os comandos, os papeis e as duvidas. O conteudo e a explicacao do
metodo com links para docs/guia-sdd.md, docs/tutorial-sdd.md e
docs/checklist.md, que seguem sendo a fonte da verdade — o site ensina e
remete, nunca duplica regra.

O elemento estrutural e a faixa de portao: ela atravessa a pagina inteira
exatamente onde o metodo interrompe o trabalho, de modo que a leitura
encena o ciclo em vez de so descreve-lo.

Escrito para este template, nao copiado do utf-sdd-template: Gitflow com a
branch nascendo da develop antes da aprovacao da spec, Angular e BaaS no
lugar de NestJS, a jornada vivendo no prototipo, o portao em 250 e os onze
artefatos deste metodo.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
O job so roda quando github.repository e utfpr-gp/utf-angular-template.
Como o repositorio e um template, sem essa guarda o repositorio de cada
equipe tentaria publicar o site do metodo e falharia com o Pages
desabilitado.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
O link fica acima da linha de corte, na parte que a equipe apaga ao dar
nome ao projeto — e conteudo do template, nao da vitrine dela.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Duas delas sao defeitos que faziam o ciclo mentir:

1. **O revisor recebia diff vazio.** O Passo 3 mandava
   `git diff <SHA-do-passo-0>..HEAD`, mas nesse ponto o trabalho ainda nao
   esta commitado — esta no working tree. Com `..HEAD` o comando compara o
   SHA com ele mesmo e devolve nada, entao os dois revisores vinham emitindo
   parecer sobre diff vazio e "APROVADO" nao significava nada. Faltava
   tambem um `git add -A` depois do implementador: arquivo novo nao
   rastreado nao aparece em `git diff`, e componente e teste recem-criados
   sao o miolo de quase toda tarefa.

2. **O caminho dos pareceres tinha tres formas no mesmo arquivo** —
   `specs/<slug>/reviews/tarefa-$1-...` para contar as rodadas e para
   gravar, `specs/<issue>-<slug>/...` para as decisoes. Como a contagem de
   rodadas E a listagem do diretorio, gravar num caminho e contar noutro faz
   o ciclo achar que esta sempre na rodada 1 — e o limite de 2 rodadas, que
   e o freio contra loop infinito de correcao, deixa de existir. Agora ha
   uma forma so, com um passo explicito de normalizacao do numero.

E duas lacunas:

3. O tutor em modo `passo` passa a ser despachado antes do portao do
   commit, conduzindo a leitura do diff um arquivo por vez. O modo existia
   desde o commit c6a6deb, mas nada o chamava.

4. No estouro das 2 rodadas, os pareceres sao commitados antes de qualquer
   limpeza (sem isso o `git clean` leva a prova junto), e na retomada da
   tarefa eles sao arquivados em vez de apagados.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
O Passo 4 despachava o auditor e so depois mandava atualizar prd,
architecture e specs/README.md. Duas das quatro coisas que o auditor confere
sao exatamente essas atualizacoes — entao ele auditava um repositorio que
ainda nao era o que ia para o PR, e as duas pendencias apareciam sempre.
Invertida a ordem no fluxo e no guia, com o portao do commit valendo tambem
para o commit de documentacao.

Corrige junto a ultima ocorrencia de `specs/<slug>/reviews/` no guia.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
O aluno abre a IDE no primeiro dia sem saber se o metodo carregou — e nao
ha como saber sem perguntar. O prompt colavel confirma que as regras foram
lidas, diz em que fase o projeto esta e qual e o proximo comando. Serve
tambem na volta depois de dias sem mexer, que e quando o contexto se perde.
Se o agente nao souber recitar as regras, elas nao carregaram, e a tabela
das quatro ferramentas logo abaixo diz onde conferir.

Aproveita para apontar os modelos de spec e plano e o caminho de bug e
tarefa tecnica, que ate agora so existiam no tutorial.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
As regras falam em "a main reflete a producao" e "o deploy em producao
acompanha": sao sobre o projeto que a equipe constroi, nao sobre este
repositorio, que e o material didatico e nao tem producao nem release. A
ambiguidade tem consequencia pratica — um agente rodando aqui le a
constituicao e tenta abrir branch a partir de uma develop que nao existe.

Fica dito: o template vive so na main, a manutencao dele entra por PR de
branch curta direto para ela, e a develop do projeto do aluno e criada pelo
/utf-setup no repositorio novo.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@ronifabio
ronifabio merged commit d7ba551 into main Sep 8, 2026
1 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant