@jaimevalasek/aioson 1.22.0 → 1.23.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +932 -919
- package/docs/en/5-reference/cli-reference.md +85 -0
- package/docs/pt/4-agentes/pm.md +31 -4
- package/docs/pt/5-referencia/README.md +3 -0
- package/docs/pt/5-referencia/autopilot-handoff.md +131 -0
- package/docs/pt/5-referencia/comandos-cli.md +72 -6
- package/docs/pt/5-referencia/harness-retro.md +133 -0
- package/docs/pt/5-referencia/loop-guardrails.md +225 -0
- package/docs/pt/5-referencia/sdd-automation-scripts.md +25 -13
- package/package.json +1 -1
- package/src/agents.js +1 -1
- package/src/cli.js +70 -29
- package/src/commands/agent-epilogue.js +186 -0
- package/src/commands/context-select.js +33 -0
- package/src/commands/harness-preview.js +74 -0
- package/src/commands/harness-retro.js +221 -0
- package/src/commands/preflight-context.js +13 -9
- package/src/commands/review-cycle.js +328 -0
- package/src/commands/runtime.js +4 -4
- package/src/commands/self-implement-loop.js +12 -2
- package/src/commands/state-save.js +2 -0
- package/src/commands/workflow-execute.js +138 -28
- package/src/commands/workflow-next.js +11 -2
- package/src/commands/workflow-status.js +30 -10
- package/src/constants.js +15 -13
- package/src/context-memory.js +50 -25
- package/src/context-selector.js +394 -0
- package/src/harness/preview-artifact.js +85 -0
- package/src/i18n/messages/en.js +34 -7
- package/src/i18n/messages/es.js +34 -7
- package/src/i18n/messages/fr.js +34 -7
- package/src/i18n/messages/pt-BR.js +34 -7
- package/src/lib/retro/retro-aggregate.js +192 -0
- package/src/lib/retro/retro-render.js +185 -0
- package/src/lib/retro/retro-sources.js +624 -0
- package/src/parser.js +1 -1
- package/src/squad/preflight-context.js +26 -27
- package/template/.aioson/agents/analyst.md +41 -46
- package/template/.aioson/agents/architect.md +33 -46
- package/template/.aioson/agents/briefing.md +76 -67
- package/template/.aioson/agents/dev.md +73 -55
- package/template/.aioson/agents/deyvin.md +55 -50
- package/template/.aioson/agents/discovery-design-doc.md +35 -22
- package/template/.aioson/agents/manifests/architect.manifest.json +11 -1
- package/template/.aioson/agents/manifests/dev.manifest.json +15 -0
- package/template/.aioson/agents/manifests/pm.manifest.json +20 -0
- package/template/.aioson/agents/orchestrator.md +31 -18
- package/template/.aioson/agents/pentester.md +12 -4
- package/template/.aioson/agents/pm.md +41 -35
- package/template/.aioson/agents/product.md +116 -165
- package/template/.aioson/agents/qa.md +44 -13
- package/template/.aioson/agents/scope-check.md +46 -24
- package/template/.aioson/agents/sheldon.md +13 -0
- package/template/.aioson/agents/tester.md +28 -5
- package/template/.aioson/agents/ux-ui.md +36 -31
- package/template/.aioson/agents/validator.md +10 -2
- package/template/.aioson/config/autonomy-protocol.json +7 -0
- package/template/.aioson/design-docs/code-reuse.md +10 -5
- package/template/.aioson/design-docs/componentization.md +10 -5
- package/template/.aioson/design-docs/file-size.md +10 -5
- package/template/.aioson/design-docs/folder-structure.md +10 -5
- package/template/.aioson/design-docs/naming.md +10 -5
- package/template/.aioson/docs/autonomy-protocol.md +2 -2
- package/template/.aioson/docs/autopilot-handoff.md +82 -34
- package/template/.aioson/docs/briefing/briefing-craft.md +9 -3
- package/template/.aioson/docs/deyvin/continuity-recovery.md +18 -22
- package/template/.aioson/docs/product/conversation-playbook.md +8 -3
- package/template/.aioson/docs/product/prd-contract.md +8 -3
- package/template/.aioson/docs/product/quality-lens.md +8 -3
- package/template/.aioson/docs/product/research-loop.md +8 -3
- package/template/.aioson/docs/ux-ui/accessibility-audit.md +7 -2
- package/template/.aioson/docs/ux-ui/audit-mode.md +7 -2
- package/template/.aioson/docs/ux-ui/component-map.md +7 -2
- package/template/.aioson/docs/ux-ui/design-execution.md +7 -2
- package/template/.aioson/docs/ux-ui/design-gate.md +7 -2
- package/template/.aioson/docs/ux-ui/research-mode.md +7 -2
- package/template/.aioson/docs/ux-ui/site-delivery.md +7 -2
- package/template/.aioson/docs/ux-ui/token-contract.md +7 -2
- package/template/.aioson/rules/aioson-context-boundary.md +11 -9
- package/template/.aioson/rules/disk-first-artifacts.md +1 -1
- package/template/.aioson/skills/process/aioson-spec-driven/references/approval-gates.md +1 -1
- package/template/.aioson/skills/process/aioson-spec-driven/references/architect.md +3 -2
- package/template/.aioson/skills/process/aioson-spec-driven/references/artifact-map.md +21 -9
- package/template/.aioson/skills/process/aioson-spec-driven/references/dev.md +2 -1
- package/template/.aioson/skills/process/aioson-spec-driven/references/pm.md +2 -1
- package/template/.aioson/skills/static/web-research-cache.md +29 -8
- package/template/AGENTS.md +1 -1
- package/template/CLAUDE.md +1 -1
|
@@ -663,3 +663,88 @@ aioson scout:commit --input=<path> --json
|
|
|
663
663
|
**Exit codes:** 0 = committed (or no-op); 1 = file not found, lock failure.
|
|
664
664
|
|
|
665
665
|
See [Sub-task Scout — CLI reference](../deyvin-subtask-scout/cli-commands.md) for full details.
|
|
666
|
+
|
|
667
|
+
---
|
|
668
|
+
|
|
669
|
+
## harness:approve
|
|
670
|
+
|
|
671
|
+
Approve a pending human gate in the self:loop (loop guardrails). Persists the decision (who, when) to `.aioson/plans/{slug}/gates/{id}.json` and resumes the loop.
|
|
672
|
+
|
|
673
|
+
```bash
|
|
674
|
+
aioson harness:approve . --slug=<feature> --gate=<gate-id>
|
|
675
|
+
aioson harness:approve . --slug=checkout --gate=database_destructive_change-1
|
|
676
|
+
```
|
|
677
|
+
|
|
678
|
+
**Options:**
|
|
679
|
+
- `--slug=<feature>` — **required**. Feature slug matching the harness contract.
|
|
680
|
+
- `--gate=<id>` — **required**. Gate id shown in `harness:status` output.
|
|
681
|
+
- `--by=<name>` — override the "decided by" field (defaults to `git config user.name`).
|
|
682
|
+
|
|
683
|
+
**Idempotent:** re-approving an already-decided gate is a no-op with a warning.
|
|
684
|
+
|
|
685
|
+
---
|
|
686
|
+
|
|
687
|
+
## harness:reject
|
|
688
|
+
|
|
689
|
+
Reject a pending human gate. Ends the current loop attempt with a summary. Requires `--reason`.
|
|
690
|
+
|
|
691
|
+
```bash
|
|
692
|
+
aioson harness:reject . --slug=<feature> --gate=<gate-id> --reason="needs revert"
|
|
693
|
+
```
|
|
694
|
+
|
|
695
|
+
**Options:**
|
|
696
|
+
- `--slug`, `--gate` — same as `harness:approve`.
|
|
697
|
+
- `--reason=<text>` — **required** on reject. Recorded in the gate decision file.
|
|
698
|
+
|
|
699
|
+
---
|
|
700
|
+
|
|
701
|
+
## harness:status
|
|
702
|
+
|
|
703
|
+
Human-readable view of the current loop state for a feature.
|
|
704
|
+
|
|
705
|
+
```bash
|
|
706
|
+
aioson harness:status . --slug=<feature>
|
|
707
|
+
aioson harness:status . --slug=checkout --json
|
|
708
|
+
```
|
|
709
|
+
|
|
710
|
+
**Shows:** circuit state (open/closed), current iteration / max, estimated token budget (used/ceiling), last-attempt checks (passed/failed), last failure signature, pending human gates, and recommended next action.
|
|
711
|
+
|
|
712
|
+
**Options:**
|
|
713
|
+
- `--slug=<feature>` — **required**.
|
|
714
|
+
- `--json` — structured output.
|
|
715
|
+
|
|
716
|
+
---
|
|
717
|
+
|
|
718
|
+
## harness:retro
|
|
719
|
+
|
|
720
|
+
Deterministically mine the failure trail of a feature and materialize a retrospective dossier at `.aioson/context/retro/{slug}.md`. LLM-free, network-free. Source files are never modified.
|
|
721
|
+
|
|
722
|
+
```bash
|
|
723
|
+
aioson harness:retro . --feature=<slug>
|
|
724
|
+
aioson harness:retro . --last=<N> # last N features by PASS date
|
|
725
|
+
aioson harness:retro . --feature=checkout --json
|
|
726
|
+
```
|
|
727
|
+
|
|
728
|
+
**Options:**
|
|
729
|
+
- `--feature=<slug>` — mine a specific feature (mutually exclusive with `--last`).
|
|
730
|
+
- `--last=<N>` — mine the N most recently completed features.
|
|
731
|
+
- `--json` — structured output; exit codes are propagated.
|
|
732
|
+
- `--locale=<l>` — output locale (default: project `interaction_language`).
|
|
733
|
+
|
|
734
|
+
**Exit codes:** 0 = success (including empty dossier); 1 = unexpected I/O error; 12 = input error (invalid slug, conflicting flags, feature not found).
|
|
735
|
+
|
|
736
|
+
**Sources mined:** QA reports, correction plans, dossier FAIL→PASS cycles, execution events, attempt artifacts, failure signatures, devlogs.
|
|
737
|
+
|
|
738
|
+
---
|
|
739
|
+
|
|
740
|
+
## harness:preview
|
|
741
|
+
|
|
742
|
+
Display a truncated, UTF-8-safe preview of an artifact file. Used in self:loop criteria-fail feedback to avoid dumping full file contents into the agent context.
|
|
743
|
+
|
|
744
|
+
```bash
|
|
745
|
+
aioson harness:preview <file>
|
|
746
|
+
aioson harness:preview .aioson/context/retro/checkout.md
|
|
747
|
+
```
|
|
748
|
+
|
|
749
|
+
Read-only. Best-effort write for the preview artifact.
|
|
750
|
+
|
package/docs/pt/4-agentes/pm.md
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
# @pm — Backlog
|
|
1
|
+
# @pm — Backlog, user stories e plano de implementação (MEDIUM)
|
|
2
2
|
|
|
3
|
-
> **Para quem é:** quem trabalha em projetos MEDIUM e precisa transformar requisitos em histórias de usuário priorizadas.
|
|
3
|
+
> **Para quem é:** quem trabalha em features ou projetos MEDIUM e precisa transformar requisitos em histórias de usuário priorizadas e num plano de implementação aprovável.
|
|
4
4
|
> **Tempo de leitura:** 3 min.
|
|
5
|
-
> **O que você vai
|
|
5
|
+
> **O que você vai saber:**
|
|
6
6
|
> - Quando `@pm` é obrigatório e quando é dispensável
|
|
7
|
+
> - Os dois contextos onde ele aparece (feature workflow e projeto)
|
|
7
8
|
> - O que ele produz em no máximo 2 páginas
|
|
8
9
|
|
|
9
10
|
---
|
|
@@ -16,8 +17,27 @@ Sua regra interna de ouro: máximo 2 páginas. Se o output excede isso, ele est
|
|
|
16
17
|
|
|
17
18
|
---
|
|
18
19
|
|
|
20
|
+
## Dois contextos de ativação
|
|
21
|
+
|
|
22
|
+
### 1. Feature workflow MEDIUM (pré-dev — v1.22.0+)
|
|
23
|
+
|
|
24
|
+
No workflow de feature MEDIUM, `@pm` aparece logo antes do `@dev` — após `@discovery-design-doc` e antes do `@scope-check` pré-dev. Aqui sua responsabilidade é produzir o `implementation-plan-{slug}.md` (Gate C) que o `@dev` precisa para começar.
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
@analyst → @scope-check → @architect → @discovery-design-doc → @pm → STOP → /dev
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
O Gate C só é aprovado com o plano pronto. Se o `@pm` for pulado em features MEDIUM, o `gate:check --gate=C` vai bloquear o `@dev`.
|
|
31
|
+
|
|
32
|
+
### 2. Projeto MEDIUM (modo tradicional)
|
|
33
|
+
|
|
34
|
+
Para o projeto completo (configuração inicial), `@pm` entra após `@ux-ui` e antes de `@orchestrator` — priorizando e sequenciando as histórias do backlog.
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
19
38
|
## Quando invocar
|
|
20
39
|
|
|
40
|
+
- Features MEDIUM (obrigatório no workflow — produz Gate C).
|
|
21
41
|
- Projetos MEDIUM, após `@ux-ui` e antes de `@orchestrator`.
|
|
22
42
|
- Quando a feature é grande o suficiente para ter múltiplas histórias de usuário independentes.
|
|
23
43
|
- Quando você quer sequenciar entregas por prioridade (ex: MVP → iteração 2).
|
|
@@ -27,7 +47,7 @@ Sua regra interna de ouro: máximo 2 páginas. Se o output excede isso, ele est
|
|
|
27
47
|
## Quando NÃO invocar
|
|
28
48
|
|
|
29
49
|
- Projetos MICRO → `@dev` lê o contexto direto.
|
|
30
|
-
-
|
|
50
|
+
- Features e projetos SMALL → desnecessário na maioria dos casos.
|
|
31
51
|
- Você quer refinar produto, não backlog → use `@product`.
|
|
32
52
|
|
|
33
53
|
---
|
|
@@ -86,6 +106,12 @@ aioson workflow:status .
|
|
|
86
106
|
|
|
87
107
|
## Handoff típico
|
|
88
108
|
|
|
109
|
+
**Feature MEDIUM (pré-dev):**
|
|
110
|
+
- **Vem de:** `@discovery-design-doc`
|
|
111
|
+
- **Produz:** `implementation-plan-{slug}.md` (Gate C)
|
|
112
|
+
- **Vai para:** STOP — desenvolvedor faz `/clear` e ativa `/dev`
|
|
113
|
+
|
|
114
|
+
**Projeto MEDIUM (modo completo):**
|
|
89
115
|
- **Vem de:** `@ux-ui`
|
|
90
116
|
- **Vai para:** `@orchestrator`
|
|
91
117
|
|
|
@@ -95,3 +121,4 @@ aioson workflow:status .
|
|
|
95
121
|
|
|
96
122
|
- [Ficha do @orchestrator](./orchestrator.md)
|
|
97
123
|
- [Ficha do @dev](./dev.md) — quem executa as histórias
|
|
124
|
+
- [Autopilot Handoff](../5-referencia/autopilot-handoff.md) — como `@pm` se encadeia automaticamente quando `auto_handoff: true`
|
|
@@ -10,6 +10,9 @@
|
|
|
10
10
|
|
|
11
11
|
| Documento | Descrição |
|
|
12
12
|
|---|---|
|
|
13
|
+
| [loop-guardrails.md](./loop-guardrails.md) | Contrato verificável para o self:loop: scope guard, budget, human gates, criteria evaluation (v1.22.0) |
|
|
14
|
+
| [harness-retro.md](./harness-retro.md) | Minerar o histórico de falhas de uma feature sem LLM — dossiê retrospectivo + harness:preview (v1.23.0) |
|
|
15
|
+
| [autopilot-handoff.md](./autopilot-handoff.md) | Encadeamento automático de agentes pré-dev e pós-dev — opt-in via auto_handoff: true (v1.21.x–v1.22.0) |
|
|
13
16
|
| [feature-dossier.md](./feature-dossier.md) | Dossier de feature: ponto único de verdade (spec, plano, histórico, status) |
|
|
14
17
|
| [agent-chain-continuity.md](./agent-chain-continuity.md) | Sistema de continuidade entre sessões — Fases 1–8 (dev-resume, drift detection, handoff v2) |
|
|
15
18
|
| [sdd-framework.md](./sdd-framework.md) | Spec-Driven Development: Constitution, project-pulse, skill aioson-spec-driven, MICRO/SMALL/MEDIUM |
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
# Autopilot Handoff — Encadeamento automático de agentes
|
|
2
|
+
|
|
3
|
+
> Protocolo opt-in que elimina confirmações manuais de handoff nos segmentos determinísticos do workflow de feature.
|
|
4
|
+
|
|
5
|
+
Introduzido na v1.21.x, completado na v1.22.0 (com @pm no MEDIUM). Quando ativado, os agentes do pré-dev e do ciclo pós-dev se encadeiam automaticamente — cada um termina, emite um aviso de transição e invoca o próximo. As decisões genuinamente humanas (entrada no `@dev` e `feature:close`) permanecem manuais.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Ativação
|
|
10
|
+
|
|
11
|
+
O autopilot é opt-in. Para ativar, adicione ao `project.context.md`:
|
|
12
|
+
|
|
13
|
+
```yaml
|
|
14
|
+
auto_handoff: true
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Sem essa flag (ou com `false`), o comportamento padrão é handoff manual — cada agente para e espera você invocar o próximo. O `aioson doctor` emite um aviso `context:auto_handoff_declared` se o protocolo estiver instalado mas a flag não for declarada.
|
|
18
|
+
|
|
19
|
+
**Pré-requisitos adicionais para ativação de cada handoff:**
|
|
20
|
+
1. O workflow de feature deve estar ativo (slug conhecido, classificação SMALL ou MEDIUM).
|
|
21
|
+
2. O gate/verdict do agente atual deve ter passado.
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## Dois segmentos
|
|
26
|
+
|
|
27
|
+
### Segmento 1 — Cadeia pré-dev
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
@analyst → @scope-check → @architect → @discovery-design-doc
|
|
31
|
+
[→ @pm (apenas MEDIUM)]
|
|
32
|
+
↓
|
|
33
|
+
STOP — human entra com /dev
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
A cadeia pré-dev **sempre para antes do primeiro `@dev`**. O desenvolvedor faz `/clear` (limpa o contexto) e inicia a implementação numa janela de contexto fresca — `@dev` é pesado e se beneficia de contexto limpo.
|
|
37
|
+
|
|
38
|
+
### Segmento 2 — Ciclo de revisão pós-dev (hub = @qa)
|
|
39
|
+
|
|
40
|
+
Uma vez que o `@dev` inicial termina, o autopilot retoma automaticamente:
|
|
41
|
+
|
|
42
|
+
| Agente atual | Condição | Próximo invocado |
|
|
43
|
+
|---|---|---|
|
|
44
|
+
| `@dev` (1ª passagem) | testes ok, sem correções abertas | `@qa` |
|
|
45
|
+
| `@dev` (correções) | correções aplicadas, testes ok | `@qa` (re-verificação) |
|
|
46
|
+
| `@qa` | FAIL (Critical/High) | `@dev` via ciclo de correções (cap 2) |
|
|
47
|
+
| `@qa` | PASS + trigger `@tester` não executado | `@tester` |
|
|
48
|
+
| `@qa` | PASS + trigger `@pentester` não executado | `@pentester` |
|
|
49
|
+
| `@qa` | PASS + contrato harness presente + `@validator` não PASS | `@validator` |
|
|
50
|
+
| `@qa` | PASS + sem pendências | **STOP** — recomenda `aioson feature:close` |
|
|
51
|
+
| `@tester` | bloqueios do dev | `@dev` |
|
|
52
|
+
| `@tester` | sem bloqueios | `@qa` (re-avaliação) |
|
|
53
|
+
| `@pentester` | findings abertos do dev | `@dev` |
|
|
54
|
+
| `@pentester` | sem findings do dev | `@qa` (re-avaliação) |
|
|
55
|
+
| `@validator` | PASS | **STOP** — recomenda `aioson feature:close` |
|
|
56
|
+
| `@validator` | FAIL | `@dev` |
|
|
57
|
+
|
|
58
|
+
`@tester` e `@pentester` só executam quando os seus triggers disparam (`@qa` identifica gaps de cobertura → `@tester`; superfície sensível auth/secrets/data → `@pentester`).
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## Condições de parada
|
|
63
|
+
|
|
64
|
+
O autopilot interrompe a cadeia e emite o handoff manual normal quando:
|
|
65
|
+
|
|
66
|
+
1. **`feature:close` / publish** — sempre gate humano. `@qa` PASS sem pendências ou `@validator` PASS → STOP, recomenda `aioson feature:close`.
|
|
67
|
+
2. **Primeira entrada em `@dev`** — a cadeia pré-dev para aqui.
|
|
68
|
+
3. **Cap de correções atingido** — ciclo `@qa` ↔ `@dev` limitado a 2 rounds.
|
|
69
|
+
4. **Finding crítico de segurança** — keywords auth/secret/credential/session/password/token/PII detectados pelo gate de segurança do `@qa` → STOP, requer intervenção humana.
|
|
70
|
+
5. **Verdict não passou** — `@scope-check` não aprovado, `@architect` Gate B bloqueado, `@discovery-design-doc` readiness bloqueado, `@pm` Gate C bloqueado, `@validator` FAIL sem caminho seguro → STOP, roteamento manual.
|
|
71
|
+
6. **Orçamento de contexto** — uso ≥ `context_warning_threshold`: grava checkpoint em `last-handoff.json`, STOP, recomenda `/clear`. A próxima sessão reentra no autopilot automaticamente.
|
|
72
|
+
7. **Ambiguidade** — estado do workflow indisponível ou qualquer decisão real requer input humano → STOP.
|
|
73
|
+
|
|
74
|
+
O usuário pode interromper a qualquer momento com Ctrl+C. O autopilot nunca retenta uma invocação interrompida.
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## Como os agentes se encadeiam
|
|
79
|
+
|
|
80
|
+
Quando autopilot está ativo e nenhuma condição de parada aplica:
|
|
81
|
+
|
|
82
|
+
1. O agente termina suas responsabilidades (artefatos em disco, gate, dossier, `pulse:update`, `agent:done`).
|
|
83
|
+
2. Emite: `Autopilot: @<atual> done → invocando @<próximo> (Ctrl+C para interromper)`.
|
|
84
|
+
3. Invoca `Skill(aioson:agent:<próximo>)` com contexto `"continue feature {slug} — autopilot handoff from @<atual>"`.
|
|
85
|
+
|
|
86
|
+
O roteamento é **determinístico** — nunca escolhido pelo modelo. O próximo agente vem do state machine do workflow (`workflow.state.json` ou `aioson workflow:status .`), não de julgamento do LLM.
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## Rastreamento via CLI
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
# Ver estado atual do workflow (qual agente está ativo)
|
|
94
|
+
aioson workflow:status .
|
|
95
|
+
|
|
96
|
+
# Avançar manualmente (quando autopilot está desligado)
|
|
97
|
+
aioson workflow:next .
|
|
98
|
+
|
|
99
|
+
# Ver handoff preparado pelo agente anterior
|
|
100
|
+
cat .aioson/context/last-handoff.json
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## Exemplo: feature MEDIUM com autopilot ativo
|
|
106
|
+
|
|
107
|
+
```
|
|
108
|
+
Você > /analyst (start)
|
|
109
|
+
|
|
110
|
+
@analyst → scope + domain → STOP pré-dev (autopilot para @analyst)
|
|
111
|
+
@scope-check → pre-dev check → autopilot: invocando @architect
|
|
112
|
+
@architect → Gate B PASS → autopilot: invocando @discovery-design-doc
|
|
113
|
+
@discovery-design-doc → readiness ok → autopilot: invocando @pm (MEDIUM)
|
|
114
|
+
@pm → Gate C PASS → STOP — "Recomendo /clear e /dev"
|
|
115
|
+
|
|
116
|
+
Você > /clear
|
|
117
|
+
Você > /dev (implementação manual — contexto limpo)
|
|
118
|
+
|
|
119
|
+
@dev → testes ok → autopilot retoma: invocando @qa
|
|
120
|
+
@qa → PASS + nenhum trigger → STOP — "Execute: aioson feature:close . --feature=..."
|
|
121
|
+
|
|
122
|
+
Você > aioson feature:close . --feature=minha-feature
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
## Próximos passos
|
|
128
|
+
|
|
129
|
+
- [SDD Framework](./sdd-framework.md) — sequência completa MICRO/SMALL/MEDIUM
|
|
130
|
+
- [Comandos CLI](./comandos-cli.md) — `workflow:next`, `workflow:status`, `workflow:heal`
|
|
131
|
+
- [Motor Hardening](./motor-hardening.md) — gates técnicos e auto-cura
|
|
@@ -298,12 +298,24 @@ Três comandos de inteligência de sistema para otimizar tokens, gerar contexto
|
|
|
298
298
|
| `brief:gen` | Lê uma fase do plano de implementação + `architecture.md` + `spec.md` e gera um brief 100% autocontido para um worker | Antes de entregar uma fase a um executor de squad — garante que o worker tem tudo que precisa sem buscar contexto adicional. Veja [Geração de Brief](#40-gerar-brief-de-worker-briefgen) |
|
|
299
299
|
| `verify:gate` | Verificação de olhos frescos: compara spec vs artefato entregue sem histórico de conversa; emite `PASS`, `PASS_WITH_NOTES`, `FAIL_WITH_ISSUES` ou `BLOCKED` | Após cada entrega de fase — detecta bugs que o agente gerador não consegue ver por viés de contexto. Veja [Verify Gate](#41-verificar-entrega-verifygate) |
|
|
300
300
|
|
|
301
|
+
### Loop Guardrails e harness
|
|
302
|
+
|
|
303
|
+
Controle do loop autônomo `self:loop` com scope guard, budget enforcement, human gates e retrospectiva. Veja [Loop Guardrails](./loop-guardrails.md) e [harness:retro](./harness-retro.md).
|
|
304
|
+
|
|
305
|
+
| Comando | O que faz | Quando usar |
|
|
306
|
+
|---|---|---|
|
|
307
|
+
| `harness:approve` | Aprova um gate humano pendente no loop (persiste decisão auditável) | Quando o loop pausou em `HUMAN_GATE` e você quer retomá-lo |
|
|
308
|
+
| `harness:reject` | Rejeita um gate humano (encerra a tentativa com resumo; requer `--reason`) | Quando quer cancelar a tentativa atual após revisão humana |
|
|
309
|
+
| `harness:status` | Visão do estado do loop: circuito, iteração N/M, budget, checks, gates pendentes, próxima ação | Sempre que quiser saber o que o loop está fazendo ou por que parou |
|
|
310
|
+
| `harness:retro` | Minera deterministicamente o histórico de falhas de uma feature e gera dossiê retrospectivo — sem LLM | Após features com múltiplas iterações, antes de `@qa` ou `@validator` |
|
|
311
|
+
| `harness:preview` | Exibe prévia de um artefato com truncação segura (usado no feedback de critério do loop) | Quando quer inspecionar um artefato sem despejar conteúdo no contexto |
|
|
312
|
+
|
|
301
313
|
### Git e committer
|
|
302
314
|
|
|
303
315
|
| Comando | O que faz | Quando usar |
|
|
304
316
|
|---|---|---|
|
|
305
317
|
| `commit:prepare` | Coleta diff staged, roda `git:guard`, gera `commit-prep.json` com tipo, escopo e descrição candidata | Antes de ativar `@committer` — automatiza a preparação e aplica guardrails de segurança |
|
|
306
|
-
| `git:guard` | Verifica stage proibido (`node_modules/`, secrets, build artifacts) e pode instalar pre-commit hook | Antes de qualquer commit; use `--install-hook` para proteção contínua |
|
|
318
|
+
| `git:guard` | Verifica stage proibido (`node_modules/`, secrets, build artifacts); integra `forbidden_files` do contrato ativo e pode instalar pre-commit hook | Antes de qualquer commit; use `--install-hook` para proteção contínua |
|
|
307
319
|
|
|
308
320
|
### Feature Dossier
|
|
309
321
|
|
|
@@ -1711,11 +1723,14 @@ aioson workflow:execute . \
|
|
|
1711
1723
|
--classification=SMALL \
|
|
1712
1724
|
--dry-run
|
|
1713
1725
|
|
|
1714
|
-
# Executar de verdade
|
|
1715
|
-
aioson workflow:execute . --feature=checkout --tool=claude
|
|
1716
|
-
|
|
1717
|
-
#
|
|
1718
|
-
aioson workflow:execute .
|
|
1726
|
+
# Executar de verdade
|
|
1727
|
+
aioson workflow:execute . --feature=checkout --tool=claude
|
|
1728
|
+
|
|
1729
|
+
# Executar com política agentica persistida para o gateway
|
|
1730
|
+
aioson workflow:execute . --feature=checkout --tool=codex --agentic --max-dev-qa-cycles=3
|
|
1731
|
+
|
|
1732
|
+
# Retomar do dev (pular product e analyst)
|
|
1733
|
+
aioson workflow:execute . \
|
|
1719
1734
|
--feature=checkout \
|
|
1720
1735
|
--tool=claude \
|
|
1721
1736
|
--start-from=dev
|
|
@@ -1812,6 +1827,57 @@ Regras do guard:
|
|
|
1812
1827
|
|
|
1813
1828
|
---
|
|
1814
1829
|
|
|
1830
|
+
### 56. Controlar o self:loop com guardrails
|
|
1831
|
+
|
|
1832
|
+
O `self:loop` agora suporta contrato verificável. Veja [Loop Guardrails](./loop-guardrails.md) para o guia completo.
|
|
1833
|
+
|
|
1834
|
+
```bash
|
|
1835
|
+
# Ver estado atual do loop de uma feature
|
|
1836
|
+
aioson harness:status . --slug=checkout
|
|
1837
|
+
aioson harness:status . --slug=checkout --json
|
|
1838
|
+
|
|
1839
|
+
# Aprovar gate humano (ex: mudança em migrations detectada automaticamente)
|
|
1840
|
+
aioson harness:approve . --slug=checkout --gate=database_destructive_change-1
|
|
1841
|
+
|
|
1842
|
+
# Rejeitar gate (cancela tentativa atual)
|
|
1843
|
+
aioson harness:reject . --slug=checkout --gate=database_destructive_change-1 --reason="revert necessário"
|
|
1844
|
+
```
|
|
1845
|
+
|
|
1846
|
+
**Campos novos no harness-contract.json:**
|
|
1847
|
+
```json
|
|
1848
|
+
{
|
|
1849
|
+
"contract_mode": "safe",
|
|
1850
|
+
"allowed_files": ["src/modules/checkout/**"],
|
|
1851
|
+
"human_gate": { "required_for": ["database_destructive_change"] }
|
|
1852
|
+
}
|
|
1853
|
+
```
|
|
1854
|
+
|
|
1855
|
+
Use `contract_mode: "safe"` para loops conservadores (10 steps, 200k tokens), `"builder"` para desenvolvimento ativo, `"autopilot"` para loops longos.
|
|
1856
|
+
|
|
1857
|
+
---
|
|
1858
|
+
|
|
1859
|
+
### 57. Retrospectiva de falhas com harness:retro
|
|
1860
|
+
|
|
1861
|
+
```bash
|
|
1862
|
+
# Dossiê da feature checkout
|
|
1863
|
+
aioson harness:retro . --feature=checkout
|
|
1864
|
+
|
|
1865
|
+
# Dossiê das últimas 5 features (ordenadas por data de PASS)
|
|
1866
|
+
aioson harness:retro . --last=5
|
|
1867
|
+
|
|
1868
|
+
# Formato JSON (com exit codes propagados)
|
|
1869
|
+
aioson harness:retro . --feature=checkout --json
|
|
1870
|
+
```
|
|
1871
|
+
|
|
1872
|
+
Saída em `.aioson/context/retro/checkout.md`. Fontes mineradas: QA reports, planos de correção, trilha FAIL→PASS do dossier, eventos de execução, tentativas, assinaturas de falha e devlogs. Operação de leitura — arquivos-fonte nunca são alterados.
|
|
1873
|
+
|
|
1874
|
+
```bash
|
|
1875
|
+
# Exibir prévia de um artefato com truncação segura
|
|
1876
|
+
aioson harness:preview .aioson/context/retro/checkout.md
|
|
1877
|
+
```
|
|
1878
|
+
|
|
1879
|
+
---
|
|
1880
|
+
|
|
1815
1881
|
## Atalhos úteis
|
|
1816
1882
|
|
|
1817
1883
|
```bash
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
# harness:retro — Dossiê retrospectivo de loop
|
|
2
|
+
|
|
3
|
+
> Minera deterministicamente o histórico de falhas de uma feature e materializa um dossiê retrospectivo — sem LLM, sem rede.
|
|
4
|
+
|
|
5
|
+
Introduzido na v1.23.0 como parte do **RHO-lite** (Retrospective Harness Optimization). Resolve um problema comum após loops com múltiplas tentativas: entender o que falhou, quantos ciclos FAIL→PASS aconteceram e quais correções foram aplicadas, sem precisar ler dezenas de arquivos espalhados.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Quando usar
|
|
10
|
+
|
|
11
|
+
- Após a conclusão de uma feature com iterações do `self:loop` para entender o histórico de falhas.
|
|
12
|
+
- Antes de iniciar `@qa` ou `@validator` em features que passaram por correções — o dossiê é um insumo de contexto.
|
|
13
|
+
- Para identificar padrões recorrentes entre features (`--last=N`).
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Comandos
|
|
18
|
+
|
|
19
|
+
### harness:retro
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
# Dossiê de uma feature específica
|
|
23
|
+
aioson harness:retro . --feature=<slug>
|
|
24
|
+
|
|
25
|
+
# Dossiê das N features mais recentes (ordenadas por data de PASS)
|
|
26
|
+
aioson harness:retro . --last=<N>
|
|
27
|
+
|
|
28
|
+
# Output JSON (propagando exit codes para automação)
|
|
29
|
+
aioson harness:retro . --feature=<slug> --json
|
|
30
|
+
|
|
31
|
+
# Locale específico
|
|
32
|
+
aioson harness:retro . --feature=<slug> --locale=pt-BR
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
**Exit codes:**
|
|
36
|
+
|
|
37
|
+
| Código | Significado |
|
|
38
|
+
|---|---|
|
|
39
|
+
| 0 | Sucesso (inclusive dossiê vazio — sem falhas mineradas) |
|
|
40
|
+
| 1 | Erro de I/O inesperado |
|
|
41
|
+
| 12 | Erro de input (slug inválido, flags conflitantes, feature inexistente) |
|
|
42
|
+
|
|
43
|
+
**Saída:** `.aioson/context/retro/{slug}.md` (ou `window-last-{N}.md`). A operação é de **leitura**, exceto pela escrita do dossiê — os arquivos-fonte nunca são alterados.
|
|
44
|
+
|
|
45
|
+
### harness:preview
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
# Exibir prévia de um artefato (com truncação segura)
|
|
49
|
+
aioson harness:preview <arquivo>
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Usado principalmente na interface de feedback do `self:loop` quando um critério falha — exibe o conteúdo do artefato relevante sem despejar o arquivo inteiro no contexto do agente. Truncação UTF-8-safe, best-effort write, modo read-only.
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## Fontes mineradas
|
|
57
|
+
|
|
58
|
+
O `harness:retro` lê sete fontes por feature:
|
|
59
|
+
|
|
60
|
+
| Fonte | O que captura |
|
|
61
|
+
|---|---|
|
|
62
|
+
| Relatórios QA | Falhas e severidades de `@qa` |
|
|
63
|
+
| Planos de correção | Correções aplicadas por ciclo |
|
|
64
|
+
| Trilha do dossier | Ciclos FAIL→PASS do Agent Trail |
|
|
65
|
+
| `execution_events` | Eventos de telemetria do loop |
|
|
66
|
+
| Diretório de tentativas | Artefatos de cada iteração (`attempts/`) |
|
|
67
|
+
| Assinaturas de falha | Padrões de erro recorrentes |
|
|
68
|
+
| Devlogs | Resumos de sessão escritos manualmente |
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## Estrutura do dossiê
|
|
73
|
+
|
|
74
|
+
O arquivo gerado tem frontmatter YAML e três seções principais:
|
|
75
|
+
|
|
76
|
+
```markdown
|
|
77
|
+
---
|
|
78
|
+
feature: minha-feature
|
|
79
|
+
generated_at: ...
|
|
80
|
+
schema_version: "1.0"
|
|
81
|
+
sources:
|
|
82
|
+
qa_reports: 2
|
|
83
|
+
corrections: 1
|
|
84
|
+
dossier_trail: 8
|
|
85
|
+
attempts: 3
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## Propostas candidatas
|
|
89
|
+
<!-- Falhas de severidade high com múltiplas ocorrências ou ciclo FAIL→PASS -->
|
|
90
|
+
|
|
91
|
+
### feature::C-01
|
|
92
|
+
- Âncora, severidade, ocorrências, correções aplicadas, custo de retrabalho
|
|
93
|
+
|
|
94
|
+
## Observações
|
|
95
|
+
<!-- Falhas de severidade medium/low que não atingiram a promoção a candidato -->
|
|
96
|
+
|
|
97
|
+
## Trilha minerada
|
|
98
|
+
<!-- Paths, contagens por fonte, avisos de degradação -->
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
**Promoção a candidato (REQ-2):** uma falha vira "proposta candidata" quando atinge a barra de severidade ou ocorrência definida no schema. As demais ficam em "observações".
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## Segurança
|
|
106
|
+
|
|
107
|
+
O texto livre minerado (títulos de findings, descrições de correções) passa por `neutralizeText()` antes de ser renderizado no dossiê. Isso remove caracteres de controle, bidi e zero-width que poderiam injetar estrutura Markdown num dossiê compartilhado com `@sheldon`. O comportamento é byte-stable em texto limpo.
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## Exemplos práticos
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
# Após fechar a feature checkout, gerar retrospectiva
|
|
115
|
+
aioson harness:retro . --feature=checkout
|
|
116
|
+
|
|
117
|
+
# Ver o dossiê gerado
|
|
118
|
+
aioson harness:preview .aioson/context/retro/checkout.md
|
|
119
|
+
|
|
120
|
+
# Retrospectiva das 5 features mais recentes
|
|
121
|
+
aioson harness:retro . --last=5
|
|
122
|
+
|
|
123
|
+
# Passar para @sheldon como contexto
|
|
124
|
+
# Abra uma sessão @sheldon e carregue .aioson/context/retro/checkout.md
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## Próximos passos
|
|
130
|
+
|
|
131
|
+
- [Loop Guardrails](./loop-guardrails.md) — contrato verificável que gera os artefatos que o retro minera
|
|
132
|
+
- [Motor Hardening](./motor-hardening.md) — gates técnicos e auto-cura
|
|
133
|
+
- [Feature Dossier](./feature-dossier.md) — ponto único de verdade de uma feature
|