@jaimevalasek/aioson 1.30.2 → 1.36.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 +75 -0
- package/README.md +19 -6
- package/docs/en/1-understand/ecosystem-map.md +45 -29
- package/docs/en/1-understand/glossary.md +5 -5
- package/docs/en/1-understand/what-is-aioson.md +5 -5
- package/docs/en/2-start/existing-project.md +7 -7
- package/docs/en/2-start/first-project.md +32 -38
- package/docs/en/2-start/initial-decisions.md +18 -17
- package/docs/en/3-recipes/README.md +2 -2
- package/docs/en/3-recipes/continuity-between-sessions.md +2 -2
- package/docs/en/3-recipes/from-idea-to-prd-via-briefing.md +5 -2
- package/docs/en/3-recipes/full-feature-with-sheldon.md +327 -338
- package/docs/en/4-agents/README.md +28 -14
- package/docs/en/4-agents/discovery-design-doc.md +20 -8
- package/docs/en/4-agents/forge-run.md +3 -2
- package/docs/en/5-reference/cli-reference.md +51 -48
- package/docs/en/5-reference/executable-verification.md +10 -7
- package/docs/en/5-reference/parallel.md +2 -0
- package/docs/en/5-reference/qa-browser.md +2 -2
- package/docs/en/README.md +3 -3
- package/docs/pt/1-entender/glossario.md +4 -4
- package/docs/pt/1-entender/mapa-do-ecossistema.md +32 -21
- package/docs/pt/2-comecar/decisoes-iniciais.md +16 -16
- package/docs/pt/2-comecar/primeiro-projeto.md +1 -1
- package/docs/pt/3-receitas/README.md +1 -1
- package/docs/pt/3-receitas/app-saas-do-zero.md +35 -122
- package/docs/pt/3-receitas/feature-completa-com-sheldon.md +289 -338
- package/docs/pt/4-agentes/analyst.md +9 -5
- package/docs/pt/4-agentes/architect.md +9 -5
- package/docs/pt/4-agentes/dev.md +19 -7
- package/docs/pt/4-agentes/discovery-design-doc.md +25 -23
- package/docs/pt/4-agentes/orchestrator.md +164 -118
- package/docs/pt/4-agentes/pentester.md +5 -5
- package/docs/pt/4-agentes/pm.md +15 -7
- package/docs/pt/4-agentes/sheldon.md +166 -99
- package/docs/pt/4-agentes/ux-ui.md +7 -4
- package/docs/pt/5-referencia/agent-chain-continuity.md +14 -5
- package/docs/pt/5-referencia/comandos-cli.md +1 -1
- package/docs/pt/5-referencia/harness-retro.md +2 -1
- package/docs/pt/5-referencia/sdd-automation-scripts.md +6 -6
- package/docs/pt/5-referencia/sdd-framework.md +53 -16
- package/docs/pt/5-referencia/sdd-planos-e-estrutura.md +27 -15
- package/docs/pt/README.md +4 -4
- package/docs/pt/agentes.md +48 -50
- package/package.json +2 -2
- package/src/artifact-kinds.js +110 -0
- package/src/cli.js +82 -42
- package/src/commands/agent-epilogue.js +251 -186
- package/src/commands/agents.js +104 -48
- package/src/commands/audit-code.js +344 -0
- package/src/commands/classify.js +75 -13
- package/src/commands/feature-close.js +43 -18
- package/src/commands/harness-check.js +259 -175
- package/src/commands/harness-retro-promote.js +387 -0
- package/src/commands/live.js +24 -0
- package/src/commands/prototype-check.js +163 -0
- package/src/commands/review-feature.js +189 -0
- package/src/commands/runtime.js +81 -66
- package/src/commands/sync-agents-copy.js +115 -0
- package/src/commands/verification-plan.js +116 -0
- package/src/commands/verify-artifact.js +530 -0
- package/src/commands/verify-implementation.js +428 -0
- package/src/commands/workflow-execute.js +309 -309
- package/src/commands/workflow-next.js +361 -19
- package/src/commands/workflow-plan.js +5 -5
- package/src/constants.js +4 -0
- package/src/gateway-pointer-merge.js +7 -1
- package/src/handoff-contract.js +267 -172
- package/src/harness/contract-integrity-gate.js +172 -0
- package/src/harness/contract-integrity.js +111 -0
- package/src/harness/contract-schema.js +377 -332
- package/src/harness/detect-runtime-feature.js +90 -0
- package/src/harness/static-criteria.js +192 -0
- package/src/i18n/messages/en.js +8 -4
- package/src/i18n/messages/es.js +8 -4
- package/src/i18n/messages/fr.js +8 -4
- package/src/i18n/messages/pt-BR.js +8 -4
- package/src/install-wizard.js +8 -8
- package/src/installer.js +13 -6
- package/src/lib/retro/retro-render.js +10 -1
- package/src/lib/retro/retro-sources.js +45 -27
- package/src/lib/retro/verification-reports.js +230 -0
- package/src/parser.js +6 -0
- package/src/preflight-engine.js +12 -12
- package/src/runtime-store.js +13 -9
- package/src/verification/evidence-bundle.js +251 -0
- package/src/verification/ledger-store.js +221 -0
- package/src/verification/path-policy.js +74 -0
- package/src/verification/policy-engine.js +95 -0
- package/src/verification/prompt-package.js +314 -0
- package/src/verification/redaction.js +77 -0
- package/src/verification/report-parser.js +132 -0
- package/src/verification/report-store.js +97 -0
- package/src/verification/result.js +16 -0
- package/src/verification/runners/index.js +319 -0
- package/src/verification/runtime-telemetry.js +144 -0
- package/src/verification/schema.js +276 -0
- package/src/verification/source-discovery.js +153 -0
- package/src/verification-policy.js +398 -0
- package/src/version.js +52 -1
- package/template/.aioson/agents/analyst.md +9 -6
- package/template/.aioson/agents/architect.md +34 -5
- package/template/.aioson/agents/briefing-refiner.md +25 -0
- package/template/.aioson/agents/briefing.md +69 -12
- package/template/.aioson/agents/committer.md +2 -1
- package/template/.aioson/agents/copywriter.md +30 -21
- package/template/.aioson/agents/design-hybrid-forge.md +28 -15
- package/template/.aioson/agents/dev.md +28 -10
- package/template/.aioson/agents/deyvin.md +3 -2
- package/template/.aioson/agents/discover.md +12 -3
- package/template/.aioson/agents/discovery-design-doc.md +7 -2
- package/template/.aioson/agents/genome.md +19 -10
- package/template/.aioson/agents/neo.md +30 -30
- package/template/.aioson/agents/orache.md +20 -11
- package/template/.aioson/agents/orchestrator.md +84 -7
- package/template/.aioson/agents/pm.md +8 -8
- package/template/.aioson/agents/product.md +15 -11
- package/template/.aioson/agents/profiler-enricher.md +20 -11
- package/template/.aioson/agents/profiler-forge.md +20 -11
- package/template/.aioson/agents/profiler-researcher.md +20 -11
- package/template/.aioson/agents/qa.md +87 -17
- package/template/.aioson/agents/scope-check.md +19 -5
- package/template/.aioson/agents/setup.md +12 -1
- package/template/.aioson/agents/sheldon.md +92 -9
- package/template/.aioson/agents/site-forge.md +11 -2
- package/template/.aioson/agents/squad.md +20 -5
- package/template/.aioson/agents/ux-ui.md +4 -2
- package/template/.aioson/agents/validator.md +33 -1
- package/template/.aioson/config/verification.json +61 -0
- package/template/.aioson/config.md +13 -9
- package/template/.aioson/docs/LAYERS.md +2 -2
- package/template/.aioson/docs/autopilot-handoff.md +10 -10
- package/template/.aioson/docs/dev/execution-discipline.md +41 -0
- package/template/.aioson/docs/dev/phase-loop.md +47 -0
- package/template/.aioson/docs/feature-expansion-taxonomy.md +31 -3
- package/template/.aioson/docs/presets/workflow.config.full-merged.json +15 -0
- package/template/.aioson/docs/presets/workflow.config.lean.json +15 -0
- package/template/.aioson/docs/product/prd-contract.md +12 -12
- package/template/.aioson/docs/prototype-contract.md +98 -0
- package/template/.aioson/docs/reference-identity.md +94 -0
- package/template/.aioson/docs/sheldon/harness-contract.md +155 -28
- package/template/.aioson/docs/verification-config.md +82 -0
- package/template/.aioson/docs/verify-artifact-gates.md +91 -0
- package/template/.aioson/docs/workflow-lean-lane.md +129 -0
- package/template/.aioson/skills/design/interface-design/references/intent-and-domain.md +2 -0
- package/template/.aioson/skills/process/aioson-spec-driven/SKILL.md +16 -14
- package/template/.aioson/skills/process/aioson-spec-driven/references/approval-gates.md +2 -2
- package/template/.aioson/skills/process/aioson-spec-driven/references/classification-map.md +4 -4
- package/template/.aioson/skills/process/aioson-spec-driven/references/dev.md +15 -15
- package/template/.aioson/skills/process/briefing-expansion-scout/SKILL.md +25 -3
- package/template/.aioson/skills/process/design-hybrid-forge/SKILL.md +5 -3
- package/template/.aioson/skills/process/design-hybrid-forge/references/external-source-ingestion.md +89 -0
- package/template/.aioson/skills/process/product-scope-expansion/SKILL.md +29 -2
- package/template/.aioson/skills/process/prototype-forge/SKILL.md +98 -0
- package/template/.aioson/skills/process/reference-identity-extract/SKILL.md +164 -0
- package/template/.aioson/skills/process/sheldon-expansion-audit/SKILL.md +23 -2
- package/template/.aioson/skills/static/multi-agent-patterns.md +5 -5
- package/template/CLAUDE.md +15 -11
|
@@ -36,6 +36,7 @@ To preserve impartiality and avoid continuity hallucinations, you operate in a *
|
|
|
36
36
|
- `.aioson/plans/{slug}/progress.json` (current state)
|
|
37
37
|
- Files explicitly listed in `progress.json.completed_steps`
|
|
38
38
|
- Output of diagnostic tools (linters, test runners, compilers)
|
|
39
|
+
- `manifest.json` and `.aioson/briefings/{slug}/prototype-manifest.md` — **only** for the Step 0 contract-integrity precheck (to read the runtime surface and the Core interaction list). Not for judging the product, the design, or whether a feature "should" exist — strictly to confirm the contract is well-formed for the feature's surface.
|
|
39
40
|
2. **NEVER read:**
|
|
40
41
|
- Conversation history from other agents (`@dev`, `@analyst`, `@architect`)
|
|
41
42
|
- PRDs, requirements, or architecture docs (your focus is the binary contract, not product vision)
|
|
@@ -47,6 +48,36 @@ To preserve impartiality and avoid continuity hallucinations, you operate in a *
|
|
|
47
48
|
|
|
48
49
|
## Execution protocol (RF-VAL)
|
|
49
50
|
|
|
51
|
+
### Step 0 — Contract-integrity precheck (runtime features)
|
|
52
|
+
|
|
53
|
+
Before scoring anything, confirm the contract is **capable** of proving the app works. A contract you cannot
|
|
54
|
+
fail through is worthless: a feature can pass every unit test while its migrations never applied, its UI was
|
|
55
|
+
never wired, and the process never booted. This precheck is the one thing that lets a blind executor catch
|
|
56
|
+
that class of failure — it checks the **contract's shape**, never the product's merit.
|
|
57
|
+
|
|
58
|
+
1. Determine whether the feature is a **runtime feature**: read `manifest.json` — `has_api: true`, a declared
|
|
59
|
+
server/process, or a Play runtime ⇒ yes. A Prisma schema / migrations folder in `completed_steps` ⇒ yes. A
|
|
60
|
+
`## Prototype reference` (a `prototype-manifest.md` with Core interactions) ⇒ yes.
|
|
61
|
+
2. If it **is** a runtime feature, the contract MUST contain at least the runtime-gate criteria from
|
|
62
|
+
`harness-contract.md` §2c — `RG-build`, `RG-migrate`, `RG-boot`, `RG-smoke` (or equivalents whose
|
|
63
|
+
`verification` actually builds, applies migrations to a real DB, boots the process, and drives the Core
|
|
64
|
+
happy-path end to end). Also reject the contract if **two binary criteria share an identical `verification`
|
|
65
|
+
command** (padding) or if every criterion is a unit/component test (`*.test.*` only).
|
|
66
|
+
3. **If the contract is missing the runtime gate (or is padded), STOP.** Do not score the unit criteria green.
|
|
67
|
+
Emit the verdict with `overall_score: 0`, `ready_for_done_gate: false`, and a `results` entry:
|
|
68
|
+
`{ "id": "contract-integrity", "passed": false, "reason": "Runtime feature but harness-contract has no RG-build/RG-migrate/RG-boot/RG-smoke (or contains duplicate/all-unit verification). The app's build, migrations, boot and Core happy-path are unverified. Route back to @sheldon to add §2c runtime-gate criteria, then re-run @dev." }`.
|
|
69
|
+
This is not a product judgment — it is a statement that the contract cannot prove the feature runs.
|
|
70
|
+
4. If the feature is **not** a runtime feature, or the runtime gate is present and non-duplicated, continue to
|
|
71
|
+
Step 1 normally.
|
|
72
|
+
|
|
73
|
+
> **Deterministic backstop.** `aioson harness:check . --slug={slug} --json` already enforces the detectable
|
|
74
|
+
> subset of this precheck: its `integrity` block returns `missing_runtime_gate` / `duplicate_verification` and
|
|
75
|
+
> sets `ok: false` whenever it can locate the runtime surface (prototype-manifest or a migration step). Read it
|
|
76
|
+
> and copy a deterministic integrity failure straight into your verdict. Your judgment is still required for the
|
|
77
|
+
> two things the CLI cannot prove: a Play `has_api` runtime whose `manifest.json` is not framework-locatable,
|
|
78
|
+
> and whether an `RG-smoke` criterion *actually* drives the Core happy-path rather than being a unit test
|
|
79
|
+
> wearing the `RG-` id.
|
|
80
|
+
|
|
50
81
|
### Step 1 — Load
|
|
51
82
|
Locate `harness-contract.json` for the current feature. Identify criteria with `binary: true`.
|
|
52
83
|
|
|
@@ -117,7 +148,8 @@ At session end, register: `aioson agent:epilogue . --agent=validator --feature=<
|
|
|
117
148
|
## Autopilot handoff (post-dev cycle)
|
|
118
149
|
|
|
119
150
|
When `auto_handoff: true` is set in `project.context.md`, after the verdict and `agent:epilogue`/`agent:done` (`.aioson/docs/autopilot-handoff.md`):
|
|
120
|
-
-
|
|
151
|
+
- **Contract-integrity fail (Step 0)** → `Skill(aioson:agent:sheldon)` with `"add §2c runtime-gate criteria to harness-contract — @validator contract-integrity fail"`. The contract is the problem, not the code; do not route to `@dev` yet.
|
|
152
|
+
- Score 0 / FAIL (a real criterion failed) → `Skill(aioson:agent:dev)` with `"fix @validator findings — autopilot handoff"`.
|
|
121
153
|
- Score 1 / PASS → **STOP**. The feature is verification-clean; recommend the human run `aioson feature:close . --feature={slug}`. **Never auto-run `feature:close`** — the close is the human gate.
|
|
122
154
|
|
|
123
155
|
Emit `Autopilot: @validator → invoking @<next> (Ctrl+C to interrupt)` before invoking. If `auto_handoff` is absent or `false`, hand off manually.
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "1.0",
|
|
3
|
+
"host": "auto",
|
|
4
|
+
"agents": {
|
|
5
|
+
"qa": {
|
|
6
|
+
"enabled": true,
|
|
7
|
+
"triggers": ["per-phase", "end-of-feature"],
|
|
8
|
+
"dispatch": {
|
|
9
|
+
"claude": { "mode": "native", "model": "sonnet-4.6" },
|
|
10
|
+
"codex": { "mode": "native", "model": "configured-default" },
|
|
11
|
+
"opencode": { "mode": "native", "model": "configured-default" }
|
|
12
|
+
},
|
|
13
|
+
"report": "qa-report-{slug}.md"
|
|
14
|
+
},
|
|
15
|
+
"tester": {
|
|
16
|
+
"enabled": "auto",
|
|
17
|
+
"triggers": ["end-of-feature"],
|
|
18
|
+
"dispatch": {
|
|
19
|
+
"claude": { "mode": "native", "model": "sonnet-4.6" },
|
|
20
|
+
"codex": { "mode": "native", "model": "configured-default" },
|
|
21
|
+
"opencode": { "mode": "native", "model": "configured-default" }
|
|
22
|
+
},
|
|
23
|
+
"report": "test-report-{slug}.md"
|
|
24
|
+
},
|
|
25
|
+
"pentester": {
|
|
26
|
+
"enabled": "auto",
|
|
27
|
+
"triggers": ["sensitive-surface", "end-of-feature"],
|
|
28
|
+
"dispatch": {
|
|
29
|
+
"claude": { "mode": "native", "model": "opus-4.8" },
|
|
30
|
+
"codex": { "mode": "native", "model": "configured-default" },
|
|
31
|
+
"opencode": { "mode": "native", "model": "configured-default" }
|
|
32
|
+
},
|
|
33
|
+
"report": "security-findings-{slug}.json"
|
|
34
|
+
},
|
|
35
|
+
"validator": {
|
|
36
|
+
"enabled": true,
|
|
37
|
+
"triggers": ["end-of-feature"],
|
|
38
|
+
"dispatch": {
|
|
39
|
+
"claude": { "mode": "native", "model": "opus-4.8" },
|
|
40
|
+
"codex": { "mode": "native", "model": "configured-default" },
|
|
41
|
+
"opencode": { "mode": "native", "model": "configured-default" }
|
|
42
|
+
},
|
|
43
|
+
"cross_check": { "enabled": false, "mode": "external", "tool": "codex", "model": "configured-default" },
|
|
44
|
+
"report": "validator-report-{slug}.json"
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
"budget": {
|
|
48
|
+
"max_subagents_per_phase": 1,
|
|
49
|
+
"skip_on_micro": true,
|
|
50
|
+
"full_smoke": "end-of-feature-only"
|
|
51
|
+
},
|
|
52
|
+
"phase_loop": {
|
|
53
|
+
"auto_continue": true,
|
|
54
|
+
"compact_between_phases": true,
|
|
55
|
+
"max_fix_retries_per_phase": 2
|
|
56
|
+
},
|
|
57
|
+
"audit_code": {
|
|
58
|
+
"tracked_gate": "advisory",
|
|
59
|
+
"scope": "changed"
|
|
60
|
+
}
|
|
61
|
+
}
|
|
@@ -8,8 +8,12 @@
|
|
|
8
8
|
|
|
9
9
|
## Project sizes
|
|
10
10
|
- MICRO: `@setup -> @product (optional) -> @dev`
|
|
11
|
-
- SMALL: `@setup -> @product -> @
|
|
12
|
-
- MEDIUM: `@setup -> @product -> @
|
|
11
|
+
- SMALL: `@setup -> @product -> @sheldon -> @dev -> @qa` (lean by default — `@sheldon` is the single spec authority)
|
|
12
|
+
- MEDIUM: `@setup -> @product -> @orchestrator -> @dev -> @qa` (project); a MEDIUM **feature** runs `@product -> @orchestrator -> @dev -> @pentester -> @qa`. `@orchestrator` is the MEDIUM single spec authority (the "maestro") — it fans out to `@analyst` + `@architect` + `@pm` (+ `@ux-ui` when UI-heavy) as sub-agents and consolidates their work into one gated spec package for `@dev`.
|
|
13
|
+
|
|
14
|
+
> `@analyst`, `@architect`, `@pm`, `@discovery-design-doc`, `@scope-check(pre-dev)`, and `@ux-ui` are no longer default-chain hops — `@orchestrator` invokes them as sub-agents in the MEDIUM maestro lane, and they remain available as opt-in detours. `@architect` runs in **merged mode** (design-doc + readiness + dev-state) only on the opt-in full-chain detour that routes `@architect -> @dev` while omitting `@discovery-design-doc`. The deterministic drift check (`spec:analyze`) now runs at the `@dev`/`@qa` done gate (`finalizeCurrentStage`), not as a separate agent hop.
|
|
15
|
+
|
|
16
|
+
**Lean lane (SMALL default; opt-in for MEDIUM):** `@sheldon` is the single spec authority — `@product -> @sheldon -> @dev -> @qa` (with a `@validator` detour when a harness contract exists). SMALL runs this by default; MEDIUM defaults to the `@orchestrator` maestro lane (the horizontal fan-out counterpart) but can opt into the `@sheldon` lean shape by dropping the lean preset into `.aioson/context/workflow.config.json`. Full guide in `.aioson/docs/workflow-lean-lane.md`. The **runtime smoke gate** (build + migrate + boot + Core happy-path on the real stack, `harness-contract.md` §2c) is mandatory in **both** lanes — neither closes a runtime feature without running the real app.
|
|
13
17
|
|
|
14
18
|
Optional alignment checkpoints:
|
|
15
19
|
- After `@dev`: `@scope-check --scope-mode=post-dev` when the implementation changed planned behavior, touched unexpected files, or skipped approved scope.
|
|
@@ -41,7 +45,7 @@ Setting: `context_warning_threshold` (default: 65%)
|
|
|
41
45
|
|
|
42
46
|
When an agent notices it is close to the threshold:
|
|
43
47
|
1. Write all in-progress artifacts to disk (disk-first)
|
|
44
|
-
2. Emit this warning in the selected project language: "Context at {X}% — I recommend `/compact` before the next phase; use `/clear` only for a hard reset, feature switch, polluted context, or security-sensitive reset"
|
|
48
|
+
2. Emit this warning in the selected project language: "Context at {X}% — I recommend `/compact` before the next phase; use `/clear` only for a hard reset, feature switch, polluted context, or security-sensitive reset"
|
|
45
49
|
3. Include the current work in `last_checkpoint`
|
|
46
50
|
|
|
47
51
|
## Context contract
|
|
@@ -63,7 +67,7 @@ Optional testing fields:
|
|
|
63
67
|
- `test_runner` (for example `pest`, `jest`, `vitest`, `pytest`, `rspec`, `foundry`)
|
|
64
68
|
|
|
65
69
|
Optional workflow fields:
|
|
66
|
-
- `auto_handoff` (boolean, default `false`) — when `true`, the feature-workflow agents
|
|
70
|
+
- `auto_handoff` (boolean, default `false`) — when `true`, the deterministic pre-dev feature-workflow agents chain automatically via skill auto-invocation up to the `@dev` handoff instead of stopping for manual activation. Protocol and stop conditions: `.aioson/docs/autopilot-handoff.md`. Upstream agents (`@briefing`, `@product`, `@sheldon`, `@orchestrator`) always hand off manually — so neither the SMALL lean default nor the MEDIUM maestro default has pre-dev hops to auto-chain. `@analyst`, `@architect`, `@pm`, `@discovery-design-doc`, `@scope-check`, and `@ux-ui` auto-chain only as opt-in detours when present in the active sequence.
|
|
67
71
|
|
|
68
72
|
Allowed `project_type` values:
|
|
69
73
|
- `web_app`
|
|
@@ -229,7 +233,7 @@ Default governance files:
|
|
|
229
233
|
|
|
230
234
|
### Design docs (`.aioson/context/design-doc.md`)
|
|
231
235
|
|
|
232
|
-
Living decision documents that bridge discovery and implementation. Produced by `@discovery-design-doc
|
|
236
|
+
Living decision documents that bridge discovery and implementation. Produced by `@orchestrator` (maestro mode) on MEDIUM and `@sheldon` on the SMALL lean lane by default; by `@architect` (merged mode) or `@discovery-design-doc` when those opt-in detours are in the sequence.
|
|
233
237
|
|
|
234
238
|
```markdown
|
|
235
239
|
---
|
|
@@ -243,7 +247,7 @@ agents: [dev, architect] # empty [] = all agents load it
|
|
|
243
247
|
|
|
244
248
|
| | PRD (`prd.md`) | Code governance (`.aioson/design-docs/`) | Design doc (`design-doc.md`) |
|
|
245
249
|
|---|---|---|---|
|
|
246
|
-
| **Produced by** | `@product` | Installer + project team | `@discovery-design-doc` |
|
|
250
|
+
| **Produced by** | `@product` | Installer + project team | `@orchestrator` maestro / `@sheldon` lean (`@architect` merged or `@discovery-design-doc` detour) |
|
|
247
251
|
| **Focus** | What and why — vision, users, problem, features | Structural code quality rules | How — technical flows, decisions, risks, slices |
|
|
248
252
|
| **Audience** | All agents | Agents doing structural planning or implementation | Technical agents (dev, architect, qa) |
|
|
249
253
|
| **Lifecycle** | Written once, enhanced by @pm | Stable, edited when conventions change | Living document, updated as decisions are made |
|
|
@@ -275,12 +279,12 @@ AIOSON ships three types of skills in `.aioson/skills/`:
|
|
|
275
279
|
| **Design skills** | `.aioson/skills/design/` | Explicit — via `design_skill` in project.context.md. Only ONE can be active. |
|
|
276
280
|
| **Static skills** | `.aioson/skills/static/` | Automatic — agents match by `framework` in project.context.md |
|
|
277
281
|
| **Dynamic skills** | `.aioson/skills/dynamic/` | Automatic — agents load when task references external services |
|
|
278
|
-
| **Process skills** | `.aioson/skills/process/` | Loaded on demand when an agent needs a workflow method such as SDD, decision presentation, prompt sharpening, feature expansion, or design-skill creation |
|
|
282
|
+
| **Process skills** | `.aioson/skills/process/` | Loaded on demand when an agent needs a workflow method such as SDD, decision presentation, prompt sharpening, feature expansion, or design-skill creation |
|
|
279
283
|
|
|
280
284
|
First-party process skills include:
|
|
281
285
|
|
|
282
|
-
- `prompt-sharpener` — improves agent prompts, skills, PRDs, plans, and handoffs by turning vague guidance into evidence-driven decision behavior while preserving workflow contracts.
|
|
283
|
-
- `briefing-expansion-scout`, `product-scope-expansion`, `sheldon-expansion-audit` — enrich feature thinking only when a rich surface or prior expansion artifact justifies it, using `.aioson/docs/feature-expansion-taxonomy.md`.
|
|
286
|
+
- `prompt-sharpener` — improves agent prompts, skills, PRDs, plans, and handoffs by turning vague guidance into evidence-driven decision behavior while preserving workflow contracts.
|
|
287
|
+
- `briefing-expansion-scout`, `product-scope-expansion`, `sheldon-expansion-audit` — enrich feature thinking only when a rich surface or prior expansion artifact justifies it, using `.aioson/docs/feature-expansion-taxonomy.md`.
|
|
284
288
|
|
|
285
289
|
### Installed skills (`.aioson/installed-skills/`)
|
|
286
290
|
|
|
@@ -56,8 +56,8 @@ See `docs/README.md` for format and naming conventions.
|
|
|
56
56
|
## Layer 4 — `.aioson/context/design-doc*.md`
|
|
57
57
|
|
|
58
58
|
**What it is:** living decision document for the current feature or project scope.
|
|
59
|
-
**Who writes it:** @discovery-design-doc.
|
|
60
|
-
**Who updates it:** @dev at feature close
|
|
59
|
+
**Who writes it:** @orchestrator (maestro mode) on MEDIUM and @sheldon on the SMALL lean lane by default; @architect (merged mode) or @discovery-design-doc when those opt-in detours are in the sequence.
|
|
60
|
+
**Who updates it:** @dev at feature close; the design-doc producer (@orchestrator maestro / @sheldon lean / @architect merged or @discovery-design-doc detour) when resuming.
|
|
61
61
|
**When to use:** automatically — one per feature (`design-doc-{slug}.md`) or one project-wide (`design-doc.md`).
|
|
62
62
|
**Cadence:** updated at the end of each feature implementation session. Decisions are append-only — never deleted.
|
|
63
63
|
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: "Autopilot handoff protocol: automatic agent chaining across the feature workflow — the
|
|
2
|
+
description: "Autopilot handoff protocol: automatic agent chaining across the feature workflow — the opt-in pre-dev detour chain and the post-dev review cycle (dev→qa→tester/pentester→validator) — with deterministic routing and explicit stop conditions. The chain never auto-runs feature:close/publish."
|
|
3
3
|
task_types: [handoff, autopilot]
|
|
4
4
|
triggers: [auto handoff, autopilot, next agent]
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
# Autopilot handoff (
|
|
7
|
+
# Autopilot handoff (pre-dev detours → dev → review cycle)
|
|
8
8
|
|
|
9
9
|
Opt-in protocol that removes manual handoff confirmations in the deterministic segments of the feature workflow. Two segments:
|
|
10
10
|
|
|
11
|
-
1. **Pre-dev chain (`@
|
|
11
|
+
1. **Pre-dev chain (opt-in detours → `@dev`):** by default the MEDIUM lane routes `@product → @orchestrator → @dev` and the SMALL lean lane routes `@product → @sheldon → @dev`, so there is no pre-dev auto-chain — `@orchestrator` (maestro) and `@sheldon` (lean) own the spec solo and hand off manually. `@analyst`, `@architect`, `@pm`, `@scope-check`, and `@discovery-design-doc` chain automatically only when an opt-in detour adds them to the active sequence. Upstream agents (`@briefing`, `@product`, `@sheldon`, `@orchestrator`) always stay manual — they end on genuine human decisions.
|
|
12
12
|
2. **Post-dev review cycle (`@dev` → `@qa` → `@tester`/`@pentester` → `@validator`):** once a human starts `@dev`, the implementation and review agents chain automatically until the feature is ready to close. `@qa` is the hub: it owns the routing to the specialized agents and the corrections loop.
|
|
13
13
|
|
|
14
14
|
## Activation
|
|
@@ -45,13 +45,13 @@ When autopilot is active and no stop condition applies:
|
|
|
45
45
|
3. If no runtime gateway is available, emit a one-line transition notice: `Autopilot: @<current> done → invoking @<next> (Ctrl+C to interrupt)`.
|
|
46
46
|
4. Invoke `Skill(aioson:agent:<next>)` with the task `"continue feature {slug} — autopilot handoff from @<current>"`. No user prompt — Ctrl+C interrupts.
|
|
47
47
|
|
|
48
|
-
## Segment 1 — pre-dev chain (
|
|
48
|
+
## Segment 1 — pre-dev chain (opt-in detours → `@dev`)
|
|
49
49
|
|
|
50
|
-
SMALL feature: `@
|
|
50
|
+
SMALL feature (lean default): `@product` → `@sheldon` → `@dev` — `@product`/`@sheldon` hand off manually, so there is no pre-dev auto-chain; autopilot resumes in the post-dev review cycle (Segment 2). The full-merged SMALL detour auto-chains `@analyst` → `@architect` → `@dev` when opted in (with `@scope-check`/`@discovery-design-doc` only if the sequence adds them).
|
|
51
51
|
|
|
52
|
-
MEDIUM feature: `@
|
|
52
|
+
MEDIUM feature (maestro default): `@product` → `@orchestrator` → `@dev` — `@product`/`@orchestrator` hand off manually too, so there is likewise no pre-dev auto-chain (the `@orchestrator` maestro fans out to `@analyst`/`@architect`/`@pm` as sub-agents, not as workflow stages). `@analyst` → `@architect` → `@pm` → `@dev` auto-chains only when an opt-in full-chain detour adds those stages to the sequence (`@discovery-design-doc` and `@scope-check` chain only if the sequence adds them).
|
|
53
53
|
|
|
54
|
-
The prompt-only fallback still stops before the FIRST `@dev` activation because `@dev` is a heavy phase and needs a compact operational handoff. Runtime agentic mode may cross this boundary only by starting a checkpointed `@dev` activation from the context package, not by carrying raw upstream chat forward. If the gateway cannot start that activation, stop with the normal `/compact` + `/dev` recommendation for same-feature continuation. Recommend `/clear` only when the user needs a hard reset, a feature switch, polluted context, or a security-sensitive reset.
|
|
54
|
+
The prompt-only fallback still stops before the FIRST `@dev` activation because `@dev` is a heavy phase and needs a compact operational handoff. Runtime agentic mode may cross this boundary only by starting a checkpointed `@dev` activation from the context package, not by carrying raw upstream chat forward. If the gateway cannot start that activation, stop with the normal `/compact` + `/dev` recommendation for same-feature continuation. Recommend `/clear` only when the user needs a hard reset, a feature switch, polluted context, or a security-sensitive reset.
|
|
55
55
|
|
|
56
56
|
## Segment 2 — post-dev review cycle (hub = `@qa`)
|
|
57
57
|
|
|
@@ -87,12 +87,12 @@ Routing table (each row is followed only when autopilot is active and no stop co
|
|
|
87
87
|
2. **First `@dev` entry without runtime gateway** — prompt-only clients stop here (Segment 1). Runtime agentic mode may continue only through a fresh checkpointed `@dev` activation.
|
|
88
88
|
3. **Corrections cap reached** — review cycles are bounded by `agentic_policy.review_cycle` (default 3); when `review-cycle:advance` returns `stop_cycle_limit`, stop and escalate to the human.
|
|
89
89
|
4. **Critical security finding** — the `@qa` corrections security gate (auth/secret/credential/session/password/token/PII/encryption keywords) blocks the auto-loop; stop and require human intervention.
|
|
90
|
-
5. **Verdict not clean / gate or readiness blocked** — `@
|
|
91
|
-
6. **Context budget** — estimated usage ≥ `context_warning_threshold` (`.aioson/config.md`): write the compaction checkpoint to `.aioson/context/last-handoff.json`, stop, and recommend `/compact` for same-feature continuation. The workflow resumes from `.aioson/context/workflow.state.json` — the next session re-enters autopilot automatically. Recommend `/clear` only for a hard reset, feature switch, polluted context, or security-sensitive reset.
|
|
90
|
+
5. **Verdict not clean / gate or readiness blocked** — the `@orchestrator` maestro spec package not gate-approved (Gates A/B/C) or its readiness `blocked`, `@validator` FAIL with no safe corrections path (and, when present as detours, `@architect` Gate B / merged-mode readiness `blocked`, `@pm` Gate C blocked, `@scope-check` not `approved`/`patched`, or `@discovery-design-doc` readiness `blocked`): stop and route to the owner manually.
|
|
91
|
+
6. **Context budget** — estimated usage ≥ `context_warning_threshold` (`.aioson/config.md`): write the compaction checkpoint to `.aioson/context/last-handoff.json`, stop, and recommend `/compact` for same-feature continuation. The workflow resumes from `.aioson/context/workflow.state.json` — the next session re-enters autopilot automatically. Recommend `/clear` only for a hard reset, feature switch, polluted context, or security-sensitive reset.
|
|
92
92
|
7. **Ambiguity** — workflow state unavailable AND routing ambiguous, or any real decision requires user input: stop and ask, manually.
|
|
93
93
|
|
|
94
94
|
The user can interrupt at any time (Ctrl+C); autopilot never retries an interrupted invocation.
|
|
95
95
|
|
|
96
96
|
## Rationale
|
|
97
97
|
|
|
98
|
-
Industry-validated design (see `researchs/auto-handoff-pipeline-2026/summary.md`): deterministic routing beats LLM routing; human gates belong where they catch mistakes — at the start of implementation (`@dev` entry: compact operational handoff) and at the irreversible boundary (`feature:close`/publish). Every autonomous loop needs explicit exit conditions and bounds (the corrections cap, the re-entry guard); per-hop context checkpointing is the load-bearing cost mitigation.
|
|
98
|
+
Industry-validated design (see `researchs/auto-handoff-pipeline-2026/summary.md`): deterministic routing beats LLM routing; human gates belong where they catch mistakes — at the start of implementation (`@dev` entry: compact operational handoff) and at the irreversible boundary (`feature:close`/publish). Every autonomous loop needs explicit exit conditions and bounds (the corrections cap, the re-entry guard); per-hop context checkpointing is the load-bearing cost mitigation.
|
|
@@ -83,6 +83,47 @@ Before marking any task or feature done:
|
|
|
83
83
|
3. confirm exit code `0`
|
|
84
84
|
4. only then mark done
|
|
85
85
|
|
|
86
|
+
### Exit-code honesty (never auto-deceive)
|
|
87
|
+
|
|
88
|
+
A gate's verdict is its exit code, not your impression of it:
|
|
89
|
+
|
|
90
|
+
- **Exit 127 = command not found.** That is a FAILURE, not a pass — a missing
|
|
91
|
+
tool/dependency. Stop and report; never read "no error output" as "no errors".
|
|
92
|
+
- **Exit 0 with empty output** on a command that should produce output (a
|
|
93
|
+
typecheck over N files, a test run) means the command did **not** run. Verify
|
|
94
|
+
it actually executed (e.g. the output file exists and is non-empty) before
|
|
95
|
+
trusting it.
|
|
96
|
+
- **Exit 124 = timeout.** The command hung — investigate, do not blind-retry.
|
|
97
|
+
- When you cite a gate as evidence ("typecheck clean", "smoke passed"), paste the
|
|
98
|
+
exact command, the exit code, and the last lines of output. "exit 0" without
|
|
99
|
+
the command is not evidence.
|
|
100
|
+
|
|
101
|
+
### Static gate (`SG-*`) — proof per acceptance criterion
|
|
102
|
+
|
|
103
|
+
`aioson harness:check . --slug={slug}` also evaluates the contract's build-free
|
|
104
|
+
**`SG-*`** static criteria (`must_match` / `must_not_match` + parse-check) on
|
|
105
|
+
every run — they gate `@dev`-done even before the app builds. When you self-review
|
|
106
|
+
an AC backed by an `SG-*` criterion, the evidence **is** the pattern hit: cite the
|
|
107
|
+
`file:line` where `must_match` matched. A failing `SG-*` (a missing pattern, a
|
|
108
|
+
forbidden `TODO`/`as any`, a truncated file) blocks done exactly like a failing
|
|
109
|
+
test — fix the code, never relax the pattern.
|
|
110
|
+
|
|
111
|
+
### Runtime sub-gate (runtime features — has_api / DB / prototype)
|
|
112
|
+
|
|
113
|
+
A passing unit suite is not "done" for a feature that ships a backend, a database, or a clickable prototype.
|
|
114
|
+
Unit tests mock the DB/auth/network; they prove the parts in isolation, not the whole running app. Before
|
|
115
|
+
declaring such a feature done, you must have **run the real stack at least once**:
|
|
116
|
+
|
|
117
|
+
1. **build** the app (`pnpm build` / `npm run build` / `tsc -p .`) — the whole thing, not a subset
|
|
118
|
+
2. **apply** the migrations to a real/ephemeral DB (`prisma migrate reset --force` / `migrate deploy`) — a
|
|
119
|
+
`.sql` file on disk is not an applied migration
|
|
120
|
+
3. **boot** server + client; confirm a health probe (`/api/health`) returns 200
|
|
121
|
+
4. **drive** the prototype's Core happy-path (create/list/switch/edit/archive of the primary objects) end to
|
|
122
|
+
end on the running stack
|
|
123
|
+
|
|
124
|
+
If no smoke/boot harness exists, building one is part of the slice — do not substitute a unit test. This is
|
|
125
|
+
the same evidence `@qa`'s Runtime smoke gate and the §2c `RG-*` contract criteria require.
|
|
126
|
+
|
|
86
127
|
Update `skeleton-system.md` whenever files are created, deleted, or materially changed.
|
|
87
128
|
|
|
88
129
|
## `*update-skeleton`
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Dev phase loop — auto-continue across phases, per-phase verification sub-agents, and compaction between phases."
|
|
3
|
+
agents: [dev, deyvin]
|
|
4
|
+
task_types: [implementation, verification]
|
|
5
|
+
triggers: [phase loop, auto-continue phases, per-phase verification, compact between phases]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Dev phase loop — auto-continue, per-phase verification, compaction
|
|
9
|
+
|
|
10
|
+
On-demand detail for @dev's `## Phase loop` kernel section. Applies when a phased plan drives the work (`implementation-plan-{slug}.md` or a Sheldon `.aioson/plans/{slug}/manifest.md`).
|
|
11
|
+
|
|
12
|
+
## The loop
|
|
13
|
+
|
|
14
|
+
**Auto-continue is the default — do NOT stop to ask "continue?" between phases** (`phase_loop.auto_continue` in `.aioson/config/verification.json`). The per-phase verification report replaces that human checkpoint: a clean report means proceed; a failing one stops the loop. Set `auto_continue: false` to pause for confirmation between phases.
|
|
15
|
+
|
|
16
|
+
After finishing each phase:
|
|
17
|
+
|
|
18
|
+
1. **Close the phase.** Mark it `done` in the manifest (`pending → in_progress → done`, never skip ahead) and update `spec-{slug}.md` checkpoints.
|
|
19
|
+
2. **Per-phase gate.** If `.aioson/plans/{slug}/harness-contract.json` exists, run `aioson harness:check . --slug={slug}` (add `--strict` for MEDIUM / harness-driven work) — this also evaluates the build-free `SG-*` static criteria, so a stubbed/placeholder slice fails here before the build even runs. Then run `aioson audit:code . --changed --json` for a fast, build-free code-quality scan of this phase's diff (anti-patterns / TODOs / dead code / duplication): a HIGH finding is fix-before-advancing, MED/LOW advisory.
|
|
20
|
+
3. **Per-phase verification.** Run:
|
|
21
|
+
```bash
|
|
22
|
+
aioson verification:plan . --feature={slug} --trigger=per-phase --json
|
|
23
|
+
```
|
|
24
|
+
For every agent with `run: true`, dispatch it as a sub-agent on the returned `host` / `mode` / `model`, scoped to this phase's changed files:
|
|
25
|
+
- `mode: native` → an in-harness sub-agent. On Claude Code use the Task tool with that `model` tier (e.g. `sonnet-4.6`); on codex/opencode use their own configured model. The sub-agent writes its `report` file (e.g. `qa-report-{slug}.md`) and returns it to @dev.
|
|
26
|
+
- `mode: external` → only the explicitly configured cross-vendor auditor (`cross_check`); never spawn one otherwise.
|
|
27
|
+
Read the report: **PASS** → continue. **Bugs** → fix them within this phase, re-run `harness:check`, and re-dispatch — up to `phase_loop.max_fix_retries_per_phase` times, then stop and surface the failure instead of advancing.
|
|
28
|
+
4. **Compact between phases** (when `phase_loop.compact_between_phases` is true and phases remain). Write the cold-start packet:
|
|
29
|
+
```bash
|
|
30
|
+
aioson dev:state:write # slug, completed phase, next phase, manifest path, required context, decisions
|
|
31
|
+
```
|
|
32
|
+
then shed context — `/compact` on Claude Code, or open a fresh context and reload via `aioson dev:resume-data .` on codex/opencode — and resume on the next phase. Each phase gets a clean context with no manual chat hand-off.
|
|
33
|
+
5. **End-of-feature gate (after the last phase only).** Hand off to `@qa`, which runs the full runtime smoke (build + migrate + boot + Core happy-path) plus `@tester`/`@pentester`/`@validator` per:
|
|
34
|
+
```bash
|
|
35
|
+
aioson verification:plan . --feature={slug} --trigger=end-of-feature
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Token economy
|
|
39
|
+
|
|
40
|
+
- The per-phase check is **light**: one cheap-tier sub-agent, changed-files scope, capped by `budget.max_subagents_per_phase`.
|
|
41
|
+
- It is **suppressed on MICRO** (`budget.skip_on_micro`) — MICRO phases just auto-continue with no sub-agent.
|
|
42
|
+
- The **expensive full runtime smoke runs once**, at end-of-feature only (`budget.full_smoke = end-of-feature-only`) — never per phase.
|
|
43
|
+
- Compaction between phases keeps each phase's context small, which is cheaper than carrying one accumulating context across a long feature.
|
|
44
|
+
|
|
45
|
+
## Configuration
|
|
46
|
+
|
|
47
|
+
All knobs live in `.aioson/config/verification.json` (see `.aioson/docs/verification-config.md`): per-agent `enabled` / `triggers` / `dispatch` (per host), `cross_check`, `budget`, and `phase_loop` (`auto_continue`, `compact_between_phases`, `max_fix_retries_per_phase`).
|
|
@@ -5,12 +5,12 @@ agents: [briefing, briefing-refiner, product, sheldon]
|
|
|
5
5
|
modes: [planning, executing]
|
|
6
6
|
task_types: [feature-expansion, product-discovery, prd-enrichment, briefing-refinement]
|
|
7
7
|
load_tier: trigger
|
|
8
|
-
triggers: [feature expansion, rich surface, MVP options, product scope, capability map, Trello,
|
|
8
|
+
triggers: [feature expansion, rich surface, MVP options, product scope, capability map, operational surface, CRUD surface, management surface, Trello, Kanban, CRM, workspace, board, dashboard, workflow, editor, collaboration]
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
# Feature Expansion Taxonomy
|
|
12
12
|
|
|
13
|
-
Use this shared vocabulary when a feature has a rich surface: workflow tools, collaboration, editors/builders, generators, media outputs, dashboards, CRM/Kanban-style systems, automation, templates, customization, or repeated operational use.
|
|
13
|
+
Use this shared vocabulary when a feature has a rich surface: workflow tools, collaboration, editors/builders, generators, media outputs, dashboards, CRM/Kanban-style systems, automation, templates, customization, workspaces, boards, operational CRUD, or repeated operational use.
|
|
14
14
|
|
|
15
15
|
Expansion is not approval. It reveals options, classifies value and risk, and makes scope easier to choose.
|
|
16
16
|
|
|
@@ -41,13 +41,41 @@ Check only lenses relevant to the feature:
|
|
|
41
41
|
- Integrations and automation: imports, exports, webhooks, scheduled jobs, simple rules.
|
|
42
42
|
- Implementation leverage: framework-native features, low-cost libraries, existing modules.
|
|
43
43
|
|
|
44
|
+
## Operational Surface Map
|
|
45
|
+
|
|
46
|
+
For rich-surface products, expansion is incomplete until the main objects have an operational surface map.
|
|
47
|
+
|
|
48
|
+
Use this table shape:
|
|
49
|
+
|
|
50
|
+
| Object | Parent / owner | Lifecycle states | Required actions | Management surface | Empty / error states | Permissions / roles |
|
|
51
|
+
|---|---|---|---|---|---|---|
|
|
52
|
+
| Workspace | owner / members | active, archived | create, switch, edit, archive, invite | workspace switcher + workspace settings | no workspaces, invite failed | owner, member |
|
|
53
|
+
|
|
54
|
+
Rules:
|
|
55
|
+
|
|
56
|
+
- A named Core object is not real scope until its create, list/view, edit, delete/archive, and restore behavior is either covered or explicitly deferred.
|
|
57
|
+
- Every Core object needs a management surface: page, panel, modal, drawer, inline action, settings screen, or command. If there is no place to manage it, the product is underspecified.
|
|
58
|
+
- Parent/child relationships must be explicit. For Trello-like systems, cards imply lists/columns, boards, workspaces, members, and at least basic role boundaries.
|
|
59
|
+
- A user flow that says "manage cards" is too thin unless it names how the user adds, edits, moves, archives, restores, and sees validation feedback.
|
|
60
|
+
- Empty states and failure states are Core for first-use products, admin surfaces, and repeated-use operational tools.
|
|
61
|
+
- Deferred lifecycle actions must be visible in Out of scope, not silently omitted.
|
|
62
|
+
|
|
63
|
+
Minimum expected surfaces for Trello/Kanban/CRM/workspace-like products:
|
|
64
|
+
|
|
65
|
+
- Workspace or account home: create/select workspace, invite/manage members, edit settings.
|
|
66
|
+
- Board/list/index surface: create/select/search/archive boards or pipelines.
|
|
67
|
+
- Main work surface: view columns/lists/status groups, create/move/edit/archive primary items.
|
|
68
|
+
- Item detail surface: edit content, metadata, assignee/owner, labels/status, comments/notes when in scope.
|
|
69
|
+
- Empty/error surfaces: no workspace, no board, no items, permission denied, validation failure.
|
|
70
|
+
|
|
44
71
|
## Required Trace
|
|
45
72
|
|
|
46
73
|
Every expansion artifact should state:
|
|
47
74
|
|
|
48
75
|
- whether prior expansion artifacts were found
|
|
49
76
|
- which bucket each suggestion belongs to
|
|
77
|
+
- which Core objects were mapped in the operational surface map
|
|
78
|
+
- which management surfaces are required for those Core objects
|
|
50
79
|
- which ideas need explicit user approval
|
|
51
80
|
- which ideas are intentionally deferred
|
|
52
81
|
- how the expansion affects project classification or delivery risk
|
|
53
|
-
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"_about": "Full chain with @discovery-design-doc merged into @architect. Copy to .aioson/context/workflow.config.json. When discovery-design-doc is absent from the sequence, @architect runs in merged mode and produces design-doc + readiness + dev-state itself. See .aioson/docs/workflow-lean-lane.md and agents/architect.md (Architect merged mode). Runtime smoke gate stays mandatory.",
|
|
4
|
+
"feature": {
|
|
5
|
+
"MICRO": ["product", "dev", "qa"],
|
|
6
|
+
"SMALL": ["product", "analyst", "scope-check", "architect", "dev", "qa"],
|
|
7
|
+
"MEDIUM": ["product", "analyst", "architect", "pm", "scope-check", "dev", "pentester", "qa"]
|
|
8
|
+
},
|
|
9
|
+
"project": {
|
|
10
|
+
"MICRO": ["setup", "dev"],
|
|
11
|
+
"SMALL": ["setup", "product", "analyst", "scope-check", "architect", "dev", "qa"],
|
|
12
|
+
"MEDIUM": ["setup", "product", "analyst", "architect", "ux-ui", "pm", "orchestrator", "scope-check", "dev", "qa"]
|
|
13
|
+
},
|
|
14
|
+
"rules": { "required": ["dev"], "allowDetours": true }
|
|
15
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"_about": "Lean lane preset. Copy to .aioson/context/workflow.config.json to opt in. See .aioson/docs/workflow-lean-lane.md. Runtime smoke gate stays mandatory in both lanes.",
|
|
4
|
+
"feature": {
|
|
5
|
+
"MICRO": ["product", "dev", "qa"],
|
|
6
|
+
"SMALL": ["product", "sheldon", "dev", "qa"],
|
|
7
|
+
"MEDIUM": ["product", "sheldon", "dev", "qa"]
|
|
8
|
+
},
|
|
9
|
+
"project": {
|
|
10
|
+
"MICRO": ["setup", "dev"],
|
|
11
|
+
"SMALL": ["setup", "product", "sheldon", "dev", "qa"],
|
|
12
|
+
"MEDIUM": ["setup", "product", "sheldon", "dev", "qa"]
|
|
13
|
+
},
|
|
14
|
+
"rules": { "required": ["dev"], "allowDetours": true }
|
|
15
|
+
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: "Product PRD contract — exact PRD structure, visual identity block, output paths, and next-step routing."
|
|
3
|
-
agents: [product]
|
|
4
|
-
modes: [executing]
|
|
5
|
-
task_types: [prd-writing, prd-finalization, output-contract, artifact-writing]
|
|
6
|
-
load_tier: trigger
|
|
7
|
-
triggers: [writing PRD, updating PRD, PRD contract, output path, next-step routing, visual identity]
|
|
8
|
-
---
|
|
1
|
+
---
|
|
2
|
+
description: "Product PRD contract — exact PRD structure, visual identity block, output paths, and next-step routing."
|
|
3
|
+
agents: [product]
|
|
4
|
+
modes: [executing]
|
|
5
|
+
task_types: [prd-writing, prd-finalization, output-contract, artifact-writing]
|
|
6
|
+
load_tier: trigger
|
|
7
|
+
triggers: [writing PRD, updating PRD, PRD contract, output path, next-step routing, visual identity]
|
|
8
|
+
---
|
|
9
9
|
|
|
10
10
|
# Product PRD Contract
|
|
11
11
|
|
|
@@ -98,15 +98,15 @@ After the PRD is produced:
|
|
|
98
98
|
| classification | Next step |
|
|
99
99
|
|---|---|
|
|
100
100
|
| MICRO | `@dev` |
|
|
101
|
-
| SMALL | `@
|
|
102
|
-
| MEDIUM | `@
|
|
101
|
+
| SMALL | `@sheldon` (lean default) |
|
|
102
|
+
| MEDIUM | `@orchestrator` (maestro spec authority) |
|
|
103
103
|
|
|
104
104
|
### New feature (`prd-{slug}.md`)
|
|
105
105
|
|
|
106
106
|
| feature complexity | Next step |
|
|
107
107
|
|---|---|
|
|
108
108
|
| MICRO | `@dev` |
|
|
109
|
-
| SMALL | `@
|
|
110
|
-
| MEDIUM | `@
|
|
109
|
+
| SMALL | `@sheldon` (lean default) |
|
|
110
|
+
| MEDIUM | `@orchestrator` (maestro) → `@dev` → `@pentester` → `@qa` |
|
|
111
111
|
|
|
112
112
|
Assess feature complexity from the conversation and state the next agent explicitly.
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: prototype-contract
|
|
3
|
+
agents: [product, ux-ui, analyst, architect, pm, orchestrator, dev, validator, sheldon]
|
|
4
|
+
modes: [planning, executing]
|
|
5
|
+
task_types: [prd, ui-spec, discovery, requirements, architecture, implementation, validation]
|
|
6
|
+
load_tier: trigger
|
|
7
|
+
triggers: [prototype, prototype.html, prototype reference, app-shell, clickable prototype, casca]
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Prototype Contract
|
|
11
|
+
|
|
12
|
+
When a feature has a clickable prototype from `prototype-forge` (`@briefing-refiner`), that prototype is the
|
|
13
|
+
authoritative reference for the feature's screens, navigation, and interactions. This doc defines how each
|
|
14
|
+
role uses it so the prototype is honored end-to-end, not lost after refinement.
|
|
15
|
+
|
|
16
|
+
## Where it lives
|
|
17
|
+
|
|
18
|
+
- `.aioson/briefings/{slug}/prototype.html` — the clickable app-shell.
|
|
19
|
+
- `.aioson/briefings/{slug}/prototype-manifest.md` — screen inventory, Core interactions demonstrated,
|
|
20
|
+
`design_skill` used, and lock status.
|
|
21
|
+
|
|
22
|
+
It is **mock-only**: no backend, refresh resets. Reproduce its behavior against the real stack — never copy
|
|
23
|
+
its mock persistence.
|
|
24
|
+
|
|
25
|
+
## The PRD pointer
|
|
26
|
+
|
|
27
|
+
When a prototype exists, `@product` adds a `## Prototype reference` section to the PRD:
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
## Prototype reference
|
|
31
|
+
- prototype: .aioson/briefings/{slug}/prototype.html
|
|
32
|
+
- manifest: .aioson/briefings/{slug}/prototype-manifest.md
|
|
33
|
+
- status: draft | locked-at: {ref}
|
|
34
|
+
- Treat as the authoritative screen/interaction reference for this feature.
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
The PRD is the carrier: every downstream agent that reads the PRD discovers the prototype through this section.
|
|
38
|
+
|
|
39
|
+
## Lock (draft → locked)
|
|
40
|
+
|
|
41
|
+
The prototype is `draft` while scope is open. When `@product`/`@sheldon` freeze scope, the prototype is
|
|
42
|
+
re-synced to match the final PRD and marked `locked-at: {ref}`. The locked version is what implementation
|
|
43
|
+
reproduces and what acceptance criteria are derived from. If the PRD and a `draft` prototype diverge at lock,
|
|
44
|
+
the approved PRD wins and the prototype is updated to match.
|
|
45
|
+
|
|
46
|
+
## Role usage
|
|
47
|
+
|
|
48
|
+
- **@product** — write the `## Prototype reference` section; keep the PRD consistent with the prototype; mark
|
|
49
|
+
it `locked` at scope freeze.
|
|
50
|
+
- **@sheldon** — when enriching a PRD that carries a `## Prototype reference`, keep the enrichment and any
|
|
51
|
+
phased plan consistent with the prototype's screens and Core interactions; do not silently enrich away a
|
|
52
|
+
demonstrated interaction. Co-own the `draft → locked` scope freeze with `@product`; if enrichment must
|
|
53
|
+
change a prototyped behavior, record it as an explicit scope decision in the PRD, not a silent drop.
|
|
54
|
+
- **@ux-ui** — the prototype is the concrete realization of the design direction. Use it as the authoritative
|
|
55
|
+
screen/interaction/visual reference; the `ui-spec` must not contradict it. Refine visual detail on top of
|
|
56
|
+
it, never around it.
|
|
57
|
+
- **@analyst** — turn the prototype's Core screens and interactions into explicit acceptance criteria in
|
|
58
|
+
`requirements-{slug}.md` (e.g. "add card persists and re-renders", "board has a management surface"). This
|
|
59
|
+
is how the prototype reaches `@validator` — as binary criteria, not as a file it reads.
|
|
60
|
+
- **@architect / @pm / @orchestrator** — read the prototype + manifest as the reference for screens, flows,
|
|
61
|
+
entities, and scope when planning; do not plan a Core surface the prototype omits without saying so.
|
|
62
|
+
- **@dev** — the prototype is the development source for UI and interactions. Reproduce its screens and Core
|
|
63
|
+
interactions against the real stack. Never ship a Core action the prototype demonstrates (e.g. "add card",
|
|
64
|
+
"create board", "manage members") while the build lacks it.
|
|
65
|
+
- **@qa** — for a feature with a prototype, the Core interactions are verified through the **Runtime smoke
|
|
66
|
+
gate**: build + migrate-apply + boot + Core happy-path on the running stack, with the aios-qa browser report
|
|
67
|
+
(`aioson qa:run`/`qa:scan`) required, not optional. Source inspection ("the API call appears in the source")
|
|
68
|
+
is **not** parity evidence.
|
|
69
|
+
- **@validator** — verifies prototype-derived acceptance criteria as part of the normal binary contract in
|
|
70
|
+
`harness-contract.json`. It does **not** read the prototype's behavior to judge the product; but at its
|
|
71
|
+
**Contract-integrity precheck** it reads `prototype-manifest.md` solely to confirm the contract carries the
|
|
72
|
+
§2c runtime-gate criteria (`RG-build`/`RG-migrate`/`RG-boot`/`RG-smoke`) for the Core interactions. A runtime
|
|
73
|
+
feature whose contract has no `RG-*` criteria is rejected (`ready_for_done_gate: false`) before scoring.
|
|
74
|
+
|
|
75
|
+
## Completeness
|
|
76
|
+
|
|
77
|
+
A feature with a prototype is not "ready for done" until every Core screen and interaction the prototype
|
|
78
|
+
demonstrates is either **built and verified on the running stack**, or explicitly deferred in the PRD's
|
|
79
|
+
`## Out of scope`.
|
|
80
|
+
|
|
81
|
+
**Parity is proven by running, not by reading.** A Core interaction counts as built only when it works end to
|
|
82
|
+
end against the real backend/DB — never when a source-string assertion shows the API call *appears* in the
|
|
83
|
+
code, and never when a structural "parity" unit test passes. The prototype is mock-only; the implementation
|
|
84
|
+
must reproduce its behavior on a booted, migrated stack. This is enforced by `@qa`'s **Runtime smoke gate** and
|
|
85
|
+
the `RG-build`/`RG-migrate`/`RG-boot`/`RG-smoke` criteria in `harness-contract.json` (see
|
|
86
|
+
`harness-contract.md` §2c).
|
|
87
|
+
|
|
88
|
+
## Deterministic guard
|
|
89
|
+
|
|
90
|
+
Run `aioson prototype:check . --feature={slug}` once `@analyst` has written `requirements-{slug}.md`. It is the
|
|
91
|
+
deterministic backstop for this otherwise prose-only contract and fails on: a dangling `## Prototype reference`
|
|
92
|
+
(prototype or manifest file missing), a missing requirements bridge, or Core interactions listed in the manifest
|
|
93
|
+
that no acceptance criterion echoes (`fail` = none covered, `warn` = some uncovered). It matches interaction
|
|
94
|
+
names as folded substrings, so the AC must echo the manifest's interaction name (EN or pt-BR). The check never
|
|
95
|
+
reads the prototype's behavior — only that the contract's structural links exist end to end. It is a
|
|
96
|
+
*structural* backstop, **not** runtime proof: an AC that merely echoes an interaction name still has to be
|
|
97
|
+
verified on the running stack by `@qa`'s Runtime smoke gate. Passing `prototype:check` never means a Core
|
|
98
|
+
interaction actually works.
|