arreio 1.1.0 → 1.2.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 (45) hide show
  1. package/README.md +55 -2
  2. package/package.json +1 -1
  3. package/skills/arreio-init/SKILL.md +19 -24
  4. package/skills/learn/SKILL.md +20 -6
  5. package/skills/learn/modules/capture.md +3 -3
  6. package/skills/learn/modules/index.md +2 -2
  7. package/skills/learn/modules/maintain.md +2 -2
  8. package/skills/learn/modules/refine.md +2 -2
  9. package/skills/learn/references/id-generation.md +3 -1
  10. package/skills/learn/references/interaction-mode-propagation.md +21 -1
  11. package/skills/learn/references/templates/artifacts/captured-entry.md +1 -1
  12. package/skills/learn/references/templates/artifacts/index-update.md +1 -1
  13. package/skills/learn/references/templates/artifacts/maintain-log.md +1 -1
  14. package/skills/learn/references/templates/artifacts/refined-entry.md +1 -1
  15. package/skills/plan/SKILL.md +29 -4
  16. package/skills/plan/modules/design.md +9 -5
  17. package/skills/plan/modules/generate.md +9 -9
  18. package/skills/plan/modules/research.md +2 -2
  19. package/skills/plan/modules/scope.md +2 -2
  20. package/skills/plan/references/design-complexity-assessment.md +16 -7
  21. package/skills/plan/references/error-handling.md +1 -0
  22. package/skills/plan/references/id-generation.md +3 -1
  23. package/skills/plan/references/interaction-mode-propagation.md +25 -1
  24. package/skills/plan/references/plan-tier-selection.md +95 -48
  25. package/skills/plan/references/templates/artifacts/design.md +1 -1
  26. package/skills/plan/references/templates/artifacts/scoped-context.md +1 -1
  27. package/skills/review/SKILL.md +19 -4
  28. package/skills/review/modules/analyze.md +2 -2
  29. package/skills/review/modules/prepare.md +2 -2
  30. package/skills/review/modules/scope.md +3 -3
  31. package/skills/review/references/id-generation.md +3 -1
  32. package/skills/review/references/interaction-mode-propagation.md +21 -1
  33. package/skills/review/references/templates/artifacts/findings.md +1 -1
  34. package/skills/review/references/templates/artifacts/review-kit.md +1 -1
  35. package/skills/review/references/templates/artifacts/review-scope.md +1 -1
  36. package/skills/work/SKILL.md +19 -4
  37. package/skills/work/modules/execute.md +2 -2
  38. package/skills/work/modules/prepare.md +3 -3
  39. package/skills/work/modules/triage.md +2 -2
  40. package/skills/work/references/execution-mode-selection.md +21 -2
  41. package/skills/work/references/id-generation.md +3 -1
  42. package/skills/work/references/interaction-mode-propagation.md +21 -1
  43. package/skills/work/references/templates/artifacts/execution-log.md +1 -1
  44. package/skills/work/references/templates/artifacts/execution-plan.md +1 -1
  45. package/skills/work/references/templates/artifacts/work-manifest.md +1 -1
@@ -22,6 +22,7 @@ Run the **[Step 0 verification](../references/error-handling.md)**. Required inp
22
22
  2. **Research Findings Artifact** with `research-id`, `Patterns Found`, `High-Risk Detection` (with `risk_level`), `Tech Stack`.
23
23
  3. `interactionMode` present (default to `smart` if missing; log warning).
24
24
  4. Cross-phase consistency: the research artifact's `scope-id` matches the scope output.
25
+ 5. `force_deep` (boolean from the Orchestrator context; default `false`). It never changes `complexity` or `tier_recommended`; it only raises the amount of material this phase must produce (Steps 4–5).
25
26
 
26
27
  ### Step 1: Approach Selection
27
28
 
@@ -90,6 +91,8 @@ Score the design across five dimensions (0–3 each) and compute the complexity
90
91
  2. Sum the scores (0–15).
91
92
  3. Map to complexity level: `TRIVIAL | LOW | MEDIUM | HIGH | VERY_HIGH`.
92
93
  4. Record all five scores, the total, and the complexity level in the Design Artifact.
94
+ 5. **Compute `tier_recommended`** by evaluating `recommend_tier(complexity, risk_level)` from [plan-tier-selection.md](../references/plan-tier-selection.md) with the actual values from steps 1–3 (complexity-driven default, then the risk floor). Apply the Anti-Default Rules there: `HIGH`/`VERY_HIGH` → `deep`, `MEDIUM` → `standard`, `TRIVIAL`/`LOW` → `fast`, raised only by risk. Do not ignore `risk_level`, and do not pick `standard` by default. `force_deep` and user preference do **not** affect this value.
95
+ 6. **If `force_deep` is true:** also draft rollout notes (feature flags, monitoring, data migration, rollback, performance baseline — or `Not applicable — <reason>` per item) and a cross-system integration map so Generate can fill the Deep sections from real content.
93
96
 
94
97
  ### Step 5: Alternative Approaches
95
98
 
@@ -97,7 +100,7 @@ Document the approaches considered but not selected, with rejection rationale.
97
100
 
98
101
  - **TRIVIAL / LOW complexity:** At least 1 alternative (may be brief).
99
102
  - **MEDIUM complexity:** At least 1 alternative with rationale.
100
- - **HIGH / VERY_HIGH complexity:** At least 2 alternatives with side-by-side rationale.
103
+ - **HIGH / VERY_HIGH complexity, or `force_deep` is true:** At least 2 alternatives with side-by-side rationale.
101
104
 
102
105
  Format: `**[Approach Name]**: [Description] → **Rejected because:** [Rationale]`
103
106
 
