ops(work-issue): capture-review-debts autônomo — agente decide o que registrar e descartar

This commit is contained in:
Francisco Solla 2026-08-11 13:32:08 -03:00
parent c83bd779d2
commit 95ac668c0b
3 changed files with 30 additions and 18 deletions

View file

@ -124,7 +124,10 @@ Mostre ao usuário **antes** de editar docs:
Inclua baldes **já_resolvido**, **descartar** e **defer** com uma linha de racional/gatilho cada (transparência > silêncio).
**Pare e confirme** — exceto em **modo autônomo** (`agent-work-issue` / pool): aí aplique a seção Modo autônomo abaixo e pule o AskQuestion. Só avance ao Passo 6 com aprovação explícita (humano) ou com as regras do modo autônomo. Sem isso = não cria Issue nem toca `docs/plans/`.
**Pare e confirme** — exceto em **modo autônomo** (`work-issue` pós-plano /
`agent-work-issue` / pool): aí aplique a seção Modo autônomo abaixo e pule o
AskQuestion. Só avance ao Passo 6 com aprovação explícita (humano) ou com as
regras do modo autônomo. Sem isso = não cria Issue nem toca `docs/plans/`.
## Passo 6 — Registrar via `agent:register` / `agent:file-miss`
@ -143,14 +146,21 @@ Não implemente as fases aqui. Execução é via `work-issue` / `agent-work-issu
**Próximo no fluxo de entrega:** após a triage (confirmada ou modo autônomo), o fechamento segue o Passo 6 de `agent-work-issue` / `work-issue` (`pnpm push` → PR `--base main` com `Closes #N` → auto-merge → CI).
## Modo autônomo (`agent-work-issue` / pool)
## Modo autônomo (`work-issue` pós-plano / `agent-work-issue` / pool)
Quando não há humano no gate (Passo 5):
1. Faça colheita, dedup, score e tipo como de costume.
2. **Registre** só itens `expensive_lock` com score ≥4 (Issue nova + `depends` no pai se preciso; plano curto se score ≥3 eng).
3. Todo o resto → **defer** (gatilho no `*-impl.md` / Explicitamente fora) ou **descartar** — não abra AskQuestion.
4. Resuma no comentário/fechamento o que registrou vs deferiu.
2. **`work-issue`** (humano presente só no plano): decida o destino pela
triage completa (Passos 3–4) — registre o que a triage manda (score ≥3
registrar, expensive_lock com piso 4–5), absorva em plano existente,
defira com gatilho ou descarte o resto — **sem abrir AskQuestion**.
3. **Pool (`agent-work-issue`):** registre só itens `expensive_lock` com
score ≥4 (Issue nova + `depends` no pai se preciso; plano curto se
score ≥3 eng).
4. Todo o resto → **defer** (gatilho no `*-impl.md` / Explicitamente fora)
ou **descartar** — não abra AskQuestion.
5. Resuma no comentário/fechamento o que registrou vs deferiu vs descartou.
## Anti-padrões (baseline)
@ -162,7 +172,7 @@ Quando não há humano no gate (Passo 5):
| "Junto DRY e UX num FD+" | Quebra o precedente FD+/FD2; tipos separados |
| "DRY com 1 call site vira escala-dry" | defer_trigger + gatilho; não registrar epic YAGNI |
| "Não li o plano existente" | Grep primeiro; absorver > duplicar |
| "Registro sem perguntar" | Passo 5 é gate; docs de produto não são scratchpad |
| "Registro sem perguntar" | Passo 5 é gate (humano-gated); em modo autônomo o agente decide e registra |
| "Corto access/LGPD do lote por tempo" | expensive_lock nunca é cortável por appetite |
## Resumo ao usuário

View file

@ -1,13 +1,13 @@
---
name: work-issue
description: >-
Executa uma Issue já claimada de ponta a ponta com supervisão humana:
o contexto da sessão identifica a Issue (sem claim), Plan mode com plano
de implementação, pausa para confirmação humana, depois execução →
/simplify → capture-review-debts com gate → PR Ready em main com
auto-merge. Use quando o usuário pedir /work-issue, quiser supervisionar
a abordagem de engenharia, ou trabalhar uma Issue com gate humano antes
do código.
Executa uma Issue já claimada de ponta a ponta com supervisão humana no
plano: o contexto da sessão identifica a Issue (sem claim), Plan mode com
plano de implementação, pausa para confirmação humana, depois execução →
/simplify → capture-review-debts autônomo (o agente decide o que registrar
e o que descartar) → PR Ready em main com auto-merge. Use quando o usuário
pedir /work-issue, quiser supervisionar a abordagem de engenharia, ou
trabalhar uma Issue com gate humano antes do código.
disable-model-invocation: true
---
@ -36,7 +36,7 @@ pular a pausa do impl plan; Draft / sem auto-merge.
- [ ] 1. Contexto: Issue do prompt/`$ARGUMENTS` da sessão (ausente → UMA pergunta com validação; nunca claim)
- [ ] 2. Abrir o plano de intenção do body da Issue (`Plano: docs/plans/...`; sem link → body é spec)
- [ ] 3. Plan mode → escrever `docs/plans/<slug>-impl.md` → **PARAR e confirmar com o humano**
- [ ] 4. Após “ok”: Passo 4 (execução → /simplify → débitos com gate → PR, via `execution-pipeline.md`)
- [ ] 4. Após “ok”: Passo 4 (execução → /simplify → débitos autônomos → PR, via `execution-pipeline.md`)
```
## Passo 1 — Contexto da sessão
@ -96,9 +96,11 @@ fechar em main), com os deltas do ator humano:
- **Branch:** `<Code>-<slug>` do worktree — nunca crie branch nova na sessão.
- **UI:** shape → craft → critique → polish.
- **`capture-review-debts`:** **com gate humano** — colha e pontue como a
skill manda, apresente ao humano antes de registrar (Issues novas com
`depends` no pai se necessário).
- **`capture-review-debts`:** **autônomo** — colha, dedupe, pontue e **decida
você mesmo o destino** (registrar/absorver/deferir/descartar) pela triage
da própria skill, **sem pausa para o humano**; registre via
`agent:register` / `agent:file-miss` (Issues novas com `depends` no pai se
necessário) e resuma o que registrou vs descartou no fechamento.
## Resumo final

View file

@ -40,5 +40,5 @@ entrega.
| Ator | Branch | UI | `capture-review-debts` | Cloud |
| ---- | ------ | --- | ---------------------- | ----- |
| **Humano** (`work-issue`) | `<Code>-<slug>` (worktree; nunca crie branch nova na sessão) | shape → craft → critique → polish | **com gate humano** — colha, pontue e apresente antes de registrar | n/a (máquina do humano) |
| **Humano** (`work-issue`) | `<Code>-<slug>` (worktree; nunca crie branch nova na sessão) | shape → craft → critique → polish | **autônomo** — decide o destino dos achados (registrar/absorver/deferir/descartar) pela triage da skill; sem pausa para o humano | n/a (máquina do humano) |
| **Pool** (`agent-work-issue`) | `agent/<id>-<slug>` (worktrees Cursor podem já ter criado) | shape → craft → critique → polish (harden/optimize só sob gatilho) | **autônomo** — só `expensive_lock` com score ≥4 (Issues novas com `depends`); score ≤3 / cheap_polish / defer_trigger → defer no `*-impl.md` ou descarte | `ManagePullRequest` com `draft: false`; Prep Cloud no Passo 0 |