@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
@@ -14,15 +14,15 @@ Evaluate this immediately after reading this file and before loading any other c
14
14
  If the user only activates `@briefing` (or points at this file) without naming a plan file, briefing slug, or concrete briefing task:
15
15
 
16
16
  1. When the CLI is available, run `aioson context:select . --agent=briefing --mode=planning --task="agent activation without concrete task" --paths=""`.
17
- 2. Load only: `.aioson/context/project.context.md` (for `interaction_language` and framing), the YAML frontmatter of `.aioson/briefings/config.md` (registry list), and a filename listing of `plans/` (names only — do not read file contents).
17
+ 2. Load only: `.aioson/context/project.context.md` (for `interaction_language` and framing), the YAML frontmatter of `.aioson/briefings/config.md` (registry list), and a filename listing of `plans/` (names only — do not read file contents).
18
18
  3. Present the Activation protocol menu (existing briefings, plan selection, or the conversational-mode offer) and stop.
19
19
 
20
20
  Do NOT load on activation: `plans/*.md` contents, `prd*.md`, `.aioson/context/done/MANIFEST.md`, `.aioson/rules/`, `.aioson/docs/`, design docs, bootstrap files, dossiers, `briefing-craft.md`, `web-research-cache.md`, `hardening-lane.md`, or any process skill. Each of those loads later, only at the step that needs it, after the user picks a lane.
21
21
 
22
22
  ## Context loading modes
23
23
 
24
- Before concrete `context:select`, run discovery: `aioson context:search . --query="<task>" --agent=briefing --mode=<mode> --task="<task>" --paths="<paths>" --json 2>/dev/null || true`. Hits are hints only.
25
-
24
+ Before concrete `context:select`, run discovery: `aioson context:search . --query="<task>" --agent=briefing --mode=<mode> --task="<task>" --paths="<paths>" --json 2>/dev/null || true`. Hits are hints only.
25
+
26
26
  Use explicit modes instead of eager-loading rules, docs, memories, and design docs.
27
27
 
28
28
  - **PLANNING** — inspect source lists, briefing registry, frontmatter, memory summaries, cache indexes, and `context:select`; do not load full rule/doc folders.
@@ -97,7 +97,7 @@ After the user selects which plans to use:
97
97
 
98
98
  **1. Read selected plans**
99
99
  - Read each selected `plans/*.md` file fully.
100
- - Read `.aioson/context/project.context.md` for project context.
100
+ - Read `.aioson/context/project.context.md` for project context.
101
101
  - Scan `.aioson/context/` for existing PRDs (`prd*.md`) — load titles/summaries only to avoid duplicating committed work.
102
102
  - Also read `.aioson/context/done/MANIFEST.md` if present — it lists delivered (archived) features so you can dedupe against completed work without globbing the archive. Do NOT load the archived files themselves unless the user explicitly requests history.
103
103
 
@@ -108,6 +108,8 @@ Apply enrichment:
108
108
  - Check `researchs/` before web search. Load `.aioson/skills/static/web-research-cache.md` only when an external claim, product pattern, market assumption, technology decision, or time-sensitive convention needs validation.
109
109
  - Use web search only for stale/missing evidence that can change the briefing's risks, options, or open questions.
110
110
  - Load `.aioson/skills/process/aioson-spec-driven/references/hardening-lane.md` only before classifying gaps or deciding whether the idea is hardenable.
111
+ - Load `.aioson/skills/process/briefing-expansion-scout/SKILL.md` when the idea has a rich operational surface: workspaces, boards, cards, pipelines, CRM/Kanban behavior, collaboration, admin/management surfaces, repeated-use CRUD, dashboards, editors/builders, automation, templates, or media output. For these ideas, write `.aioson/briefings/{slug}/expansion-scout.md` before the briefing is considered complete enough for product.
112
+ - Run **Horizontal solution exploration** (see below) when the goal admits more than one viable solution shape, or whenever the idea has a rich operational surface. Write `.aioson/briefings/{slug}/solution-options.md` before proposing the slug — breadth is the point; no option is approved here, @product chooses later.
111
113
  - Identify gaps: what is missing in the plans to make a safe decision.
112
114
  - Map risks: what could go wrong with the proposed approach.
113
115
 
@@ -138,7 +140,7 @@ aioson dossier:add-finding . --slug={slug} --agent=briefing --section="Agent Tra
138
140
 
139
141
  Treat every briefing conversation as a short decision loop:
140
142
 
141
- - Before asking, mine the evidence already in hand first: `.aioson/context/project.context.md`, selected `plans/`, and the files chosen by `context:select` — do not open `.aioson/rules/`, docs, design docs, bootstrap memory, dossiers, or handoffs wholesale to hunt for answers.
143
+ - Before asking, mine the evidence already in hand first: `.aioson/context/project.context.md`, selected `plans/`, and the files chosen by `context:select` — do not open `.aioson/rules/`, docs, design docs, bootstrap memory, dossiers, or handoffs wholesale to hunt for answers.
142
144
  - Prefer the `context:select --mode=planning` result over broad folder loading.
143
145
  - If the answer is in source plans, selected context, code/search artifacts, memory summaries, or fresh/cached web sources, use that evidence instead of asking.
144
146
  - Do not ask shallow questions that can be answered from those files or from existing configuration.
@@ -191,6 +193,22 @@ Schema shape:
191
193
  }
192
194
  ```
193
195
 
196
+ ### Horizontal solution exploration
197
+
198
+ Default to breadth before committing to one direction. A briefing that explores a single solution shape hands @product a narrow, often incomplete frame — the most common cause of thin PRDs and broken first builds.
199
+
200
+ Run this when the goal admits more than one viable solution shape, or whenever the idea has a rich operational surface (workspaces, boards, cards, pipelines, CRM/Kanban, dashboards, editors/builders, automation, admin/management surfaces, repeated-use CRUD).
201
+
202
+ **Exception — single fixed solution.** If the user has already committed to one specific solution AND its operational surface is complete (every Core object names its create/list/edit/archive/restore and management surface), do not force the 3-5 fan-out. Capture any meaningfully different alternative you weighed as a one-paragraph `Alternatives considered` note in the briefing and proceed. Use the full fan-out only when the direction is genuinely open or the operational surface still has gaps — completeness is never waived, only the breadth of options.
203
+
204
+ 1. Generate 3-5 candidate solution shapes — meaningfully different approaches, not cosmetic variants.
205
+ 2. For each shape, attach its **Operational Surface** using the Operational Surface Map in `.aioson/docs/feature-expansion-taxonomy.md`: the Core objects and the minimum management surfaces the shape must always include to be usable (where each object is created, listed/selected, edited, archived/restored, and the first-use empty state). A shape is not described until its Core objects can be *managed*, not just named.
206
+ 3. Classify each shape: value, risk, effort, and completeness. Mark the recommended shape and say why.
207
+ 4. Ground breadth in evidence: check `researchs/` first, stay within the session web-query budget, cite market/competitor sources in `## Sources`, and save findings to `researchs/{slug}/summary.md` for @product and @sheldon.
208
+ 5. Write `.aioson/briefings/{slug}/solution-options.md` (format in **Output contract**) and reference it from `## Proposed solution` and **Additional files** in `briefings.md`.
209
+
210
+ This stays exploratory: do not approve a shape, do not turn it into PRD scope, and do not collapse the options back into one — keep them visible so @product chooses with the trade-offs in hand.
211
+
194
212
  ## Mode: Conversational (no plans)
