thoth-agents 0.1.13 → 0.1.16

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.
@@ -9,8 +9,7 @@
9
9
  | `hybrid` | thoth-mem, then filesystem fallback | thoth-mem and OpenSpec files | The change should survive compaction and exist in the repo |
10
10
  | `none` | orchestrator prompt context only | nowhere (inline response only) | Ephemeral exploration, privacy-sensitive work, or no persistence backend available |
11
11
 
12
- SDD skills MUST obey the selected artifact store mode. Do not reference or rely
13
- on engram.
12
+ SDD skills must obey the selected artifact store mode.
14
13
 
15
14
  ## Mode Rules
16
15
 
@@ -40,95 +39,75 @@ on engram.
40
39
  When running in `hybrid` mode:
41
40
 
42
41
  1. Write the canonical OpenSpec artifact to the filesystem.
43
- 2. Persist the same full artifact to thoth-mem with a deterministic `topic_key`.
42
+ 2. Persist the same full artifact to thoth-mem with deterministic `topic_key`.
44
43
  3. Treat the operation as complete only when both writes succeed.
45
- 4. If filesystem and memory diverge, repair them immediately by rewriting the
46
- stale copy from the freshest full artifact.
44
+ 4. If filesystem and memory diverge, repair immediately from the freshest full
45
+ artifact.
47
46
 
48
47
  ## Memory Ownership
49
48
 
50
- Memory responsibilities are split by semantic role between orchestrator and
51
- sub-agents:
52
-
53
- **Orchestrator owns general memory:**
54
- - Decisions, discoveries, bug fixes, session summaries
55
- - Progress checkpoints (SDD task state updates)
56
- - User preferences and configuration notes
57
-
58
- **Sub-agents write deterministic SDD artifacts:**
59
- - Canonical SDD artifacts with topic_key matching `sdd/{change}/{artifact}`
60
- - Includes: proposal, spec, design, tasks, apply-progress, verify-report,
61
- archive-report, state
62
- - Sub-agents persist these directly when the active mode includes thoth-mem
63
- - Sub-agents persist apply-progress or other deterministic SDD artifacts only
64
- when that phase explicitly delegates the write under the parent
65
- session/project
66
- - Sub-agents do NOT write general memory observations unless the dispatch
67
- explicitly authorizes a delegated durable implementation observation outside
68
- the `sdd/*` namespace
69
-
70
- This split preserves artifact nuance (sub-agents have full context when writing)
71
- while keeping general memory centralized under orchestrator control. In
72
- harnesses that cannot hard-enforce the split, treat it as instruction-level
73
- governance and disclose any unsupported-capability that prevents compliance.
49
+ Memory responsibilities are split by semantic role:
50
+
51
+ **Orchestrator owns general/root continuity memory:**
52
+ - decisions, discoveries, bug fixes, and user constraints
53
+ - root progress checkpoints and summaries (`mem_session(action="checkpoint"|"summary")`)
54
+ - prompt persistence (`mem_save(kind="prompt")`)
55
+
56
+ **Sub-agents write deterministic SDD artifacts when delegated:**
57
+ - canonical SDD artifacts using `sdd/{change}/{artifact}`
58
+ - includes proposal, spec, design, tasks, apply-progress, verify-report,
59
+ archive-report, and state
60
+ - sub-agents may also write delegated durable implementation observations only
61
+ when explicitly authorized under parent session/project
62
+ - sub-agents do not own session lifecycle operations and do not save prompts
63
+
64
+ In harnesses without hard enforcement, keep this as instruction-level
65
+ governance and disclose unsupported-capability limitations.
74
66
 
75
67
  ## Delegated Handoffs
76
68
 
77
- Root/orchestrator handoffs are treated as compaction boundaries. When
78
- root-owned `mem_session_summary` and parent identity are available, the root
79
- saves or refreshes the handoff body as session summary context before
80
- delegation.
69
+ Root/orchestrator handoffs are compaction boundaries. When root-owned summary or
70
+ checkpoint tools are available, root refreshes handoff continuity with
71
+ `mem_session(action="checkpoint"|"summary")` or root-owned
72
+ `mem_save(kind="session_summary")`.
81
73
 
