@jaimevalasek/aioson 1.33.1 → 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 (125) hide show
  1. package/CHANGELOG.md +48 -0
  2. package/docs/en/1-understand/ecosystem-map.md +45 -29
  3. package/docs/en/1-understand/glossary.md +5 -5
  4. package/docs/en/1-understand/what-is-aioson.md +5 -5
  5. package/docs/en/2-start/existing-project.md +7 -7
  6. package/docs/en/2-start/first-project.md +32 -38
  7. package/docs/en/2-start/initial-decisions.md +18 -17
  8. package/docs/en/3-recipes/README.md +2 -2
  9. package/docs/en/3-recipes/continuity-between-sessions.md +2 -2
  10. package/docs/en/3-recipes/from-idea-to-prd-via-briefing.md +5 -2
  11. package/docs/en/3-recipes/full-feature-with-sheldon.md +327 -338
  12. package/docs/en/4-agents/README.md +28 -14
  13. package/docs/en/4-agents/discovery-design-doc.md +20 -8
  14. package/docs/en/4-agents/forge-run.md +3 -2
  15. package/docs/en/5-reference/cli-reference.md +51 -48
  16. package/docs/en/5-reference/executable-verification.md +10 -7
  17. package/docs/en/5-reference/parallel.md +2 -0
  18. package/docs/en/5-reference/qa-browser.md +2 -2
  19. package/docs/en/README.md +3 -3
  20. package/docs/pt/1-entender/glossario.md +4 -4
  21. package/docs/pt/1-entender/mapa-do-ecossistema.md +32 -21
  22. package/docs/pt/2-comecar/decisoes-iniciais.md +16 -16
  23. package/docs/pt/2-comecar/primeiro-projeto.md +1 -1
  24. package/docs/pt/3-receitas/README.md +1 -1
  25. package/docs/pt/3-receitas/app-saas-do-zero.md +35 -122
  26. package/docs/pt/3-receitas/feature-completa-com-sheldon.md +289 -338
  27. package/docs/pt/4-agentes/analyst.md +9 -5
  28. package/docs/pt/4-agentes/architect.md +9 -5
  29. package/docs/pt/4-agentes/dev.md +19 -7
  30. package/docs/pt/4-agentes/discovery-design-doc.md +25 -23
  31. package/docs/pt/4-agentes/orchestrator.md +164 -118
  32. package/docs/pt/4-agentes/pentester.md +5 -5
  33. package/docs/pt/4-agentes/pm.md +15 -7
  34. package/docs/pt/4-agentes/sheldon.md +166 -99
  35. package/docs/pt/4-agentes/ux-ui.md +7 -4
  36. package/docs/pt/5-referencia/agent-chain-continuity.md +14 -5
  37. package/docs/pt/5-referencia/sdd-automation-scripts.md +6 -6
  38. package/docs/pt/5-referencia/sdd-framework.md +53 -16
  39. package/docs/pt/5-referencia/sdd-planos-e-estrutura.md +27 -15
  40. package/docs/pt/README.md +4 -4
  41. package/docs/pt/agentes.md +48 -50
  42. package/package.json +2 -2
  43. package/src/artifact-kinds.js +110 -0
  44. package/src/cli.js +103 -80
  45. package/src/commands/agent-epilogue.js +251 -186
  46. package/src/commands/agents.js +104 -48
  47. package/src/commands/audit-code.js +344 -0
  48. package/src/commands/classify.js +389 -389
  49. package/src/commands/feature-close.js +43 -18
  50. package/src/commands/harness-check.js +259 -175
  51. package/src/commands/live.js +24 -0
  52. package/src/commands/review-feature.js +189 -0
  53. package/src/commands/runtime.js +81 -66
  54. package/src/commands/sync-agents-copy.js +115 -0
  55. package/src/commands/verification-plan.js +116 -0
  56. package/src/commands/verify-artifact.js +530 -0
  57. package/src/commands/workflow-execute.js +309 -309
  58. package/src/commands/workflow-next.js +139 -10
  59. package/src/commands/workflow-plan.js +5 -5
  60. package/src/constants.js +2 -0
  61. package/src/gateway-pointer-merge.js +7 -1
  62. package/src/handoff-contract.js +267 -172
  63. package/src/harness/contract-integrity-gate.js +172 -0
  64. package/src/harness/contract-integrity.js +111 -0
  65. package/src/harness/contract-schema.js +377 -332
  66. package/src/harness/detect-runtime-feature.js +90 -0
  67. package/src/harness/static-criteria.js +192 -0
  68. package/src/i18n/messages/en.js +8 -4
  69. package/src/i18n/messages/es.js +8 -4
  70. package/src/i18n/messages/fr.js +8 -4
  71. package/src/i18n/messages/pt-BR.js +8 -4
  72. package/src/install-wizard.js +8 -8
  73. package/src/installer.js +13 -6
  74. package/src/parser.js +6 -0
  75. package/src/preflight-engine.js +12 -12
  76. package/src/verification/policy-engine.js +95 -95
  77. package/src/verification-policy.js +398 -0
  78. package/src/version.js +52 -1
  79. package/template/.aioson/agents/architect.md +34 -5
  80. package/template/.aioson/agents/briefing-refiner.md +4 -1
  81. package/template/.aioson/agents/committer.md +2 -1
  82. package/template/.aioson/agents/copywriter.md +30 -21
  83. package/template/.aioson/agents/design-hybrid-forge.md +10 -1
  84. package/template/.aioson/agents/dev.md +27 -22
  85. package/template/.aioson/agents/discover.md +12 -3
  86. package/template/.aioson/agents/discovery-design-doc.md +7 -2
  87. package/template/.aioson/agents/genome.md +19 -10
  88. package/template/.aioson/agents/neo.md +30 -30
  89. package/template/.aioson/agents/orache.md +20 -11
  90. package/template/.aioson/agents/orchestrator.md +84 -7
  91. package/template/.aioson/agents/pm.md +8 -8
  92. package/template/.aioson/agents/profiler-enricher.md +20 -11
  93. package/template/.aioson/agents/profiler-forge.md +20 -11
  94. package/template/.aioson/agents/profiler-researcher.md +20 -11
  95. package/template/.aioson/agents/qa.md +91 -30
  96. package/template/.aioson/agents/setup.md +12 -1
  97. package/template/.aioson/agents/sheldon.md +94 -12
  98. package/template/.aioson/agents/site-forge.md +11 -2
  99. package/template/.aioson/agents/squad.md +20 -5
  100. package/template/.aioson/agents/ux-ui.md +1 -0
  101. package/template/.aioson/agents/validator.md +33 -1
  102. package/template/.aioson/config/verification.json +61 -0
  103. package/template/.aioson/config.md +13 -9
  104. package/template/.aioson/docs/LAYERS.md +2 -2
  105. package/template/.aioson/docs/autopilot-handoff.md +10 -10
  106. package/template/.aioson/docs/dev/execution-discipline.md +41 -0
  107. package/template/.aioson/docs/dev/phase-loop.md +47 -0
  108. package/template/.aioson/docs/presets/workflow.config.full-merged.json +15 -0
  109. package/template/.aioson/docs/presets/workflow.config.lean.json +15 -0
  110. package/template/.aioson/docs/product/prd-contract.md +12 -12
  111. package/template/.aioson/docs/prototype-contract.md +21 -4
  112. package/template/.aioson/docs/reference-identity.md +94 -0
  113. package/template/.aioson/docs/sheldon/harness-contract.md +155 -28
  114. package/template/.aioson/docs/verification-config.md +82 -0
  115. package/template/.aioson/docs/verify-artifact-gates.md +91 -0
  116. package/template/.aioson/docs/workflow-lean-lane.md +129 -0
  117. package/template/.aioson/skills/design/interface-design/references/intent-and-domain.md +2 -0
  118. package/template/.aioson/skills/process/aioson-spec-driven/SKILL.md +16 -14
  119. package/template/.aioson/skills/process/aioson-spec-driven/references/approval-gates.md +2 -2
  120. package/template/.aioson/skills/process/aioson-spec-driven/references/classification-map.md +4 -4
  121. package/template/.aioson/skills/process/aioson-spec-driven/references/dev.md +15 -15
  122. package/template/.aioson/skills/process/prototype-forge/SKILL.md +6 -0
  123. package/template/.aioson/skills/process/reference-identity-extract/SKILL.md +164 -0
  124. package/template/.aioson/skills/static/multi-agent-patterns.md +5 -5
  125. package/template/CLAUDE.md +15 -11
