teqo/scripts/lib
Francisco Solla 10c1eeaeda
Some checks failed
CI (PR) / scope (pull_request) Successful in 33s
CI (PR) / lint (pull_request) Successful in 44s
CI (PR) / docs-guards (pull_request) Successful in 7s
CI (PR) / plans-only-closes (pull_request) Successful in 7s
CI (PR) / format (pull_request) Successful in 55s
CI (PR) / typecheck (pull_request) Successful in 31s
CI (PR) / knip (pull_request) Successful in 36s
CI (PR) / cycles (pull_request) Successful in 39s
CI (PR) / unit (pull_request) Successful in 59s
CI (PR) / int (pull_request) Successful in 2m23s
CI (PR) / build (pull_request) Has been skipped
CI (PR) / e2e (1) (pull_request) Has been skipped
CI (PR) / e2e (2) (pull_request) Has been skipped
CI (PR) / checks (pull_request) Failing after 1s
PR Ready + auto-merge / ready-automerge (pull_request) Failing after 50m5s
fix(OPS64): rollup checks honesto por statuses do commit — Forgejo não agrega shards no parent de matrix
O sintoma primário da Issue (deadlock do waitForChecks no próprio pending)
já tinha sido entregue pelo OPS61; o OPS64 fecha o secundário, que estava
vivo e medido: o Forgejo 9.0.3 reporta o resultado do ÚLTIMO shard como o
resultado do parent de matrix no contexto `needs` (runs 604/607/610: e2e (1)
vermelho + e2e (2) verde → checks verde), e o `needs.<job>.results` do GitHub
não existe neste runner. Com isso o gate do servidor (branch protection) e o
deploy do ci.yml podiam passar com um shard vermelho.

O rollup `checks` (ci-pr.yml e ci.yml) agora lê os statuses do commit via API
(scripts/ci-rollup-check.mjs + lib pura, zero-dep, plain Node) — a mesma
fonte que o waitForChecks confia — filtrando pelo prefixo do workflow,
excluindo o próprio contexto e os downstreams legítimos (deploy, pending
enquanto o rollup roda), falhando fechado em failure/error/pending/vazio.
Fork guard + FORGEJO_API_TOKEN no job checks do ci-pr.yml (sem o guard, fork
rodaria o script do head com o PAT — RCE classe OPS61); PRs de fork ficam
não-mergeáveis no servidor (hardening). ci.yml usa --allow-empty em
workflow_dispatch (evento não posta commit status).

Testes: 12 specs do veredito (run 607/716 pinados, próprio pending ignorado,
safety net ignorado, deploy ignorado, vazio fail-closed) + waitForChecks
lança com rollup verde + shard vermelho. Unit 2360 verdes; gates locais ok.
2026-08-18 20:02:34 -03:00
..
agent-forgejo.mjs OPS50: port CI e scripts de agentes do GitHub para o Forgejo 2026-08-16 23:32:20 -03:00
agent-plan-lifecycle.mjs OPS50: port CI e scripts de agentes do GitHub para o Forgejo 2026-08-16 23:32:20 -03:00
agent-pool-cursor.mjs feat(agent-pool): orquestrador de pool de workers Cursor Cloud (fases A–D) (#65) 2026-07-30 20:08:34 -03:00
agent-pool-eligibility.mjs OPS50: port CI e scripts de agentes do GitHub para o Forgejo 2026-08-16 23:32:20 -03:00
agent-pool-forgejo.mjs OPS50: port CI e scripts de agentes do GitHub para o Forgejo 2026-08-16 23:32:20 -03:00
agent-pool-models.mjs fix(agent-pool): stop exporting unused POOL_DEFAULT_MODEL_SLUG 2026-08-01 06:58:33 +00:00
agent-pool-prompt.mjs OPS44: changelog por entrega + guards de docs + merge por rebase 2026-08-13 17:55:22 +00:00
agent-pool-state.mjs OPS50: port CI e scripts de agentes do GitHub para o Forgejo 2026-08-16 23:32:20 -03:00
branch-protection.mjs ops(OPS61): flip de issues pós-merge com PAT + gate do rollup checks + branch protection real no Forgejo 2026-08-18 17:45:54 -03:00
changelog.mjs OPS44: changelog por entrega + guards de docs + merge por rebase 2026-08-13 17:55:22 +00:00
ci-rollup-check.mjs fix(OPS64): rollup checks honesto por statuses do commit — Forgejo não agrega shards no parent de matrix 2026-08-18 20:02:34 -03:00
cli.mjs ops(OPS52-media-guard): reconcile do media:recover exige MEDIA_RECOVER_CONFIRM=1 (guard de intenção explícita) 2026-08-18 12:45:32 -03:00
conflictMarkers.mjs OPS44: changelog por entrega + guards de docs + merge por rebase 2026-08-13 17:55:22 +00:00
db-start.mjs fix(OPS37): db:start idempotente — não recria o container Postgres compartilhado (no-op quando saudável; --force-recreate explícito) 2026-08-10 20:40:36 -03:00
e2e-affected-manifest.mjs test(C139): suite e2e campaignContacts e remapeamento do manifest 2026-08-13 15:16:34 -03:00
forgejo-api.mjs fix(OPS61): merge do safety net com FORGEJO_API_TOKEN — 409 PushRejected do hook pre-receive 2026-08-18 18:07:55 -03:00
imageFill.mjs feat(site): publica home da campanha Jorge Solla 1313 2026-08-16 00:49:24 -03:00
imageResize.mjs feat(site): publica home da campanha Jorge Solla 1313 2026-08-16 00:49:24 -03:00
plansOnlyClosesGuard.mjs OPS12 — CI bloqueia Closes/Fixes em PR só docs/plans 2026-08-01 11:26:19 +00:00
seed-minimal-manifest.mjs chore: drop unused exports flagged by knip 2026-07-30 05:24:52 -03:00
test-affected-core.mjs fix(gate): seleção e2e contendo apenas o spec setup vira none (setup é dev-only; OPS39) 2026-08-11 15:47:12 -03:00
topology.mjs B8+: escala das malhas em unidades reais, contrato do map key e degradacao 2026-07-27 01:59:36 -03:00
worktree-env.mjs fix(OPS52): S3_WORKTREE_REQUIRED_KEYS sem export (knip) 2026-08-17 22:36:34 -03:00
worktree.mjs OPS33: worktree next claima deterministicamente a Issue (--issue N, reopen) e launch com /work-issue --issue N 2026-08-10 19:46:54 -03:00
wpArticles.mjs feat(OPS52-media): recupera os objetos de media de produção do WordPress para o bucket (pnpm media:recover) 2026-08-18 08:20:45 -03:00