82
- The initial subagent prompt includes task instructions, parent `session_id`,
83
- project, persistence mode, memory permissions, and recovery instructions. It
84
- does not include the handoff body, raw transcripts, secrets, generated
85
- subagent prompts, or file dumps. Subagents recover that context through the
86
- 3-layer recall protocol before treating memory content as source material.
74
+ Initial subagent prompts include task instructions, parent `session_id`,
75
+ project, persistence mode, memory permissions, and recovery instructions. They
76
+ must not include raw handoff bodies, transcripts, secrets, or generated prompts.
77
+ Subagents recover context through bounded recall before using memory as source
78
+ material.
87
79
 
88
- If parent identity or summary tooling is unavailable, the root reports that
89
- compaction could not be persisted and the subagent relies on explicit task
90
- instructions and local evidence only. Subagents must not create fallback
91
- memory sessions.
80
+ If parent identity or root summary/checkpoint tooling is unavailable, report
81
+ that compaction could not be persisted and continue with explicit local context.
82
+ Subagents must not create fallback sessions.
92
83
 
93
84
  ## Retrieval Protocol
94
85
 
95
86
  ### 3-Layer Recall for thoth-mem and hybrid modes
96
87
 
97
- Always complete the full 3-layer recall before using content as source material:
98
-
99
- 1. **Layer 1 (Compact Index):** call the memory tool binding for `mem_search`
100
- with compact mode to scan observation IDs and titles. This is the most
101
- token-efficient entry point.
102
- 2. **Layer 2 (Timeline Context):** call the memory tool binding for
103
- `mem_timeline` to retrieve chronological context (before/after
104
- observations) to disambiguate or verify the correct artifact.
105
- 3. **Layer 3 (Full Body):** call the memory tool binding for
106
- `mem_get_observation` to retrieve the complete artifact body for use as
107
- source material.
88
+ Always complete the full three layers before using memory content as source
89
+ material:
108
90
 
109
- **Mode guidance:**
110
- - Use `mode: "compact"` (default) for most queries; it returns only IDs and
111
- titles.
112
- - Use `mode: "preview"` only when compact results are insufficient to
113
- disambiguate between multiple candidates.
91
+ 1. **Layer 1 (Compact):** `mem_recall(mode="compact")` to scan IDs/titles with
92
+ exact topic-key or focused query terms.
93
+ 2. **Layer 2 (Context):** `mem_recall(mode="context")` to expand the strongest
94
+ hits into retrieved text.
95
+ 3. **Layer 3 (Full):** `mem_get(id=...)` to fetch full content. Use
96
+ `include_timeline=true` when chronology matters.
114
97
 
115
- **Never treat `mem_search` output—compact or preview—as the artifact body.**
116
- Always complete the 3-layer recall before using content as source material.
98
+ Optional fused context: `mem_context(..., recall_query="...")` when one recent
99
+ context view is useful; it does not replace the three-layer recall.
117
100
 
118
101
  ### Mode-specific retrieval
119
102
 
120
- 1. If the mode is `thoth-mem`, apply the 3-layer recall with the exact SDD
121
- topic key.
122
- 2. If the mode is `openspec`, read the canonical OpenSpec path from the
123
- filesystem only.
124
- 3. If the mode is `hybrid`, apply the 3-layer recall with the exact SDD topic
125
- key.
126
- 4. In `hybrid`, if nothing is found in thoth-mem, read the canonical OpenSpec
127
- path from the filesystem.
128
- 5. In `hybrid`, if filesystem recovery succeeds, re-save the artifact to
129
- thoth-mem so the two stores converge again.
130
- 6. If the mode is `none`, read artifacts from the orchestrator prompt context
131
- only. Do not attempt to retrieve from thoth-mem or filesystem.
103
+ 1. If mode is `thoth-mem`, use three-layer recall with exact SDD topic key.
104
+ 2. If mode is `openspec`, read canonical OpenSpec files only.
105
+ 3. If mode is `hybrid`, use three-layer recall first.
106
+ 4. In `hybrid`, if nothing is found in thoth-mem, read canonical OpenSpec
107
+ files as fallback.
108
+ 5. In `hybrid`, if filesystem fallback succeeds, re-save the artifact to
109
+ thoth-mem to converge both stores.
110
+ 6. If mode is `none`, use orchestrator prompt context only.
132
111
 
133
112
  ## Artifact Ownership
134
113
 
@@ -144,42 +123,35 @@ Always complete the 3-layer recall before using content as source material.
144
123
 
145
124
  ## Governance Placement
146
125
 
