@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.
Files changed (158) hide show
  1. package/CHANGELOG.md +75 -0
  2. package/README.md +19 -6
  3. package/docs/en/1-understand/ecosystem-map.md +45 -29
  4. package/docs/en/1-understand/glossary.md +5 -5
  5. package/docs/en/1-understand/what-is-aioson.md +5 -5
  6. package/docs/en/2-start/existing-project.md +7 -7
  7. package/docs/en/2-start/first-project.md +32 -38
  8. package/docs/en/2-start/initial-decisions.md +18 -17
  9. package/docs/en/3-recipes/README.md +2 -2
  10. package/docs/en/3-recipes/continuity-between-sessions.md +2 -2
  11. package/docs/en/3-recipes/from-idea-to-prd-via-briefing.md +5 -2
  12. package/docs/en/3-recipes/full-feature-with-sheldon.md +327 -338
  13. package/docs/en/4-agents/README.md +28 -14
  14. package/docs/en/4-agents/discovery-design-doc.md +20 -8
  15. package/docs/en/4-agents/forge-run.md +3 -2
  16. package/docs/en/5-reference/cli-reference.md +51 -48
  17. package/docs/en/5-reference/executable-verification.md +10 -7
  18. package/docs/en/5-reference/parallel.md +2 -0
  19. package/docs/en/5-reference/qa-browser.md +2 -2
  20. package/docs/en/README.md +3 -3
  21. package/docs/pt/1-entender/glossario.md +4 -4
  22. package/docs/pt/1-entender/mapa-do-ecossistema.md +32 -21
  23. package/docs/pt/2-comecar/decisoes-iniciais.md +16 -16
  24. package/docs/pt/2-comecar/primeiro-projeto.md +1 -1
  25. package/docs/pt/3-receitas/README.md +1 -1
  26. package/docs/pt/3-receitas/app-saas-do-zero.md +35 -122
  27. package/docs/pt/3-receitas/feature-completa-com-sheldon.md +289 -338
  28. package/docs/pt/4-agentes/analyst.md +9 -5
  29. package/docs/pt/4-agentes/architect.md +9 -5
  30. package/docs/pt/4-agentes/dev.md +19 -7
  31. package/docs/pt/4-agentes/discovery-design-doc.md +25 -23
  32. package/docs/pt/4-agentes/orchestrator.md +164 -118
  33. package/docs/pt/4-agentes/pentester.md +5 -5
  34. package/docs/pt/4-agentes/pm.md +15 -7
  35. package/docs/pt/4-agentes/sheldon.md +166 -99
  36. package/docs/pt/4-agentes/ux-ui.md +7 -4
  37. package/docs/pt/5-referencia/agent-chain-continuity.md +14 -5
  38. package/docs/pt/5-referencia/comandos-cli.md +1 -1
  39. package/docs/pt/5-referencia/harness-retro.md +2 -1
  40. package/docs/pt/5-referencia/sdd-automation-scripts.md +6 -6
  41. package/docs/pt/5-referencia/sdd-framework.md +53 -16
  42. package/docs/pt/5-referencia/sdd-planos-e-estrutura.md +27 -15
  43. package/docs/pt/README.md +4 -4
  44. package/docs/pt/agentes.md +48 -50
  45. package/package.json +2 -2
  46. package/src/artifact-kinds.js +110 -0
  47. package/src/cli.js +82 -42
  48. package/src/commands/agent-epilogue.js +251 -186
  49. package/src/commands/agents.js +104 -48
  50. package/src/commands/audit-code.js +344 -0
  51. package/src/commands/classify.js +75 -13
  52. package/src/commands/feature-close.js +43 -18
  53. package/src/commands/harness-check.js +259 -175
  54. package/src/commands/harness-retro-promote.js +387 -0
  55. package/src/commands/live.js +24 -0
  56. package/src/commands/prototype-check.js +163 -0
  57. package/src/commands/review-feature.js +189 -0
  58. package/src/commands/runtime.js +81 -66
  59. package/src/commands/sync-agents-copy.js +115 -0
  60. package/src/commands/verification-plan.js +116 -0
  61. package/src/commands/verify-artifact.js +530 -0
  62. package/src/commands/verify-implementation.js +428 -0
  63. package/src/commands/workflow-execute.js +309 -309
  64. package/src/commands/workflow-next.js +361 -19
  65. package/src/commands/workflow-plan.js +5 -5
  66. package/src/constants.js +4 -0
  67. package/src/gateway-pointer-merge.js +7 -1
  68. package/src/handoff-contract.js +267 -172
  69. package/src/harness/contract-integrity-gate.js +172 -0
  70. package/src/harness/contract-integrity.js +111 -0
  71. package/src/harness/contract-schema.js +377 -332
  72. package/src/harness/detect-runtime-feature.js +90 -0
  73. package/src/harness/static-criteria.js +192 -0
  74. package/src/i18n/messages/en.js +8 -4
  75. package/src/i18n/messages/es.js +8 -4
  76. package/src/i18n/messages/fr.js +8 -4
  77. package/src/i18n/messages/pt-BR.js +8 -4
  78. package/src/install-wizard.js +8 -8
  79. package/src/installer.js +13 -6
  80. package/src/lib/retro/retro-render.js +10 -1
  81. package/src/lib/retro/retro-sources.js +45 -27
  82. package/src/lib/retro/verification-reports.js +230 -0
  83. package/src/parser.js +6 -0
  84. package/src/preflight-engine.js +12 -12
  85. package/src/runtime-store.js +13 -9
  86. package/src/verification/evidence-bundle.js +251 -0
  87. package/src/verification/ledger-store.js +221 -0
  88. package/src/verification/path-policy.js +74 -0
  89. package/src/verification/policy-engine.js +95 -0
  90. package/src/verification/prompt-package.js +314 -0
  91. package/src/verification/redaction.js +77 -0
  92. package/src/verification/report-parser.js +132 -0
  93. package/src/verification/report-store.js +97 -0
  94. package/src/verification/result.js +16 -0
  95. package/src/verification/runners/index.js +319 -0
  96. package/src/verification/runtime-telemetry.js +144 -0
  97. package/src/verification/schema.js +276 -0
  98. package/src/verification/source-discovery.js +153 -0
  99. package/src/verification-policy.js +398 -0
  100. package/src/version.js +52 -1
  101. package/template/.aioson/agents/analyst.md +9 -6
  102. package/template/.aioson/agents/architect.md +34 -5
  103. package/template/.aioson/agents/briefing-refiner.md +25 -0
  104. package/template/.aioson/agents/briefing.md +69 -12
  105. package/template/.aioson/agents/committer.md +2 -1
  106. package/template/.aioson/agents/copywriter.md +30 -21
  107. package/template/.aioson/agents/design-hybrid-forge.md +28 -15
  108. package/template/.aioson/agents/dev.md +28 -10
  109. package/template/.aioson/agents/deyvin.md +3 -2
  110. package/template/.aioson/agents/discover.md +12 -3
  111. package/template/.aioson/agents/discovery-design-doc.md +7 -2
  112. package/template/.aioson/agents/genome.md +19 -10
  113. package/template/.aioson/agents/neo.md +30 -30
  114. package/template/.aioson/agents/orache.md +20 -11
  115. package/template/.aioson/agents/orchestrator.md +84 -7
  116. package/template/.aioson/agents/pm.md +8 -8
  117. package/template/.aioson/agents/product.md +15 -11
  118. package/template/.aioson/agents/profiler-enricher.md +20 -11
  119. package/template/.aioson/agents/profiler-forge.md +20 -11
  120. package/template/.aioson/agents/profiler-researcher.md +20 -11
  121. package/template/.aioson/agents/qa.md +87 -17
  122. package/template/.aioson/agents/scope-check.md +19 -5
  123. package/template/.aioson/agents/setup.md +12 -1
  124. package/template/.aioson/agents/sheldon.md +92 -9
  125. package/template/.aioson/agents/site-forge.md +11 -2
  126. package/template/.aioson/agents/squad.md +20 -5
  127. package/template/.aioson/agents/ux-ui.md +4 -2
  128. package/template/.aioson/agents/validator.md +33 -1
  129. package/template/.aioson/config/verification.json +61 -0
  130. package/template/.aioson/config.md +13 -9
  131. package/template/.aioson/docs/LAYERS.md +2 -2
  132. package/template/.aioson/docs/autopilot-handoff.md +10 -10
  133. package/template/.aioson/docs/dev/execution-discipline.md +41 -0
  134. package/template/.aioson/docs/dev/phase-loop.md +47 -0
  135. package/template/.aioson/docs/feature-expansion-taxonomy.md +31 -3
  136. package/template/.aioson/docs/presets/workflow.config.full-merged.json +15 -0
  137. package/template/.aioson/docs/presets/workflow.config.lean.json +15 -0
  138. package/template/.aioson/docs/product/prd-contract.md +12 -12
  139. package/template/.aioson/docs/prototype-contract.md +98 -0
  140. package/template/.aioson/docs/reference-identity.md +94 -0
  141. package/template/.aioson/docs/sheldon/harness-contract.md +155 -28
  142. package/template/.aioson/docs/verification-config.md +82 -0
  143. package/template/.aioson/docs/verify-artifact-gates.md +91 -0
  144. package/template/.aioson/docs/workflow-lean-lane.md +129 -0
  145. package/template/.aioson/skills/design/interface-design/references/intent-and-domain.md +2 -0
  146. package/template/.aioson/skills/process/aioson-spec-driven/SKILL.md +16 -14
  147. package/template/.aioson/skills/process/aioson-spec-driven/references/approval-gates.md +2 -2
  148. package/template/.aioson/skills/process/aioson-spec-driven/references/classification-map.md +4 -4
  149. package/template/.aioson/skills/process/aioson-spec-driven/references/dev.md +15 -15
  150. package/template/.aioson/skills/process/briefing-expansion-scout/SKILL.md +25 -3
  151. package/template/.aioson/skills/process/design-hybrid-forge/SKILL.md +5 -3
  152. package/template/.aioson/skills/process/design-hybrid-forge/references/external-source-ingestion.md +89 -0
  153. package/template/.aioson/skills/process/product-scope-expansion/SKILL.md +29 -2
  154. package/template/.aioson/skills/process/prototype-forge/SKILL.md +98 -0
  155. package/template/.aioson/skills/process/reference-identity-extract/SKILL.md +164 -0
  156. package/template/.aioson/skills/process/sheldon-expansion-audit/SKILL.md +23 -2
  157. package/template/.aioson/skills/static/multi-agent-patterns.md +5 -5
  158. 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
