thoth-agents 0.1.13 → 0.1.18
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.
- package/README.md +7 -0
- package/dist/{chunk-WGFDTUZI.js → chunk-6K3ZXIMC.js} +229 -5
- package/dist/{chunk-SCM2O4TP.js → chunk-SOT5ZY53.js} +2 -2
- package/dist/cli/index.js +2 -2
- package/dist/cli/providers.d.ts +1 -0
- package/dist/cli/tui/index.js +2 -2
- package/dist/config/schema.d.ts +1 -0
- package/dist/harness/core/agent-pack.d.ts +1 -1
- package/dist/harness/core/sdd.d.ts +58 -16
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/src/skills/_shared/persistence-contract.md +69 -97
- package/src/skills/_shared/thoth-mem-convention.md +40 -61
- package/src/skills/executing-plans/SKILL.md +9 -3
- package/src/skills/plan-reviewer/SKILL.md +8 -0
- package/src/skills/requirements-interview/SKILL.md +21 -8
- package/src/skills/sdd-propose/SKILL.md +16 -4
- package/src/skills/sdd-tasks/SKILL.md +6 -0
- package/src/skills/thoth-mem-agents/SKILL.md +112 -300
- package/thoth-agents.schema.json +3 -0
|
@@ -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
|
|
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
|
|
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
|
|
46
|
-
|
|
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
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
-
|
|
55
|
-
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
-
|
|
60
|
-
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
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
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
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
|
-
|
|
83
|
-
project, persistence mode, memory permissions, and recovery instructions.
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
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,
|
|
89
|
-
compaction could not be persisted and
|
|
90
|
-
|
|
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
|
|
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
|
-
**
|
|
110
|
-
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
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
|
-
|
|
116
|
-
|
|
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
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
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
|
-
-
|
|
148
|
-
- It runs after `sdd-tasks`
|
|
149
|
-
|
|
150
|
-
- It does
|
|
151
|
-
-
|
|
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
|
|
159
|
-
persistence mode
|
|
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 (
|
|
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
|
|
170
|
-
|
|
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
|
|
176
|
-
- Always
|
|
177
|
-
`
|
|
178
|
-
-
|
|
179
|
-
|
|
180
|
-
- In `
|
|
181
|
-
|
|
182
|
-
- In `
|
|
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
|
-
|
|
7
|
-
|
|
8
|
-
`
|
|
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
|
|
12
|
-
unsupported
|
|
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
|
-
|
|
17
|
-
|
|
14
|
+
role ownership, parent session/project scoping, prompt-save prohibitions, and
|
|
15
|
+
SDD namespace protection.
|
|
18
16
|
|
|
19
|
-
Root-owned delegation handoffs
|
|
20
|
-
|
|
21
|
-
|
|
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
|
|
37
|
-
|
|
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
|
-
|
|
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
|
|
88
|
-
|
|
89
|
-
`
|
|
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
|
|
94
|
-
|
|
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. **
|
|
92
|
+
1. **Compact scan**
|
|
100
93
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
`mode: "compact"`.
|
|
94
|
+
`mem_recall(mode="compact")` with exact topic-key query for token-efficient IDs
|
|
95
|
+
and ranking.
|
|
104
96
|
|
|
105
|
-
|
|
106
|
-
only when compact results are insufficient to disambiguate between multiple results.
|
|
97
|
+
2. **Context expansion**
|
|
107
98
|
|
|
108
|
-
|
|
99
|
+
`mem_recall(mode="context")` to expand strongest hits into retrieved text.
|
|
109
100
|
|
|
110
|
-
|
|
111
|
-
`before`, and `after`.
|
|
101
|
+
3. **Full body fetch**
|
|
112
102
|
|
|
113
|
-
|
|
114
|
-
|
|
103
|
+
`mem_get(id=...)` to retrieve full artifact content. Use
|
|
104
|
+
`include_timeline=true` when chronology matters.
|
|
115
105
|
|
|
116
|
-
|
|
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
|
|
127
|
-
phase transition
|
|
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
|
-
|
|
136
|
-
|
|
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
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
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
|
-
(`
|
|
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
|
-
(`
|
|
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
|
|
33
|
-
the active project and session identity,
|
|
34
|
-
`
|
|
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.
|
|
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
|
-
|
|
162
|
+
5. If the model must remember decisions across many steps, write them
|
|
154
163
|
down — that means SDD.
|
|
155
|
-
|
|
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
|
-
-
|
|
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
|
|
88
|
-
|
|
89
|
-
`
|
|
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
|