OPS62 — CI: fail-fast estrutural por job único sequencial (X1) #75

Merged
fsolla merged 3 commits from OPS62-ci-cancelar-jobs-irmaos-quando-um-job-falha-fail-fast- into main 2026-08-18 23:26:14 +00:00

3 commits

Author SHA1 Message Date
Francisco Solla
1606c31281 style: prettier no AGENT-OPS pós-resolução de conflito do rebase
All checks were successful
CI (PR) / checks (pull_request) Successful in 7m32s
PR Ready + auto-merge / ready-automerge (pull_request) Successful in 7m47s
Agent pool supervisor / tick (pull_request) Successful in 28s
Main merge flips claimed issues to done + in-prod / issue-done (pull_request) Successful in 12s
Promote plan-issue Related on main merge / plan-issue-ready (pull_request) Has been skipped
2026-08-18 20:04:02 -03:00
Francisco Solla
659f25f076 fix(OPS62): services por nome na rede do job — Forgejo 9 não expande expressões em ports
Some checks failed
CI (PR) / checks (pull_request) Failing after 1m38s
PR Ready + auto-merge / ready-automerge (pull_request) Failing after 2m5s
Achado ao vivo (run 730): a expressão ${{ 5433 + (github.run_id % 100) }} no
ports do service não é avaliada pelo Forgejo 9 — o literal ia ao runner e o
job falhava em 1s. E portas fixas colidiriam entre runs concorrentes (o job
único segura os services pelo run inteiro). Correção: services sem publish
host, alcançados por nome na rede do job (postgres-int/postgres-build:5432)
— solução canônica do Actions, mata a colisão de raiz. Guards fail-closed
(LOCAL_HOSTS + assertTestDatabase) admitem os nomes dos services (hosts
internos do runner; hosts remotos continuam rejeitados); pins novos em
localHosts.unit.spec.ts e ciSkipInvariants (sem ports:, URLs por nome).
2026-08-18 19:43:53 -03:00
Francisco Solla
b015af508d chore(OPS62): CI fail-fast estrutural — job único checks sequencial (X1)
ci-pr.yml e ci.yml deixam de ter jobs irmãos: 1 job 'checks' com steps em
série (guards → lint → format → typecheck → knip → cycles → unit → int →
build → e2e). Step vermelho interrompe o job, o run falha e o slot é
liberado — sem API de cancel (Forgejo 9.0.3 não tem), sem watchdog, sem
upgrade do Forgejo. Skips do ci-scope.mjs viram step id 'scope'; e2e em 1
processo com PLAYWRIGHT_WORKERS=4 (substitui 2 shards × 2 workers); 2
services Postgres por run com portas host derivadas do run_id (runs
concorrentes não colidem); contexto 'CI (PR) / checks' preservado (job id
checks — contrato do automerger OPS61); deploy OPS53 gated em needs checks.
Plumbing morto removido (e2eShardConfig/e2e_shards). Docs: AGENT-OPS,
TESTING.md, changelog. Impl: docs/plans/ops62-ci-fail-fast-forgejo-impl.md
(a intenção watchdog+upgrade fica como histórico do gate).
2026-08-18 19:43:35 -03:00