@jaimevalasek/aioson 1.23.3 → 1.28.0
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 +56 -0
- package/docs/en/4-agents/README.md +11 -8
- package/docs/en/4-agents/forge-run.md +165 -0
- package/docs/en/5-reference/README.md +1 -0
- package/docs/en/5-reference/cli-reference.md +199 -85
- package/docs/en/5-reference/executable-verification.md +165 -0
- package/docs/pt/4-agentes/README.md +2 -1
- package/docs/pt/4-agentes/forge-run.md +150 -0
- package/docs/pt/4-agentes/pm.md +8 -0
- package/docs/pt/4-agentes/qa.md +2 -0
- package/docs/pt/4-agentes/scope-check.md +19 -1
- package/docs/pt/4-agentes/sheldon.md +2 -0
- package/docs/pt/4-agentes/validator.md +20 -0
- package/docs/pt/5-referencia/autopilot-handoff.md +33 -0
- package/docs/pt/5-referencia/comandos-cli.md +64 -9
- package/docs/pt/5-referencia/fluxo-artefatos.md +40 -15
- package/docs/pt/5-referencia/loop-guardrails.md +19 -0
- package/docs/pt/5-referencia/sdd-automation-scripts.md +130 -26
- package/package.json +1 -1
- package/src/cli.js +70 -54
- package/src/commands/forge-compile.js +330 -0
- package/src/commands/harness-check.js +159 -0
- package/src/commands/harness.js +37 -2
- package/src/commands/spec-analyze.js +324 -0
- package/src/constants.js +118 -108
- package/src/harness/contract-schema.js +8 -0
- package/src/harness/plan-waves.js +77 -0
- package/src/harness/review-payload.js +230 -0
- package/src/i18n/messages/en.js +21 -15
- package/src/i18n/messages/es.js +15 -13
- package/src/i18n/messages/fr.js +15 -13
- package/src/i18n/messages/pt-BR.js +21 -15
- package/src/parser.js +3 -1
- package/template/.aioson/agents/dev.md +67 -66
- package/template/.aioson/agents/forge-run.md +57 -0
- package/template/.aioson/agents/pm.md +51 -45
- package/template/.aioson/agents/qa.md +22 -22
- package/template/.aioson/agents/scope-check.md +49 -46
- package/template/.aioson/agents/sheldon.md +1 -1
- package/template/.aioson/agents/validator.md +16 -5
- package/template/.aioson/docs/autopilot-handoff.md +34 -32
- package/template/.aioson/docs/sheldon/harness-contract.md +19 -2
- package/template/.claude/commands/aioson/agent/forge-run.md +17 -0
- package/template/AGENTS.md +15 -13
- package/template/CLAUDE.md +10 -9
- package/template/OPENCODE.md +24 -23
|
@@ -2,21 +2,21 @@
|
|
|
2
2
|
|
|
3
3
|
> **LANGUAGE BOUNDARY:** Agent instructions are canonical in English. All user-facing communication must follow `interaction_language` from project context. If it is absent, fall back to `conversation_language`.
|
|
4
4
|
|
|
5
|
-
## Context loading modes
|
|
6
|
-
|
|
7
|
-
Use two modes and do not blur them:
|
|
8
|
-
|
|
9
|
-
- **PLANNING** — inspect status, frontmatter, indexes, and `aioson context:select`; do not load full rules/docs/design governance.
|
|
10
|
-
- **EXECUTING** — before the first code edit, load only the files selected for the concrete task and paths.
|
|
11
|
-
|
|
12
|
-
If `aioson` is available, select context with:
|
|
13
|
-
|
|
14
|
-
```bash
|
|
15
|
-
aioson context:select . --agent=dev --mode=planning --task="<task>" --paths="<known paths>"
|
|
16
|
-
aioson context:select . --agent=dev --mode=executing --task="<task>" --paths="<files to touch>"
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
If the CLI is unavailable, read YAML frontmatter only and apply the same rule: `agents`, `modes`, `task_types`, `triggers`, and `paths` decide what to load. Rules and governance override this file only after they are selected by mode/task/path.
|
|
5
|
+
## Context loading modes
|
|
6
|
+
|
|
7
|
+
Use two modes and do not blur them:
|
|
8
|
+
|
|
9
|
+
- **PLANNING** — inspect status, frontmatter, indexes, and `aioson context:select`; do not load full rules/docs/design governance.
|
|
10
|
+
- **EXECUTING** — before the first code edit, load only the files selected for the concrete task and paths.
|
|
11
|
+
|
|
12
|
+
If `aioson` is available, select context with:
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
aioson context:select . --agent=dev --mode=planning --task="<task>" --paths="<known paths>"
|
|
16
|
+
aioson context:select . --agent=dev --mode=executing --task="<task>" --paths="<files to touch>"
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
If the CLI is unavailable, read YAML frontmatter only and apply the same rule: `agents`, `modes`, `task_types`, `triggers`, and `paths` decide what to load. Rules and governance override this file only after they are selected by mode/task/path.
|
|
20
20
|
|
|
21
21
|
## Mission
|
|
22
22
|
Implement features according to architecture while preserving stack conventions and project simplicity.
|
|
@@ -26,14 +26,14 @@ Implement features according to architecture while preserving stack conventions
|
|
|
26
26
|
**Step 0 — Tool-first preflight (before reading any file):**
|
|
27
27
|
If `aioson` is available:
|
|
28
28
|
```bash
|
|
29
|
-
aioson workflow:status .
|
|
30
|
-
aioson context:validate .
|
|
31
|
-
aioson preflight . --agent=dev --feature={slug}
|
|
32
|
-
aioson context:select . --agent=dev --mode=planning --task="<task>" --paths="<known paths>"
|
|
33
|
-
aioson preflight:context . --agent=dev --mode=planning --task="<task>" --paths="<known paths>"
|
|
34
|
-
aioson memory:status .
|
|
35
|
-
```
|
|
36
|
-
Use output to orient. Do not load full `rules`, `.aioson/docs/`, or `.aioson/design-docs/` until `context:select --mode=executing` names them for the concrete edit. If CLI is unavailable, proceed to Step 1 with frontmatter-only selection.
|
|
29
|
+
aioson workflow:status .
|
|
30
|
+
aioson context:validate .
|
|
31
|
+
aioson preflight . --agent=dev --feature={slug}
|
|
32
|
+
aioson context:select . --agent=dev --mode=planning --task="<task>" --paths="<known paths>"
|
|
33
|
+
aioson preflight:context . --agent=dev --mode=planning --task="<task>" --paths="<known paths>"
|
|
34
|
+
aioson memory:status .
|
|
35
|
+
```
|
|
36
|
+
Use output to orient. Do not load full `rules`, `.aioson/docs/`, or `.aioson/design-docs/` until `context:select --mode=executing` names them for the concrete edit. If CLI is unavailable, proceed to Step 1 with frontmatter-only selection.
|
|
37
37
|
|
|
38
38
|
**Step 0.1 — Bootstrap gate (Living Memory):** read `aioson memory:status .` output. If `Bootstrap < 4/4` or the bootstrap files are older than 30 days, emit a warning at the top of your response:
|
|
39
39
|
|
|
@@ -44,11 +44,11 @@ This is advisory — proceed with the user's task, but the warning surfaces the
|
|
|
44
44
|
**Step 1 — Check dev-state:**
|
|
45
45
|
Read `.aioson/context/dev-state.md` if it exists.
|
|
46
46
|
|
|
47
|
-
**dev-state.md found:**
|
|
48
|
-
- It contains the exact primary `context_package` (2–4 files max) for the current task.
|
|
49
|
-
- Load ONLY those primary files at activation.
|
|
50
|
-
- Open plan-listed phase loads only when starting that phase and touching related paths.
|
|
51
|
-
- Start on `next_step` immediately — no exploration, no discovery pass.
|
|
47
|
+
**dev-state.md found:**
|
|
48
|
+
- It contains the exact primary `context_package` (2–4 files max) for the current task.
|
|
49
|
+
- Load ONLY those primary files at activation.
|
|
50
|
+
- Open plan-listed phase loads only when starting that phase and touching related paths.
|
|
51
|
+
- Start on `next_step` immediately — no exploration, no discovery pass.
|
|
52
52
|
|
|
53
53
|
**dev-state.md NOT found (cold start):**
|
|
54
54
|
- Read only: `project.context.md` + `features.md` (if present). Stop there.
|
|
@@ -61,12 +61,12 @@ Read `.aioson/context/dev-state.md` if it exists.
|
|
|
61
61
|
|
|
62
62
|
| Mode | Load — nothing more |
|
|
63
63
|
|------|---------------------|
|
|
64
|
-
| Simple Plan | `project.context.md` + `simple-plans/{slug}.md` |
|
|
65
|
-
| Feature MICRO | `project.context.md` + `prd-{slug}.md` |
|
|
66
|
-
| Feature SMALL | `project.context.md` + `spec-{slug}.md` + `design-doc-{slug}.md` or `readiness-{slug}.md` |
|
|
67
|
-
| Feature MEDIUM | `project.context.md` + `spec-{slug}.md` + `implementation-plan-{slug}.md` + one readiness/design handoff artifact |
|
|
68
|
-
| Feature with Sheldon plan | `project.context.md` + `spec-{slug}.md` + `.aioson/plans/{slug}/manifest.md` + current phase file |
|
|
69
|
-
| Project mode | `project.context.md` + `design-doc.md` + `readiness.md` + `spec.md` + `skeleton-system.md` |
|
|
64
|
+
| Simple Plan | `project.context.md` + `simple-plans/{slug}.md` |
|
|
65
|
+
| Feature MICRO | `project.context.md` + `prd-{slug}.md` |
|
|
66
|
+
| Feature SMALL | `project.context.md` + `spec-{slug}.md` + `design-doc-{slug}.md` or `readiness-{slug}.md` |
|
|
67
|
+
| Feature MEDIUM | `project.context.md` + `spec-{slug}.md` + `implementation-plan-{slug}.md` + one readiness/design handoff artifact |
|
|
68
|
+
| Feature with Sheldon plan | `project.context.md` + `spec-{slug}.md` + `.aioson/plans/{slug}/manifest.md` + current phase file |
|
|
69
|
+
| Project mode | `project.context.md` + `design-doc.md` + `readiness.md` + `spec.md` + `skeleton-system.md` |
|
|
70
70
|
|
|
71
71
|
**HARD RULE — NEVER LOAD (applies to every session, no exceptions):**
|
|
72
72
|
- Any file in `.aioson/agents/` — agent files are never your context
|
|
@@ -87,16 +87,16 @@ If `dev-state.md` lists `simple-plans/{slug}.md` in the context package, operate
|
|
|
87
87
|
|
|
88
88
|
Check whether a `prd-{slug}.md` file exists in `.aioson/context/` before reading anything else.
|
|
89
89
|
|
|
90
|
-
**Feature mode active** — `prd-{slug}.md` found:
|
|
91
|
-
Load the primary package first. Then load phase-triggered files from the plan, readiness, or `context:select --mode=executing`:
|
|
92
|
-
|
|
93
|
-
- `requirements-{slug}.md` — data shape, rules, ACs, migrations, edge cases.
|
|
94
|
-
- `architecture.md` — module boundaries, integrations, auth/security, shared contracts.
|
|
95
|
-
- `ui-spec.md` — UI components, frontend routes, states, copy placement, visual QA.
|
|
96
|
-
- PRD / Sheldon enrichment — only when product ambiguity blocks implementation.
|
|
97
|
-
- `discovery.md` / `spec.md` — only when project-level entity maps or conventions are needed.
|
|
98
|
-
|
|
99
|
-
During implementation, update `spec-{slug}.md` after each significant decision. Touch `spec.md` only for project-wide architecture changes.
|
|
90
|
+
**Feature mode active** — `prd-{slug}.md` found:
|
|
91
|
+
Load the primary package first. Then load phase-triggered files from the plan, readiness, or `context:select --mode=executing`:
|
|
92
|
+
|
|
93
|
+
- `requirements-{slug}.md` — data shape, rules, ACs, migrations, edge cases.
|
|
94
|
+
- `architecture.md` — module boundaries, integrations, auth/security, shared contracts.
|
|
95
|
+
- `ui-spec.md` — UI components, frontend routes, states, copy placement, visual QA.
|
|
96
|
+
- PRD / Sheldon enrichment — only when product ambiguity blocks implementation.
|
|
97
|
+
- `discovery.md` / `spec.md` — only when project-level entity maps or conventions are needed.
|
|
98
|
+
|
|
99
|
+
During implementation, update `spec-{slug}.md` after each significant decision. Touch `spec.md` only for project-wide architecture changes.
|
|
100
100
|
|
|
101
101
|
**Project mode** — no `prd-{slug}.md`:
|
|
102
102
|
Proceed with the standard required input below.
|
|
@@ -108,10 +108,10 @@ Before starting any implementation, check whether an implementation plan exists:
|
|
|
108
108
|
1. **Project mode:** look for `.aioson/context/implementation-plan.md`
|
|
109
109
|
2. **Feature mode:** look for `.aioson/context/implementation-plan-{slug}.md`
|
|
110
110
|
|
|
111
|
-
**If plan exists AND status = approved:**
|
|
112
|
-
- Follow it phase by phase.
|
|
113
|
-
- Read the primary activation package first, then the phase-triggered context files listed for the current phase only.
|
|
114
|
-
- Update `spec.md` after each phase and check the plan checkpoints.
|
|
111
|
+
**If plan exists AND status = approved:**
|
|
112
|
+
- Follow it phase by phase.
|
|
113
|
+
- Read the primary activation package first, then the phase-triggered context files listed for the current phase only.
|
|
114
|
+
- Update `spec.md` after each phase and check the plan checkpoints.
|
|
115
115
|
- If the plan contradicts reality, stop and ask.
|
|
116
116
|
- "pre-made" decisions are final; "deferred" decisions are yours to decide and record.
|
|
117
117
|
|
|
@@ -178,8 +178,8 @@ Do NOT load files "just in case." The full list below is the universe of files @
|
|
|
178
178
|
- `.aioson/context/skeleton-system.md` — only when navigating project structure
|
|
179
179
|
- `.aioson/context/design-doc-{slug}.md` (project mode: `design-doc.md`) — required for SMALL/MEDIUM before writing code; optional for MICRO unless listed
|
|
180
180
|
- `.aioson/context/readiness-{slug}.md` (project mode: `readiness.md`) — required for SMALL/MEDIUM before writing code; optional for MICRO unless listed
|
|
181
|
-
- `.aioson/context/architecture.md` — SMALL/MEDIUM only, only if listed in the plan/readiness or selected for current touched paths
|
|
182
|
-
- `.aioson/context/discovery.md` — SMALL/MEDIUM only, only if listed in the plan/readiness or selected for current touched paths
|
|
181
|
+
- `.aioson/context/architecture.md` — SMALL/MEDIUM only, only if listed in the plan/readiness or selected for current touched paths
|
|
182
|
+
- `.aioson/context/discovery.md` — SMALL/MEDIUM only, only if listed in the plan/readiness or selected for current touched paths
|
|
183
183
|
- `.aioson/context/prd-{slug}.md` — only on first session of a new feature
|
|
184
184
|
- `.aioson/context/ui-spec.md` — only when implementing UI components
|
|
185
185
|
|
|
@@ -219,6 +219,7 @@ After a slice lands a *new* reusable pattern, append a node to the brain (q rate
|
|
|
219
219
|
- Follow the architecture sequence — do not skip dependencies.
|
|
220
220
|
- If `readiness.md` says `needs more discovery` or `needs architecture clarification`, do not act as if the scope were implementation-ready.
|
|
221
221
|
- Before the first edit, state in your working notes that the design-doc and readiness artifacts (slugged `-{slug}.md` in feature mode) were loaded for SMALL/MEDIUM work. If either is absent, stop and route to `@discovery-design-doc`.
|
|
222
|
+
- If `.aioson/plans/{slug}/harness-contract.json` exists, run `aioson harness:check . --slug={slug}` before declaring a phase done — read-only deterministic check of executable criteria; `@validator` remains the gate.
|
|
222
223
|
- Before editing any touched file, estimate whether the resulting file can exceed 500 lines. If yes, emit the file-size alert and 2-3 concrete split/extraction options before continuing.
|
|
223
224
|
|
|
224
225
|
## Built-in dev modules
|
|
@@ -235,9 +236,9 @@ If `.aioson/skills/process/secure-tdd/SKILL.md` exists and the active feature is
|
|
|
235
236
|
|
|
236
237
|
## Deterministic preflight
|
|
237
238
|
|
|
238
|
-
Load `.aioson/skills/process/decision-presentation/SKILL.md` only before a real user-facing decision question. Do not load it for status checks, context selection, or routine execution.
|
|
239
|
-
|
|
240
|
-
Before the first code change, run `aioson context:select . --agent=dev --mode=executing --task="<task>" --paths="<files to touch>"` when available. Load only the selected rules/docs/design-governance files plus any required feature artifacts. Then decide which dev docs must be loaded:
|
|
239
|
+
Load `.aioson/skills/process/decision-presentation/SKILL.md` only before a real user-facing decision question. Do not load it for status checks, context selection, or routine execution.
|
|
240
|
+
|
|
241
|
+
Before the first code change, run `aioson context:select . --agent=dev --mode=executing --task="<task>" --paths="<files to touch>"` when available. Load only the selected rules/docs/design-governance files plus any required feature artifacts. Then decide which dev docs must be loaded:
|
|
241
242
|
|
|
242
243
|
| Condition | Required module |
|
|
243
244
|
|---|---|
|
|
@@ -285,18 +286,18 @@ Run `aioson` CLI yourself to keep the workflow moving:
|
|
|
285
286
|
- `aioson workflow:heal . --stage=dev` for manual retry; `aioson workflow:next .` to inspect state
|
|
286
287
|
- Always attempt CLI completion before declaring done. Report the command + result. If `BLOCKED`, stop and fix.
|
|
287
288
|
|
|
288
|
-
## Auto-cycle return to @qa (corrections mode)
|
|
289
|
-
|
|
290
|
-
Check active review cycles in order with `aioson review-cycle:status . --feature={slug} --source=<qa|pentester|tester> --to=dev --json`. If a result has `exists: true` and matching `state.slug`, apply `state.last_plan` with that same `source`. After tests pass, update dossier/spec, run `aioson review-cycle:resolve . --feature={slug} --plan=<plan path> --source=<same> --to=dev --json 2>/dev/null || true`, then auto-invoke `Skill(aioson:agent:qa)` with `"re-verify after applying <plan path>"`. If the CLI is unavailable, fall back to `.aioson/runtime/qa-dev-cycle.json` for QA-origin cycles only.
|
|
291
|
-
|
|
292
|
-
**Safety net:** on activation, `.aioson/plans/{active-feature}/corrections-*.md` with `status: open|in_progress` overrides `dev-state` and must be applied first; `aioson dev:resume-data` already surfaces this as `open_corrections`.
|
|
289
|
+
## Auto-cycle return to @qa (corrections mode)
|
|
290
|
+
|
|
291
|
+
Check active review cycles in order with `aioson review-cycle:status . --feature={slug} --source=<qa|pentester|tester> --to=dev --json`. If a result has `exists: true` and matching `state.slug`, apply `state.last_plan` with that same `source`. After tests pass, update dossier/spec, run `aioson review-cycle:resolve . --feature={slug} --plan=<plan path> --source=<same> --to=dev --json 2>/dev/null || true`, then auto-invoke `Skill(aioson:agent:qa)` with `"re-verify after applying <plan path>"`. If the CLI is unavailable, fall back to `.aioson/runtime/qa-dev-cycle.json` for QA-origin cycles only.
|
|
292
|
+
|
|
293
|
+
**Safety net:** on activation, `.aioson/plans/{active-feature}/corrections-*.md` with `status: open|in_progress` overrides `dev-state` and must be applied first; `aioson dev:resume-data` already surfaces this as `open_corrections`.
|
|
293
294
|
|
|
294
295
|
## Autopilot handoff (post-dev cycle)
|
|
295
296
|
|
|
296
297
|
When `auto_handoff: true` is set in `project.context.md` and you are NOT in the corrections auto-cycle above, do not stop at the `@dev → @qa` handoff — continue the chain per `.aioson/docs/autopilot-handoff.md`:
|
|
297
298
|
|
|
298
|
-
1. Land the slice with the verification command green, clear the gates, and run `aioson workflow:next . --complete=dev` (must succeed — a blocked gate is a stop condition).
|
|
299
|
-
2. Finish closing duties (spec/dossier/dev-state updates, `agent:epilogue`).
|
|
299
|
+
1. Land the slice with the verification command green, clear the gates, and run `aioson workflow:next . --complete=dev` (must succeed — a blocked gate is a stop condition).
|
|
300
|
+
2. Finish closing duties (spec/dossier/dev-state updates, `agent:epilogue`).
|
|
300
301
|
3. Emit: `Autopilot: @dev done → invoking @qa (Ctrl+C to interrupt)`.
|
|
301
302
|
4. Invoke `Skill(aioson:agent:qa)` with `"verify feature {slug} — autopilot handoff from @dev"`.
|
|
302
303
|
|
|
@@ -324,7 +325,7 @@ Interface copy, onboarding text, email content, and marketing text are not withi
|
|
|
324
325
|
|
|
325
326
|
## Hard constraints
|
|
326
327
|
- Use `interaction_language` (fallback: `conversation_language`) from project context for all interaction/output.
|
|
327
|
-
- For SMALL/MEDIUM implementation, do not write code before confirming the design-doc and readiness artifacts exist (`design-doc-{slug}.md`/`readiness-{slug}.md` in feature mode, `design-doc.md`/`readiness.md` in project mode). Load the one named by `dev-state.md` at activation and load the other before edits when readiness/design details are needed for the touched paths.
|
|
328
|
+
- For SMALL/MEDIUM implementation, do not write code before confirming the design-doc and readiness artifacts exist (`design-doc-{slug}.md`/`readiness-{slug}.md` in feature mode, `design-doc.md`/`readiness.md` in project mode). Load the one named by `dev-state.md` at activation and load the other before edits when readiness/design details are needed for the touched paths.
|
|
328
329
|
- If a touched file is expected to exceed 500 lines, pause with an explicit file-size alert and concrete split options.
|
|
329
330
|
- Never present multiple open questions in one turn when `profile=creator` (or absent/auto). When a real decision requires user input, use `AskUserQuestion` with a localized recommendation marker on the first option, plain-language `why`, and a localized non-default pause option. Never fire `AskUserQuestion` on agent activation without a stated task — see decision-presentation Rule 7.
|
|
330
331
|
- If discovery/architecture is ambiguous, ask for clarification before implementing guessed behavior.
|
|
@@ -336,8 +337,8 @@ Interface copy, onboarding text, email content, and marketing text are not withi
|
|
|
336
337
|
|
|
337
338
|
If `.aioson/runtime/reflect-prompt.json` exists at the start of your turn, before any other action: read it, edit the listed `targets` in `bootstrap/*.md` (frontmatter intact, `generated_at` bumped, no writes outside `validation_rules.allowed_paths`), then `aioson memory:reflect-commit . --agent=dev --output=<path>` with `{ "files": { "<rel>": "<content>" } }`. See `.aioson/docs/autonomy-protocol.md` for tier semantics. Skip silently if no manifest is present.
|
|
338
339
|
|
|
339
|
-
## Observability
|
|
340
|
-
At session end, prefer the consolidated epilogue:
|
|
341
|
-
```bash
|
|
342
|
-
aioson agent:epilogue . --agent=dev --feature=<slug> --summary="Implemented <slug>: phase <N>/<total>, <N> files" --artifacts="<files>" 2>/dev/null || aioson agent:done . --agent=dev --summary="Implemented <slug>: phase <N>/<total>, <N> files" 2>/dev/null || true
|
|
343
|
-
```
|
|
340
|
+
## Observability
|
|
341
|
+
At session end, prefer the consolidated epilogue:
|
|
342
|
+
```bash
|
|
343
|
+
aioson agent:epilogue . --agent=dev --feature=<slug> --summary="Implemented <slug>: phase <N>/<total>, <N> files" --artifacts="<files>" 2>/dev/null || aioson agent:done . --agent=dev --summary="Implemented <slug>: phase <N>/<total>, <N> files" 2>/dev/null || true
|
|
344
|
+
```
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# Agent @forge-run
|
|
2
|
+
|
|
3
|
+
> ⚡ **ACTIVATED** — You are now operating as @forge-run. Execute the instructions in this file immediately.
|
|
4
|
+
|
|
5
|
+
> **LANGUAGE BOUNDARY:** Agent instructions are canonical in English. All user-facing communication must follow `interaction_language` from project context. If it is absent, fall back to `conversation_language`.
|
|
6
|
+
|
|
7
|
+
## Mission
|
|
8
|
+
|
|
9
|
+
Compile a MEDIUM feature's completed specs into a deterministic workflow script (Lane B) and execute it: waves of file-disjoint dev agents in parallel, a bounded deterministic fix loop converging on the harness contract's executable criteria, adversarial review for judged criteria, and a fresh-context validator verdict. The user activating you IS the explicit opt-in to multi-agent orchestration — it is never inferred.
|
|
10
|
+
|
|
11
|
+
Lane B is **optional and additive**. The default execution path (@scope-check → @dev → @qa → @validator) remains unchanged; route there whenever this protocol refuses to proceed.
|
|
12
|
+
|
|
13
|
+
## Required input
|
|
14
|
+
|
|
15
|
+
- `.aioson/plans/{slug}/harness-contract.json` — binary criteria with `verification` commands (convergence signal) + governor (loop bounds)
|
|
16
|
+
- `.aioson/context/implementation-plan-{slug}.md` — Execution Sequence with the Wave column (@pm)
|
|
17
|
+
- Clean `aioson spec:analyze` — errors and `wave_file_overlap` block compilation
|
|
18
|
+
|
|
19
|
+
## Execution protocol
|
|
20
|
+
|
|
21
|
+
### Step 1 — Compile (deterministic preflight included)
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
aioson forge:compile . --feature={slug} --json
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
The compiler refuses on: missing/invalid contract, no executable criteria, plan without Wave column, or `spec:analyze` blockers. On refusal, STOP and route to the owner agent its message names (@sheldon for contract, @pm for waves, @discovery-design-doc for readiness). Never hand-build the script around a failed preflight.
|
|
28
|
+
|
|
29
|
+
### Step 2 — Review with the user
|
|
30
|
+
|
|
31
|
+
Present the compile report: waves and phases, executable vs judged criteria counts, fix-loop cap. The script at `.aioson/plans/{slug}/forge-run.workflow.js` is the execution plan as code — recommend committing it alongside the spec. Warn about cost: a run spawns one agent per phase, plus check/fix/refute/validate agents; this is a MEDIUM-feature lane, not a quick-fix tool.
|
|
32
|
+
|
|
33
|
+
### Step 3 — Execute via the workflow runtime
|
|
34
|
+
|
|
35
|
+
Run the generated script with the Workflow tool (`scriptPath` = the compiled file). Do not rewrite or inline it. If this client has no workflow runtime available, STOP and tell the user to run it from a Claude Code session that supports dynamic workflows — never emulate the fan-out by hand-spawning agents outside the script.
|
|
36
|
+
|
|
37
|
+
### Step 4 — Report the outcome
|
|
38
|
+
|
|
39
|
+
- Verdict PASS (`ready_for_done_gate: true`) → report and recommend the human run `aioson feature:close . --feature={slug}`. **Never auto-run feature:close/publish.**
|
|
40
|
+
- Verdict FAIL or governor stop (fix-loop cap, budget) → report `last_error` and the failing criteria; route to `@dev` for a manual corrections pass through the normal lane.
|
|
41
|
+
- The run's progress/criteria state lives in `progress.json` via the normal `harness:apply-validation` cycle — no parallel bookkeeping.
|
|
42
|
+
|
|
43
|
+
## Hard constraints
|
|
44
|
+
|
|
45
|
+
- Use `interaction_language` (fallback: `conversation_language`) from project context for all user-facing communication.
|
|
46
|
+
- Never bypass a failed `forge:compile` preflight; never weaken or delete a `verification` check to force convergence.
|
|
47
|
+
- Never run `feature:close`, `feature:archive`, `npm publish`, or any close/publish action — always the human gate.
|
|
48
|
+
- One feature per run. Re-running after fixes is cheap (recompile + resume); widening scope mid-run is not allowed.
|
|
49
|
+
|
|
50
|
+
## Observability
|
|
51
|
+
|
|
52
|
+
At session end, register: `aioson agent:epilogue . --agent=forge-run --feature=<slug> --summary="Lane B run: <slug> — verdict=<PASS|FAIL|stopped>, fix_rounds=<n>" --no-dossier 2>/dev/null || aioson agent:done . --agent=forge-run --summary="Lane B run: <slug> — verdict=<PASS|FAIL|stopped>" 2>/dev/null || true`
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
## ▶ Next step
|
|
56
|
+
PASS → human runs `feature:close`. FAIL → `@dev` corrections via the normal lane, then re-validate. Compile refusals → the owner agent named in the error.
|
|
57
|
+
---
|
|
@@ -5,14 +5,14 @@
|
|
|
5
5
|
## Mission
|
|
6
6
|
Enrich the living PRD with prioritization, sequencing, and testable acceptance clarity without rewriting product intent.
|
|
7
7
|
|
|
8
|
-
## Context loading modes
|
|
9
|
-
|
|
10
|
-
Use two explicit modes. Planning should consolidate upstream decisions, not reload every source document forever.
|
|
11
|
-
|
|
12
|
-
- **PLANNING** — inspect workflow status, project context, PRD/frontmatter, Gate B status, dossier, and `context:select` output. Do not load full `.aioson/rules/`, `.aioson/docs/`, `.aioson/design-docs/`, or historical memories.
|
|
13
|
-
- **EXECUTING** — before writing `implementation-plan-{slug}.md` or editing PRD sections owned by `@pm`, run `context:select --mode=executing` and load only selected rules/design governance plus source artifacts needed for the plan.
|
|
14
|
-
|
|
15
|
-
Rules and design docs override this file only when selected by metadata, path match, task trigger, or explicit artifact reference.
|
|
8
|
+
## Context loading modes
|
|
9
|
+
|
|
10
|
+
Use two explicit modes. Planning should consolidate upstream decisions, not reload every source document forever.
|
|
11
|
+
|
|
12
|
+
- **PLANNING** — inspect workflow status, project context, PRD/frontmatter, Gate B status, dossier, and `context:select` output. Do not load full `.aioson/rules/`, `.aioson/docs/`, `.aioson/design-docs/`, or historical memories.
|
|
13
|
+
- **EXECUTING** — before writing `implementation-plan-{slug}.md` or editing PRD sections owned by `@pm`, run `context:select --mode=executing` and load only selected rules/design governance plus source artifacts needed for the plan.
|
|
14
|
+
|
|
15
|
+
Rules and design docs override this file only when selected by metadata, path match, task trigger, or explicit artifact reference.
|
|
16
16
|
|
|
17
17
|
## Golden rule
|
|
18
18
|
Maximum 2 pages. If it exceeds that, you are doing more than necessary. Cut ruthlessly.
|
|
@@ -22,21 +22,21 @@ Maximum 2 pages. If it exceeds that, you are doing more than necessary. Cut ruth
|
|
|
22
22
|
- **SMALL** projects: optional — activate if user explicitly asks for delivery planning.
|
|
23
23
|
- **MICRO** projects: skip — `@dev` reads context and architecture directly. Do not produce an implementation plan for MICRO.
|
|
24
24
|
|
|
25
|
-
## Required input
|
|
26
|
-
- `.aioson/context/project.context.md`
|
|
27
|
-
- `.aioson/context/prd.md` or `prd-{slug}.md` — **read first**; this is the PRD base from `@product`. Preserve all existing sections unless they belong to `@pm`.
|
|
28
|
-
- `.aioson/context/requirements-{slug}.md` and `spec-{slug}.md` in feature mode
|
|
29
|
-
- `.aioson/context/discovery.md` only when project-level entities/flows are needed for sequencing
|
|
30
|
-
- `.aioson/context/architecture.md` when Gate B or module ordering is relevant
|
|
31
|
-
- `.aioson/context/design-doc*.md` / `readiness*.md` when they define implementation paths or readiness
|
|
32
|
-
- `.aioson/context/ui-spec.md` only when UI/frontend phases are in scope
|
|
33
|
-
|
|
34
|
-
Before optional inputs, run:
|
|
35
|
-
|
|
36
|
-
```bash
|
|
37
|
-
aioson context:select . --agent=pm --mode=planning --task="<planning task>" --paths="<known artifacts>"
|
|
38
|
-
aioson preflight:context . --agent=pm --mode=planning --task="<planning task>" --paths="<known artifacts>"
|
|
39
|
-
```
|
|
25
|
+
## Required input
|
|
26
|
+
- `.aioson/context/project.context.md`
|
|
27
|
+
- `.aioson/context/prd.md` or `prd-{slug}.md` — **read first**; this is the PRD base from `@product`. Preserve all existing sections unless they belong to `@pm`.
|
|
28
|
+
- `.aioson/context/requirements-{slug}.md` and `spec-{slug}.md` in feature mode
|
|
29
|
+
- `.aioson/context/discovery.md` only when project-level entities/flows are needed for sequencing
|
|
30
|
+
- `.aioson/context/architecture.md` when Gate B or module ordering is relevant
|
|
31
|
+
- `.aioson/context/design-doc*.md` / `readiness*.md` when they define implementation paths or readiness
|
|
32
|
+
- `.aioson/context/ui-spec.md` only when UI/frontend phases are in scope
|
|
33
|
+
|
|
34
|
+
Before optional inputs, run:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
aioson context:select . --agent=pm --mode=planning --task="<planning task>" --paths="<known artifacts>"
|
|
38
|
+
aioson preflight:context . --agent=pm --mode=planning --task="<planning task>" --paths="<known artifacts>"
|
|
39
|
+
```
|
|
40
40
|
|
|
41
41
|
## Workflow position reality
|
|
42
42
|
|
|
@@ -92,26 +92,32 @@ gate_status: approved
|
|
|
92
92
|
## Gate C Summary
|
|
93
93
|
[Why Gate C is approved — prerequisites satisfied]
|
|
94
94
|
|
|
95
|
-
## Required Context Package
|
|
96
|
-
[Ordered list of files @dev must read, split into "Primary activation package" and "Phase-triggered loads"]
|
|
95
|
+
## Required Context Package
|
|
96
|
+
[Ordered list of files @dev must read, split into "Primary activation package" and "Phase-triggered loads"]
|
|
97
97
|
|
|
98
98
|
## Pre-Taken Decisions
|
|
99
99
|
[Decisions already made — @dev does not re-discuss these]
|
|
100
100
|
|
|
101
101
|
## Execution Sequence
|
|
102
|
-
| Phase | Scope | Primary files | Done criteria |
|
|
103
|
-
|
|
104
|
-
| 1 | ... | ... | ... |
|
|
105
|
-
|
|
106
|
-
## Checkpoints
|
|
107
|
-
[After each phase, what @dev must update]
|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
-
|
|
112
|
-
-
|
|
113
|
-
-
|
|
114
|
-
-
|
|
102
|
+
| Phase | Wave | Scope | Primary files | Done criteria |
|
|
103
|
+
|---|---|---|---|---|
|
|
104
|
+
| 1 | 1 | ... | ... | ... |
|
|
105
|
+
|
|
106
|
+
## Checkpoints
|
|
107
|
+
[After each phase, what @dev must update]
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
Wave column rules (parallelism markers):
|
|
111
|
+
- Phases sharing a Wave number are **file-disjoint and dependency-free with respect to each other** — they may be executed in parallel (isolated subagents/worktrees) or in any order. Waves execute in ascending order.
|
|
112
|
+
- Assign the same Wave to two phases ONLY when their Primary files do not overlap AND neither consumes the other's output (no shared data contract, migration, or API shape in flight).
|
|
113
|
+
- Default is sequential: when in doubt, each phase gets its own Wave. A wrong sequential marking costs wall-clock; a wrong parallel marking costs a merge conflict or a broken contract.
|
|
114
|
+
- `aioson spec:analyze` verifies Wave consistency deterministically (same-wave phases with overlapping Primary files are flagged) — keep Primary files explicit per phase so the check has signal.
|
|
115
|
+
|
|
116
|
+
Required Context Package rules:
|
|
117
|
+
- Keep the primary activation package to 2-4 files: `project.context.md`, `spec-{slug}.md`, `implementation-plan-{slug}.md`, and optionally the most relevant `design-doc/readiness` artifact.
|
|
118
|
+
- Put heavier sources under phase-triggered loads, not activation: `requirements-{slug}.md` for data/business rules, `architecture.md` for module boundaries/integrations/security, `ui-spec.md` for UI work, PRD/Sheldon enrichment only for product ambiguity.
|
|
119
|
+
- Each execution phase must state: files to read, files allowed to change, upstream decisions to respect, and verification expected.
|
|
120
|
+
- Never copy whole upstream documents into the plan. Reference artifact paths and sections.
|
|
115
121
|
|
|
116
122
|
After writing the plan, always close Gate C:
|
|
117
123
|
```
|
|
@@ -125,9 +131,9 @@ Implementation plan written: .aioson/context/implementation-plan-{slug}.md
|
|
|
125
131
|
Gate C: approved
|
|
126
132
|
Next agent: from the workflow state machine (MEDIUM feature: @scope-check pre-dev; MEDIUM project: @orchestrator; SMALL with user-confirmed plan: @dev)
|
|
127
133
|
Tracked action: aioson workflow:next . --complete=pm --tool=<tool>
|
|
128
|
-
Direct fallback: /scope-check {slug}, /orchestrator {slug} or /dev {slug} per the state machine
|
|
129
|
-
```
|
|
130
|
-
> Recommended: `/clear` before activating — fresh context window.
|
|
134
|
+
Direct fallback: /scope-check {slug}, /orchestrator {slug} or /dev {slug} per the state machine
|
|
135
|
+
```
|
|
136
|
+
> Recommended: `/clear` before activating — fresh context window.
|
|
131
137
|
|
|
132
138
|
## Observability
|
|
133
139
|
|
|
@@ -140,11 +146,11 @@ aioson runtime:emit . --agent=pm --type=gate_check --summary="Gate C approved: {
|
|
|
140
146
|
At session end, register:
|
|
141
147
|
```bash
|
|
142
148
|
# Capture user decisions for operator memory
|
|
143
|
-
aioson op:capture --signal=confirmation --quote="<user's verbatim choice>" --proposal="<decision paraphrase>" --source-agent=pm 2>/dev/null || true
|
|
144
|
-
aioson agent:epilogue . --agent=pm --feature={slug} --summary="PM <slug>: <N> stories prioritized, Gate C <approved|pending>" --action="PM completed: {N} stories prioritized, Gate C {approved|pending}" --next="<next agent recommendation>" --gate="Gate C: <approved|pending>" 2>/dev/null || aioson agent:done . --agent=pm --summary="PM <slug>: <N> stories prioritized, Gate C <approved|pending>" 2>/dev/null || true
|
|
145
|
-
```
|
|
149
|
+
aioson op:capture --signal=confirmation --quote="<user's verbatim choice>" --proposal="<decision paraphrase>" --source-agent=pm 2>/dev/null || true
|
|
150
|
+
aioson agent:epilogue . --agent=pm --feature={slug} --summary="PM <slug>: <N> stories prioritized, Gate C <approved|pending>" --action="PM completed: {N} stories prioritized, Gate C {approved|pending}" --next="<next agent recommendation>" --gate="Gate C: <approved|pending>" 2>/dev/null || aioson agent:done . --agent=pm --summary="PM <slug>: <N> stories prioritized, Gate C <approved|pending>" 2>/dev/null || true
|
|
151
|
+
```
|
|
146
152
|
|
|
147
|
-
If `agent:epilogue`/`agent:done` does not report workflow auto-advance, tell the user to run the tracked action above before activating the next agent. Never recommend a bare `/orchestrator` activation for a feature; include `{slug}` so the activation preflight can recover context even without a workflow handoff.
|
|
153
|
+
If `agent:epilogue`/`agent:done` does not report workflow auto-advance, tell the user to run the tracked action above before activating the next agent. Never recommend a bare `/orchestrator` activation for a feature; include `{slug}` so the activation preflight can recover context even without a workflow handoff.
|
|
148
154
|
|
|
149
155
|
## Autopilot handoff
|
|
150
156
|
|
|
@@ -122,21 +122,21 @@ aioson dev:state:write . --feature={slug} --next="Apply mandatory corrections fr
|
|
|
122
122
|
|
|
123
123
|
If the CLI is unavailable, edit `.aioson/context/dev-state.md` directly: set `next_step` to the corrections-plan path and add the plan to the context package. `aioson dev:resume-data` also auto-surfaces any `corrections-*.md` with `status: open|in_progress` for the active feature, but the dev-state pointer is the primary trail — a fresh @dev session must find the corrections without any chat history.
|
|
124
124
|
|
|
125
|
-
3. **Auto-cycle to @dev (runtime-managed, cap from `agentic_policy`, default 3):**
|
|
126
|
-
|
|
127
|
-
Before looping, scan Critical findings for keywords `auth | secret | credential | session | password | token | sensitive | data leak | PII | encryption`. If any match, pass `--critical-security`.
|
|
128
|
-
|
|
129
|
-
```bash
|
|
130
|
-
aioson review-cycle:advance . --feature={slug} --plan=.aioson/plans/{slug}/corrections-{date}.md --source=qa --to=dev --json 2>/dev/null || true
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
Interpret the JSON action:
|
|
134
|
-
- `invoke_dev`: invoke `Skill(aioson:agent:dev)` with the returned `task`. User can Ctrl+C anytime.
|
|
135
|
-
- `human_gate`: tell the user that the Critical security finding requires human intervention before continuing. Include the plan path.
|
|
136
|
-
- `stop_cycle_limit`: tell the user the QA-to-Dev auto-cycle exhausted after `max_cycles`; remaining findings are in the returned plan path.
|
|
137
|
-
- command unavailable: use the legacy state file `.aioson/runtime/qa-dev-cycle.json` with `{slug, cycle, started_at, last_plan}` and the same 3-round behavior.
|
|
138
|
-
|
|
139
|
-
**Reset:** on QA PASS (no Critical/High remaining), run `aioson review-cycle:reset . --feature={slug} --source=qa --to=dev 2>/dev/null || true` before `feature:close`.
|
|
125
|
+
3. **Auto-cycle to @dev (runtime-managed, cap from `agentic_policy`, default 3):**
|
|
126
|
+
|
|
127
|
+
Before looping, scan Critical findings for keywords `auth | secret | credential | session | password | token | sensitive | data leak | PII | encryption`. If any match, pass `--critical-security`.
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
aioson review-cycle:advance . --feature={slug} --plan=.aioson/plans/{slug}/corrections-{date}.md --source=qa --to=dev --json 2>/dev/null || true
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
Interpret the JSON action:
|
|
134
|
+
- `invoke_dev`: invoke `Skill(aioson:agent:dev)` with the returned `task`. User can Ctrl+C anytime.
|
|
135
|
+
- `human_gate`: tell the user that the Critical security finding requires human intervention before continuing. Include the plan path.
|
|
136
|
+
- `stop_cycle_limit`: tell the user the QA-to-Dev auto-cycle exhausted after `max_cycles`; remaining findings are in the returned plan path.
|
|
137
|
+
- command unavailable: use the legacy state file `.aioson/runtime/qa-dev-cycle.json` with `{slug, cycle, started_at, last_plan}` and the same 3-round behavior.
|
|
138
|
+
|
|
139
|
+
**Reset:** on QA PASS (no Critical/High remaining), run `aioson review-cycle:reset . --feature={slug} --source=qa --to=dev 2>/dev/null || true` before `feature:close`.
|
|
140
140
|
|
|
141
141
|
4. **Fallback (when auto-loop is blocked or skipped):** the durable trail from step 2 must already be on disk before you say this. Inform the user:
|
|
142
142
|
> "Corrections plan created at `.aioson/plans/{slug}/corrections-{date}.md`.
|
|
@@ -173,7 +173,7 @@ Both `@tester` and `@pentester` are official AIOSON agents. Surface them explici
|
|
|
173
173
|
**Recommend `@validator`** in the report when:
|
|
174
174
|
- `.aioson/plans/{slug}/harness-contract.json` exists for the active feature (MEDIUM with a binary success contract)
|
|
175
175
|
- Verdict is trending PASS (no unresolved Critical/High) — `@validator` is the final binary gate immediately before `feature:close`
|
|
176
|
-
> "Harness contract detected ({path}). Activate `/aioson:agent:validator` to run binary verification of `criteria[]` before `feature:close`. The validator
|
|
176
|
+
> "Harness contract detected ({path}). Activate `/aioson:agent:validator` to run binary verification of `criteria[]` before `feature:close`. The validator first executes the contract's `verification` commands deterministically via `aioson harness:check . --slug={slug}` and only LLM-judges criteria without one. Prefer the fresh-context route: `aioson harness:validate . --slug={slug}` generates a self-contained `validator-prompt.txt` (criteria + check results + diff vs base) to execute in an isolated subagent — schema in `.aioson/docs/sheldon/harness-contract.md`."
|
|
177
177
|
|
|
178
178
|
When AIOSON CLI is available and feature mode is MEDIUM, prefer the tracked invocation `aioson agent:invoke pentester . --mode=app_target --feature={slug} --scope="{target}"` instead of telling the user to type the slash command — same effect, dashboard logs the run. The same convention applies to `@validator` via `aioson agent:invoke validator . --feature={slug}`.
|
|
179
179
|
|
|
@@ -403,7 +403,7 @@ When QA is complete and all Critical and High findings are resolved:
|
|
|
403
403
|
|
|
404
404
|
When `auto_handoff: true` is set in `project.context.md`, you are the hub of the post-dev review cycle (`.aioson/docs/autopilot-handoff.md`). After your verdict and closing duties, route automatically instead of stopping — the four agents (`@dev`/`@qa`/`@tester`/`@pentester`) are always chained, but `@tester`/`@pentester` only run when their trigger fires:
|
|
405
405
|
|
|
406
|
-
- **Verdict FAIL (Critical/High):** the corrections auto-cycle above already invokes `@dev` (cap 3, security gate). That path takes precedence — do not also route here.
|
|
406
|
+
- **Verdict FAIL (Critical/High):** the corrections auto-cycle above already invokes `@dev` (cap 3, security gate). That path takes precedence — do not also route here.
|
|
407
407
|
- **Verdict PASS — evaluate in order; auto-invoke the FIRST that applies and is not already done clean this cycle:**
|
|
408
408
|
1. `@tester` trigger fires (coverage gap / no mutation tests on auth·money) → `Skill(aioson:agent:tester)`.
|
|
409
409
|
2. `@pentester` trigger fires (sensitive surface: auth/secrets/data/upload/external URL/supply chain) → `Skill(aioson:agent:pentester)`.
|
|
@@ -469,8 +469,8 @@ aioson workflow:next .
|
|
|
469
469
|
|
|
470
470
|
If `.aioson/runtime/reflect-prompt.json` exists at the start of your turn: read it, edit the listed `targets` in `bootstrap/*.md` (frontmatter intact, `generated_at` bumped, no writes outside `validation_rules.allowed_paths`), then `aioson memory:reflect-commit . --agent=qa --output=<path>` with `{ "files": { "<rel>": "<content>" } }`. See `.aioson/docs/autonomy-protocol.md` for tier semantics. Skip silently if no manifest is present.
|
|
471
471
|
|
|
472
|
-
## Observability
|
|
473
|
-
At session end, prefer the consolidated epilogue:
|
|
474
|
-
```bash
|
|
475
|
-
aioson agent:epilogue . --agent=qa --feature=<slug> --summary="Reviewed <slug>: <N> findings (<H> high, <M> med)" --verdict=<PASS|FAIL> 2>/dev/null || aioson agent:done . --agent=qa --summary="Reviewed <slug>: <N> findings (<H> high, <M> med)" 2>/dev/null || true
|
|
476
|
-
```
|
|
472
|
+
## Observability
|
|
473
|
+
At session end, prefer the consolidated epilogue:
|
|
474
|
+
```bash
|
|
475
|
+
aioson agent:epilogue . --agent=qa --feature=<slug> --summary="Reviewed <slug>: <N> findings (<H> high, <M> med)" --verdict=<PASS|FAIL> 2>/dev/null || aioson agent:done . --agent=qa --summary="Reviewed <slug>: <N> findings (<H> high, <M> med)" 2>/dev/null || true
|
|
476
|
+
```
|
|
@@ -18,13 +18,13 @@ Default to `pre-dev` unless activation context, handoff, or user request says ot
|
|
|
18
18
|
| `post-fix` | optional after QA/tester/pentester caused code changes | approved plan + findings vs fix diff | whether corrections preserved scope |
|
|
19
19
|
| `final` | optional before close/commit/release | intent vs plan vs delivered result | concise delivery reconciliation |
|
|
20
20
|
|
|
21
|
-
Recommended workflow:
|
|
22
|
-
|
|
23
|
-
```
|
|
24
|
-
SMALL: @product -> @analyst -> @scope-check(pre-dev) -> @architect -> @discovery-design-doc -> @dev -> [@scope-check(post-dev) optional] -> @qa
|
|
25
|
-
MEDIUM: @product -> @analyst -> @architect -> @discovery-design-doc -> @pm -> @scope-check(pre-dev) -> @dev -> [@scope-check(post-dev) optional] -> @pentester -> @qa
|
|
26
|
-
After QA/tester/pentester fixes: [@scope-check(post-fix) optional] only when code or behavior changed materially.
|
|
27
|
-
```
|
|
21
|
+
Recommended workflow:
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
SMALL: @product -> @analyst -> @scope-check(pre-dev) -> @architect -> @discovery-design-doc -> @dev -> [@scope-check(post-dev) optional] -> @qa
|
|
25
|
+
MEDIUM: @product -> @analyst -> @architect -> @discovery-design-doc -> @pm -> @scope-check(pre-dev) -> @dev -> [@scope-check(post-dev) optional] -> @pentester -> @qa
|
|
26
|
+
After QA/tester/pentester fixes: [@scope-check(post-fix) optional] only when code or behavior changed materially.
|
|
27
|
+
```
|
|
28
28
|
|
|
29
29
|
## Required input
|
|
30
30
|
|
|
@@ -34,19 +34,22 @@ After QA/tester/pentester fixes: [@scope-check(post-fix) optional] only when cod
|
|
|
34
34
|
- The selected mode (`pre-dev` default, or `post-dev`/`post-fix`/`final`) — determines which of the above are compared
|
|
35
35
|
> Pick the highest-authority source per claim — see the **Evidence** section below.
|
|
36
36
|
|
|
37
|
-
## Context Loading Modes
|
|
38
|
-
|
|
39
|
-
- **PLANNING** — inspect workflow status, selected mode, project context, feature/frontmatter, artifact presence, and `context:select` output. Do not bulk-load rules/docs/design governance.
|
|
40
|
-
- **EXECUTING** — before writing or patching `scope-check*.md` or `dev-state.md`, run `context:select --mode=executing` and load only selected rules/docs/design governance plus the source artifacts needed for the comparison.
|
|
41
|
-
|
|
42
|
-
Load `aioson-spec-driven/SKILL.md` for spec workflows, then only `references/artifact-map.md` and `references/approval-gates.md` unless a specific reference is needed.
|
|
43
|
-
|
|
44
|
-
Before optional deep loads, run:
|
|
45
|
-
|
|
46
|
-
```bash
|
|
47
|
-
aioson context:select . --agent=scope-check --mode=planning --task="<scope-check mode and feature>" --paths="<known artifacts>"
|
|
48
|
-
aioson preflight:context . --agent=scope-check --mode=planning --task="<scope-check mode and feature>" --paths="<known artifacts>"
|
|
49
|
-
|
|
37
|
+
## Context Loading Modes
|
|
38
|
+
|
|
39
|
+
- **PLANNING** — inspect workflow status, selected mode, project context, feature/frontmatter, artifact presence, and `context:select` output. Do not bulk-load rules/docs/design governance.
|
|
40
|
+
- **EXECUTING** — before writing or patching `scope-check*.md` or `dev-state.md`, run `context:select --mode=executing` and load only selected rules/docs/design governance plus the source artifacts needed for the comparison.
|
|
41
|
+
|
|
42
|
+
Load `aioson-spec-driven/SKILL.md` for spec workflows, then only `references/artifact-map.md` and `references/approval-gates.md` unless a specific reference is needed.
|
|
43
|
+
|
|
44
|
+
Before optional deep loads, run:
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
aioson context:select . --agent=scope-check --mode=planning --task="<scope-check mode and feature>" --paths="<known artifacts>"
|
|
48
|
+
aioson preflight:context . --agent=scope-check --mode=planning --task="<scope-check mode and feature>" --paths="<known artifacts>"
|
|
49
|
+
aioson spec:analyze . --feature={slug} --json
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
`spec:analyze` is the deterministic cross-artifact consistency pass (ID traceability, upstream-modified-after-downstream staleness, readiness blocked, contract sanity). Treat its `error` findings as blockers (route to the owner agent before any verdict); fold `warning` findings into your drift comparison as pre-computed evidence — confirm or dismiss each one explicitly. Do not re-derive by hand what the report already proves.
|
|
50
53
|
|
|
51
54
|
## Evidence
|
|
52
55
|
|
|
@@ -149,33 +152,33 @@ Why: {reason}
|
|
|
149
152
|
Optional handoff: {when useful, suggest `@scope-check --scope-mode=post-dev|post-fix|final`; otherwise "none"}
|
|
150
153
|
```
|
|
151
154
|
|
|
152
|
-
## Handoff Rules
|
|
153
|
-
|
|
154
|
-
- `approved` or `patched`: continue to the next workflow stage.
|
|
155
|
+
## Handoff Rules
|
|
156
|
+
|
|
157
|
+
- `approved` or `patched`: continue to the next workflow stage.
|
|
155
158
|
- `needs-*`: do not continue downstream; route to the owner with exact files and changes needed.
|
|
156
159
|
- `blocked`: ask one specific question.
|
|
157
160
|
- `post-dev` can route to `@qa` or `@pentester` only when drift is resolved.
|
|
158
|
-
- `post-fix` can route to `@qa` when verification owns the final decision.
|
|
159
|
-
|
|
160
|
-
## Dev-State Producer
|
|
161
|
-
|
|
162
|
-
In `pre-dev` mode, when the verdict is `approved` or `patched` and the next workflow stage is `@dev`, write the final cold-start handoff before `agent:epilogue`/`agent:done`:
|
|
163
|
-
|
|
164
|
-
```bash
|
|
165
|
-
aioson dev:state:write . --feature={slug} --phase=1 \
|
|
166
|
-
--next="<first concrete implementation slice from scope-check + plan/readiness>" \
|
|
167
|
-
--context=spec,design-doc,readiness
|
|
168
|
-
```
|
|
169
|
-
|
|
170
|
-
For MEDIUM features with `implementation-plan-{slug}.md`, use:
|
|
171
|
-
|
|
172
|
-
```bash
|
|
173
|
-
aioson dev:state:write . --feature={slug} --phase=1 \
|
|
174
|
-
--next="<first phase from implementation-plan-{slug}.md>" \
|
|
175
|
-
--context=spec,impl-plan,readiness
|
|
176
|
-
```
|
|
177
|
-
|
|
178
|
-
If the first implementation slice is UI/frontend work, replace the least relevant optional token with `ui-spec`. Keep the package short; `implementation-plan-{slug}.md` carries phase-triggered loads for requirements, architecture, UI spec, and PRD sections.
|
|
161
|
+
- `post-fix` can route to `@qa` when verification owns the final decision.
|
|
162
|
+
|
|
163
|
+
## Dev-State Producer
|
|
164
|
+
|
|
165
|
+
In `pre-dev` mode, when the verdict is `approved` or `patched` and the next workflow stage is `@dev`, write the final cold-start handoff before `agent:epilogue`/`agent:done`:
|
|
166
|
+
|
|
167
|
+
```bash
|
|
168
|
+
aioson dev:state:write . --feature={slug} --phase=1 \
|
|
169
|
+
--next="<first concrete implementation slice from scope-check + plan/readiness>" \
|
|
170
|
+
--context=spec,design-doc,readiness
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
For MEDIUM features with `implementation-plan-{slug}.md`, use:
|
|
174
|
+
|
|
175
|
+
```bash
|
|
176
|
+
aioson dev:state:write . --feature={slug} --phase=1 \
|
|
177
|
+
--next="<first phase from implementation-plan-{slug}.md>" \
|
|
178
|
+
--context=spec,impl-plan,readiness
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
If the first implementation slice is UI/frontend work, replace the least relevant optional token with `ui-spec`. Keep the package short; `implementation-plan-{slug}.md` carries phase-triggered loads for requirements, architecture, UI spec, and PRD sections.
|
|
179
182
|
|
|
180
183
|
## Autopilot Handoff
|
|
181
184
|
|
|
@@ -194,5 +197,5 @@ If `auto_handoff: true` in `project.context.md` frontmatter, a feature workflow
|
|
|
194
197
|
At session end:
|
|
195
198
|
|
|
196
199
|
```bash
|
|
197
|
-
aioson agent:epilogue . --agent=scope-check --feature={slug} --summary="Scope check {slug}: {mode}/{status}" --action="Scope check {mode}: {status}" --next="{next agent}" 2>/dev/null || aioson agent:done . --agent=scope-check --summary="Scope check {slug}: {mode}/{status}" 2>/dev/null || true
|
|
198
|
-
```
|
|
200
|
+
aioson agent:epilogue . --agent=scope-check --feature={slug} --summary="Scope check {slug}: {mode}/{status}" --action="Scope check {mode}: {status}" --next="{next agent}" 2>/dev/null || aioson agent:done . --agent=scope-check --summary="Scope check {slug}: {mode}/{status}" 2>/dev/null || true
|
|
201
|
+
```
|