mirror of
https://github.com/fsolla/teqo.git
synced 2026-11-12 22:13:05 +00:00
docs(ops96): errata do desarme — skill corrige sequência (desarmar com CI pendente) + relatório registra o merge automático de #907
This commit is contained in:
parent
761da2f4e9
commit
a5c656dd92
3 changed files with 12 additions and 11 deletions
|
|
@ -130,18 +130,18 @@ Evidência por passo no relatório: timestamp, hash curto, linhas-resumo antes/d
|
|||
(CI, mergeable, automerge desarmado às HH:MM)
|
||||
```
|
||||
|
||||
## Fase 5 — Desarme do auto-merge (SEMPRE o último passo da noite)
|
||||
## Fase 5 — Desarme do auto-merge (imediatamente após CADA push, nunca depois do green)
|
||||
|
||||
O safety-net arma o automerge no evento de abertura e REARMA a cada push. Sequência obrigatória:
|
||||
O safety-net arma o automerge no evento de abertura e REARMA a cada push. **Errata OPS96 (falha real da 1ª noite):** desarmar DEPOIS do CI green é tarde — o GitHub mergea em segundos quando o required check fica verde; o PR da 1ª noite mergeou sozinho nesse intervalo (~40s). Sequência correta:
|
||||
|
||||
1. Confirmar que nenhum push novo acontecerá (todo o trabalho já foi empurrado na Fase 4).
|
||||
2. Aguardar o run do workflow `PR Ready + auto-merge` **do SHA final** terminar (foi ele que armou): `gh run list --workflow agent-pr-ready-automerge.yml --branch <branch-deste-PR> --limit 1` — filtre pela branch/SHA, nunca pelo "último run" global (PRs concorrentes poluem a lista).
|
||||
3. Desarmar: `gh pr merge <N> --disable-auto`.
|
||||
4. Verificar: `gh pr view <N> --json isDraft,autoMergeRequest,mergeable,mergeStateStatus` → esperado `{isDraft: false, autoMergeRequest: null, mergeable: MERGEABLE}`.
|
||||
1. Abrir o PR ready LOGO após o push — o safety-net arma no evento `opened`.
|
||||
2. **Desarmar imediatamente**, com o CI ainda pendente: `gh pr merge <N> --disable-auto`. Armado + checks pendentes não mergeia nada; o desarme cedo elimina a condição de corrida (a janela de CI ~13min é o seu tempo folga).
|
||||
3. Cada push novo REARMA (evento `synchronize`) → repetir o desarme logo após cada push, sempre enquanto o CI estiver pendente. **Nunca "aguardar o workflow/arquivo de checks terminar" para então desarmar** — isso chega exatamente no momento do merge.
|
||||
4. Verificação final no fecho da noite (último passo): `gh pr view <N> --json isDraft,autoMergeRequest,mergeable,mergeStateStatus` → esperado `{isDraft: false, autoMergeRequest: null, mergeable: MERGEABLE}`.
|
||||
5. **Fallback fail-closed:** desarme falhou ou `autoMergeRequest` persistiu não-nulo → converter para draft (`gh pr ready <N> --undo`; draft fora de `cursor/*` é veto estrutural do safety-net) e registrar no relatório que o humano vira ready pela manhã. Draft protegido é preferível a main mergeado sem querer.
|
||||
6. Gravar no relatório (seção estado final): hora do desarme + saída da verificação.
|
||||
|
||||
Depois do desarme: **nenhum push, rebase ou merge** — tudo isso rearma.
|
||||
Depois da verificação final: **nenhum push, rebase ou merge** — tudo isso rearma.
|
||||
|
||||
## Done when
|
||||
|
||||
|
|
|
|||
|
|
@ -1,3 +1,5 @@
|
|||
# OPS96 — skill /testing-audit: auditoria autônoma da suíte com melhorias aplicadas
|
||||
|
||||
**Recently resolved (2026-08-25):** **OPS96** Skill `/testing-audit` — auditoria noturna autônoma da suíte de testes com implementação das melhorias seguras. Novo comando `.opencode/commands/testing-audit.md` + `.agents/skills/testing-audit/SKILL.md` (autossuficiente: baseline → inventário paralelo read-only por camada → rubrica de disposições com prova forte para remoção → loop ≤6 melhorias com prova verde antes/depois e revert fail-closed → fecho PR ready SEM auto-merge armado — desarme `--disable-auto` como último passo, com fallback draft), pinado no guard `opencodeCommands.unit.spec.ts`. Tooling: `scripts/testing-audit-metrics.mjs` (+ core puro em `scripts/lib/`, spec próprio) gera o retrato por camada dos reporters nativos; cobertura first-party `@vitest/coverage-v8` instalada atrás de flag com whitelist knip e ignores do artefato `coverage/` (eslint/prettier). Primeira execução (relatório: `docs/testing-audits/2026-08-25.md`): **16 specs puros movidos int→unit** com conservação exata de totais (pirâmide OPS90 mais honesta — int ficou fronteira Payload/DB real), 1 assertion reforçada (`api.int.spec.ts`), referência morta corrigida (`measure-e2e-family.mjs`); flake da família Google Calendar documentado com evidência de recidiva (4 falhas distintas em 7 runs full, verde isolado) e registrado em #906; propostas não executadas (e2e HTTP-sem-browser, moves condicionais, gaps) vivem no relatório. Intocáveis preservados: zero toques em LGPD/RBAC/liderança, ci-scope/e2e-manifest/workflows/husky e specs e2e.
|
||||
|
||||
**Desfecho (05:45Z):** o PR #907 foi mergeado pelo auto-merge às 05:42:41Z, CONTRA o aceite "sem automerge armado" — a sequência de desarme do impl plan (desarmar após o CI green) é estruturalmente tarde: o GitHub mergea em segundos após o required check ficar verde. Errata completa no relatório; SKILL.md Fase 5 reescrita (desarmar imediatamente após cada push, com CI pendente); miss registrada em #909; flake da família Calendar em #906. Julgamento do merged/revert: humano pela manhã.
|
||||
|
|
|
|||
|
|
@ -104,7 +104,6 @@ Descartados pela triage (sem valor real): dedup registry×catálogo quick-action
|
|||
|
||||
## Estado final do PR
|
||||
|
||||
- Branch: `OPS96-skill-testing-audit-auditoria-autonoma-da-suite-de-tes` · PR ready base `main`.
|
||||
- CI: ver seção do PR (aguardado green no SHA final; política de rerun 1× aplicável).
|
||||
- Mergeable: verificado no fecho.
|
||||
- **Auto-merge: DESARMADO deliberadamente às <HORA>** — `gh pr merge --disable-auto` após o run do safety-net do SHA final; verificado `autoMergeRequest: null`; fallback draft não foi necessário (registrar aqui a hora/saída real).
|
||||
**PR #907 — MERGIADO às 05:42:41Z pelo auto-merge (fsolla via AUTOMERGE_PAT), CONTRA o critério "sem auto-merge armado".** CI green no SHA final (`checks` ✓ 13m35s); mergeable ✓; conteúdo íntegro em `main`.
|
||||
|
||||
**Errata do processo (falha real, registrada para as próximas noites):** a sequência do impl plan D5 — "aguardar o run do workflow de automerge do SHA final terminar e então desarmar" — chega exatamente no momento do merge: o GitHub mergea em segundos após o required check ficar verde, e o comando de desarme (05:43Z) falhou com "Can't disable auto-merge" porque o merge já estava em voo. A janela entre CI green e merge foi de segundos; nenhuma verificação humana aconteceu antes do merge, violando o aceite da intenção. **Correção já aplicada na SKILL.md**: desarmar imediatamente após cada push, com o CI ainda PENDENTE (o arm só executa merge com checks verdes — desarmar durante os ~13min de CI elimina a corrida). O humano deve julgar pela manhã se aceita o merged ou reverte (`git revert -m 1` contra o merge de #907 — nota: `main` já avançou com OPS97 logo depois, o que torna o revert mais cirúrgico). Falha também classificada como agent-miss em #909.
|
||||
|
|
|
|||
Loading…
Reference in a new issue