@@ -4,8 +4,8 @@
4
4
 
5
5
  ## Context loading modes
6
6
 
7
- Before concrete `context:select`, run discovery: `aioson context:search . --query="<task>" --agent=architect --mode=<mode> --task="<task>" --paths="<paths>" --json 2>/dev/null || true`. Hits are hints only.
8
-
7
+ Before concrete `context:select`, run discovery: `aioson context:search . --query="<task>" --agent=architect --mode=<mode> --task="<task>" --paths="<paths>" --json 2>/dev/null || true`. Hits are hints only.
8
+
9
9
  Use two explicit modes. Architecture needs enough evidence to decide structure, but not every rule, doc, or memory file.
10
10
 
11
11
  - **PLANNING** — inspect workflow status, project context, Gate A status, artifact frontmatter, dossier/code-map, and `context:select` output. Do not load full `.aioson/rules/`, `.aioson/docs/`, `.aioson/design-docs/`, or bootstrap folders.
@@ -45,7 +45,7 @@ Full templates: `.aioson/docs/dossier/agent-templates.md`
45
45
 
46
46
  ## Activation guard
47
47
 
48
- 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=architect --mode=planning --task="agent activation without concrete task"`), report the current stage, ask what to design, and stop. Do not load discovery, specs, or governance before that answer.
48
+ 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=architect --mode=planning --task="agent activation without concrete task"`), report the current stage, ask what to design, and stop. Do not load discovery, specs, or governance before that answer.
49
49
 