147
- - The artifact governance validator is **report-only**.
148
- - It runs after `sdd-tasks` produces the canonical checklist and before any
149
- future `sdd-apply` entrypoint consumes the report.
150
- - It does **not** replace `plan-reviewer` or `executing-plans`.
151
- - It does **not** mark task state, enforce execution, or alter review gating.
152
- - Root-session memory and progress checkpoints remain orchestrator-owned;
153
- sub-agents may surface governance findings, but they must stay within the
154
- active artifact store mode and delegate-first boundaries.
126
+ - Artifact governance validator is report-only.
127
+ - It runs after `sdd-tasks` and before any `sdd-apply` entrypoint consumes the
128
+ report.
129
+ - It does not replace `plan-reviewer` or `executing-plans`.
130
+ - Root-session memory/progress ownership remains orchestrator-owned.
155
131
 
156
132
  ## Pipeline Type Impact on Prerequisites
157
133
 
158
- The orchestrator passes `pipeline-type` (`accelerated` or `full`) alongside the
159
- persistence mode. This affects which artifacts each skill requires:
134
+ The orchestrator passes `pipeline-type` (`accelerated` or `full`) alongside
135
+ persistence mode, affecting required artifacts:
160
136
 
161
137
  | Artifact | Full pipeline | Accelerated pipeline |
162
138
  | --- | --- | --- |
163
- | Proposal | Required by all phases | Required by all phases (serves as acceptance reference) |
139
+ | Proposal | Required by all phases | Required by all phases (acceptance reference) |
164
140
  | Spec | Required by design, tasks, apply, verify, archive | Not produced; not required |
165
141
  | Design | Required by tasks, apply, verify, archive | Not produced; not required |
166
142
  | Tasks | Required by apply, verify, archive | Required by apply, verify, archive |
167
143
  | Verify report | Required by archive | Required by archive |
168
144
 
169
- In accelerated pipeline, the proposal serves as the acceptance reference where
170
- specs would normally be used. Skills must adapt their retrieval, compliance
171
- checks, and archive behavior accordingly.
145
+ In accelerated mode, proposal is the acceptance reference and must preserve
146
+ original intent, accepted scope, deferred areas, and justified exclusions.
172
147
 
173
148
  ## Recovery Notes
174
149
 
175
- - Prefer exact topic-key queries over fuzzy natural-language search.
176
- - Always use the 3-layer recall (`mem_search` `mem_timeline`
177
- `mem_get_observation`) before treating an artifact as source material.
178
- - If multiple observations match in `mem_search`, use `mem_timeline` to inspect
179
- chronological context and disambiguate.
180
- - In `openspec` mode, repair missing or stale artifacts by rewriting the
181
- canonical OpenSpec file only.
182
- - In `thoth-mem` mode, repair missing or stale artifacts by re-saving the full
183
- artifact to thoth-mem only.
184
- - In `hybrid` mode, use the filesystem copy only as fallback or repair input,
185
- then converge both stores.
150
+ - Prefer exact topic-key queries over broad natural-language recall.
151
+ - Always apply the three-layer recall (`mem_recall compact` ->
152
+ `mem_recall context` -> `mem_get`) before treating memory as source material.
153
+ - In `openspec`, repair missing/stale artifacts by rewriting canonical OpenSpec
154
+ files.
155
+ - In `thoth-mem`, repair missing/stale artifacts by re-saving full artifacts via
156
+ `mem_save`.
157
+ - In `hybrid`, use filesystem fallback only for recovery, then converge stores.
@@ -3,24 +3,20 @@
3
3
  ## Harness Scope
4
4
 
5
5
  This convention defines harness-neutral thoth-mem semantics for SDD artifacts.
6
- Tool names are adapter bindings, not universal semantics. Use the thoth-mem
7
- operation names (`mem_search`, `mem_timeline`, `mem_get_observation`,
8
- `mem_save`, `mem_update`) as the portable vocabulary and map them to the
9
- callable tool names exposed by the active binding surface.
6
+ Use the thoth-mem MCP surface as the portable vocabulary:
7
+ `mem_recall`, `mem_save`, `mem_context`, `mem_get`, `mem_project`, and
8
+ `mem_session`.
10
9
 
11
- If a needed thoth-mem operation is not available, treat it as an
12
- unsupported-capability, disclose the limitation, and do not pretend
13
- persistence or recovery succeeded.
10
+ If a needed operation is unavailable in the active runtime, report the
11
+ unsupported capability and do not pretend persistence/recovery succeeded.
14
12
 
