mirror of
https://github.com/fsolla/teqo.git
synced 2026-11-13 15:13:07 +00:00
feat(ops96): tracer — skill testing-audit + comando espelhado + guard de pin
This commit is contained in:
parent
6777aa86f8
commit
b271d83f6f
3 changed files with 48 additions and 1 deletions
39
.agents/skills/testing-audit/SKILL.md
Normal file
39
.agents/skills/testing-audit/SKILL.md
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
---
|
||||
name: testing-audit
|
||||
description: Auditoria autônoma noturna da suíte de testes do Teqo — retrato honesto (contagens, tempos, duplicatas por camada), melhorias seguras aplicadas com prova verde antes/depois e revert fail-closed, entregues num único PR ready SEM auto-merge armado cuja descrição é o relatório final.
|
||||
---
|
||||
|
||||
# Skill: testing-audit
|
||||
|
||||
Auditoria autônoma da suíte de testes com implementação das melhorias seguras. Disparo humano à noite (`/testing-audit`); pela manhã existe UM relatório que explica toda a noite e um PR ready revisável em pedaços lógicos.
|
||||
|
||||
## Contrato de entrega (inviolável)
|
||||
|
||||
- **Um único PR ready** (não draft) contra `main`, **CI green**, **mergeable** (sem conflitos; se houver conflito com `main`, NÃO rebasar depois do desarme — registrar no topo do relatório que rebasar é passo humano).
|
||||
- **SEM auto-merge armado.** Esta skill NÃO herda o contrato auto-merge de `engineering-audit`. O safety-net do repo (`agent-pr-ready-automerge.yml`) arma automerge em TODO PR ready contra main e REARMA a cada push — o desarme é sempre o ÚLTIMO passo da noite (ver Fase 5).
|
||||
- A **descrição do PR é o relatório final**; o mesmo relatório vive como artefato commitado em `docs/testing-audits/<YYYY-MM-DD>.md` (ou condensado com ponteiro para o artefato).
|
||||
- Fixes em commits separados quando possível (preferência, não requisito duro).
|
||||
|
||||
## Intocáveis absolutos
|
||||
|
||||
Nunca remover nem enfraquecer autonomamente:
|
||||
1. Testes de consentimento/LGPD fail-closed (`Consent`, chave estável, falha fechada).
|
||||
2. Access control/RBAC (`src/utilities/access/*`).
|
||||
3. Lockdown de liderança (`leader`; `estimatedVotes` nunca visível à liderança).
|
||||
|
||||
Duplicata aparente envolvendo intocável vira proposta no relatório, sempre.
|
||||
|
||||
Intocáveis estruturais (nenhum diff toca): `scripts/ci-scope.mjs`, `scripts/lib/e2e-affected-manifest.mjs`, `.github/workflows/`, `.husky/`, gates e a política de seleção e2e (OPS72/OPS86). Zero edições em arquivos `tests/e2e/`.
|
||||
|
||||
## Fases (teto total da noite ~6h)
|
||||
|
||||
0. **Baseline** — validar DB do worktree (`teqo_wt<slot>_test`) e registrar contagens/durações verdes de `pnpm test:unit` + `pnpm test:int`.
|
||||
1. **Inventário paralelo** — 3 leitores Task read-only por camada (unit/int/e2e estático), ≤45min.
|
||||
2. **Rubrica** — disposições por candidato (mover/reforçar/remover/manter/proposta) ≤30min; auditoria TERMINA aqui antes de implementar.
|
||||
3. **Loop de melhorias** — ≤6 passos, ≤30min cada, prova verde antes/depois por passo, 1 commit por passo.
|
||||
4. **Fecho** — relatório + changelog + push único + PR ready + CI green.
|
||||
5. **Desarme do auto-merge** — SEMPRE o último passo da noite.
|
||||
|
||||
*(As fases 0–5 são detalhadas nas seções abaixo; este arquivo é autossuficiente para executar a noite inteira sem contexto externo.)*
|
||||
|
||||
<!-- FASES-DETALHE: placeholder do tracer — protocolo completo entra na fase 3 do impl plan OPS96 -->
|
||||
8
.opencode/commands/testing-audit.md
Normal file
8
.opencode/commands/testing-audit.md
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
---
|
||||
description: Auditoria autônoma noturna da suíte de testes — inventário e métricas por camada, melhorias seguras aplicadas com prova verde antes/depois, relatório único no PR ready
|
||||
model: deepseek/deepseek-v4-flash
|
||||
---
|
||||
|
||||
Carregue a skill `testing-audit` (ferramenta de skills, nome exato) e siga o fluxo dela de ponta a ponta até o fecho noturno completo. A fonte canônica é `.agents/skills/testing-audit/SKILL.md` — não a transcreva nem recrie o fluxo.
|
||||
|
||||
$ARGUMENTS
|
||||
|
|
@ -10,7 +10,7 @@ import { describe, expect, it } from 'vitest'
|
|||
|
||||
const repoRoot = process.cwd()
|
||||
|
||||
const commands = ['work-issue', 'plan-issue'] as const
|
||||
const commands = ['work-issue', 'plan-issue', 'testing-audit'] as const
|
||||
|
||||
describe('opencode commands couple to their skill by exact name', () => {
|
||||
it.each(commands)('command /%s references the existing skill of the same name', (name) => {
|
||||
|
|
|
|||
Loading…
Reference in a new issue