docs: troca número vencido por comando nas afirmações do AGENTS.md - #777
docs: troca número vencido por comando nas afirmações do AGENTS.md#777GGBueno wants to merge 1 commit into
Conversation
Remedição dos 22 achados sobre o AGENTS.md registrados na auditoria docs/audits/2026-08-14-afirmacoes-de-estado.md (linhas 40-506). Oito já estavam corrigidos; quatorze seguiam vivos, e são esses que mudam aqui. Onde a afirmação podia virar comando, virou: contagens de handlers, de testes e de specs, o tamanho do arquivo gerado e o conteúdo de gov:verify e do job verify saíram do texto e passaram a ser "rode isto para saber". Número corrigido envelhece de novo; comando não envelhece. Medido contra origin/main @ 5342814, com o comando que a auditoria fornece para cada achado: 269 handlers de rota em app/api (o texto dizia 169); 148 arquivos de rota usando service role (dizia 89); lib/database.types.ts com 8803 linhas (dizia 6.1k); 543 arquivos de teste em tests/unit e 980 no repo (dizia 257 e 491); 103 specs e2e no disco com 3 declaradas em FORA_DO_CI (dizia 46 e "1 fora"). O encadeamento de gov:verify ganhou lint:channels e lint:role-rank, o job verify do CI tem cinco passos (pnpm lint sozinho não cobre lint:channels nem test:shell), test:unit exclui também tests/journeys, e o fallback em memória do rate limit não é disparado por "sem Upstash" — as duas variáveis são required() e o gatilho é Redis inalcançável. Também saíram duas referências que já não descrevem o mundo: o cabeçalho "Limitações conhecidas" datava o bloco inteiro num SHA que hoje está a 2793 commits de distância, e a issue melgarafael#63 está fechada com um título que descreve um estado que não vale mais. As duas viraram ponteiro para a fonte viva. NÃO MEDIDO: a lista de checks obrigatórios da branch protection exige permissão de admin no repositório — com token de contribuidor o endpoint devolve 404 (medido em 2026-09-13). O texto passa a dizer isso, em vez de repetir uma data de ativação que ninguém consegue auditar pelo repositório. Sem fragmento em .changes/: o PR é docs-only e não muda comportamento para quem opera uma VPS. O critério é o de docs/doctrine/versionamento.md, e impacto "nada_mudou" produziria um patch (lib/release/fragmento.ts) por uma correção de texto. Verificado nesta máquina: pnpm typecheck exit 0, com os tsbuildinfo apagados antes da medição (incremental transforma medição em lembrança); pnpm lint com 0 erros e 349 avisos pré-existentes; lint:channels e lint:role-rank ok. NÃO MEDIDO na suíte unitária: neste clone ela não fecha verde. Medido: 791 arquivos, 127 vermelhos com os arquivos de env fora do caminho e 76 com eles presentes, todos com erro de ambiente em lib/env.ts:378 e nenhum tocando AGENTS.md. O controle positivo é o CI do SHA base 5342814, com ci, e2e e perf verdes. Isolados, três desses arquivos reprovados passaram quando os arquivos de env saíram do caminho — o que também é a prova de que "verde isolado" não autoriza "verde da suíte". O gate que este diff alcança passa isolado, 4/4: tests/unit/documentacao-aponta-para-o-que-existe.test.ts.
|
@GGBueno is attempting to deploy a commit to the rafael-maudibrasil's projects Team on Vercel. A member of the Team first needs to authorize it. |
ECC Tools / Security EvidenceCommit: Security evidence gate passed (success) No security-sensitive scanner-evidence gap detected. Mode: enforce Scanned 1 changed file(s). No missing scanner-evidence signal was detected. Check publication was denied or unavailable. An app owner must enable Checks: read and write, and the installation owner must approve the updated permission. |
ECC Tools / PR Risk TaxonomyCommit: PR taxonomy review recommended (neutral) Detected 2 PR taxonomy bucket(s): Harness Drift, Agent Config Review. Scanned 1 changed file(s). Roadmap taxonomy buckets: Harness DriftHarness-facing changes can drift across Claude Code, Codex, OpenCode, and shared adapter surfaces. Signals:
Paths:
Agent Config ReviewAgent, command, skill, MCP, and local instruction changes should be reviewed as executable agent configuration. Signals:
Paths:
Check publication was denied or unavailable. An app owner must enable Checks: read and write, and the installation owner must approve the updated permission. |
ECC Tools / Reference Set ReadinessCommit: Reference set readiness gaps detected (neutral) Reference evidence present for 0/7 areas (0%) across 1 changed file(s). This check is based on files changed in this PR. Repository-level readiness is still reported by
Check publication was denied or unavailable. An app owner must enable Checks: read and write, and the installation owner must approve the updated permission. |
|
Recebido, @GGBueno — obrigado por isto. Duas coisas que vão parecer erro seu e não são:
Um mantenedor vai revisar de verdade — rodando os gates e reproduzindo o comportamento, não só Esta mensagem é automática e não diz nada sobre o seu PR: ela é sobre o processo. O que vem |
ECC Tools / Hosted Promotion ReadinessCommit: Hosted promotion readiness passed (success) No hosted promotion evidence gaps detected across 1 changed file(s); 0 corpus scenarios had matching evidence. This check compares PR file changes against the evaluator/RAG promotion corpus in No evaluator corpus scenarios matched this PR. Check publication was denied or unavailable. An app owner must enable Checks: read and write, and the installation owner must approve the updated permission. |
ECC Tools / PR Config AuditCommit: No changed-config issues detected (success) Scanned 1 config file(s) present at this commit across 1 changed config path(s) and found no issues in the supported security rules. Changed config files:
Check publication was denied or unavailable. An app owner must enable Checks: read and write, and the installation owner must approve the updated permission. |
ECC Tools / PR Harness AuditCommit: Harness warnings detected (neutral) Scanned 1 changed config file(s) and found 1 harness issue(s).
Check publication was denied or unavailable. An app owner must enable Checks: read and write, and the installation owner must approve the updated permission. |
|
Correção de uma medição minha neste PR, publicada antes que alguém a use como régua. A versão anterior do corpo dizia: "791 arquivos, com 127 vermelhos sem os arquivos de env no caminho e 76 com eles presentes". O 127 foi medido com o
Na condição correta a suíte fica em 784 de 791 arquivos e 8350 de 8360 casos: Os 7 vermelhos, por assinatura — nenhum toca Não reescrevi o commit por causa disso: Registro o método, porque foi ele que pegou o erro: a primeira rodada "sem env" tinha um arquivo de env no caminho, e só a impressão da condição antes e depois tornou a diferença visível. Número medido em condição diferente da declarada não é conservador nem otimista — é outro número, de outra pergunta. |
O que este PR faz
Corrige 14 afirmações de estado desatualizadas no
AGENTS.md, remedidas contraorigin/main@53428145. Onde a afirmação pôde virar comando, virou: um número corrigido envelhece de novo;rode isto para sabernão envelhece.Closes #776
A matriz medida
Fonte dos achados:
docs/audits/2026-08-14-afirmacoes-de-estado.md, seçãoAGENTS.md(22 achados) — cada um traz o comando que o mede, e foi ele que rodei. 8 dos 22 já estavam corrigidos; o que sobra é o que muda aqui.app/apidatabase.types.tscom 6.1k linhastests/unite 491 no repoFORA_DO_CIgov:verify= typecheck + lint + test:unitlint:channelselint:role-rankverifydo CI = typecheck + lint + test:unitlint:channelsetest:shell)test:unitexcluitests/invariantsetests:e2etests/journeys/**required()789dfa6graphify-out/listado como se existisseA decisão de redação, em cada caso, foi a que o próprio documento de auditoria recomenda: trocar número por comando em vez de corrigir o número.
O que eu medi
O último é o gate que este diff alcança de verdade: ele guarda as duas formas de dívida documental — ponteiro morto e nota de pendência sobrevivente — justamente nos documentos de autoridade.
pnpm test:unit— o que esta máquina mediu, e a correção de uma medição minhaRodei a suíte inteira (791 arquivos, 8.360 casos) na árvore sem
.enve sem.env.local— a mesma condição do jobverify, e a condição conferida pordirantes, durante e depois da corrida:Os 7 vermelhos, por assinatura — nenhum toca
AGENTS.md(a comparação é por caminho):tests/unit/lgpd-pdf-meet.test.tsInvalid factory url: "C:\…\pdfjs-dist\standard_fonts\" must include trailing slash— separador de caminho no Windowstests/unit/lgpd-pdf-replies.test.tstests/unit/drain-loop-carrega-deps-sob-tsx.test.tsHook timed out in 10000mstests/unit/hidratacao-useState-nao-le-o-navegador.test.tstests/unit/rascunho-superado-nao-e-regravado.test.tstests/unit/telas-sem-dado-de-mentira.test.tsexpected [ …(2) ] to include 'app/app/ai/agents/[id]/page.tsx'lib/theme.test.tsxCorreção de uma medição minha, publicada aqui antes de eu refazê-la: este PR dizia "127 vermelhos sem os arquivos de env". O número estava medido com o
.env.localpresente no disco enquanto o rótulo declarava "sem env" — a condição declarada era outra. O número correto, na condição declarada, é 7. Fica registrado em vez de trocado em silêncio: número mal rotulado é o defeito que este repositório persegue, e ele quase entrou por minha mão.O que eu NÃO medi
404(medido em 2026-09-13). Por isso o texto deixa de afirmar a data de ativação e passa a apontar o comando — com a nota de que ele exige admin, para a próxima pessoa não gastar o tempo que eu gastei.test:db,test:e2e,test:shellebuild— não rodados: o diff é docs-only e não toca produto, kit nem compose.Por que sem fragmento em
.changes/Docs-only não muda comportamento de quem opera uma VPS — é o critério de
docs/doctrine/versionamento.md. E um fragmento com impactonada_mudouproduziria patch (BUMP_DO_IMPACTO, emlib/release/fragmento.ts): uma release do produto por correção de texto. Opre-voo.shchega sozinho à mesma conclusão — "sem fragmento, e o diff não toca o produto".Definition of Done — o que se aplica
pnpm typecheckzeradopnpm lintzerado (0 erros)Crédito
O achado é da auditoria de 2026-08-14 — que mediu 393 afirmações e achou 227 com problema. Ela mesma advertia que os vereditos envelhecem e que o que vale é o comando; foi assim que este PR foi feito, e é por isso que ele troca número por comando em vez de só atualizar os números.