15
13
  Governance that a harness cannot hard-enforce remains instruction-level:
16
- semantic role ownership, parent session/project scoping, prompt-save
17
- prohibitions, and SDD topic-key namespace protection still apply.
14
+ role ownership, parent session/project scoping, prompt-save prohibitions, and
15
+ SDD namespace protection.
18
16
 
19
- Root-owned delegation handoffs use the same convention: the handoff body lives
20
- in a root-owned `mem_session_summary` when available, while subagent prompts
21
- carry task instructions plus parent-scoped recovery instructions. Do not place
22
- the handoff body in the initial subagent prompt or structured attachment
23
- payload.
17
+ Root-owned delegation handoffs follow the same rule: handoff bodies stay in
18
+ root-owned summary/checkpoint memory when available; subagent prompts carry only
19
+ task instructions plus parent-scoped recovery instructions.
24
20
 
25
21
  ## Mode Scope
26
22
 
@@ -28,13 +24,12 @@ This convention applies only when the artifact store mode includes thoth-mem:
28
24
  `thoth-mem` and `hybrid`.
29
25
 
30
26
  - In `openspec` mode, skip thoth-mem saves.
31
- - In `openspec` mode, skip thoth-mem recovery and use filesystem artifacts
32
- instead.
27
+ - In `openspec` mode, skip thoth-mem recovery and use filesystem artifacts.
33
28
 
34
29
  ## Tool Names
35
30
 
36
- Use the thoth-mem operation names through the active binding surface. Prefer
37
- the callable names actually exposed by the runtime.
31
+ Use callable names exposed by the active runtime, mapped to the six-tool MCP
32
+ surface above.
38
33
 
39
34
  ## Topic Key Format
40
35
 
@@ -80,63 +75,47 @@ artifacts:
80
75
  last_updated: {ISO 8601 timestamp}