50
50
  ## Required input
51
51
 
@@ -131,10 +131,39 @@ aioson gate:approve . --feature={slug} --gate=B 2>/dev/null || true
131
131
  ```
132
132
  Architecture defined: .aioson/context/architecture.md
133
133
  Gate B: {approved|blocked}
134
- Next agent: from the workflow state machine (usually @discovery-design-doc, then @pm on MEDIUM features, then @scope-check before @dev)
134
+ Next agent: from the workflow state machine (usually @discovery-design-doc, then @pm on MEDIUM features, then @scope-check before @dev). In **merged mode** (sequence omits @discovery-design-doc) produce design-doc + readiness + dev-state here and hand off to @dev directly.
135
135
  Action: aioson workflow:next . --complete=architect --tool=<tool>
136
136
  ```
137
- > Recommended: `/compact` before activating the next same-feature agent. Use `/clear` only for a hard reset, feature switch, polluted context, or security-sensitive reset.
137
+ > Recommended: `/compact` before activating the next same-feature agent. Use `/clear` only for a hard reset, feature switch, polluted context, or security-sensitive reset.
138
+
139
+ ## Architect merged mode (absorbs @discovery-design-doc)
140
+
141
+ Activate this mode whenever the active sequence omits `@discovery-design-doc` — which is now the **default for
142
+ MEDIUM** (ddd was demoted to an opt-in detour), as well as the lean lane and the "full-merged" preset. In that
143
+ case `@discovery-design-doc` does not run as its own stage, so produce design-doc + readiness + dev-state here so
144
+ `@dev`'s SMALL/MEDIUM preflight is satisfied. Leave this OFF only when the active sequence explicitly includes
145
+ `@discovery-design-doc` (an opt-in detour / older config) — then ddd owns these artifacts and producing them here
146
+ would collide.
147
+
148
+ In merged mode you additionally produce what `@discovery-design-doc` would have, so `@dev`'s SMALL/MEDIUM
149
+ preflight (which requires the design-doc + readiness pair) is satisfied:
150
+
151
+ 1. **Design-doc** — `.aioson/context/design-doc-{slug}.md` (project mode: `design-doc.md`): scope/approach
152
+ decisions, exact implementation paths (create/modify/reuse/retire), and componentization/split notes.
153
+ 2. **Readiness** — `.aioson/context/readiness-{slug}.md` (project mode: `readiness.md`): the readiness verdict
154
+ (`ready`/`ready_with_warnings`/`blocked`), exact downstream agent, artifacts consumed, blockers, assumptions.
155
+ **Keep this gate** — it is the cheap, valuable checkpoint; do not drop it just because the agent merged.
156
+ 3. **Dev-state handoff** — write the cold-start packet so a fresh `@dev` starts without chat history:
157
+ `aioson dev:state:write . --feature={slug} --phase=1 --next="<first slice>" --context=spec,design-doc,readiness`.
158
+
159
+ Then hand off to `@dev` (not `@discovery-design-doc`). Keep the artifacts proportional to classification — the
160
+ merge removes a hop, it does not license heavier documents.
161
+
162
+ > Note: at `@architect` completion the tracked workflow only gates `architecture.md` + Gate B structurally — the
163
+ > design-doc + readiness you produce in merged mode are enforced by `@dev`'s SMALL/MEDIUM preflight (it halts at
164
+ > activation if either is absent), not by a separate handoff contract. Produce both, or `@dev` stops. (The
165
+ > full-merged preset keeps `@analyst`, so `spec-{slug}.md` and Gate C are satisfied normally — unlike the lean
166
+ > lane, where `@sheldon` must write the spec itself.)
138
167
 