@@ -113,7 +116,7 @@ Format: `**[Approach Name]**: [Description] → **Rejected because:** [Rationale
113
116
  1. **Assign a `design-id`** per [id-generation.md](../references/id-generation.md) (format `YYYY-MM-DD-NNN-design`, saved to `docs/plans/.design/`). Reuse it if the user later picks **Edit & Retry**.
114
117
 
115
118
  2. Produce a **Design Artifact** block (as markdown) following the schema in [design.md](../references/templates/artifacts/design.md).
116
- - Include the generated `design-id`, inherited `scope-id` and `research-id`, `interactionMode`, `complexity`, and `tier_recommended` (derived from complexity per [plan-tier-selection.md](../references/plan-tier-selection.md)).
119
+ - Include the generated `design-id`, inherited `scope-id` and `research-id`, `interactionMode`, `complexity`, and `tier_recommended` (the value computed in Step 4.5 — never re-derive it from complexity alone).
117
120
 
118
121
  ### Step 7: Present, Confirm, and Save
119
122
 
@@ -128,13 +131,14 @@ Apply the **[phase confirmation behavior](../references/interaction-mode-propaga
128
131
  - **Smart:** pause only when a pause trigger above is true; otherwise auto-proceed.
129
132
  - **Autopilot:** auto-proceed (no confirmation).
130
133
 
131
- Then save the artifact to `docs/plans/.design/<design-id>.md` (ensure `interactionMode`, `complexity`, and `tier_recommended` are included) and return it, with the `interactionMode` value, to the Orchestrator for the transition to Phase 4 (Generate).
134
+ Then, **in `detailed` mode only**, save the artifact to `docs/plans/.design/<design-id>.md` (ensure `interactionMode`, `complexity`, and `tier_recommended` are included) and return it, with the `interactionMode` value, to the Orchestrator for the transition to Phase 4 (Generate). In `smart` and `autopilot` mode, do **not** write the file; pass the artifact to the next phase in context (see [Artifact Persistence](../references/interaction-mode-propagation.md#artifact-persistence)).
132
135
 
133
136
  ## Output: Design Artifact
134
137
 
135
138
  - Verify that the Design Artifact is complete and valid, containing all required fields: `design-id`, `scope-id`, `research-id`, `interactionMode`, `complexity`, `tier_recommended`, Approach, High-Level Technical Design, Implementation Units (each with Acceptance Criteria), Complexity Assessment, Alternative Approaches, Related Learnings, and Learning Gaps.
136
139
  - Verify that the `complexity` value matches the threshold mapping from the five dimension scores.
137
- - Verify that `tier_recommended` is consistent with the complexity and risk level per [plan-tier-selection.md](../references/plan-tier-selection.md).
138
- - Verify that the artifact is saved to `docs/plans/.design/<design-id>.md` for future reference or reuse.
140
+ - Verify that `tier_recommended` equals `recommend_tier(complexity, risk_level)` per [plan-tier-selection.md](../references/plan-tier-selection.md) (e.g., `complexity: HIGH` → `deep`, not `standard`).
141
+ - Verify that, when `force_deep` is true, the artifact contains ≥ 2 alternatives and the rollout/integration drafts from Step 4.6.
142
+ - Verify that, in `detailed` mode, the artifact is saved to `docs/plans/.design/<design-id>.md`; in `smart`/`autopilot` mode, verify that **no** file was written and the artifact was passed to the next phase in context.
139
143
 
140
144
  > Pass the design artifact to `generate` (Phase 4) for final plan generation.
@@ -30,19 +30,18 @@ Select the plan tier based on complexity, risk, and user preference. For the ful
30
30
  1. **Read inputs:**
31
31
  - `complexity` from the Design Artifact
32
32
  - `risk_level` from the Research Findings (carried via the Design Artifact's complexity assessment)
33
- - `tier_recommended` from the Design Artifact (the algorithm's suggestion)
33
+ - `force_deep` from the Orchestrator context (`--deep` flag; default `false`)
34
+ - `tier_recommended` from the Design Artifact — then **recompute** `recommend_tier(complexity, risk_level)`; if they differ, use the recomputed value and log a warning.
34
35
 
35
36
  2. **Determine user preference:**
36
- - In **Detailed** mode: Ask the user which tier they want, presenting the recommendation. Options: `Fast`, `Standard`, `Deep`, `Auto`.
37
- - In **Smart** mode: Auto-select, unless a pause trigger fires (Deep tier, preference conflicts with risk floor, or CRITICAL risk). If paused, ask the user.
37
+ - If `force_deep` is true: set `tier = deep`, announce "Deep plan forced by `--deep`", and **skip the tier question in every mode**.
38
+ - In **Detailed** mode: Ask the user which tier they want using the prompt in [plan-tier-selection.md](../references/plan-tier-selection.md#asking-the-user-for-preference), filled with the computed complexity, risk level, and `tier_recommended`. Options: `Fast`, `Standard`, `Deep`, `Auto`.
39
+ - In **Smart** mode: Set `user_preference = auto`, unless a pause trigger fires (Deep tier without `force_deep`, preference conflicts with risk floor, or CRITICAL risk). If paused, ask the user.
38
40
  - In **Autopilot** mode: Set `user_preference = auto`; never ask.
39
41
 
40
- 3. **Apply the selection algorithm** (see [plan-tier-selection.md](../references/plan-tier-selection.md)):
41
- - Start from the complexity-driven default tier.
42
- - Upgrade if risk warrants it (respect the risk floor).
43
- - Honor user preference unless it violates the risk floor.
42
+ 3. **Evaluate `select_tier(...)`** from [plan-tier-selection.md](../references/plan-tier-selection.md) with the real values. `auto` resolves to `tier_recommended` — never to `Standard` by default. Honor an explicit preference unless it is below the risk floor.
44
43
 
45
- 4. **Record the selected tier** as `tier` and the algorithm's recommendation as `tier_recommended` (for audit when the user overrides).
44
+ 4. **Record the selected tier** as `tier` and the algorithm's recommendation as `tier_recommended` (for audit when the user overrides or `--deep` is used).
46
45
 
47
46
  ### Step 2: Plan Rendering
48
47
 
@@ -100,6 +99,7 @@ Render the final plan from the [Final Plan template](../references/templates/art
100
99
  5. **Build Operational / Rollout Notes** (Standard/Deep only) from the Design's rollout units:
101
100
  - Feature flags, monitoring, data migration, rollback plan, performance baseline
102
101
  - Skip the section entirely if not applicable (Fast tier, or no rollout units)
102
+ - **Deep tier:** every required item (feature flags, monitoring, data migration, rollback plan, performance baseline) and the cross-system integration map must appear; write `Not applicable — <reason>` for items that truly do not apply (typical for `--deep` on a small change). Never invent content.
103
103
 
104
104
  6. **Right-size:** Per Plan Skill core principles — small tasks → short plans; complex work → more structure. Do not pad a Fast plan with empty sections; do not omit required sections from a Deep plan.
105
105
 
@@ -112,7 +112,7 @@ Render the final plan from the [Final Plan template](../references/templates/art
112
112
 
113
113
  Apply the **[phase confirmation behavior](../references/interaction-mode-propagation.md)** for the current `interactionMode`, using these generate-specific **Smart pause triggers**:
114
114
 
115
- - The selected tier is `Deep`, or
115
+ - The selected tier is `Deep` and `force_deep` is false, or
116
116
  - The user's tier preference conflicts with the risk floor, or
117
117
  - Research reported CRITICAL risk (Security or Payments).
118
118
 
@@ -111,12 +111,12 @@ Apply the **[phase confirmation behavior](../references/interaction-mode-propaga
111
111
  - **Smart:** pause only when a pause trigger above is true; otherwise auto-proceed.
112
112
  - **Autopilot:** auto-proceed (no confirmation).
113
113
 
114
- On any proceed/skip path: save the artifact to `docs/plans/.research/<research-id>.md` (ensure `interactionMode` is included), then return the artifact and `interactionMode` to the Orchestrator for the transition to Phase 3 (Design).
114
+ On any proceed/skip path: in `detailed` mode only, save the artifact to `docs/plans/.research/<research-id>.md` (ensure `interactionMode` is included), then return the artifact and `interactionMode` to the Orchestrator for the transition to Phase 3 (Design). In `smart` and `autopilot` mode, do **not** write the file; pass the artifact to the next phase in context (see [Artifact Persistence](../references/interaction-mode-propagation.md#artifact-persistence)).
115
115
 
116
116
  ## Output: Research Findings Artifact
117
117
 
118
118
  - Verify that the Research Findings Artifact is complete and valid, containing all required fields, and it accurately reflects the user's input and any existing plans, learnings, or requirements found.
119
119
  - Verify that the `interactionMode` value is set correctly based on the user's selection in the Orchestrator skill.
120
- - Verify that the artifact is saved to `docs/plans/.research/<research-id>.md` for future reference or reuse.
120
+ - Verify that, in `detailed` mode, the artifact is saved to `docs/plans/.research/<research-id>.md`; in `smart`/`autopilot` mode, verify that **no** file was written and the artifact was passed to the next phase in context.
121
121
 
122
122
  > Pass the research findings to `design` (Phase 3) for the design phase.
@@ -110,12 +110,12 @@ Apply the **[phase confirmation behavior](../references/interaction-mode-propaga
110
110
  - **Smart:** pause only when a pause trigger above is true; otherwise auto-proceed.
111
111
  - **Autopilot:** auto-proceed (no confirmation).
112
112
 
113
- Then save the artifact to `docs/plans/.scope/<scope-id>.md` (ensure `interactionMode` is included) and return it, with the `interactionMode` value, to the Orchestrator for the transition to Phase 2 (Research).
113
+ Then, **in `detailed` mode only**, save the artifact to `docs/plans/.scope/<scope-id>.md` (ensure `interactionMode` is included) and return it, with the `interactionMode` value, to the Orchestrator for the transition to Phase 2 (Research). In `smart` and `autopilot` mode, do **not** write the file; pass the artifact to the next phase in context (see [Artifact Persistence](../references/interaction-mode-propagation.md#artifact-persistence)).
114
114
 
115
115
  ## Output: Scoped Context Artifact
116
116
 
117
117
  - Verify that the Scoped Context Artifact is complete and valid, containing all required fields, and it accurately reflects the user's input and any existing plans, learnings, or requirements found.
118
118
  - Verify that the `interactionMode` value is set correctly based on the user's selection in the Orchestrator skill.
119
- - Verify that the artifact is saved to `docs/plans/.scope/<scope-id>.md` for future reference or reuse.
119
+ - Verify that, in `detailed` mode, the artifact is saved to `docs/plans/.scope/<scope-id>.md`; in `smart`/`autopilot` mode, verify that **no** file was written and the artifact was passed to the next phase in context.
120
120
 
121
121
  > Pass the scoped context to `research` (Phase 2) for the research phase.
@@ -2,8 +2,8 @@
2
2
  title: Design Complexity Assessment
3
3
  description: Reference for the Design phase. Defines the complexity scoring algorithm across five dimensions, the heuristics for assigning complexity levels, and how complexity maps to interaction-mode pause behavior.
4
4
  type: reference
5
- version: 1.1
6
- timestamp: "2026-08-07"
5
+ version: 1.2
6
+ timestamp: "2026-10-01"
7
7
  ---
8
8
 
9
9
  # Design Complexity Assessment
@@ -22,15 +22,22 @@ Score each dimension from 0 to 3, then sum for a total complexity score (0–15)
22
22
  | ----------------------- | ----------------------- | ----------------------- | --------------------------------- | --------------------------------- |
23
23
  | **Scope Breadth** | Single file | 2–3 files, one module | Multiple modules | Cross-system / cross-repo |
24
24
  | **Integration Surface** | No new integrations | One new internal API | Multiple internal or one external | Multiple external / third-party |
25
- | **Risk Level** | LOW (from research) | MEDIUM (single area) | HIGH (single area) | HIGH (multiple areas) or CRITICAL |
25
+ | **Risk Level** | LOW (from research) | MEDIUM (from research) | HIGH (from research) | CRITICAL (from research) |
26
26
  | **Novelty** | Existing pattern reused | Minor variation | New pattern in familiar domain | New pattern in unfamiliar domain |
27
27
  | **Data / Migration** | No data changes | Additive, backward-safe | Schema change with migration path | Destructive or no rollback path |
28
28
 
29
+ ### Scoring Procedure (follow in order)
30
+
31
+ 1. For each of the five dimensions, write one line of **evidence** (file count, named integrations, matched pattern, migration note) before choosing the score. A score without evidence is not allowed.
32
+ 2. Pick the **lowest score whose column matches the evidence**; if evidence sits between two columns, take the higher (see Notes).
33
+ 3. Add the five scores, then apply the threshold mapping below literally. Do not adjust the level by "feel".
34
+ 4. Do not default to `MEDIUM`: a 1-file tweak is `TRIVIAL`/`LOW`, a cross-module change with an external service is `HIGH`. Let the arithmetic decide.
35
+
29
36
  ### Dimension Definitions
30
37
 
31
38
  - **Scope Breadth** — How many files, modules, or systems the change touches. Read from the Implementation Units' `Files` lists.
32
39
  - **Integration Surface** — Number and kind of APIs/services the solution must connect to. Pull from the Research Findings `Patterns Found` and `Tech Stack`.
33
- - **Risk Level** — Inherited from the Research phase `High-Risk Detection`. Do not re-score; copy the value.
40
+ - **Risk Level** — Inherited from the Research phase `High-Risk Detection`. Do not re-score: map the inherited level to its score (`LOW`=0, `MEDIUM`=1, `HIGH`=2, `CRITICAL`=3). The artifact records the level name; the score is used only in the sum.
34
41
  - **Novelty** — Whether the approach reuses an existing local pattern or introduces a new one. Compare the chosen approach against `Patterns Found` confidence levels.
35
42
  - **Data / Migration** — Whether data schemas change and whether the change is reversible. Read from the Design's `Operational / Rollout Notes` draft.
36
43
 
@@ -85,7 +92,7 @@ Complexity feeds into tier selection in the Generate phase:
85
92
  | MEDIUM | Standard | Full template; phased units; risk table |
86
93
  | HIGH / VERY_HIGH | Deep | Full template + alternatives + rollout ops |
87
94
 
88
- See [plan-tier-selection.md](plan-tier-selection.md) for the complete tier-selection algorithm, including how complexity combines with risk and user preference.
95
+ The table is the **complexity-only** default. Design then applies the risk floor with `recommend_tier(complexity, risk_level)` and writes the result as `tier_recommended`. See [plan-tier-selection.md](plan-tier-selection.md) for the complete algorithm, including user preference and the `--deep` override (which does not change `complexity` or `tier_recommended`).
89
96
 
90
97
  ## Worked Example
91
98
 
@@ -95,18 +102,20 @@ See [plan-tier-selection.md](plan-tier-selection.md) for the complete tier-selec
95
102
  | ------------------- | ----- | ------------------------------------------------- |
96
103
  | Scope Breadth | 2 | Multiple modules: middleware, store, client |
97
104
  | Integration Surface | 2 | One external system (Redis) |
98
- | Risk Level | 2 | HIGH (single area: sessions/auth) |
105
+ | Risk Level | 2 | HIGH (inherited from research) |
99
106
  | Novelty | 1 | Redis is new to the codebase but pattern is known |
100
107
  | Data / Migration | 1 | Additive; sessions expire naturally |
101
108
  | **Total** | **8** | **Complexity: HIGH** |
102
109
 
110
+ Tier: complexity HIGH → Deep; risk HIGH does not lower it → `tier_recommended: deep`.
111
+
103
112
  Result: In Smart mode, this would **not** pause (HIGH, not VERY_HIGH) unless the secondary flags trigger (e.g., 3+ learning gaps).
104
113
 
105
114
  ## Error Handling
106
115
 
107
116
  | Scenario | Recovery |
108
117
  | ---------------------------------------------------------------- | ---------------------------------------- |
109
- | Risk level missing from Research artifact | Default to MEDIUM (score 2); log warning |
118
+ | Risk level missing from Research artifact | Default to MEDIUM (score 1); log warning |
110
119
  | Implementation Units not yet drafted | Defer scoring until units exist |
111
120
  | Two dimensions conflict (e.g., LOW risk + destructive migration) | Use the higher score; log warning |
112
121
  | Score lands exactly on a threshold (e.g., 7) | Round up to the higher level (HIGH) |
@@ -145,6 +145,7 @@ In addition to per-phase verification, the Orchestrator should verify consistenc
145
145
  | `scope-id` in design artifact matches scope output | Reject design; re-run from research |
146
146
  | `plan-id` references the correct design artifact | Reject generate; re-run from design |
147
147
  | `interactionMode` is identical across all artifacts | Log warning; use earliest non-default value |
148
+ | `tier_recommended` equals `recommend_tier(complexity, risk_level)` | Recompute; use the recomputed value; log warning |
148
149
 
149
150
  ## Notes
150
151
 
@@ -12,7 +12,7 @@ Shared ID algorithm for the `scope`, `research`, `design`, and `generate` phases
12
12
 
13
13
  ## ID Format by Phase
14
14
 
15
- | Phase | ID format | Saved to |
15
+ | Phase | ID format | Saved to (detailed only) |
16
16
  | -------- | ----------------------------------- | -------------------------------- |
17
17
  | Scope | `YYYY-MM-DD-NNN-scope` | `docs/plans/.scope/<id>.md` |
18
18
  | Research | `YYYY-MM-DD-NNN-research` | `docs/plans/.research/<id>.md` |
@@ -21,6 +21,8 @@ Shared ID algorithm for the `scope`, `research`, `design`, and `generate` phases
21
21
 
22
22
  `<kebab-name>` is the plan title in lowercase-hyphen form (no stopwords).
23
23
 
24
+ > **Persistence by mode.** The "Saved to" column and the directory-listing algorithm below apply **only in `detailed` mode**. In `smart`/`autopilot` mode phase artifacts are not written, so no directory is listed: Allocate the plan-id `YYYY-MM-DD-NNN` once at Scope by counting today's final plan files in `docs/plans/` (excluding hidden dirs); every phase id is `<plan-id>-<phase>` (e.g. `2026-09-02-001-scope`). See [Artifact Persistence](interaction-mode-propagation.md#artifact-persistence).
25
+
24
26
  ## Algorithm (new artifact)
25
27
 
26
28
  ```
