feat(ci): agregador ci-ok + fim do || true nos gates de install [INFRA-68925] #60

Merged
tarcisio merged 1 commit from feat/INFRA-68925-ci-ok-e-gates into develop 2026-10-08 12:21:06 -03:00
Owner

O que

Implementa no ci-shared (a origem) o padrão único de correção do epic de gates falsos INFRA-68918 — subtask INFRA-68925.

(a) Agregador ci-ok no ci.yml reusável

Job final ci-ok (needs: todos os jobs, if: always(), roda sempre) que reprova se qualquer job terminou failure/cancelled ou skipped sem motivo legítimo — o falso verde que o Forgejo publica quando um needs: falha. Cérebro em scripts/ci/avaliar_gate_final.py (função pura, testada) com anti-deriva: job novo no ci.yml sem regra reprova. Espelha o padrão já adotado no tmf-platform (TMFP-68058).

É o único check que a proteção de branch precisa exigir (CI / ci-ok), no lugar do glob CI /* ou de jobs individuais que publicam "não se aplica" como success (achados C1/C2).

ADITIVO e seguro: não altera os 4 jobs existentes (changes/gates/backend/frontend). O ci-ok só vira obrigatório quando o operador ajustar a proteção de branch nos repos — achados C1–C4 (INFRA-68919/20/21/22/24), que o bot não faz (403). Até lá, o ci-ok roda e reporta, sem bloquear.

(b) Fim do || true nos gates de install (TMFP-61455)

ci-base.yml e ci.yml mascaravam falha de pip install dos requirements-dev/-app com ... || true. Agora if [ -f "$f" ]; then pip install ...; fi: arquivo ausente continua opcional, mas falha de install volta a reprovar o gate.

Validação

Todas as suítes tests/*/ verdes (incl. a nova tests/ci-ok/ — 9 testes: failure/cancelled/skipped/changes-falho/deriva + o ci-ok depende de todos os jobs com always()). Contrato de jobs atualizado 4→5 em test_ci.py e test_reuso_por_tree.py. YAML dos reusáveis válido.

Fora deste PR (registrado)

  • Doc do padrão em TMF/ORG engenharia/padroes/workflows-forgejo.md — parte (c) da 68925, com o Lineu.
  • Troca da proteção de branch para exigir CI / ci-ok — achados C1–C4, ação do operador (bot leva 403).
  • Triagem dos 35 achados estáticos do ci-shared: os || true/set +e restantes são idioma benigno (git fetch, grep de lista vazia, retry com rc capturado + tee/PIPESTATUS); o único que mascarava gate era o install (corrigido aqui).

Epic: INFRA-68918 · Subtask: INFRA-68925

🤖 Generated with Claude Code

## O que Implementa no `ci-shared` (a origem) o **padrão único de correção** do epic de gates falsos **INFRA-68918** — subtask **INFRA-68925**. ### (a) Agregador `ci-ok` no `ci.yml` reusável Job final `ci-ok` (`needs:` todos os jobs, `if: always()`, roda sempre) que reprova se qualquer job terminou `failure`/`cancelled` ou `skipped` sem motivo legítimo — o falso verde que o Forgejo publica quando um `needs:` falha. Cérebro em `scripts/ci/avaliar_gate_final.py` (função pura, testada) com **anti-deriva**: job novo no `ci.yml` sem regra reprova. Espelha o padrão já adotado no tmf-platform (TMFP-68058). É o **único check** que a proteção de branch precisa exigir (`CI / ci-ok`), no lugar do glob `CI /*` ou de jobs individuais que publicam "não se aplica" como success (achados C1/C2). > **ADITIVO e seguro:** não altera os 4 jobs existentes (`changes`/`gates`/`backend`/`frontend`). O `ci-ok` só vira obrigatório quando o **operador** ajustar a proteção de branch nos repos — achados **C1–C4** (INFRA-68919/20/21/22/24), que o bot não faz (403). Até lá, o `ci-ok` roda e reporta, sem bloquear. ### (b) Fim do `|| true` nos gates de install (TMFP-61455) `ci-base.yml` e `ci.yml` mascaravam falha de `pip install` dos `requirements-dev/-app` com `... || true`. Agora `if [ -f "$f" ]; then pip install ...; fi`: arquivo ausente continua opcional, mas **falha de install volta a reprovar** o gate. ## Validação Todas as suítes `tests/*/` verdes (incl. a nova `tests/ci-ok/` — 9 testes: failure/cancelled/skipped/changes-falho/deriva + o `ci-ok` depende de todos os jobs com `always()`). Contrato de jobs atualizado 4→5 em `test_ci.py` e `test_reuso_por_tree.py`. YAML dos reusáveis válido. ## Fora deste PR (registrado) - **Doc do padrão** em `TMF/ORG engenharia/padroes/workflows-forgejo.md` — parte (c) da 68925, **com o Lineu**. - **Troca da proteção de branch** para exigir `CI / ci-ok` — achados C1–C4, **ação do operador** (bot leva 403). - Triagem dos 35 achados estáticos do ci-shared: os `|| true`/`set +e` restantes são idioma benigno (git fetch, grep de lista vazia, retry com `rc` capturado + `tee`/PIPESTATUS); o único que mascarava gate era o install (corrigido aqui). Epic: **INFRA-68918** · Subtask: **INFRA-68925** 🤖 Generated with [Claude Code](https://claude.com/claude-code)
feat(ci): agregador ci-ok + fim do || true nos gates de install [INFRA-68925]
All checks were successful
PR checks (ci-shared) / testes (pull_request) Successful in 3m19s
474ef96cd0
Implementa na origem (ci-shared) o "padrão único de correção" do epic de gates
falsos INFRA-68918:

(a) Agregador ci-ok no ci.yml reusável — job final (needs: todos, if: always())
    que reprova failure/cancelled ou skip sem motivo, via
    scripts/ci/avaliar_gate_final.py (função pura + anti-deriva). É o ÚNICO check
    que a proteção precisa exigir (CI / ci-ok), no lugar do glob CI /* ou de jobs
    individuais que publicam "não se aplica" como success. ADITIVO: não altera os
    4 jobs existentes; só vira required quando o operador ajustar a proteção
    (achados C1-C4: INFRA-68919/20/21/22/24 — do operador, bot leva 403).

(b) Remove o || true que mascarava falha de pip install de requirements-dev/-app
    em ci-base.yml e ci.yml (achado TMFP-61455): arquivo opcional vira
    "if [ -f ]; then ... fi" e a falha de install volta a reprovar o gate.

Testes: tests/ci-ok/ (lógica do avaliador + anti-deriva contra o ci.yml); contrato
de jobs atualizado 4->5 em test_ci.py e test_reuso_por_tree.py. Todas as suítes verdes.

Pendente (fora deste PR): doc do padrão em TMF/ORG (com o Lineu) e a troca da
proteção de branch nos repos (operador).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SCXwCdbp97ioN6p3rC3diT
tarcisio merged commit ecedcd75ea into develop 2026-10-08 12:21:06 -03:00
tarcisio deleted branch feat/INFRA-68925-ci-ok-e-gates 2026-10-08 12:21:06 -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!60
No description provided.