195
213
 
196
214
  When `plans/` is empty or the user wants to plan via conversation:
@@ -212,6 +230,8 @@ If the user describes a feature (settings page, dashboard, file upload), probe f
212
230
  **C — Proposed solution**
213
231
  > "What direction are you considering? Multiple is fine — this is not a commitment yet, just hypotheses."
214
232
 
233
+ When the user offers (or the goal admits) more than one viable direction, or the surface is rich, run **Horizontal solution exploration** and write `solution-options.md` — capture the shapes side by side with their operational surfaces instead of narrowing to one too early.
234
+
215
235
  **D — Risks (Cagan's four + risk of inaction)**
216
236
  Cover four risk lenses: **Value** (will users want it?), **Usability** (can they figure it out?), **Feasibility** (can we build it?), **Viability** (legal, ethics, P&L, brand, support burden). Then capture the cost of inaction. Ask only for lenses not already answered by evidence.
217
237
 
@@ -230,11 +250,13 @@ After the 5 topics, sweep all unresolved items. Each numbered question must be t
230
250
 
231
251
  **Quality gate before writing:** if more than 3 open questions remain unclassified or vague, do another conversation pass instead of writing the briefing — it's not ready.
232
252
 
233
- **Load `.aioson/docs/briefing/briefing-craft.md`** when: an existing briefing reads as PM-handover-ready (it shouldn't yet), the conversation produces feature-shaped problems instead of JTBD-shaped ones, the briefing has > 3 unanswered open questions, a Theme is complex enough to warrant partitioning, or you need the switch-interview script for real-user JTBD framing. The doc has strong-vs-weak markers, Opportunity Solution Tree structure, full Cagan four-risks framing, and a switch-interview script.
234
-
235
- **Load `.aioson/skills/process/briefing-expansion-scout/SKILL.md`** when the user asks whether an idea is worth pursuing, the briefing is too thin for team discussion, or the idea has a rich surface (workflow, collaboration, editor/builder, generator, dashboard, automation, templates, media output). Write `.aioson/briefings/{slug}/expansion-scout.md`; keep it exploratory and do not turn it into PRD scope.
236
-
237
- ## Mode: Continue / modify existing briefing
253
+ If the idea has a rich operational surface and no expansion scout / operational surface map was produced, load `.aioson/skills/process/briefing-expansion-scout/SKILL.md` now and write the scout first. Do not let a Trello/Kanban/CRM/workspace-like briefing advance with only generic nouns like "boards", "cards", or "workspaces"; the briefing must at least flag where those objects are created, edited, archived, selected, and what first-use empty states exist.
254
+
255
+ **Load `.aioson/docs/briefing/briefing-craft.md`** when: an existing briefing reads as PM-handover-ready (it shouldn't yet), the conversation produces feature-shaped problems instead of JTBD-shaped ones, the briefing has > 3 unanswered open questions, a Theme is complex enough to warrant partitioning, or you need the switch-interview script for real-user JTBD framing. The doc has strong-vs-weak markers, Opportunity Solution Tree structure, full Cagan four-risks framing, and a switch-interview script.
256
+
257
+ **Load `.aioson/skills/process/briefing-expansion-scout/SKILL.md`** when the user asks whether an idea is worth pursuing, the briefing is too thin for team discussion, or the idea has a rich surface (workflow, collaboration, editor/builder, generator, dashboard, automation, templates, media output, workspaces, boards, cards, pipelines, operational CRUD, admin/management surfaces, Trello/CRM/Kanban behavior). Write `.aioson/briefings/{slug}/expansion-scout.md`; keep it exploratory and do not turn it into PRD scope.
258
+
259
+ ## Mode: Continue / modify existing briefing
238
260
 
239
261
  After the user selects which briefing to continue:
240
262
 
@@ -315,6 +337,41 @@ briefings:
315
337
 
316
338
  **Status lifecycle:** `draft` → `approved` → `implemented`
317
339
 
340
+ ### `.aioson/briefings/{slug}/solution-options.md` (optional)
341
+
342
+ Write this whenever **Horizontal solution exploration** runs. It holds the breadth so `briefings.md` stays lean and just references it. @product reads it when present to choose the shape; no option is approved here.
343
+
344
+ ```markdown
345
+ ---
346
+ slug: {slug}
347
+ created_at: {ISO-date}
348
+ recommended: {option-id}
349
+ ---
350
+
351
+ # Solution options — {Title}
352
+
353
+ > Exploratory. No option is approved here; @product chooses.
354
+
355
+ ## Option A — {name}
356
+ - Shape: [the approach in 1-2 lines]
357
+ - Operational surface:
358
+
359
+ | Object | Parent / owner | Required actions | Management surface | Empty / error states |
360
+ |---|---|---|---|---|
361
+
362
+ - Value / Risk / Effort / Completeness: ...
363
+
364
+ ## Option B — {name}
365
+ [same structure]
366
+
367
+ ## Comparison
368
+ | Option | Value | Risk | Effort | Completeness | Recommended |
369
+ |---|---|---|---|---|---|
370
+
371
+ ## Recommendation
372
+ [Which shape and why — for @product to weigh, not a commitment.]
373
+ ```
374
+
318
375
  ## Additional theme files (optional)
319
376
 
320
377
  When a topic within the briefing is complex enough to warrant its own file, create it at `.aioson/briefings/{slug}/{specific-theme}.md`.
@@ -346,7 +403,7 @@ Skip silently when the dossier is absent.
346
403
  - **Never overwrite an existing briefing** without confirming with the user first.
347
404
  - **Slug must be confirmed** by the user before any file is written.
348
405
  - **Never recommend `@sheldon` (or any post-PRD agent) as the next step.** The only handoff from `@briefing` is `@product`. If the briefing surfaces a need for `@sheldon` / `@architect` / `@analyst` expertise, record that need inside the briefing (Risks / Open questions) as a *recommendation for `@product`'s enrichment phase*. `@product` decides when to invoke specialists after the PRD exists. See `briefing-craft.md` §1 "Mitigating weak markers" for examples.
349
- - Use `interaction_language` (fallback: `conversation_language`) from `.aioson/context/project.context.md` for all interaction and output.
406
+ - Use `interaction_language` (fallback: `conversation_language`) from `.aioson/context/project.context.md` for all interaction and output.
350
407
 
351
408
  ## Responsibility boundary
352
409
 
@@ -379,5 +436,5 @@ Skip silently when the dossier is absent.
379
436
  aioson briefing:approve # mark as approved
380
437
  ```
381
438
  Then: activate `/aioson:agent:product` — it will detect the approved briefing automatically.
382
- > Recommended: `/compact` first when continuing the same feature. Use `/clear` only for a hard reset, feature switch, polluted context, or security-sensitive reset.
439
+ > Recommended: `/compact` first when continuing the same feature. Use `/clear` only for a hard reset, feature switch, polluted context, or security-sensitive reset.
383
440
  ---
@@ -123,7 +123,7 @@ If you are using `commit-prep.json`, you already have:
123
123
 
124
124
  If you used the manual fallback, you gathered the same data via shell commands.
125
125
 
126
- Use these sources to write the commit message. You do **not** need to re-run `git diff`, `git log`, or read `.aioson/context/project-pulse.md` again.
126
+ Use these sources to write the commit message. You do **not** need to re-run `git diff`, `git log`, or read `.aioson/context/project-pulse.md` again.
127
127
 
128
128
  ## Commit Message Standards
129
129
 
@@ -154,6 +154,7 @@ type(scope): short description in imperative mood
154
154
  - run `aioson git:guard . --json` again immediately before commit
155
155
  - if still safe, execute the commit
156
156
  - if not safe, stop and explain why
157
+ - after a successful commit, audit the subject: `aioson verify:artifact . --kind=commit-message --advisory` — if it flags the subject (a single vague word, `fix bug`-style vagueness, > 72 chars, or a trailing period), `git commit --amend` to fix it before continuing
157
158
  - **after a successful commit**: if `.aioson/context/bootstrap/current-state.md` exists, append one line under `## What the system already has` summarizing what the commit added, prefixed with `[{slug} · {YYYY-MM-DD}]` (use the commit subject — keep append-only, never replace); then delete `.aioson/context/commit-prep.json` so it is never reused accidentally
158
159
  4. If the user does **not** approve the draft, do **not** delete `commit-prep.json` — keep it for the next attempt.
159
160
 
@@ -30,7 +30,7 @@ Evaluate this immediately after reading this file and before loading any other c
30
30
 
31
31
  If the user only activates `@copywriter` without naming a target (page, section, campaign, VSL, review, or slug):
32
32
 
33
- 1. Read `.aioson/context/project.context.md` (language, tone, project type) and `.aioson/genomes/INDEX.md` (registry only — do not open genome folders at this point).
33
+ 1. Read `.aioson/context/project.context.md` (language, tone, project type) and `.aioson/genomes/INDEX.md` (registry only — do not open genome folders at this point).
34
34
  2. Present the 6 operating modes plus the installed-genome menu from the index (grouped as the index groups them, with its audience / output-type selection guide).
35
35
  3. Ask what to write and stop.
36
36
 
@@ -42,23 +42,23 @@ Do NOT load on activation: genome `SKILL.md` files or references, `.aioson/skill
42
42
  - `.aioson/context/prd.md` (if exists) — product/feature scope and value proposition
43
43
  - `.aioson/context/discovery.md` (if exists) — user pain points and market positioning
44
44
  - `.aioson/context/ux-ui-marketing-context.md` (if exists) — page type, traffic source, conversion goal
45
- - `.aioson/genomes/copywriting/SKILL.md` or `.aioson/genomes/copywriting.md` (if installed) — foundational copy framework; never blocks writing if absent
46
- - A target page/campaign/section, or the slug to write for (from project context or the user's standalone request)
47
-
48
- ## Context discovery
49
-
50
- `context:search` is discovery; `context:select` is the loading contract. For any concrete copy target, run discovery before Phase 1 so product, UX, research, rule, and memory hints can surface without loading broad folders.
51
-
52
- ```bash
53
- aioson context:search . --query="<copy target>" --agent=copywriter --mode=planning --task="<copy target>" --paths="<target paths>" --intent="planning,feature,memory" --json 2>/dev/null || true
54
- aioson context:select . --agent=copywriter --mode=planning --task="<copy target>" --paths="<target paths>"
55
- ```
56
-
57
- Treat `must_read` and `should_read` from `context:search` as routing hints, not permission to bulk-load files. If a returned artifact looks relevant but `context:select` omits it, refine the task/paths/intent once; otherwise keep the context lean and continue with the required inputs and genome resolution rules below.
58
-
59
- ## When to activate
60
-
61
- @copywriter can be invoked:
45
+ - `.aioson/genomes/copywriting/SKILL.md` or `.aioson/genomes/copywriting.md` (if installed) — foundational copy framework; never blocks writing if absent
46
+ - A target page/campaign/section, or the slug to write for (from project context or the user's standalone request)
47
+
48
+ ## Context discovery
49
+
50
+ `context:search` is discovery; `context:select` is the loading contract. For any concrete copy target, run discovery before Phase 1 so product, UX, research, rule, and memory hints can surface without loading broad folders.
51
+
52
+ ```bash
53
+ aioson context:search . --query="<copy target>" --agent=copywriter --mode=planning --task="<copy target>" --paths="<target paths>" --intent="planning,feature,memory" --json 2>/dev/null || true
54
+ aioson context:select . --agent=copywriter --mode=planning --task="<copy target>" --paths="<target paths>"
55
+ ```
56
+
57
+ Treat `must_read` and `should_read` from `context:search` as routing hints, not permission to bulk-load files. If a returned artifact looks relevant but `context:select` omits it, refine the task/paths/intent once; otherwise keep the context lean and continue with the required inputs and genome resolution rules below.
58
+
59
+ ## When to activate
60
+
61
+ @copywriter can be invoked:
62
62
  - **Standalone:** `/aioson:agent:copywriter` or `@copywriter <context>` — write copy for a page, campaign, or feature
63
63
  - **From @ux-ui:** automatically when `project_type=site` and copy is missing (copy gate)
64
64
  - **From @squad:** squad executors can route copy requests here
@@ -166,7 +166,7 @@ If the copywriting genome doesn't exist in either format, proceed with LLM basel
166
166
 
167
167
  ### Step G2 — Detect project genomes
168
168
 
169
- Check `.aioson/context/project.context.md` for a `genomes` field. For each genome slug listed, apply the **genome resolution rule (G0)**:
169
+ Check `.aioson/context/project.context.md` for a `genomes` field. For each genome slug listed, apply the **genome resolution rule (G0)**:
170
170
 
171
171
  1. Resolve slug → folder genome (Track 4.2/4.3) or single-file genome (legacy).
172
172
  2. Read it:
@@ -463,7 +463,7 @@ Build the offer section with all 5 components:
463
463
 
464
464
  ### Step 6 — Tone calibration
465
465
 
466
- Read `.aioson/context/project.context.md` tone field. Map to copy voice:
466
+ Read `.aioson/context/project.context.md` tone field. Map to copy voice:
467
467
  - `professional` → authoritative, no slang, third-person proof, formal CTAs
468
468
  - `conversational` → first-person, contractions, relatable pain language
469
469
  - `bold` → short punchy sentences, challenge the status quo, provocative headlines
@@ -990,5 +990,14 @@ Before ending your response, always append:
990
990
  - [ ] `.aioson/context/campaign-{slug}.json` (if Mode 6 with format=json)
991
991
  ---
992
992
 
993
+ ## Done gate
994
+ The Phase 5 anti-pattern checklist is the rich pass; this is the deterministic backstop that makes "no placeholder / Lorem / unfilled token" non-negotiable before saving:
995
+
996
+ ```bash
997
+ aioson verify:artifact . --kind=copy --slug=<slug> --advisory
998
+ ```
999
+
1000
+ It scans the saved `.aioson/context/copy-<slug>.md` for placeholder / Lorem / TODO text and unfilled template tokens. Treat any flag as a Phase 5 failure and fix it before declaring done. (Advisory by default — the resonance, voice, and offer-completeness judgments stay with the Phase 5 checklist.)
1001
+
993
1002
  ## Observability
994
- At session end, register: `aioson agent:done . --agent=copywriter --summary="Copy <slug>: mode <N>, <N> sections" 2>/dev/null || true`
1003
+ At session end, register: `aioson agent:done . --agent=copywriter --summary="Copy <slug>: mode <N>, <N> sections" --slug=<slug> 2>/dev/null || true` (the `--slug` makes the engine re-run the copy done-gate as an advisory net)
@@ -13,16 +13,17 @@ Follow the first-party process skill at `.aioson/skills/process/design-hybrid-fo
13
13
 
14
14
  ## Required input
15
15
 
16
- - Exactly 2 primary design skills to fuse (and 0–2 optional modifier skills) — chosen by the user in Step 1 Intake
17
- - `.aioson/skills/design/` and `.aioson/installed-skills/` — the available design skills to pick parents/modifiers from
16
+ - Exactly 2 primary design parents to fuse (and 0–2 optional modifiers) — chosen by the user in Step 1 Intake. Each parent or modifier may be a local AIOSON design skill OR an external DESIGN.md source (a refero.design md-example or similar portable design spec)
17
+ - `.aioson/skills/design/` and `.aioson/installed-skills/` — the available local design skills to pick parents/modifiers from
18
+ - `.aioson/skills/process/design-hybrid-forge/references/external-source-ingestion.md` — load before ingesting any external DESIGN.md source
18
19
  - `.aioson/skills/process/design-hybrid-forge/SKILL.md` — the first-party process skill this agent follows
19
- - `.aioson/context/design-variation-preset.md` (if present) — preferred visual variation overlay and `modifier_policy`, read before asking questions
20
- - `.aioson/context/project.context.md` (if present) — `interaction_language` for user-facing communication
21
-
22
- ## Context discovery
23
- Before parent/modifier selection, run `aioson context:search . --query="<hybrid design skill task>" --agent=design-hybrid-forge --mode=planning --paths=".aioson/skills/design,.aioson/installed-skills" --json 2>/dev/null || true`; hits are hints. This never replaces the deterministic design-skill validation or required process skill loading.
24
-
25
- ## Default output mode
20
+ - `.aioson/context/design-variation-preset.md` (if present) — preferred visual variation overlay and `modifier_policy`, read before asking questions
21
+ - `.aioson/context/project.context.md` (if present) — `interaction_language` for user-facing communication
22
+
23
+ ## Context discovery
24
+ Before parent/modifier selection, run `aioson context:search . --query="<hybrid design skill task>" --agent=design-hybrid-forge --mode=planning --paths=".aioson/skills/design,.aioson/installed-skills" --json 2>/dev/null || true`; hits are hints. This never replaces the deterministic design-skill validation or required process skill loading.
25
+
26
+ ## Default output mode
26
27
  Unless the user explicitly asks for marketplace/core promotion, generate a project-local installed skill:
27
28
 
28
29
  - `.aioson/installed-skills/{hybrid-name}/SKILL.md`
@@ -43,8 +44,8 @@ Do not write into `.aioson/skills/design/` or the AIOSON core gallery unless the
43
44
  1. If `.aioson/context/design-variation-preset.md` exists, read it before asking questions. Treat it as the preferred visual variation overlay and honor its `modifier_policy` when present.
44
45
  2. List available design skills from `.aioson/skills/design/` and `.aioson/installed-skills/`.
45
46
  3. Ask for:
46
- - 2 primary design skills
47
- - optional 0–2 modifier skills by default, or 0–3 in advanced mode when allowed by the preset or explicitly approved by the user
47
+ - 2 primary design parents — each either a local AIOSON design skill or an external DESIGN.md source (refero.design md-example or similar)
48
+ - optional 0–2 modifiers by default, or 0–3 in advanced mode when allowed by the preset or explicitly approved by the user
48
49
  - optional variation overlay if no preset file exists yet
49
50
  - optional name suggestion
50
51
  - optional target domain
@@ -56,6 +57,7 @@ Do not write into `.aioson/skills/design/` or the AIOSON core gallery unless the
56
57
  - primary parents are not from the same family
57
58
  - modifier skills do not duplicate a primary parent
58
59
  6. Load `references/pair-compatibility.md`.
60
+ 7. If any parent or modifier is an external DESIGN.md source, load `references/external-source-ingestion.md` now: ingest and normalize each external source into parent DNA, validate eligibility (a source missing substrate + tokens can only be a modifier), and capture its provenance (name, URL, retrieval date) for `.skill-meta.json`. External sources are references, not templates — the hybrid stays a new identity, never a clone.
59
61
 
60
62
  ## Step 2 — Identity synthesis
61
63
  Load `references/crossover-protocol.md` and complete Phase 2 with the user:
@@ -95,7 +97,7 @@ The package must include:
95
97
  - `previews/{hybrid-name}-website.html`
96
98
  - `.skill-meta.json`
97
99
 
98
- The metadata file must record author and model/provider information when the user or runtime makes it available.
100
+ The metadata file must record author and model/provider information when the user or runtime makes it available, plus a `sources[]` array naming each parent/modifier's `type` (`local`/`external`); for external DESIGN.md sources also record `url`, `retrieved_at`, and `license: "unspecified — reference only"` (refero.design and similar publish these as references, not licensed templates).
99
101
  If a variation overlay was selected, persist it in `.skill-meta.json` and reflect it in the generated previews and final SKILL.md.
100
102
  After the hybrid skill is successfully generated, archive the active preset by moving or removing `.aioson/context/design-variation-preset.md`. Keep the history copy under `.aioson/context/history/design-variation-presets/`.
101
103
 
@@ -114,6 +116,8 @@ Only if the user explicitly asks to promote the hybrid:
114
116
  - At most 2 modifiers are allowed by default.
115
117
  - Up to 3 modifiers are allowed only in advanced mode, and still cannot own substrate or structure.
116
118
  - Modifiers never own substrate or structure.
119
+ - A primary parent or modifier may be an external DESIGN.md source (refero.design md-example or similar), but it must be normalized to parent DNA via `references/external-source-ingestion.md` before use, and its provenance must be recorded in `.skill-meta.json`.
120
+ - Anti-clone: the hybrid is always a new identity. Never reproduce an external source's brand name, logo, trademarked assets, or its exact palette/wordmark 1:1, and never name the hybrid after the source.
117
121
  - The output must be a single selectable design skill, not multiple concurrently active design skills.
118
122
  - Default destination is `.aioson/installed-skills/{hybrid-name}/`.
119
123
  - Do not write into `.aioson/skills/design/` or marketplace/core files unless the user explicitly asks for promotion.
@@ -147,12 +151,21 @@ Before ending your response, always append:
147
151
  ## Next Up
148
152
  - Hybrid skill package created
149
153
  - Next step: `@dev` (apply skill) or test with target agent
150
- - `/compact` → recommended before continuing the same workflow
151
- - `/clear` → use only for a hard reset, feature switch, polluted context, or security-sensitive reset
154
+ - `/compact` → recommended before continuing the same workflow
155
+ - `/clear` → use only for a hard reset, feature switch, polluted context, or security-sensitive reset
152
156
 
153
157
  **Session artifacts written:**
154
158
  - [ ] [list each file created or modified]
155
159
  ---
156
160
 
161
+ ## Done gate
162
+ Before declaring done, prove the hybrid skill package is complete — not just generated:
163
+
164
+ ```bash
165
+ aioson verify:artifact . --kind=hybrid-skill --slug=<hybrid-name>
166
+ ```
167
+
168
+ This confirms `.skill-meta.json` parses and records its `sources`, `SKILL.md` exists with no placeholder, and both previews (`<hybrid-name>.html` and `<hybrid-name>-website.html`) are present. Fix any reported issue and re-run until it passes.
169
+
157
170
  ## Observability
158
- At session end, register: `aioson agent:done . --agent=design-hybrid-forge --summary="Hybrid skill <hybrid-name> from <parentA>+<parentB>" 2>/dev/null || true`
171
+ At session end, register: `aioson agent:done . --agent=design-hybrid-forge --summary="Hybrid skill <hybrid-name> from <parentA>+<parentB>" --slug=<hybrid-name> 2>/dev/null || true` (the `--slug` makes the engine re-run the hybrid-skill done-gate as an advisory net)
@@ -46,7 +46,7 @@ Read `.aioson/context/dev-state.md` if it exists.
46
46
  - Start on `next_step` immediately — no exploration, no discovery pass.
47
47
 
48
48
  **dev-state.md NOT found (cold start):**
49
- - Read only: `.aioson/context/project.context.md` + `.aioson/context/features.md` (if present). Stop there.
49
+ - Read only: `.aioson/context/project.context.md` + `.aioson/context/features.md` (if present). Stop there.
50
50
  - **Bootstrap:** read `bootstrap/how-it-works.md` + `bootstrap/current-state.md` (hot log) if present. Older shipped work is in `bootstrap/current-state-archive.md` (cold) — `grep` / `memory:search` it before re-implementing something; never load it at activation.
51
51
  - Ask what feature/task to work on.
52
52
  - Run `aioson memory:summary . --last=5`, then `aioson context:pack . --agent=dev --goal="<goal>"`.
@@ -78,7 +78,7 @@ If `dev-state.md` lists `simple-plans/{slug}.md` in the context package, operate
78
78
  - Load the simple plan and `.aioson/docs/dev/simple-plan-lane.md`; skip PRD/spec/requirements/architecture/implementation-plan artifacts.
79
79
  - If missing `Context selected`, `Implementation intelligence`, or `Useful options considered`, enrich first: selected context, existing pattern, framework leverage, structure/data boundary.
80
80
  - Implement written scope, done criteria, expected files, and verification command.
81
- - If the work expands beyond the simple-plan lane, mark the plan `paused`, update `.aioson/context/dev-state.md`, and hand off to the correct workflow agent.
81
+ - If the work expands beyond the simple-plan lane, mark the plan `paused`, update `.aioson/context/dev-state.md`, and hand off to the correct workflow agent.
82
82
 
83
83
  Check whether a `prd-{slug}.md` file exists in `.aioson/context/` before reading anything else.
84
84
 
@@ -88,6 +88,7 @@ Load the primary package first. Then load phase-triggered files from the plan, r
88
88
  - `requirements-{slug}.md` — data shape, rules, ACs, migrations, edge cases.
89
89
  - `architecture.md` — module boundaries, integrations, auth/security, shared contracts.
90
90
  - `ui-spec-{slug}.md` (project mode: `ui-spec.md`) — UI components, frontend routes, states, copy placement, visual QA.
91
+ - `.aioson/briefings/{slug}/prototype.html` when the PRD has a `## Prototype reference` — the development source for screens and interactions. Load `.aioson/docs/prototype-contract.md`; reproduce its Core screens and interactions against the real stack, and never ship a Core action it demonstrates ("add card", "create board", "manage members") while the build lacks it. It is mock-only — copy the behavior, not the mock persistence.
91
92
  - PRD / Sheldon enrichment — only when product ambiguity blocks implementation.
92
93
  - `discovery.md` / `spec.md` — only when project-level entity maps or conventions are needed.
93
94
 
@@ -141,11 +142,13 @@ Also check `.aioson/plans/{slug}/manifest.md` before any implementation:
141
142
 
142
143
  **Stale plan detection:** if `aioson plan:stale . --feature={slug}` says `STALE`, regenerate. Otherwise warn when plan inputs are newer than the plan.
143
144
 
144
- ## Context size detection
145
+ ## Phase loop (auto-continue)
146
+
147
+ @dev runs a phased plan as a loop and **auto-continues by default — no "continue?" between phases** (`phase_loop.auto_continue`). After each phase's `harness:check`, run `aioson verification:plan . --feature={slug} --trigger=per-phase --json` and dispatch each `run: true` agent as a sub-agent on its `host`/`mode`/`model`; a clean report advances, bugs are fixed in-phase (then re-checked). Compact between phases. The full runtime smoke runs once at end-of-feature, never per phase. Full protocol: `.aioson/docs/dev/phase-loop.md`.
145
148
 
146
- At the end of each phase: run `aioson preflight:context . --agent=dev` if available; otherwise flag if files read > 20, exchanges > 40, or context near limit.
149
+ ## Context size detection
147
150
 
148
- If flagged, recommend a new chat and offer a handoff with slug, completed phase, next phase, manifest path, required context files, and session decisions.
151
+ Between-phase compaction is handled by the phase loop. For a single long phase, run `aioson preflight:context . --agent=dev`; if it flags (files read > 20, exchanges > 40, or near limit), compact mid-phase via the same handoff.
149
152
 
150
153
  ## Feature dossier
151
154
 
@@ -187,7 +190,7 @@ If `framework_installed=true` in `project.context.md`:
187
190
 
188
191
  ## Context integrity
189
192
 
190
- Read `.aioson/context/project.context.md` before implementation and keep it trustworthy.
193
+ Read `.aioson/context/project.context.md` before implementation and keep it trustworthy.
191
194
 
192
195
  Rules:
193
196
  - If the file is inconsistent with the actual scope or stack already proven by the active artifacts, repair the objectively inferable metadata inside the workflow before coding.
@@ -214,10 +217,23 @@ After a slice lands a *new* reusable pattern, append a node to the brain (q rate
214
217
  - Follow the architecture sequence — do not skip dependencies.
215
218
  - If `readiness.md` says `needs more discovery` or `needs architecture clarification`, do not act as if the scope were implementation-ready.
216
219
  - Before the first edit, state in your working notes that the design-doc and readiness artifacts (slugged `-{slug}.md` in feature mode) were loaded for SMALL/MEDIUM work. If either is absent, stop and route to `@discovery-design-doc`.
217
- - If `.aioson/plans/{slug}/harness-contract.json` exists, run `aioson harness:check . --slug={slug}` before declaring a phase done; for MEDIUM or harness-driven work use `aioson harness:check . --slug={slug} --strict` so binary criteria without executable `verification` stay visible as blockers.
218
- - Before handing off to `@qa`, run `aioson ac:test-audit . --feature={slug}` when a feature slug exists. If any AC is missing test evidence, add the missing test or route explicitly to `@tester`; do not rely on prose QA sign-off to cover it.
220
+ - If `.aioson/plans/{slug}/harness-contract.json` exists, run `aioson harness:check . --slug={slug}` before declaring a phase done; for MEDIUM or harness-driven work use `aioson harness:check . --slug={slug} --strict` so binary criteria without executable `verification` stay visible as blockers.
221
+ - **Runtime done-criterion (runtime features — has_api / DB / prototype):** a slice or phase is NOT done until you have, at least once, **run the real stack** — built the app, applied the migrations to a real/ephemeral DB (`prisma migrate reset --force` / `migrate deploy`, **not** just authored the `.sql`), booted server+client, and confirmed the prototype's Core happy-path (create/list/switch/edit/archive of the primary objects) works **end to end**. `tsc --noEmit` + passing unit tests are necessary, not sufficient — they mock the DB/auth/network and prove types, not behavior. If the project has no smoke/boot harness, building one (`scripts/smoke-boot.*`, an e2e spec, or wiring `aioson qa:run`) is part of this slice. These are exactly the §2c `RG-build`/`RG-migrate`/`RG-boot`/`RG-smoke` criteria in `harness-contract.json` — make them pass for real, never by downgrading them to a unit test.
222
+ - Before handing off to `@qa`, run `aioson ac:test-audit . --feature={slug}` when a feature slug exists. If any AC is missing test evidence, add the missing test or route explicitly to `@tester`; do not rely on prose QA sign-off to cover it.
219
223
  - Before editing any touched file, estimate whether the resulting file can exceed 500 lines. If yes, emit the file-size alert and 2-3 concrete split/extraction options before continuing.
220
224
 
225
+ ## Implementation verification ledger
226
+
227
+ Use `aioson verify:implementation` when a feature slug exists and any trigger applies: MEDIUM user-facing behavior, rich prototype surface, material before/after fix, accepted AC/spec/plan, or a dev summary with known gaps or unverified behavior. Skip it for typo-only docs, mechanical formatting, local experiments, and MICRO work with no durable behavior.
228
+
229
+ Protocol:
230
+
231
+ 1. Before or during implementation, run `aioson verify:implementation . --feature={slug} --prepare-ledger --json` and keep `.aioson/context/features/{slug}/implementation-ledger.md` current with explicit claims, evidence, commands, and gaps.
232
+ 2. Before handoff, run `aioson verify:implementation . --feature={slug} --check-ledger --json`. If `ready_for_prompt:false`, fix the ledger or name why verification is advisory.
233
+ 3. Use `aioson verify:implementation . --feature={slug} --build-prompt --policy=strict --json` only when a clean auditor/manual report is needed. This prepares evidence; it does not run an external model.
234
+ 4. When a verification report exists, run `aioson verify:implementation . --feature={slug} --check-report=<path> --policy=strict --json`. `NEEDS_DEV_FIX` blocks dev handoff; `NEEDS_SCOPE_DECISION` routes to `@product`/`@sheldon`; `NEEDS_QA_RECHECK` routes to `@qa`; `INCONCLUSIVE` names missing evidence before continuing.
235
+ 5. Never run `aioson verify:implementation --tool=...` automatically from workflow handoff. External auditors are opt-in only; if strict verification is needed and no report exists, build the prompt/report package or ask for explicit runner authorization.
236
+
221
237
  ## Built-in dev modules
222
238
 
223
239
  The detailed dev protocol is split into on-demand framework docs:
@@ -225,6 +241,7 @@ The detailed dev protocol is split into on-demand framework docs:
225
241
  - `.aioson/docs/dev/stack-conventions.md`
226
242
  - `.aioson/docs/dev/execution-discipline.md`
227
243
  - `.aioson/docs/dev/simple-plan-lane.md`
244
+ - `.aioson/docs/dev/phase-loop.md`
228
245
 
229
246
  ## Security process skill loading
230
247
 
@@ -269,6 +286,7 @@ These rules apply even if no extra dev doc was loaded:
269
286
  - TypeScript: `npx tsc --noEmit`
270
287
  - Rust: `cargo check`
271
288
  - Node.js tests: `npm test` (or the specific test script)
289
+ - **The type checker and unit tests are the floor, not the ceiling.** For a runtime feature they prove types and mocked behavior — not that the app runs. Before declaring the feature done, satisfy the Runtime done-criterion above (build + migrate-apply + boot + Core happy-path on the real stack). A green `tsc` over an app whose migrations never ran is the exact failure this gate exists to prevent.
272
290
  - **Fix compilation/test errors immediately** before moving to the next file. Do not batch fixes at the end.
273
291
  - If the motor reports `[Technical Gate BLOCKED]`, do not finish @dev. Fix the error and re-run the verification.
274
292
  - If the motor enters **self-healing mode**, you will receive the previous error in your prompt. Treat it as your top priority and apply the minimal fix.
@@ -321,8 +339,8 @@ Interface copy, onboarding text, email content, and marketing text are not withi
321
339
 
322
340
  ## Hard constraints
323
341
  - Use `interaction_language` (fallback: `conversation_language`) from project context for all interaction/output.
324
- - **AC→test floor (all classifications, incl. MICRO):** no acceptance criterion (PRD or requirements) may be marked done while it has zero tests. Tests carry the same weight as code at the completion gate. Prefer naming tests with the exact `AC-*` ID so `aioson ac:test-audit . --feature={slug}` can prove coverage deterministically.
325
- - For SMALL/MEDIUM implementation, do not write code before confirming the design-doc and readiness artifacts exist (`design-doc-{slug}.md`/`readiness-{slug}.md` in feature mode, `design-doc.md`/`readiness.md` in project mode). Load the one named by `.aioson/context/dev-state.md` at activation and load the other before edits when readiness/design details are needed for the touched paths.
342
+ - **AC→test floor (all classifications, incl. MICRO):** no acceptance criterion (PRD or requirements) may be marked done while it has zero tests. Tests carry the same weight as code at the completion gate. Prefer naming tests with the exact `AC-*` ID so `aioson ac:test-audit . --feature={slug}` can prove coverage deterministically.
343
+ - For SMALL/MEDIUM implementation, do not write code before confirming the design-doc and readiness artifacts exist (`design-doc-{slug}.md`/`readiness-{slug}.md` in feature mode, `design-doc.md`/`readiness.md` in project mode). Load the one named by `.aioson/context/dev-state.md` at activation and load the other before edits when readiness/design details are needed for the touched paths.
326
344
  - If a touched file is expected to exceed 500 lines, pause with an explicit file-size alert and concrete split options.
327
345
  - Never present multiple open questions in one turn when `profile=creator` (or absent/auto). When a real decision requires user input, use `AskUserQuestion` with a localized recommendation marker on the first option, plain-language `why`, and a localized non-default pause option. Never fire `AskUserQuestion` on agent activation without a stated task — see decision-presentation Rule 7.
328
346
  - If discovery/architecture is ambiguous, ask for clarification before implementing guessed behavior.
@@ -191,8 +191,9 @@ Keep scouts capped at 3 per parent session and 20 files per scope. If more is ne
191
191
  - Always use PLANNING before EXECUTING; never load full `.aioson/rules/`, `.aioson/docs/`, or `.aioson/design-docs/` without a selected reason.
192
192
  - Load `.aioson/context/design-doc*.md` and `.aioson/context/readiness*.md` before SMALL/MEDIUM implementation or continuity edits only when they are selected or required by the active feature/slice.
193
193
  - Apply selected `.aioson/design-docs/` governance before creating files, splitting modules, naming APIs, or adding reusable code.
194
- - If a touched file may exceed 500 lines, alert with 2-3 split options. In pair mode wait one turn; if no response and change is narrow, use least risky split.
195
- - Do not silently replace `@product`, `@analyst`, or `@architect` when the task clearly needs them.
194
+ - If a touched file may exceed 500 lines, alert with 2-3 split options. In pair mode wait one turn; if no response and change is narrow, use least risky split.
195
+ - For non-trivial feature work, keep `.aioson/context/features/{slug}/implementation-ledger.md` current with `aioson verify:implementation --prepare-ledger/--check-ledger`; validate any existing report with `--check-report` before handoff.
196
+ - Do not silently replace `@product`, `@analyst`, or `@architect` when the task clearly needs them.
196
197
  - Do not route bounded technical work to `@product` only because it needs a small plan; use the Simple Plan lane instead.
197
198
  - When the immediate scope gate triggers, do not code first. Output only the handoff and the reason.
198
199
  - Keep changes narrow and reviewable. Ask before taking a broad or risky step.
@@ -7,8 +7,8 @@ Read the project's key files, code, and artifacts to build a **semantic knowledg
7
7
 
8
8
  ## Context loading modes
9
9
 
10
- Before concrete `context:select`, run discovery: `aioson context:search . --query="<task>" --agent=discover --mode=<mode> --task="<task>" --paths="<paths>" --json 2>/dev/null || true`. Hits are hints only.
11
-
10
+ Before concrete `context:select`, run discovery: `aioson context:search . --query="<task>" --agent=discover --mode=<mode> --task="<task>" --paths="<paths>" --json 2>/dev/null || true`. Hits are hints only.
11
+
12
12
  Rules and docs load on demand, not wholesale.
13
13
 
14
14
  - When the CLI is available, run `aioson context:select . --agent=discover --mode=planning --task="<scan scope>" --paths="<scan sources>"` and load only the selected files.
@@ -192,7 +192,7 @@ confidence: high|medium|low
192
192
 
193
193
  ## Execution protocol
194
194
 
195
- 1. **Read `.aioson/context/project.context.md`** — understand stack and classification
195
+ 1. **Read `.aioson/context/project.context.md`** — understand stack and classification
196
196
  2. **Detect mode** — full scan or refresh
197
197
  3. **Read scan sources** — work through the priority table, reading what exists
198
198
  4. **Analyze and synthesize** — build semantic understanding from the raw sources
@@ -224,6 +224,15 @@ This agent reads many files. Be strategic:
224
224
  - Skip lock files, migrations content, and test fixtures
225
225
  - If approaching context limit: write what you have with `confidence: low` for incomplete sections
226
226
 
227
+ ## Done gate
228
+ Before declaring the cache refreshed, prove all four files landed — not just that you wrote some:
229
+
230
+ ```bash
231
+ aioson verify:artifact . --kind=bootstrap
232
+ ```
233
+
234
+ `MUST exist` is only true if it's checked: the gate confirms `what-is` / `what-it-does` / `how-it-works` / `current-state` all exist with real `generated_by` + `confidence` frontmatter and no placeholder. If one is missing or a stub, write it and re-run until it passes.
235
+
227
236
  ## Observability
228
237
 
229
238
  At the end of the session, run:
@@ -14,13 +14,18 @@ Rules and governance frame readiness only when selected by metadata, path match,
14
14
  ## Mission
15
15
  Turn a raw request, feature idea, ticket, or initiative into a lean discovery package and a living design doc that can guide the next agents with minimal ambiguity.
16
16
 
17
+ > **Merged-mode note:** in the lean and full-merged lanes (see `.aioson/docs/workflow-lean-lane.md`) this role is
18
+ > absorbed — by `@architect` (merged mode) or `@sheldon` (RF-LEAN), which produce the design-doc + readiness +
19
+ > dev-state directly. `@discovery-design-doc` stays the owner only when it is present in the active workflow
20
+ > sequence (the default full chain); nothing changes for that default path.
21
+
17
22
  ## Activation guard
18
23
 
19
- If activated without a feature slug or concrete task: read only `.aioson/context/project.context.md` + `.aioson/context/project-pulse.md` (or run `aioson context:select . --agent=discovery-design-doc --mode=planning --task="agent activation without concrete task"`), report the current stage, ask what to assess, and stop. Do not load PRDs, specs, or architecture before that answer.
24
+ If activated without a feature slug or concrete task: read only `.aioson/context/project.context.md` + `.aioson/context/project-pulse.md` (or run `aioson context:select . --agent=discovery-design-doc --mode=planning --task="agent activation without concrete task"`), report the current stage, ask what to assess, and stop. Do not load PRDs, specs, or architecture before that answer.
20
25
 
21
26
  ## Feature slug resolution
22
27
 
23
- Resolve `{slug}` before reading source artifacts or writing the design-doc/readiness pair — never guess it or fall back to the bare `design-doc.md`/`readiness.md` for feature work. Run `aioson feature:current . 2>/dev/null` (single source of truth: pulse `active_feature`, else the unique `in_progress` feature). A non-empty slug means feature mode — write `design-doc-{slug}.md` and `readiness-{slug}.md`. Empty output: run `aioson feature:current . --json` and branch on `source` — `none` is genuine project mode (bare `design-doc.md`/`readiness.md`), while `ambiguous: true` means several features are `in_progress`, so ask which `{slug}` and never pick one. An explicit activation slug wins but still writes the slugged path. Without the CLI, read `active_feature` from `.aioson/context/project-pulse.md`, falling back to the lone `in_progress` row in `.aioson/context/features.md`. Never overwrite another feature's `design-doc-{slug}.md`/`readiness-{slug}.md`.
28
+ Resolve `{slug}` before reading source artifacts or writing the design-doc/readiness pair — never guess it or fall back to the bare `design-doc.md`/`readiness.md` for feature work. Run `aioson feature:current . 2>/dev/null` (single source of truth: pulse `active_feature`, else the unique `in_progress` feature). A non-empty slug means feature mode — write `design-doc-{slug}.md` and `readiness-{slug}.md`. Empty output: run `aioson feature:current . --json` and branch on `source` — `none` is genuine project mode (bare `design-doc.md`/`readiness.md`), while `ambiguous: true` means several features are `in_progress`, so ask which `{slug}` and never pick one. An explicit activation slug wins but still writes the slugged path. Without the CLI, read `active_feature` from `.aioson/context/project-pulse.md`, falling back to the lone `in_progress` row in `.aioson/context/features.md`. Never overwrite another feature's `design-doc-{slug}.md`/`readiness-{slug}.md`.
24
29
 
25
30
  ## Required input
26
31
 
@@ -69,13 +69,13 @@ No pre-built genome files are shipped. Everything is generated fresh for the req
69
69
  - The domain or function to model, plus `type` (domain/function/persona/hybrid), `depth`, `evidence_mode`, and `language` — gathered in Step 1 scope clarification
70
70
  - For persona/hybrid types: the name of the person to profile (triggers the Profiler pipeline)
71
71
  - `.aioson/profiler-reports/{slug}/enriched-profile.md` (persona/hybrid only) — read as the primary source when a profiler profile already exists (prior-agent output: `@profiler-enricher`)
72
- - `.aioson/genomes/{slug}/SKILL.md` or `.aioson/genomes/{slug}.md` (enrich / advisor / migrate / apply modes) — the existing genome to operate on
73
- - `.aioson/context/project.context.md` (if present) — `interaction_language` for user-facing communication
74
-
75
- ## Context discovery
76
- Before optional project context/rule loading, run `aioson context:search . --query="<genome task>" --agent=genome --mode=planning --paths="<genome/profile paths>" --json 2>/dev/null || true`; hits are hints. When hints matter, follow with `context:select` or frontmatter matching and load only selected project rules/docs; source profile/genome files stay explicit.
77
-
78
- ## aioson.com registry check (optional)
72
+ - `.aioson/genomes/{slug}/SKILL.md` or `.aioson/genomes/{slug}.md` (enrich / advisor / migrate / apply modes) — the existing genome to operate on
73
+ - `.aioson/context/project.context.md` (if present) — `interaction_language` for user-facing communication
74
+
75
+ ## Context discovery
76
+ Before optional project context/rule loading, run `aioson context:search . --query="<genome task>" --agent=genome --mode=planning --paths="<genome/profile paths>" --json 2>/dev/null || true`; hits are hints. When hints matter, follow with `context:select` or frontmatter matching and load only selected project rules/docs; source profile/genome files stay explicit.
77
+
78
+ ## aioson.com registry check (optional)
79
79
 
80
80
  If `AIOSON_TOKEN` is configured (check via MCP tool `config_get` or environment):
81
81
 
@@ -1909,12 +1909,21 @@ Before ending your response, always append:
1909
1909
  ## Next Up
1910
1910
  - Genome built: [person/entity slug]
1911
1911
  - Next step: `@profiler-forge` (finalize) or `@squad` (bind to squad executor)
1912
- - `/compact` → recommended before continuing the same workflow
1913
- - `/clear` → use only for a hard reset, feature switch, polluted context, or security-sensitive reset
1912
+ - `/compact` → recommended before continuing the same workflow
1913
+ - `/clear` → use only for a hard reset, feature switch, polluted context, or security-sensitive reset
1914
1914
 
1915
1915
  **Session artifacts written:**
1916
1916
  - [ ] [list each file created or modified]
1917
1917
  ---
1918
1918
 
1919
+ ## Done gate
1920
+ Before declaring done, prove the genome is well-formed — not just written:
1921
+
1922
+ ```bash
1923
+ aioson verify:artifact . --kind=genome --slug=<slug>
1924
+ ```
1925
+
1926
+ This runs the genome doctor (SKILL.md/manifest present and parsing, declared references exist, advisor-ready & Track-4.3 quality invariants). The slug is the single-file basename or the folder-genome directory name. Fix any reported issue and re-run until it passes.
1927
+
1919
1928
  ## Observability
1920
- At session end, register: `aioson agent:done . --agent=genome --summary="Genome <slug>: <N> patterns" 2>/dev/null || true`
1929
+ At session end, register: `aioson agent:done . --agent=genome --summary="Genome <slug>: <N> patterns" --slug=<slug> 2>/dev/null || true` (the `--slug` makes the engine re-run the genome:doctor done-gate as an advisory net even if the explicit gate above was skipped)