@@ -25,11 +25,15 @@ Reference for how `interactionMode` propagates through the Plan pipeline (Scope
25
25
  | **Scope** | Present artifact; ask Proceed/Edit/Abort | Auto-proceed; pause if 3+ learning gaps, non-software domain, or conflicting requirements | Auto-proceed |
26
26
  | **Research** | Show findings; ask Proceed/Edit/Abort | Auto-proceed; pause if HIGH/CRITICAL risk with <3 patterns, or zero patterns found | Auto-proceed |
27
27
  | **Design** | Show units; ask Proceed/Edit/Abort | Auto-proceed; pause if VERY_HIGH complexity, HIGH risk + <3 patterns, 3+ scope gaps, or Novelty=3 | Auto-proceed |
28
- | **Generate** | Show plan; ask Proceed/Edit/Skip/Abort | Auto-proceed; pause if tier=Deep, tier preference conflicts with risk floor, or CRITICAL risk | Auto-proceed |
28
+ | **Generate** | Show plan; ask Proceed/Edit/Skip/Abort | Auto-proceed; pause if tier=Deep (not when forced by `--deep`), tier preference conflicts with risk floor, or CRITICAL risk | Auto-proceed |
29
29
  | **Tasks** | Ask Create/Review/No (full file content shown) | Ask Create/Review/No (summary shown) | Ask Create/Review/No (always asks) |
30
30
 
31
31
  **Smart mode pauses only on each phase's documented triggers above** (the canonical list lives in each module's confirmation step; this table is a summary).
