feat(ci): PR só de docstring provado AST-inerte pula os jobs de código [INFRA-67958] #75

Merged
tmf-ia merged 1 commit from feat/INFRA-67958-g2-docstring-inerte into develop 2026-10-09 08:41:24 -03:00
Owner

INFRA-67958: PR só de docstring, provado AST-inerte, pula os jobs de código

O changes do ci.yml e do ci-base.yml decide o code. Quando sobra arquivo fora do docs_regex, ele chama scripts/ci/docstring_inerte.py, o G2 versionado aqui. O script usa só a stdlib e reimplementa a lógica do conferir-docstring.py do tmf_ia, sem importar nada de lá.

O code fica false só se todos os arquivos restantes forem .py modificados, com o mesmo modo, e a árvore de sintaxe for idêntica depois de tirar as docstrings. Qualquer dúvida dá code=true:

  • arquivo não .py;
  • arquivo novo, removido ou renomeado;
  • chmod;
  • erro de parse;
  • sem merge-base;
  • falha do git;
  • script indisponível.

O log mostra a prova arquivo por arquivo. Push, docs-only e falta de merge-base continuam como antes.

O changes do ci-base passou a rodar na python_image, porque a node:20-slim não tem python3. Ele busca o ci-shared na ref do uses:, do mesmo jeito que o ci.yml já faz.

R6 (ADR 0004): dispensar o CI não autoriza merge sem revisão. Este PR não mexe em nenhuma regra de merge, e nunca usa PR_PREFLIGHT_SKIP.

Prova:

  • pytest tests -q deu 733 passed e 68 skipped.
  • test_docstring_inerte.py tem 27 testes. Eles rodam o passo filter dos dois workflows de verdade em bash, sobre um repo git real, e cobrem os negativos do aceite.
  • Teste de mutação: forçando a resposta "inerte", 10 testes ficam vermelhos.

Falta provar em runner real: um PR de teste num repo consumidor, só com docstring, mais os dois casos negativos. Fica para depois do release do ci-shared.

🤖 Generated with Claude Code

https://claude.ai/code/session_017QrAM1chSgVpSwDrKJVLVn

## INFRA-67958: PR só de docstring, provado AST-inerte, pula os jobs de código O `changes` do `ci.yml` e do `ci-base.yml` decide o `code`. Quando sobra arquivo fora do `docs_regex`, ele chama `scripts/ci/docstring_inerte.py`, o G2 versionado aqui. O script usa só a stdlib e reimplementa a lógica do `conferir-docstring.py` do tmf_ia, sem importar nada de lá. O `code` fica `false` só se **todos** os arquivos restantes forem `.py` modificados, com o mesmo modo, e a árvore de sintaxe for idêntica depois de tirar as docstrings. **Qualquer dúvida dá `code=true`:** - arquivo não `.py`; - arquivo novo, removido ou renomeado; - chmod; - erro de parse; - sem merge-base; - falha do git; - script indisponível. O log mostra a prova arquivo por arquivo. Push, docs-only e falta de merge-base continuam como antes. O `changes` do `ci-base` passou a rodar na `python_image`, porque a `node:20-slim` não tem python3. Ele busca o ci-shared na ref do `uses:`, do mesmo jeito que o `ci.yml` já faz. **R6 (ADR 0004):** dispensar o CI não autoriza merge sem revisão. Este PR não mexe em nenhuma regra de merge, e nunca usa `PR_PREFLIGHT_SKIP`. **Prova:** - `pytest tests -q` deu 733 passed e 68 skipped. - `test_docstring_inerte.py` tem 27 testes. Eles rodam o passo `filter` dos dois workflows de verdade em bash, sobre um repo git real, e cobrem os negativos do aceite. - Teste de mutação: forçando a resposta "inerte", 10 testes ficam vermelhos. **Falta provar em runner real:** um PR de teste num repo consumidor, só com docstring, mais os dois casos negativos. Fica para depois do release do ci-shared. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_017QrAM1chSgVpSwDrKJVLVn
feat(ci): PR só de docstring provado AST-inerte pula os jobs de código [INFRA-67958]
All checks were successful
PR checks (ci-shared) / testes (pull_request) Successful in 3m41s
a104fdebbb
G2 versionado no ci-shared (scripts/ci/docstring_inerte.py, stdlib ast,
lógica do conferir-docstring.py do tmf_ia reimplementada, sem import).
O job changes do ci.yml e do ci-base.yml chama o mesmo script com os
arquivos que ficaram fora do docs_regex: code=false só se todos forem .py
modificados no lugar e provados AST-inertes; qualquer dúvida = code=true.
Prova impressa arquivo a arquivo no log.

ci-base.yml: changes passa a rodar na python_image (a node-ci é slim, sem
python3) e busca o ci-shared na mesma ref do uses: (continue-on-error;
sem script = code=true). Dispensar CI não autoriza merge sem revisão (R6).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017QrAM1chSgVpSwDrKJVLVn
tmf-ia merged commit 9195634a9a into develop 2026-10-09 08:41:24 -03:00
Sign in to join this conversation.
No reviewers
No labels
seguranca
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
TMF/ci-shared!75
No description provided.