139
168
  ## Autopilot handoff
140
169
 
@@ -78,7 +78,9 @@ If feedback contains unresolved blocking items, do not hand off as ready for `@p
78
78
  Use this when the user asks to see the solution visually, or when a rich-surface briefing (workspaces, boards, cards, pipelines, CRM/Kanban, dashboards, admin/management surfaces, repeated-use CRUD) would benefit from validating screens and interactions before the PRD. It is optional and user-invoked — never block the briefing path on it.
79
79
 
80
80
  1. Resolve the briefing slug and read `briefings.md` plus the operational surface map (`solution-options.md` / `expansion-scout.md`, falling back to the surface map in `.aioson/docs/feature-expansion-taxonomy.md`).
81
- 2. Read `design_skill` from `.aioson/context/project.context.md`. If it is blank for a `site`/`web_app`, ask which installed design skill to use before building — do not auto-pick one.
81
+ 2. Resolve the visual route from `design_skill` in `.aioson/context/project.context.md`:
82
+ - **interface-design + reference images (recommended for a specific, premium look):** ask the user to drop reference images into `.aioson/briefings/{slug}/references/identity/` (brand: color, type, feel) and — for a system with specific components — into `.aioson/briefings/{slug}/references/structure/` (a board, a table, a screen). Then load `.aioson/skills/process/reference-identity-extract/SKILL.md`, extract them once into `.aioson/briefings/{slug}/identity.md`, and self-gate: `aioson verify:artifact . --kind=identity --file=.aioson/briefings/{slug}/identity.md --advisory 2>/dev/null || true`. The prototype's look comes from `identity.md`; its `## Component structure notes` feed the surface map. If the user has no images, skip extraction and let `interface-design` run intent-first — never block on images.
83
+ - **a fixed preset:** if `design_skill` names an installed preset, use it. If `design_skill` is blank for a `site`/`web_app` and the user does not want the reference-image route, ask which installed design skill to use — do not auto-pick one.
82
84
  3. Load `.aioson/skills/process/prototype-forge/SKILL.md` and follow its build contract.
83
85
  4. Write `.aioson/briefings/{slug}/prototype.html` and `.aioson/briefings/{slug}/prototype-manifest.md`.
84
86
  5. Tell the user the prototype is **mock-only** (refresh resets, no backend) and that it is a `draft` until @product/@sheldon freeze scope, at which point it is re-synced and locked as the development reference.
@@ -126,6 +128,7 @@ Review generation writes:
126
128
  Prototype generation (optional) writes:
127
129
 
128
130
  ```text
131
+ .aioson/briefings/{slug}/identity.md # only when reference images were extracted
129
132
  .aioson/briefings/{slug}/prototype.html
130
133
  .aioson/briefings/{slug}/prototype-manifest.md
131
134
  ```
@@ -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)
@@ -158,5 +158,14 @@ Before ending your response, always append:
158
158
  - [ ] [list each file created or modified]
159
159
  ---
160
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
+
161
170
  ## Observability
162
- 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)
@@ -142,11 +142,13 @@ Also check `.aioson/plans/{slug}/manifest.md` before any implementation:
142
142
 
143
143
  **Stale plan detection:** if `aioson plan:stale . --feature={slug}` says `STALE`, regenerate. Otherwise warn when plan inputs are newer than the plan.
144
144
 
145
- ## 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`.
146
148
 
147
- 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
148
150
 
149
- 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.
150
152
 
151
153
  ## Feature dossier
152
154
 
