OPS65 — CI do main em janela de 30 min + matar o agent-pool #80
Loading…
Reference in a new issue
No description provided.
Delete branch "OPS65-ci-do-main-em-janela-de-30-min-matar-o-agent-pool-work"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #64
OPS65: CI do main em janela fixa de 30 min + agent-pool morto. Fundido com a estrutura X1 do OPS62 (job único
checkssequencial).ci.yml:on: pushremovido →schedule */30+workflow_dispatch.gate(runs-onhost, main-only, sem pnpm): lê a revision do container rodando no homeserver (docker inspect→ labelorg.opencontainers.image.revision— o compose pode mentir após rollback falho), diffagit diff --name-only <rev> HEADe classifica "mudança de produção" pelo.dockerignore(fonte da verdade do artefato —docs/,.agents/,.env*viram skip;scripts/,tests/,.forgejo/,AGENTS.mdcontam como produção, conservador). Deployed == HEAD → suite + deploy skipped, run verde; estado desconhecido → suite roda (verde); gate incapaz de classificar → run vermelho (nunca blackout silencioso).needs: [checks, gate]+if: needs.checks.result == 'success' && needs.gate.outputs.production == 'true') — nunca deploy às cegas nem com suite vermelha.deploy-homeserver.sh: guard "already deployed" idempotente (revision do container já no SHA → skip verde, sem rebuild).agent-pool.ymlremovido (tick*/10custava 144pnpm install/dia); scripts/skills do pool dormentes (AGENT-OPS e skills marcados).dockerignoreMatch+ciClassifyProductionunit (matcher contra o.dockerignorereal, fail-open, dispatch, caminho git com repo scratch, exit codes); pinsciSkipInvariants/deployScript;HIGH_RISK_EXACT+= classificador.docs/ops/teqo-1313-deploy.md(janela/gate/verificação ao vivo/falhas),AGENTS.md,AGENT-OPS.md(tabela X1 fundida), changelog OPS65.docs/plans/ops65-ci-main-janela-30min-e-matar-pool-impl.md(aprovado na sessão); intenção marcada entregue.Nota: a classificação segue a direção explícita do plano (
.dockerignorecomo fonte da verdade) — o exemplo do aceite "só docs/scripts/skills/AGENTS → skip" não vale literalmente, poisscripts//tests/.forgejo/AGENTS.mdestão no build context (COPY . .) e contam como produção (conservador, falha fechado).Hardening pós-/simplify (3 reviewers): revision do container como verdade (rollback-falho), gate vermelho em erro de classificação, ref guard
github.ref == 'refs/heads/main', setup-node explícito no host, invocação única do classificador, docs do pool marcados dormentes.23c4c7b093to11fe9298d311fe9298d3to9504c7ccf6