- - Score 0 / FAIL → `Skill(aioson:agent:dev)` with `"fix @validator findingsautopilot handoff"`.
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 -> @analyst -> @scope-check(pre-dev) -> @architect -> @discovery-design-doc -> @dev -> @qa`
12
- - MEDIUM: `@setup -> @product -> @analyst -> @architect -> @discovery-design-doc -> @ux-ui -> @pm -> @orchestrator -> @scope-check(pre-dev) -> @dev -> @qa`
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 from `@analyst` up to the `@dev` handoff (including `@pm` on MEDIUM features) chain automatically via skill auto-invocation instead of stopping for manual activation. Protocol and stop conditions: `.aioson/docs/autopilot-handoff.md`. Upstream agents (`@briefing`, `@product`, `@sheldon`) always hand off manually.
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, @discovery-design-doc when resuming.
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 analyst→dev pre-dev 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."
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 (analyst → dev → review cycle)
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 (`@analyst` → `@dev`):** `@analyst`, `@scope-check`, `@architect`, `@discovery-design-doc`, and `@pm` (MEDIUM only). Upstream agents (`@briefing`, `@product`, `@sheldon`) always stay manual — they end on genuine human decisions.
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 (`@analyst` → `@dev`)
48
+ ## Segment 1 — pre-dev chain (opt-in detours → `@dev`)
49
49
 
50
- SMALL feature: `@analyst` → `@scope-check` → `@architect` → `@discovery-design-doc` `@dev`.
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: `@analyst` → `@architect` → `@discovery-design-doc` → `@pm` → `@scope-check` `@dev`.
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** — `@scope-check` not `approved`/`patched`, `@architect` Gate B blocked, `@discovery-design-doc` readiness `blocked`, `@pm` Gate C blocked, `@validator` FAIL with no safe corrections path: 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.
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, generator, dashboard, workflow, editor, collaboration]
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 | `@analyst` |
102
- | MEDIUM | `@analyst` then `@architect` `@ux-ui` → `@pm` → `@orchestrator` |
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 | `@analyst` |
110
- | MEDIUM | `@analyst` `@architect` → `@scope-check` → `@dev` → `@qa` |
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.