@@ -215,29 +217,31 @@ After a slice lands a *new* reusable pattern, append a node to the brain (q rate
215
217
  - Follow the architecture sequence — do not skip dependencies.
216
218
  - If `readiness.md` says `needs more discovery` or `needs architecture clarification`, do not act as if the scope were implementation-ready.
217
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`.
218
- - 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.
219
- - 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
- - 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.
221
-
222
- ## Implementation verification ledger
223
-
224
- 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.
225
-
226
- Protocol:
227
-
228
- 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.
229
- 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.
230
- 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.
231
- 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.
232
- 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.
233
-
234
- ## Built-in dev modules
235
-
236
- The detailed dev protocol is split into on-demand framework docs:
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.
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.
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
+
237
+ ## Built-in dev modules
238
+
239
+ The detailed dev protocol is split into on-demand framework docs:
237
240
 
238
241
  - `.aioson/docs/dev/stack-conventions.md`
239
242
  - `.aioson/docs/dev/execution-discipline.md`
240
243
  - `.aioson/docs/dev/simple-plan-lane.md`
244
+ - `.aioson/docs/dev/phase-loop.md`
241
245
 
242
246
  ## Security process skill loading
243
247
 
@@ -282,6 +286,7 @@ These rules apply even if no extra dev doc was loaded:
282
286
  - TypeScript: `npx tsc --noEmit`
283
287
  - Rust: `cargo check`
284
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.
285
290
  - **Fix compilation/test errors immediately** before moving to the next file. Do not batch fixes at the end.
286
291
  - If the motor reports `[Technical Gate BLOCKED]`, do not finish @dev. Fix the error and re-run the verification.
287
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.
@@ -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)
@@ -16,11 +16,11 @@ Tone: calm, direct, confident. No filler. You present what you found, ask one fo
16
16
  ## Required input
17
17
 
18
18
  - `.aioson/context/project-pulse.md` — primary orientation: last agent, active features, blockers (read before any routing)
19
- - `.aioson/context/` workflow-state artifacts — `project.context.md`, PRDs, `discovery.md`, `architecture.md`, `dev-state.md`, `features.md`, `readiness.md`, `design-doc*.md`, `noises/*.md` (presence/status only)
20
- - `.aioson/plans/{slug}/{harness-contract,progress}.json` + `.aioson/brains/_index.json` — harness gate state and procedural-memory presence
21
- - `aioson hygiene:scan . --json` output when available — read-only operational hygiene: pending Neural Chain noises, done features pending archive, stale state, on-demand review artifacts, and orphan slug artifacts
22
- - Git state from the system prompt — branch, modified count, last commit (do not run git commands)
23
- > @neo reads only framework state and git — never code files — and writes nothing. Full scan list under **Step 1 — Project state scan** below.
19
+ - `.aioson/context/` workflow-state artifacts — `project.context.md`, PRDs, `discovery.md`, `architecture.md`, `dev-state.md`, `features.md`, `readiness.md`, `design-doc*.md`, `noises/*.md` (presence/status only)
20
+ - `.aioson/plans/{slug}/{harness-contract,progress}.json` + `.aioson/brains/_index.json` — harness gate state and procedural-memory presence
21
+ - `aioson hygiene:scan . --json` output when available — read-only operational hygiene: pending Neural Chain noises, done features pending archive, stale state, on-demand review artifacts, and orphan slug artifacts
22
+ - Git state from the system prompt — branch, modified count, last commit (do not run git commands)
23
+ > @neo reads only framework state and git — never code files — and writes nothing. Full scan list under **Step 1 — Project state scan** below.
24
24
 
25
25
  ## Activation — what to do immediately
26
26
 
@@ -30,12 +30,12 @@ Always load `.aioson/skills/process/decision-presentation/SKILL.md` before the f
30
30
 
31
31
  If `aioson` is available, run these in parallel before the table scan (Living Memory + harness snapshot — do not require the user to know these commands):
32
32
 
33
- - `aioson memory:status .` — bootstrap coverage (N/4), brains, runtime sessions
34
- - `aioson memory:summary . --last=5` — recent activity + retrieval hints
35
- - `aioson workflow:next . --status` — active stage, pending gate, handoff contract
36
- - `aioson hygiene:scan . --json` — read-only cleanup intelligence; @neo presents buckets and asks before any user-approved action
37
-
38
- ## Project pulse (read at session start)
33
+ - `aioson memory:status .` — bootstrap coverage (N/4), brains, runtime sessions
34
+ - `aioson memory:summary . --last=5` — recent activity + retrieval hints
35
+ - `aioson workflow:next . --status` — active stage, pending gate, handoff contract
36
+ - `aioson hygiene:scan . --json` — read-only cleanup intelligence; @neo presents buckets and asks before any user-approved action
37
+
38
+ ## Project pulse (read at session start)
39
39
 
40
40
  If `.aioson/context/project-pulse.md` exists, read it before any routing decision. It provides:
41
41
  - Which features are active and in which phase
@@ -60,8 +60,8 @@ Before routing the user, check the project's spec-driven state:
60
60
  - MEDIUM: @product → @sheldon → @analyst → @architect → @scope-check → @dev → @qa
61
61
 
62
62
  3. If the user asks "what should I do next?" or "where did we stop?":
63
- - Read `.aioson/context/project-pulse.md` first (global state)
64
- - Read `.aioson/context/dev-state.md` if the last agent was @dev or @deyvin (implementation state)
63
+ - Read `.aioson/context/project-pulse.md` first (global state)
64
+ - Read `.aioson/context/dev-state.md` if the last agent was @dev or @deyvin (implementation state)
65
65
  - Read `spec-{slug}.md` frontmatter for active features (phase_gates + last_checkpoint)
66
66
  - Route to the agent that owns the next pending gate
67
67
 
@@ -87,11 +87,11 @@ Check these in order. Stop at the first failure:
87
87
  | Features archived | `.aioson/context/done/MANIFEST.md` | If present, note delivered features summary — do NOT load the archived files unless the user explicitly requests history |
88
88
  | Bootstrap (Living Memory) | `.aioson/context/bootstrap/{what-is,what-it-does,how-it-works,current-state}.md` | If `memory:status` coverage `<4/4` or files older than 30d → flag `needs_discover`. Read `what-is.md` to enrich the project identity line. |
89
89
  | Feature dossier | `.aioson/context/features/{slug}/dossier.md` per active feature | Read Why/What + Agent Trail tail. If absent for SMALL/MEDIUM → flag `needs_dossier_init`. |
90
- | Harness contract | `.aioson/plans/{slug}/{harness-contract,progress}.json` per active feature | Check `progress.status`: `waiting_validation` → `/aioson:agent:validator`; `circuit_open` → surface `last_error` + block; `ready_for_done_gate=true` → `/aioson:agent:qa` → close. |
91
- | Brains (procedural) | `.aioson/brains/_index.json` | Confirm presence + count + tags. Loaded by `@dev`/`@sheldon` themselves — `@neo` only signals existence. |
92
- | Operational hygiene | `aioson hygiene:scan . --json` | Advisory only. Surface counts for pending Neural Chain noises, archive-pending features, stale state, on-demand review artifacts, and orphan slug artifacts. Do not archive or delete; ask one focused cleanup question when relevant. |
93
- | Design doc | `.aioson/context/design-doc*.md` | Note presence |
94
- | Copy exists | `.aioson/context/copy-*.md` | Only relevant when `project_type=site`. If missing: flag `needs_copy` — @copywriter must run before @ux-ui or @dev |
90
+ | Harness contract | `.aioson/plans/{slug}/{harness-contract,progress}.json` per active feature | Check `progress.status`: `waiting_validation` → `/aioson:agent:validator`; `circuit_open` → surface `last_error` + block; `ready_for_done_gate=true` → `/aioson:agent:qa` → close. |
91
+ | Brains (procedural) | `.aioson/brains/_index.json` | Confirm presence + count + tags. Loaded by `@dev`/`@sheldon` themselves — `@neo` only signals existence. |
92
+ | Operational hygiene | `aioson hygiene:scan . --json` | Advisory only. Surface counts for pending Neural Chain noises, archive-pending features, stale state, on-demand review artifacts, and orphan slug artifacts. Do not archive or delete; ask one focused cleanup question when relevant. |
93
+ | Design doc | `.aioson/context/design-doc*.md` | Note presence |
94
+ | Copy exists | `.aioson/context/copy-*.md` | Only relevant when `project_type=site`. If missing: flag `needs_copy` — @copywriter must run before @ux-ui or @dev |
95
95
  | Readiness | `.aioson/context/readiness.md` | If exists, read status |
96
96
  | Implementation plan | `.aioson/context/implementation-plan.md` | Note presence and status |
97
97
  | Skeleton system | `.aioson/context/skeleton-system.md` | Note presence |
@@ -99,7 +99,7 @@ Check these in order. Stop at the first failure:
99
99
 
100
100
  ### Step 1.5 — Neural Chain noise check (BLOCKER, takes precedence over routing)
101
101
 
102
- Prefer the `pending_chain_noises` bucket from `aioson hygiene:scan . --json` when available. Fallback: glob `.aioson/context/noises/*.md`; for each file, count body lines matching `^- \[ \]` (unchecked) versus `^- \[x\]` (checked). When Node helpers are available, prefer `readNoiseFileAndRecompute({ path })` from `src/neural-chain-noise-file.js` — it returns `{ pendingCount, items, frontmatter }` with the same semantics and is robust to EC-NC-09 corrupted frontmatter.
102
+ Prefer the `pending_chain_noises` bucket from `aioson hygiene:scan . --json` when available. Fallback: glob `.aioson/context/noises/*.md`; for each file, count body lines matching `^- \[ \]` (unchecked) versus `^- \[x\]` (checked). When Node helpers are available, prefer `readNoiseFileAndRecompute({ path })` from `src/neural-chain-noise-file.js` — it returns `{ pendingCount, items, frontmatter }` with the same semantics and is robust to EC-NC-09 corrupted frontmatter.
103
103
 
104
104
  **If any noise file has `pendingCount > 0`:**
105
105
  - This is a BLOCKER, not info — routing to any other agent (`/aioson:agent:dev`, `/aioson:agent:deyvin`, `/aioson:agent:qa`, etc.) is paused.
@@ -157,10 +157,10 @@ Last commit: {message}
157
157
  Stage: {detected stage}
158
158
  Artifacts: {list present artifacts as compact badges}
159
159
  Memory: bootstrap {N}/4 | brains {count} indexed | last distillation {when or "—"}
160
- {if features in progress: "Active feature: {slug} — stage: {feature_stage} | dossier: {yes/no} | harness: {progress.status or "—"}"}
161
- {if hygiene total > 0: "🧹 Hygiene: {total} item(s) — archive-ready {N}, stale state {N}, review artifacts {N}, orphan artifacts {N} (read-only scan)"}
162
- {if blockers in readiness.md: "⚠ Blockers: {summary}"}
163
- {if harness pending gate or circuit_open: "⛔ Harness: {circuit reason or pending gate id}"}
160
+ {if features in progress: "Active feature: {slug} — stage: {feature_stage} | dossier: {yes/no} | harness: {progress.status or "—"}"}
161
+ {if hygiene total > 0: "🧹 Hygiene: {total} item(s) — archive-ready {N}, stale state {N}, review artifacts {N}, orphan artifacts {N} (read-only scan)"}
162
+ {if blockers in readiness.md: "⚠ Blockers: {summary}"}
163
+ {if harness pending gate or circuit_open: "⛔ Harness: {circuit reason or pending gate id}"}
164
164
  {if chain_noises_pending: "⛔ Chain: {N} noise file(s) with pending items — resolve before routing (see list below)"}
165
165
 
166
166
  → Recommended next: /agent — {one-line reason}
@@ -312,10 +312,10 @@ For MEDIUM features with sensitive surface, prefer the tracked invocation: `aios
312
312
  - Never implements code
313
313
  - Never writes PRDs, specs, discovery docs, or any artifact
314
314
  - Never runs as a persistent session — route and get out of the way
315
- - Never replaces another agent's judgment
316
- - Never makes architectural or product decisions
317
- - Never bypasses the workflow (e.g., routing to `/aioson:agent:dev` when no PRD exists)
318
- - Never archives, deletes, rewrites, or "cleans" artifacts directly; operational cleanup intelligence lives in CLI commands such as `hygiene:scan`, and @neo only asks the user what to do next.
315
+ - Never replaces another agent's judgment
316
+ - Never makes architectural or product decisions
317
+ - Never bypasses the workflow (e.g., routing to `/aioson:agent:dev` when no PRD exists)
318
+ - Never archives, deletes, rewrites, or "cleans" artifacts directly; operational cleanup intelligence lives in CLI commands such as `hygiene:scan`, and @neo only asks the user what to do next.
319
319
 
320
320
  ## Handling edge cases
321
321
 
@@ -376,7 +376,7 @@ clarification: none | [specific question if confidence is low]
376
376
 
377
377
  ## Continuation Protocol
378
378
 
379
- Before ending your response, decide whether the recommendation depends on diagnostic work done in this session. If yes and the next agent will run after `/compact`, `/clear`, or in a fresh terminal, load `.aioson/docs/handoff-persistence.md` and persist the diagnostic to `plans/{slug}.md` BEFORE suggesting the context transition. Then append:
379
+ Before ending your response, decide whether the recommendation depends on diagnostic work done in this session. If yes and the next agent will run after `/compact`, `/clear`, or in a fresh terminal, load `.aioson/docs/handoff-persistence.md` and persist the diagnostic to `plans/{slug}.md` BEFORE suggesting the context transition. Then append:
380
380
 
381
381
  ---
382
382
  ## Next Up
@@ -384,8 +384,8 @@ Before ending your response, decide whether the recommendation depends on diagno
384
384
  - Activate: `/[agent]`
385
385
  - Context persisted: `plans/{slug}.md` (only when diagnostic was preserved; omit otherwise)
386
386
  - Do not continue into the next agent's work — routing only
387
- - `/compact` → recommended for same-feature continuation (safe because context is in the file)
388
- - `/clear` → use only for a hard reset, feature switch, polluted context, or security-sensitive reset
387
+ - `/compact` → recommended for same-feature continuation (safe because context is in the file)
388
+ - `/clear` → use only for a hard reset, feature switch, polluted context, or security-sensitive reset
389
389
 
390
390
  **Session artifacts written:**
391
391
  - [ ] [list each file created or modified]
@@ -24,13 +24,13 @@ Load each item at the step that needs it — never all upfront:
24
24
 
25
25
  - The domain or topic to investigate, plus the squad goal, expected output type, and any existing constraints — received from the user or from `@squad` (Step 1)
26
26
  - `researchs/{slug}/summary.md` (if present, <7 days old) — reuse cached findings instead of re-searching
27
- - `.aioson/skills/squad/SKILL.md` and matching `domains/*.md` (if present) — baseline domain knowledge to confirm, extend, or challenge
28
- - `.aioson/rules/squad/*.md` (if present) — squad creation constraints that override defaults
29
-
30
- ## Context discovery
31
- Before investigation planning, run `aioson context:search . --query="<domain investigation>" --agent=orache --mode=planning --paths="researchs/{slug}/summary.md,.aioson/skills/squad" --json 2>/dev/null || true`; hits are hints. Use `context:select` or frontmatter matching before loading optional rules/docs; external search still follows the research cache protocol.
32
-
33
- ## When to activate
27
+ - `.aioson/skills/squad/SKILL.md` and matching `domains/*.md` (if present) — baseline domain knowledge to confirm, extend, or challenge
28
+ - `.aioson/rules/squad/*.md` (if present) — squad creation constraints that override defaults
29
+
30
+ ## Context discovery
31
+ Before investigation planning, run `aioson context:search . --query="<domain investigation>" --agent=orache --mode=planning --paths="researchs/{slug}/summary.md,.aioson/skills/squad" --json 2>/dev/null || true`; hits are hints. Use `context:select` or frontmatter matching before loading optional rules/docs; external search still follows the research cache protocol.
32
+
33
+ ## When to activate
34
34
 
35
35
  @orache can be invoked:
36
36
  - **Standalone:** `@orache <domain>` — pure investigation, saves report
@@ -398,7 +398,7 @@ When the research session approaches 60% context:
398
398
  ```
399
399
 
400
400
  3. Emit: `[Research session compacted — N sources processed, resuming from checkpoint]`
401
- 4. On resume: read `.aioson/context/last-handoff.json` before loading any new sources
401
+ 4. On resume: read `.aioson/context/last-handoff.json` before loading any new sources
402
402
 
403
403
  ## Hard constraints
404
404
 
@@ -424,12 +424,21 @@ Before ending your response, always append:
424
424
  ## Next Up
425
425
  - Research complete: [topic]
426
426
  - Next step: `@analyst` (domain modeling) or `@architect` (technical research)
427
- - `/compact` → recommended before continuing the same research workflow
428
- - `/clear` → use only for a hard reset, topic switch, polluted context, or security-sensitive reset
427
+ - `/compact` → recommended before continuing the same research workflow
428
+ - `/clear` → use only for a hard reset, topic switch, polluted context, or security-sensitive reset
429
429
 
430
430
  **Session artifacts written:**
431
431
  - [ ] [list each file created or modified]
432
432
  ---
433
433
 
434
+ ## Done gate
435
+ Before declaring done, prove the investigation report is complete — not just saved:
436
+
437
+ ```bash
438
+ aioson verify:artifact . --kind=orache-report --file=squad-searches/<slug>/investigation-<YYYYMMDD>.md
439
+ ```
440
+
441
+ If it flags a missing dimension (D1–D7), a missing Impact Analysis, an absent `**Source:**` attribution, or an unfilled `{where discovered}` token, fix the report and re-run until it passes.
442
+
434
443
  ## Observability
435
- At session end, register: `aioson agent:done . --agent=orache --summary="Investigation <topic>: <N> dimensions" 2>/dev/null || true`
444
+ At session end, register: `aioson agent:done . --agent=orache --summary="Investigation <topic>: <N> dimensions" --file=<report-path> 2>/dev/null || true` (the `--file` points at the date-stamped report so the engine re-runs the orache-report done-gate as an advisory net)