32
32
 
33
+ ## `--deep` Flag
34
+
35
+ `/plan --deep <task>` sets `force_deep: true` in the Orchestrator context. It is orthogonal to `interactionMode`: in every mode the Generate phase selects the Deep tier without asking about tier. It does not add pauses and removes the Smart-mode "tier is Deep" pause. See [plan-tier-selection.md](plan-tier-selection.md#deep-override---deep).
36
+
33
37
  ## Artifact Schema
34
38
 
35
39
  All phase artifacts (Scope 1-4) include:
@@ -73,3 +77,23 @@ status: pending | complete | failed
73
77
  | Invalid mode value | Reject; re-prompt Orchestrator |
74
78
  | Artifact missing mode field | Assume "smart"; log warning; continue |
75
79
  | Timeout/connection lost | Pause; ask user to retry or abort |
80
+
81
+ ## Artifact Persistence
82
+
83
+ Phase artifacts (Scope, Research, Design) are **handoff data between phases**, not deliverables. Whether they are written to disk depends on `interactionMode`:
84
+
85
+ | Mode | Phase artifacts (`docs/plans/.scope/`, `.research/`, `.design/`) | Phase handoff |
86
+ | ------------- | ---------------------------------------- | ---------------------------------------------- |
87
+ | **Detailed** | Written to the hidden directories (audit trail; creating the directory on first use) | Artifact is written, shown, then passed on |
88
+ | **Smart** | **Not written** | Artifact is held in context and passed in-memory to the next phase |
89
+ | **Autopilot** | **Not written** | Artifact is held in context and passed in-memory to the next phase |
90
+
91
+ **Always written, in every mode:** the final plan in `docs/plans/` (+ `docs/plans/index.md`) and any task files in `docs/tasks/<plan-id>/`.
92
+
93
+ **Rules:**
94
+
95
+ - The artifact schema, quality gates, cross-phase ID checks, and pause triggers are **unchanged** — only the disk write is skipped. Validate and pass the in-memory artifact exactly as you would the file.
96
+ - Never create the hidden directories in `smart`/`autopilot`; no placeholder or empty files.
97
+ - **ID allocation without files:** Allocate the plan-id `YYYY-MM-DD-NNN` once at Scope by counting today's final plan files in `docs/plans/` (excluding hidden dirs); every phase id is `<plan-id>-<phase>` (e.g. `2026-09-02-001-scope`).
98
+ - If the user switches to `detailed` mid-run, write the artifacts produced so far, then continue writing.
99
+ - Because nothing is on disk, **Edit & Retry** reuses the in-memory artifact and its id (no file to overwrite).
@@ -2,8 +2,8 @@
2
2
  title: Plan Tier Selection
3
3
  description: Reference for the Generate phase. Defines the Fast/Standard/Deep tier model, the selection algorithm that combines complexity, risk, and user preference, and the template sections each tier requires.
4
4
  type: reference
5
- version: 1.1
6
- timestamp: "2026-08-07"
5
+ version: 1.2
6
+ timestamp: "2026-10-01"
7
7
  ---
8
8
 
9
9
  # Plan Tier Selection
@@ -24,40 +24,45 @@ Tier selection happens at the start of the Generate phase, after reading the Des
24
24
 
25
25
  ## Selection Algorithm
26
26
 
27
+ Tier selection is **two pure functions**. Run them step by step with the real values; never shortcut to a "typical" tier.
28
+
29
+ Values are compared case-insensitively (`HIGH` = `High`). `risk_level` comes from the Research Findings; `complexity` from the Design Artifact.
30
+
27
31
  ```
28
- function select_tier(complexity, risk_level, user_preference):
29
- # 1. Start from complexity-driven default
30
- if complexity in [TRIVIAL, LOW]:
31
- base_tier = Fast
32
- elif complexity == MEDIUM:
33
- base_tier = Standard
34
- else: # HIGH or VERY_HIGH
35
- base_tier = Deep
36
-
37
- # 2. Upgrade tier if risk warrants it
38
- if risk_level == HIGH and base_tier == Fast:
39
- base_tier = Standard
40
- if risk_level == CRITICAL:
41
- base_tier = Deep
42
-
43
- # 3. Honor explicit user preference (never downgrade below risk floor)
44
- if user_preference == "fast" and risk_level not in [HIGH, CRITICAL]:
45
- return Fast
46
- if user_preference == "deep":
47
- return Deep
48
- if user_preference == "standard" and risk_level != CRITICAL:
49
- return Standard
50
-
51
- return base_tier
32
+ # A. Recommendation — computed in the Design phase (Step 4) and re-computed in Generate (Step 1).
33
+ # Depends ONLY on complexity and risk. Never on user input or --deep.
34
+ function recommend_tier(complexity, risk_level):
35
+ # 1. Complexity-driven default
36
+ if complexity in [TRIVIAL, LOW]: tier = Fast
37
+ elif complexity == MEDIUM: tier = Standard
38
+ else: # HIGH or VERY_HIGH tier = Deep
39
+
40
+ # 2. Risk floor (see table below) — may only raise the tier
41
+ if risk_level == HIGH and tier == Fast: tier = Standard
42
+ if risk_level == CRITICAL: tier = Deep
43
+ return tier
44
+
45
+ # B. Selection — computed in the Generate phase (Step 1).
46
+ function select_tier(complexity, risk_level, user_preference, force_deep):
47
+ recommended = recommend_tier(complexity, risk_level)
48
+ floor = risk_floor(risk_level) # Fast | Standard | Deep
49
+
50
+ if force_deep: return Deep # explicit user request; always honored
51
+ if user_preference == "auto": return recommended # Auto = the algorithm, NOT a fixed tier
52
+ # Explicit tier: honor it, but never go below the risk floor
53
+ return max(user_preference, floor) # order: Fast < Standard < Deep
52
54
  ```
53
55
 
56
+ `tier_recommended` is **always** `recommend_tier(...)` — it is never changed by user preference or `--deep`. `tier` is `select_tier(...)`. When they differ, the plan records an auditable override.
57
+
54
58
  ### Inputs
55
59
 
56
- | Input | Source | Values |
57
- | ----------------- | ------------------------------- | ------------------------------------- |
58
- | `complexity` | Design Artifact | TRIVIAL, LOW, MEDIUM, HIGH, VERY_HIGH |
59
- | `risk_level` | Research Findings Artifact | LOW, MEDIUM, HIGH, CRITICAL |
60
- | `user_preference` | User (asked in Generate Step 1) | `fast`, `standard`, `deep`, or `auto` |
60
+ | Input | Source | Values |
61
+ | ----------------- | --------------------------------------------------- | ------------------------------------- |
62
+ | `complexity` | Design Artifact | TRIVIAL, LOW, MEDIUM, HIGH, VERY_HIGH |
63
+ | `risk_level` | Research Findings Artifact | LOW, MEDIUM, HIGH, CRITICAL |
64
+ | `user_preference` | User (asked in Generate Step 1; see mode behavior) | `fast`, `standard`, `deep`, or `auto` |
65
+ | `force_deep` | Orchestrator context (`--deep` flag, SKILL.md) | `true` or `false` (default `false`) |
61
66
 
62
67
  ### Risk Floor
63
68
 
@@ -72,6 +77,22 @@ The risk level sets a **minimum tier** that user preference cannot override:
72
77
 
73
78
  Rationale: High/critical risk mandates enough structure to capture alternatives, rollout, and rollback — even if the user wants a short plan.
74
79
 
80
+ ### Anti-Default Rules (read before computing)
81
+
82
+ - **`Standard` is not a neutral default.** It is the result only for `MEDIUM` complexity (or a `HIGH` risk floor lifting a Fast result). `HIGH`/`VERY_HIGH` complexity → **Deep**; `TRIVIAL`/`LOW` → **Fast** unless risk lifts it.
83
+ - **Compute, then write.** Fill the function inputs with the actual `complexity` and `risk_level`, evaluate, and only then write `tier_recommended`. Do not copy a tier from an example in this file.
84
+ - **Auto means "use `tier_recommended`".** Never substitute `Standard` because it is the middle option.
85
+
86
+ ### Deep Override (`--deep`)
87
+
88
+ The user can force a Deep plan in **any** interaction mode (including Autopilot and Smart) by invoking `/plan --deep <task>` (parsing rules in [SKILL.md](../SKILL.md#skill-invocation)).
89
+
90
+ - `force_deep = true` → `tier = deep`, regardless of complexity, risk, or `user_preference`. The tier question is **not asked**, in any mode.
91
+ - `tier_recommended` still holds the algorithm's result, so the override is auditable (`tier: deep`, `tier_recommended: fast`, etc.).
92
+ - Deep only adds structure, so it never violates the risk floor.
93
+ - The Smart-mode "tier is Deep" pause does **not** fire for a `--deep` plan (the user already chose it). CRITICAL-risk pause still applies.
94
+ - Because Design runs before Generate, the Design phase also receives `force_deep` so it produces the material a Deep plan needs (≥ 2 alternatives, rollout draft, integration map) — see [design.md](../modules/design.md) Steps 4–5.
95
+
75
96
  ## Tier Section Requirements
76
97
 
77
98
  ### Fast Tier
@@ -109,33 +130,42 @@ Required sections (all Standard sections, plus):
109
130
  - Explicit complexity and tier in frontmatter
110
131
  - Cross-system integration map (data-flow or sequence diagram)
111
132
 
133
+ **Required does not mean invented.** On a Deep plan forced by `--deep` for a small change, a required item that genuinely does not apply (e.g., data migration for a doc-only change) is written as `Not applicable — <one-line reason>`. Never omit the item and never fabricate content to fill it.
134
+
112
135
  ## Interaction Mode Behavior
113
136
 
114
- | Mode | Tier Selection Behavior |
115
- | --------- | --------------------------------------------------------------------------------------------------- |
116
- | Detailed | Ask the user to confirm the selected tier; offer to override |
117
- | Smart | Auto-select; pause **only** if selected tier is Deep (or user preference conflicts with risk floor) |
118
- | Autopilot | Auto-select with `user_preference = auto`; never pause |
137
+ | Mode | `user_preference` | Tier Selection Behavior |
138
+ | --------- | ------------------------------------------------------ | --------------------------------------------------------------------------------------------------------- |
139
+ | Detailed | Asked (prompt below), unless `force_deep` | Ask the user; offer to override. `force_deep` → no question, announce "Deep plan forced by `--deep`" |
140
+ | Smart | `auto` (asked only if a pause trigger fires) | Auto-select; pause **only** on the triggers below |
141
+ | Autopilot | `auto` | Auto-select; never pause |
142
+
143
+ `force_deep = true` overrides `user_preference` in every row.
119
144
 
120
145
  **Smart mode pause triggers:**
121
146
 
122
- - Selected tier is Deep (signals complex work worth a review)
147
+ - Selected tier is Deep **and `force_deep` is false** (signals complex work worth a review)
123
148
  - User preference conflicts with risk floor (e.g., user wants Fast but risk is HIGH)
124
149
  - Research phase reported CRITICAL risk (Security or Payments)
125
150
 
126
151
  ## Asking the User for Preference
127
152
 
128
- In Detailed mode (or when Smart mode pauses), ask the user one question:
153
+ In Detailed mode (or when Smart mode pauses), ask one question. **Build it from the computed values — every `<…>` placeholder below must be replaced; never print an example tier.**
129
154
 
130
155
  ```
131
- Based on the design complexity (HIGH) and risk level (HIGH), I recommend the Standard tier.
156
+ Design complexity is <complexity> (score <total>/15) and risk level is <risk_level>.
157
+ I recommend the <tier_recommended> tier.
132
158
  Which tier would you like for the plan?
133
159
  - Fast: Short plan, minimal structure (1-2 pages)
134
- - Standard: Full plan with phased units and risk table (2-4 pages) [Recommended]
160
+ - Standard: Full plan with phased units and risk table (2-4 pages)
135
161
  - Deep: Comprehensive plan with alternatives and rollout ops (4+ pages)
136
- - Auto: Let the algorithm decide (result: Standard)
162
+ - Auto: Use the recommendation (result: <tier_recommended>)
137
163
  ```
138
164
 
165
+ - Append ` [Recommended]` to the option that equals `tier_recommended`.
166
+ - If the risk floor makes an option unavailable (e.g., Fast at HIGH risk), keep it listed but say "(below risk floor — will be raised to <floor>)".
167
+ - Tip to include once in the question text: `/plan --deep` forces a Deep plan without this question.
168
+
139
169
  Record the user's choice as the selected **`tier`** in the final plan frontmatter; preserve the algorithm's suggestion as **`tier_recommended`** so an override is auditable.
140
170
 
141
171
  ## Worked Examples
@@ -143,19 +173,34 @@ Record the user's choice as the selected **`tier`** in the final plan frontmatte
143
173
  ### Example 1: Low complexity, low risk
144
174
 
145
175
  - `complexity = LOW`, `risk_level = LOW`, `user_preference = auto`
146
- - Base tier: Fast. No risk upgrade. Auto preference → **Fast**.
176
+ - `recommend_tier` → Fast. Auto → **Fast** (`tier_recommended: fast`).
177
+
178
+ ### Example 2: Medium complexity, medium risk, auto
179
+
180
+ - `complexity = MEDIUM`, `risk_level = MEDIUM`, `user_preference = auto`
181
+ - `recommend_tier` → Standard. Auto → **Standard** (`tier_recommended: standard`).
147
182
 
148
- ### Example 2: Medium complexity, high risk, user wants fast
183
+ ### Example 3: Medium complexity, high risk, user wants fast
149
184
 
150
185
  - `complexity = MEDIUM`, `risk_level = HIGH`, `user_preference = fast`
151
- - Base tier: Standard. Risk upgrade: already Standard (HIGH floor). User wants Fast but HIGH risk floor is Standard → **Standard**.
186
+ - `recommend_tier` → Standard. Floor (HIGH) = Standard. `max(Fast, Standard)` → **Standard**.
152
187
  - Smart mode would pause (preference conflicts with risk floor).
153
188
 
154
- ### Example 3: High complexity, critical risk (payments)
189
+ ### Example 4: High complexity, high risk, auto
190
+
191
+ - `complexity = HIGH` (score 8), `risk_level = HIGH`, `user_preference = auto`
192
+ - `recommend_tier` → **Deep** (HIGH complexity → Deep; not Standard). Auto → **Deep** (`tier_recommended: deep`).
193
+ - Smart mode pauses (Deep tier).
194
+
195
+ ### Example 5: High complexity, critical risk (payments)
155
196
 
156
197
  - `complexity = HIGH`, `risk_level = CRITICAL`, `user_preference = auto`
157
- - Base tier: Deep. CRITICAL forces Deep. Auto preference → **Deep**.
158
- - Smart mode pauses (Deep tier + CRITICAL risk).
198
+ - `recommend_tier` → Deep. Auto → **Deep**. Smart mode pauses (Deep + CRITICAL).
199
+
200
+ ### Example 6: `--deep` on a small change, Autopilot
201
+
202
+ - `complexity = LOW`, `risk_level = LOW`, `force_deep = true`, mode = autopilot
203
+ - `tier_recommended: fast`, `tier: deep`. No question asked, no pause. Required Deep sections without real content are written as `Not applicable — <reason>`.
159
204
 
160
205
  ## Error Handling
161
206
 
@@ -165,10 +210,12 @@ Record the user's choice as the selected **`tier`** in the final plan frontmatte
165
210
  | `risk_level` missing from Research | Default to MEDIUM; log warning |
166
211
  | User provides invalid preference value | Treat as `auto`; log warning |
167
212
  | Selected tier conflicts with risk floor | Enforce risk floor; inform user of the override |
213
+ | Design's `tier_recommended` differs from `recommend_tier(complexity, risk_level)` | Recompute in Generate; the recomputed value is authoritative; log warning |
214
+ | `--deep` given but the phase artifact lacks the rollout/alternatives material | Generate writes `Not applicable — <reason>` for items that do not apply; never invents content |
168
215
 
169
216
  ## Notes
170
217
 
171
218
  - Tier choice is recorded in the final plan's frontmatter as `tier: fast | standard | deep`
172
219
  - The tier also influences the Tasks phase: Fast tier often produces 1–3 tasks; Standard 4–8; Deep 8+
173
- - If the user overrides the tier, preserve the algorithm's recommendation in a `tier_recommended` field for audit
220
+ - If the user overrides the tier (explicit choice or `--deep`), preserve the algorithm's recommendation in a `tier_recommended` field for audit
174
221
  - Tier selection is the primary "right-sizing" mechanism — Small tasks → short plans; complex work → more structure (per Plan Skill core principles)
@@ -98,7 +98,7 @@ tier_recommended: fast | standard | deep
98
98
  - [Gap name] — [Follow-up action via /learn]
99
99
  ```
100
100
 
101
- Also save the design artifact to `docs/plans/.design/<design-id>.md` for future reference or reuse. The `interactionMode` and `complexity` values flow into the Generate artifact for tier selection.
101
+ In `detailed` mode only, also save the design artifact to `docs/plans/.design/<design-id>.md` for future reference or reuse. The `interactionMode` and `complexity` values flow into the Generate artifact for tier selection. In `smart`/`autopilot` mode, do not write it; pass it to the next phase in context.
102
102
 
103
103
  ## Validation Rules
104
104
 
@@ -50,4 +50,4 @@ action: resume | review | archive | delete | create-new | none
50
50
  - (Empty list if none found)
51
51
  ```
52
52
 
53
- Also save the scoped context to `docs/plans/.scope/<scope-id>.md` for future reference or reuse. The `interactionMode` value flows into `research`, `design`, and `generate` artifacts.
53
+ In `detailed` mode only, also save the scoped context to `docs/plans/.scope/<scope-id>.md` for future reference or reuse. The `interactionMode` value flows into `research`, `design`, and `generate` artifacts. In `smart`/`autopilot` mode, do not write it; pass it to the next phase in context.
@@ -35,6 +35,8 @@ Store in the context object:
35
35
  interactionMode: detailed | smart | autopilot
36
36
  ```
37
37
 
38
+ **Artifact persistence:** intermediate phase artifacts are written to disk **only in `detailed` mode**. In `smart`/`autopilot` they are passed between phases in context and never written (see `references/interaction-mode-propagation.md#artifact-persistence`). Final deliverables are always written.
39
+
38
40
  **Propagation:** `interactionMode` flows into the `scope`, `prepare`, `analyze`, and `report` artifacts; each downstream phase reads it to adjust confirmation behaviour (detailed = pause every transition; autopilot = run all; smart = pause only on `blocker`/`major` findings or detected scope creep).
39
41
 
40
42
  ## Orchestration Implementation
@@ -58,7 +60,8 @@ Each phase runs sequentially: the orchestrator calls the phase module, receives
58
60
 
59
61
  Before starting the review pipeline, the orchestrator verifies that required folders exist:
60
62
 
61
- - `docs/review/.scope/`, `docs/review/.prepare/`, `docs/review/.analyze/`, `docs/review/.report/` — must exist for saving the four phase artifacts
63
+ - `docs/review/.report/` — must exist for saving the Review Report (always written)
64
+ - `docs/review/.scope/`, `docs/review/.prepare/`, `docs/review/.analyze/` — **`detailed` mode only**, for saving the intermediate phase artifacts; do not create them in `smart`/`autopilot`
62
65
  - `docs/review/index.md` — must exist as the review registry (Report appends to it)
63
66
 
64
67
  **Self-Healing:** If any are missing, the orchestrator automatically creates them (`mkdir -p`, and a seed `index.md` with a registry header). This allows the Review skill to run even if `arreio-init` wasn't explicitly run.
@@ -73,9 +76,9 @@ For **task-in-review** input, verify the `work-id` exists and contains at least
73
76
 
74
77
  | Phase | Phase Module | Output Artifact | Saved to |
75
78
  | ----- | ----------------------------- | ---------------------------------------------------------------- | ------------------------------------- |
76
- | 1 | [Scope](modules/scope.md) | [Review scope](references/templates/artifacts/review-scope.md) | `docs/review/.scope/<id>.md` |
77
- | 2 | [Prepare](modules/prepare.md) | [Review kit](references/templates/artifacts/review-kit.md) | `docs/review/.prepare/<id>.md` |
78
- | 3 | [Analyze](modules/analyze.md) | [Findings](references/templates/artifacts/findings.md) | `docs/review/.analyze/<id>.md` |
79
+ | 1 | [Scope](modules/scope.md) | [Review scope](references/templates/artifacts/review-scope.md) | `docs/review/.scope/<id>.md` _(detailed only)_ |
80
+ | 2 | [Prepare](modules/prepare.md) | [Review kit](references/templates/artifacts/review-kit.md) | `docs/review/.prepare/<id>.md` _(detailed only)_ |
81
+ | 3 | [Analyze](modules/analyze.md) | [Findings](references/templates/artifacts/findings.md) | `docs/review/.analyze/<id>.md` _(detailed only)_ |
79
82
  | 4 | [Report](modules/report.md) | [Review report](references/templates/artifacts/review-report.md) | `docs/review/.report/<id>.md` |
80
83
 
81
84
  ### Quality Gates
@@ -143,6 +146,17 @@ Artifact templates live in [references/templates/artifacts/](references/template
143
146
  | [findings.md](references/templates/artifacts/findings.md) | Analyze |
144
147
  | [review-report.md](references/templates/artifacts/review-report.md) | Report |
145
148
 
149
+ ## Execution Rules
150
+
151
+ Follow these literally; they exist to keep runs consistent across agents.
152
+
153
+ 1. **Run each module's steps in order**, starting with its Step 0 verification. Do not skip, merge, or reorder steps.
154
+ 2. **Never invent values.** If a required input is missing, apply the recovery in [error-handling.md](references/error-handling.md) or ask the user; do not fill it with a plausible guess.
155
+ 3. **Compute, don't copy.** Values defined by a rule (finding severity, `approval-status`, scope-creep flag) must be derived from the cited rubric and the real findings — never judged by feel, and never copied from an example. Example values in references and templates are illustrations, never defaults.
156
+ 4. **One question at a time**, with 2–4 concrete options; build the question text from the current values.
157
+ 5. **Announce phase transitions in one line** (e.g., "Phase 2/4 Analyze complete: <key result>") so the user can follow progress, even in Autopilot.
158
+ 6. **Honor write rules:** intermediate phase artifacts only in `detailed` mode; final deliverables always.
159
+
146
160
  ## Core Principles
147
161
 
148
162
  - **Deterministic Pipeline:** Phases always execute in sequence (no agent switching, no fallback paths).
@@ -155,6 +169,7 @@ Artifact templates live in [references/templates/artifacts/](references/template
155
169
  - **Test the Tests:** Reviewing changes includes evaluating the tests that accompany them — coverage, correctness of assertions, and whether they assert the intended Acceptance Criterion — not just production code.
156
170
  - **Read-Only Review:** Review analyzes and reports; it never edits the code under review. Required changes become a follow-up task (a new `/plan` + `/work`, or manual edits) — never applied inline here.
157
171
  - **Single Source of Truth:** This skill defines all its own rules; it does not depend on any external agent rule file. Category, severity, and approval definitions live once in their authoritative references and are never re-encoded inline in the modules.
172
+ - **Lean Persistence:** Phase artifacts hit disk only in `detailed` mode; `smart`/`autopilot` pass them in context to save tokens and time.
158
173
  - **Transparent Artifacts:** Each phase produces an explicit output artifact for the next phase.
159
174
  - **Behavior-Described, Tool-Agnostic:** Steps describe required capabilities ("read the diff", "run the test suite", "update the index"), not specific tool names; each agent maps to its native tools.
160
175
  - **Interaction Mode Propagation:** `interactionMode` is read at the start of each subsequent phase and determines whether confirmation steps execute.
@@ -90,7 +90,7 @@ Apply the **[phase confirmation behavior](../references/interaction-mode-propaga
90
90
  - **Smart:** pause only when a pause trigger above is true; otherwise auto-proceed.
91
91
  - **Autopilot:** auto-proceed (no confirmation).
92
92
 
93
- Then save the artifact to `docs/review/.analyze/<analyze-id>.md` (ensure `interactionMode` included) and return it, with the `interactionMode` value, to the Orchestrator for the transition to Phase 4 (Report).
93
+ Then, **in `detailed` mode only**, save the artifact to `docs/review/.analyze/<analyze-id>.md` (ensure `interactionMode` included) and return it, with the `interactionMode` value, to the Orchestrator for the transition to Phase 4 (Report). In `smart` and `autopilot` mode, do **not** write the file; pass the artifact to the next phase in context (see [Artifact Persistence](../references/interaction-mode-propagation.md#artifact-persistence)).
94
94
 
95
95
  ## Output: Findings Artifact
96
96
 
@@ -99,6 +99,6 @@ Then save the artifact to `docs/review/.analyze/<analyze-id>.md` (ensure `intera
99
99
  - Verify the **scope-creep** category either ran (with `spec-content` not `none`) or is recorded `skipped (no requirements)` — never silently absent, never inventing requirements.
100
100
  - Verify severities were **assigned from** [severity-rubric.md](../references/severity-rubric.md) rather than re-defined inline (no second rubric contradicting the authoritative reference).
101
101
  - Verify the category checks were **run from** [review-categories.md](../references/review-categories.md) rather than re-encoded inline.
102
- - Verify that the artifact is saved to `docs/review/.analyze/<analyze-id>.md`.
102
+ - Verify that, in `detailed` mode, the artifact is saved to `docs/review/.analyze/<analyze-id>.md`; in `smart`/`autopilot` mode, verify that **no** file was written and the artifact was passed to the next phase in context.
103
103
 
104
104
  > Pass the Findings to `report` (Phase 4) for the approval-status derivation, the report write, and the registry / work-index cross-link.