81
76
  ```
82
77
 
83
- Save with the memory tool binding for `mem_save`, using the canonical SDD
84
- topic key and the required metadata fields:
78
+ Persist with `mem_save` using canonical SDD topic keys and required metadata:
85
79
  `title`, `topic_key`, `type`, `project`, `scope`, and `content`.
86
80
 
87
- Recovery: `mem_search("sdd/{change-name}/state")` using the active binding
88
- surface → `mem_timeline(id)` when needed for chronology →
89
- `mem_get_observation(id)` parse YAML → restore phase state.
81
+ Recovery path for state artifacts:
82
+ `mem_recall(mode="compact", query="topic_key:sdd/{change-name}/state")` ->
83
+ `mem_recall(mode="context", query="topic_key:sdd/{change-name}/state")` when needed ->
84
+ `mem_get(id=...)` (or `include_timeline=true` when chronology matters) ->
85
+ parse YAML -> restore phase state.
90
86
 
91
87
  ## Three-Layer Recall Protocol
92
88
 
93
- For delegated handoffs, subagents may use this protocol only when the dispatch
94
- includes both parent `session_id` and `project`. The first recalled source
95
- should be the parent-session handoff summary or exact SDD topic assigned by the
96
- orchestrator; if recall is missing, stale, contradictory, or insufficient,
97
- report that limitation instead of inventing context.
89
+ For delegated handoffs, subagents may use recall only when dispatch includes
90
+ both parent `session_id` and `project`.
98
91
 
99
- 1. **Scan compact index** by exact topic key:
92
+ 1. **Compact scan**
100
93
 
101
- Use the memory tool binding for `mem_search` with
102
- `query: "topic_key:sdd/{change-name}/{artifact}"`, `project`, and
103
- `mode: "compact"`.
94
+ `mem_recall(mode="compact")` with exact topic-key query for token-efficient IDs
95
+ and ranking.
104
96
 
105
- Use `mode: "compact"` (the default) for token efficiency. Switch to `mode: "preview"`
106
- only when compact results are insufficient to disambiguate between multiple results.
97
+ 2. **Context expansion**
107
98
 
108
- 2. **Get chronological context** around the found observation:
99
+ `mem_recall(mode="context")` to expand strongest hits into retrieved text.
109
100
 
110
- Use the memory tool binding for `mem_timeline` with `observation_id`,
111
- `before`, and `after`.
101
+ 3. **Full body fetch**
112
102
 
113
- This shows related observations in the same session, helping you understand the
114
- artifact's evolution and dependencies.
103
+ `mem_get(id=...)` to retrieve full artifact content. Use
104
+ `include_timeline=true` when chronology matters.
115
105
 
116
- 3. **Retrieve full artifact content**:
117
-
118
- Use the memory tool binding for `mem_get_observation` with the observation ID.
119
-
120
- Search returns compact results (IDs + titles) by default. Neither compact nor
121
- preview mode returns the full artifact body. Always complete the 3-layer recall
122
- to get the actual content.
106
+ Optional: `mem_context(..., recall_query="...")` can provide fused recent
107
+ context, but it does not replace the three-layer recall.
123
108
 
124
109
  ## Save Contract
125
110
 
126
- **CRITICAL:** The orchestrator MUST persist the state artifact after each SDD
127
- phase transition. This is the canonical checkpoint for resume/recovery.
128
-
129
- Persist SDD artifacts with a stable topic key so repeated saves upsert instead
130
- of creating duplicates:
131
-
132
- Use the memory tool binding for `mem_save` with the canonical SDD topic key
133
- and the full artifact markdown in `content`.
111
+ **CRITICAL:** The orchestrator must persist the `state` artifact after each SDD
112
+ phase transition for recovery.
134
113
 
135
- For `sdd-apply`, save the progress report under `apply-progress` and re-save the
136
- updated task list under `tasks` after checkboxes change.
114
+ Persist SDD artifacts with stable deterministic topic keys so repeated saves
115
+ upsert instead of duplicating. For `sdd-apply`, save `apply-progress` and
116
+ re-save updated `tasks` after checkbox changes.
137
117
 
138
- Write-capable subagents may call `mem_save` only when the task explicitly
139
- delegates a durable implementation observation or deterministic SDD artifact
140
- write under the parent session/project. General observations must use topic
141
- keys outside `sdd/*`; deterministic SDD artifacts keep the canonical
142
- `sdd/{change-name}/{artifact}` format.
118
+ Write-capable subagents may call `mem_save` only when dispatch explicitly
119
+ permits delegated durable implementation observations or deterministic SDD
120
+ artifact writes under parent session/project. General observations stay outside
121
+ `sdd/*`; deterministic SDD artifacts keep `sdd/{change-name}/{artifact}`.
@@ -72,8 +72,8 @@ The orchestrator owns task progress tracking.
72
72
  - `openspec`/`hybrid`: scan `openspec/changes/` for active changes and read
73
73
  `tasks.md`.
74
74
  - `thoth-mem`: recover tasks via 3-layer recall
75
- (`search` `timeline` → `get_observation`) using topic key
76
- `sdd/{change-name}/tasks`.
75
+ (`mem_recall(mode="compact")` -> `mem_recall(mode="context")` ->
76
+ `mem_get(id=...)`) using topic key `sdd/{change-name}/tasks`.
77
77
  3. Find the first unchecked task in state `- [ ]` or `- [~]`.
78
78
  4. Build a mental model of the plan: total tasks, remaining work,
79
79
  parallelizable work, and dependency order.
@@ -121,6 +121,9 @@ Every dispatch prompt MUST include these 6 parts:
121
121
  5. `VERIFICATION` — checks the sub-agent must run or report
122
122
  6. `RETURN ENVELOPE` — the exact structured response contract in this skill
123
123
 
124
+ `BOUNDARIES` must not contradict accepted proposal or spec scope. Use it to
125
+ limit the current assigned task, not to redefine the approved change scope.
126
+
124
127
  #### C. Receive and Verify
125
128
 
126
129
  Read the sub-agent return envelope and respond by status:
@@ -171,6 +174,8 @@ Between every task or same-agent batch:
171
174
  missing evidence called out.
172
175
  - Attempt 2: switch to a different agent or fix directly when appropriate.
173
176
  - Attempt 3: make one final targeted attempt with narrowed scope.
177
+ - "Narrowed scope" means a narrower recovery attempt for the assigned task
178
+ only. It must not redefine accepted proposal or spec scope for the change.
174
179
  - After 3 consecutive failures, mark the task `- [-]` with a clear reason and
175
180
  escalate to the user.
176
181
 
@@ -229,7 +234,8 @@ To resume safely:
229
234
  - `openspec`: read `openspec/changes/{change-name}/tasks.md`.
230
235
  - `thoth-mem`: recover `sdd/{change-name}/tasks` and
231
236
  `sdd/{change-name}/apply-progress` via 3-layer recall
232
- (`search` `timeline` → `get_observation`).
237
+ (`mem_recall(mode="compact")` -> `mem_recall(mode="context")` ->
238
+ `mem_get(id=...)`).
233
239
  - `hybrid`: do both recovery paths and prefer thoth-mem as the source of
234
240
  truth if state diverges.
235
241
  3. Resume from the first task marked `- [ ]` or `- [~]`.
@@ -67,6 +67,13 @@ Check only what affects executability:
67
67
  - `Expected:`
68
68
  6. Dependency order is valid.
69
69
  7. The sequence is workable without hidden prerequisite steps.
70
+ 8. In-scope success criteria from the accepted proposal/spec are represented by
71
+ executable tasks.
72
+ 9. Deferred or unresolved affected areas from the accepted proposal/spec have
73
+ required discovery, coordination, follow-up tasks, or an explicit execution
74
+ warning.
75
+ 10. Task boundaries or non-goals do not contradict accepted proposal/spec
76
+ scope.
70
77
 
71
78
  ## Decision Rules
72
79
 
@@ -106,6 +113,7 @@ For each rejected issue, include:
106
113
  - No nitpicking.
107
114
  - No style opinions.
108
115
  - No design questioning.
116
+ - No architecture redesign.
109
117
  - No expanding the scope of review beyond blockers.
110
118
  - Do not return more than 3 rejection issues.
111
119
 
@@ -29,9 +29,10 @@ handoff path before implementation begins.
29
29
 
30
30
  This skill is normally loaded by the root/main orchestrator at the start of a
31
31
  new root session. When thoth-mem tools are available, the root/main
32
- orchestrator MUST also load `thoth-mem-agents`, call `mem_session_start` with
33
- the active project and session identity, and save the real user prompt with
34
- `mem_save_prompt` before later delegation.
32
+ orchestrator MUST also load `thoth-mem-agents`, call
33
+ `mem_session(action="start")` with the active project and session identity,
34
+ and save the real user prompt with `mem_save(kind="prompt")` before later
35
+ delegation.
35
36
 
36
37
  If thoth-mem tools or the required identity values are unavailable, disclose
37
38
  that memory bootstrap could not run and continue without claiming memory was
@@ -81,6 +82,8 @@ scaffolding as user prompts.
81
82
  9. Always ask and confirm; never choose on the user's behalf.
82
83
  10. Do not ask for details that the codebase, task artifacts, or gathered
83
84
  context already answer.
85
+ 11. Enforce scope faithfulness: scope calibration must not silently shrink the
86
+ user's stated intent.
84
87
 
85
88
  ### Phase 3: Complexity Assessment
86
89
 
@@ -108,6 +111,10 @@ Evaluate these 6 dimensions. Rate each as **Low**, **Medium**, or **High**:
108
111
  Present:
109
112
 
110
113
  - Summary of understanding
114
+ - Broad user intent and product goal
115
+ - Accepted scope boundaries
116
+ - Deferred or unresolved affected areas that still belong to the accepted goal
117
+ - Explicit exclusions and why they are excluded
111
118
  - Scope classification and why
112
119
  - Recommended approach options
113
120
  - Proposed handoff path
@@ -130,12 +137,12 @@ user to confirm it:
130
137
  - Contract sensitivity is Low
131
138
  - Failure cost is Low
132
139
 
133
- **Accelerated SDD** (`propose -> tasks`) — when:
140
+ **Accelerated SDD** (`sdd-explore -> propose -> tasks`) — when:
134
141
  - 2-3 dimensions are Medium, or
135
142
  - 1 dimension is High in logic depth, context span, or discovery need
136
143
  - But contract sensitivity and failure cost are not High
137
144
 
138
- **Full SDD** (`propose -> spec -> design -> tasks`) — when any of:
145
+ **Full SDD** (`sdd-explore -> propose -> spec -> design -> tasks`) — when any of:
139
146
  - Contract sensitivity is High
140
147
  - Failure cost is High
141
148
  - 2 or more dimensions are High
@@ -148,11 +155,13 @@ Quick decision heuristics:
148
155
  1. Cosmetic work routes direct regardless of file count.
149
156
  2. Dense logic rewrites route to at least accelerated SDD regardless
150
157
  of file count.
151
- 3. External contracts (API, schema, migration, auth, privacy) usually
158
+ 3. End-to-end UX redesign across screens/workflows is usually full SDD when
159
+ user-flow contracts, behavior contracts, or multiple concerns are involved.
160
+ 4. External contracts (API, schema, migration, auth, privacy) usually
152
161
  need full SDD.
153
- 4. If the model must remember decisions across many steps, write them
162
+ 5. If the model must remember decisions across many steps, write them
154
163
  down — that means SDD.
155
- 5. Tie-breaker: unsure between direct and accelerated, choose
164
+ 6. Tie-breaker: unsure between direct and accelerated, choose
156
165
  accelerated. Unsure between accelerated and full, ask: 'Do we
157
166
  need a durable behavior contract?' If yes, full SDD.
158
167
 
@@ -182,6 +191,7 @@ corresponding SDD pipeline phase. The handoff MUST include:
182
191
 
183
192
  Hand off to:
184
193
 
194
+ - **Explore**: delegate read-only repository discovery to explorer before artifact-producing phases.
185
195
  - **Propose**: [../sdd-propose/SKILL.md](../sdd-propose/SKILL.md)
186
196
  - **Spec** (full SDD only): [../sdd-spec/SKILL.md](../sdd-spec/SKILL.md)
187
197
  - **Design** (full SDD only): [../sdd-design/SKILL.md](../sdd-design/SKILL.md)
@@ -201,6 +211,9 @@ ask, and wait.
201
211
  - Never convert recommendations into unilateral decisions.
202
212
  - Do not replace blocking input prompts with plain-text interview questions
203
213
  when the harness exposes a blocking user input surface.
214
+ - Do not narrow accepted scope by omission; surface broad intent, accepted
215
+ scope, deferred or unresolved affected areas, and explicit exclusions before
216
+ SDD handoff.
204
217
 
205
218
  ## Anti-Patterns
206
219
 
@@ -51,6 +51,7 @@ The orchestrator passes the artifact store mode (`thoth-mem`, `openspec`, or
51
51
  ## Intent
52
52
  ## Scope
53
53
  ### In Scope
54
+ ### Deferred / Needs Discovery
54
55
  ### Out of Scope
55
56
  ## Approach
56
57
  ## Affected Areas
@@ -82,8 +83,19 @@ Return a short report with:
82
83
 
83
84
  - Use canonical OpenSpec filenames only.
84
85
  - Keep the proposal focused on why, scope, and success criteria.
85
- - Always include rollback guidance and explicit out-of-scope items.
86
+ - Preserve the original user intent and product goal in proposal scope. Do not
87
+ silently shrink broad goals such as full UX redesigns.
88
+ - Describe material behavior changes with `From`, `To`, `Reason`, and `Impact`
89
+ when applicable.
90
+ - Use `Deferred / Needs Discovery` for unresolved affected areas that are still
91
+ part of the accepted goal.
92
+ - Keep `Out of Scope` disciplined: include only explicit exclusions, rejected
93
+ options, ownership-separated future work, or deliberately deferred phases.
94
+ - Do not move parts of the stated user goal to `Out of Scope` only because the
95
+ implementation path is unknown.
96
+ - Always include rollback guidance and explicit out-of-scope items when they
97
+ exist.
86
98
  - Never reference engram.
87
- - Never rely on compact search output alone when the mode uses thoth-mem.
88
- Follow the 3-layer recall protocol: `search(mode: "compact")`
89
- `timeline` → `get_observation` to retrieve the full artifact body.
99
+ - Never rely on compact recall output alone when the mode uses thoth-mem.
100
+ Use `mem_recall(mode="compact")` -> `mem_recall(mode="context")` ->
101
+ `mem_get(id=...)` to retrieve the full artifact body.
@@ -129,6 +129,12 @@ Return:
129
129
  - Tasks must be small, actionable, and verifiable.
130
130
  - Order tasks by dependency.
131
131
  - Include testing and verification work explicitly.
132
+ - Preserve accepted proposal or spec scope and success criteria in tasks.
133
+ - Use boundaries and non-goals to express phase, file, or ownership limits,
134
+ not to shrink the accepted goal.
135
+ - Convert deferred or unresolved affected areas into discovery,
136
+ coordination, or follow-up tasks, or emit an explicit warning when follow-up
137
+ cannot be planned yet.
132
138
  - Do not create vague tasks such as "implement feature".
133
139
  - The governance validator is advisory only at this stage; it documents
134
140
  handoff placement and report findings, but it does not block task generation