devflow-kit 3.7.0 → 3.9.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 (205) hide show
  1. package/CHANGELOG.md +479 -1
  2. package/README.md +15 -15
  3. package/dist/agents/code.md +6 -8
  4. package/dist/agents/design.md +1 -1
  5. package/dist/agents/fix.md +7 -8
  6. package/dist/agents/git.md +3 -3
  7. package/dist/agents/harden.md +1 -1
  8. package/dist/agents/refactor.md +2 -4
  9. package/dist/agents/review.md +4 -4
  10. package/dist/agents/skim.md +2 -2
  11. package/dist/agents/triage.md +9 -2
  12. package/dist/cli/commands/capture.js +1 -1
  13. package/dist/cli/commands/curation-move-io.js +102 -0
  14. package/dist/cli/commands/curation-move-step.js +374 -0
  15. package/dist/cli/commands/curation.js +808 -0
  16. package/dist/cli/commands/gate-level-prompts.js +428 -0
  17. package/dist/cli/commands/gates.js +35 -11
  18. package/dist/cli/commands/init-seed.js +11 -8
  19. package/dist/cli/commands/init.js +244 -57
  20. package/dist/cli/commands/memory.js +60 -13
  21. package/dist/cli/commands/prompt-io.js +37 -0
  22. package/dist/cli/commands/uninstall.js +157 -17
  23. package/dist/cli.js +2 -2
  24. package/dist/commands/bug-analysis.md +25 -36
  25. package/dist/commands/code-review.md +40 -44
  26. package/dist/commands/debug.md +5 -5
  27. package/dist/commands/dynamic-build.md +26 -25
  28. package/dist/commands/dynamic-plan.md +5 -5
  29. package/dist/commands/dynamic-profile.md +5 -5
  30. package/dist/commands/dynamic-tickets.md +5 -5
  31. package/dist/commands/explore.md +6 -6
  32. package/dist/commands/implement.md +53 -82
  33. package/dist/commands/plan.md +6 -6
  34. package/dist/commands/release.md +5 -5
  35. package/dist/commands/research.md +6 -6
  36. package/dist/commands/resolve.md +39 -41
  37. package/dist/commands/self-review.md +5 -13
  38. package/dist/core/area-pause-notice.js +44 -0
  39. package/dist/core/assets.js +20 -20
  40. package/dist/core/curate-tuning-config.js +5 -6
  41. package/dist/core/curation-move-notice.js +84 -0
  42. package/dist/core/curation-move-skip.js +35 -0
  43. package/dist/core/curation-move.js +35 -0
  44. package/dist/core/curation-queue-cleanup.js +135 -0
  45. package/dist/core/curation-store.js +99 -0
  46. package/dist/core/{learning-variants.js → curation-variants.js} +65 -41
  47. package/dist/core/echo-value.js +11 -5
  48. package/dist/core/evidence-policy.js +11 -9
  49. package/dist/core/feature-switch.js +95 -19
  50. package/dist/core/fs-atomic.js +1 -1
  51. package/dist/core/gate-level.js +10 -2
  52. package/dist/core/git.js +16 -14
  53. package/dist/core/ledger-root.js +82 -22
  54. package/dist/core/linked-path.js +4 -4
  55. package/dist/core/manifest-lock.js +238 -0
  56. package/dist/core/manifest.js +58 -14
  57. package/dist/core/migrations.js +1 -13
  58. package/dist/core/observations.js +2 -2
  59. package/dist/core/plugins.js +19 -19
  60. package/dist/core/pool.js +26 -0
  61. package/dist/core/project-paths.js +103 -34
  62. package/dist/core/queue-drain.js +2 -2
  63. package/dist/core/tracked-areas.js +159 -0
  64. package/dist/core/tracker.js +1 -1
  65. package/dist/{learning-off → curation-off}/agents/code.md +6 -8
  66. package/dist/{learning-off → curation-off}/agents/fix.md +7 -8
  67. package/dist/{learning-off → curation-off}/agents/refactor.md +2 -4
  68. package/dist/{learning-off → curation-off}/agents/review.md +3 -3
  69. package/dist/{learning-off → curation-off}/agents/triage.md +8 -1
  70. package/dist/{learning-off → curation-off}/commands/bug-analysis.md +20 -31
  71. package/dist/{learning-off → curation-off}/commands/code-review.md +37 -41
  72. package/dist/{learning-off → curation-off}/commands/debug.md +2 -2
  73. package/dist/{learning-off → curation-off}/commands/dynamic-build.md +23 -22
  74. package/dist/{learning-off → curation-off}/commands/explore.md +2 -2
  75. package/dist/{learning-off → curation-off}/commands/implement.md +50 -79
  76. package/dist/{learning-off → curation-off}/commands/plan.md +2 -2
  77. package/dist/{learning-off → curation-off}/commands/resolve.md +36 -38
  78. package/dist/{learning-off → curation-off}/commands/self-review.md +2 -10
  79. package/dist/hud/components/{learning-counts.js → curation-counts.js} +63 -17
  80. package/dist/hud/config.js +1 -1
  81. package/dist/hud/index.js +6 -6
  82. package/dist/hud/render.js +3 -3
  83. package/dist/skills/git/references/pr/post-resolution-summary.md +12 -11
  84. package/dist/skills/git/references/pr/post-review-summary.md +12 -11
  85. package/dist/skills/git/references/pr/update-pr-evidence.md +2 -2
  86. package/dist/skills/git/references/pr/validate-branch.md +8 -5
  87. package/dist/skills/git/references/publication-gate.md +6 -7
  88. package/dist/skills/git/references/tracker/github/ensure-pr-ready.md +13 -5
  89. package/dist/skills/git/references/tracker/github/manage-debt.md +6 -2
  90. package/dist/skills/git/references/tracker/jira/ensure-pr-ready.md +13 -5
  91. package/dist/skills/git/references/tracker/jira/manage-debt.md +6 -2
  92. package/dist/skills/git/references/tracker/linear/ensure-pr-ready.md +13 -5
  93. package/dist/skills/git/references/tracker/linear/manage-debt.md +6 -2
  94. package/dist/targets/claude-code/{learning-install.js → curation-install.js} +85 -65
  95. package/dist/targets/claude-code/installer.js +15 -15
  96. package/dist/targets/claude-code/language-stamp.js +5 -5
  97. package/dist/targets/claude-code/post-install.js +2 -2
  98. package/dist/targets/claude-code/tracker-servers.js +1 -1
  99. package/package.json +3 -2
  100. package/src/assets/agents/_partials/_code.mds +11 -11
  101. package/src/assets/agents/code.mds +6 -6
  102. package/src/assets/agents/curate.md +8 -8
  103. package/src/assets/agents/debug.mds +6 -6
  104. package/src/assets/agents/design.mds +18 -18
  105. package/src/assets/agents/evaluate.md +6 -12
  106. package/src/assets/agents/fix.mds +7 -6
  107. package/src/assets/agents/git.mds +3 -3
  108. package/src/assets/agents/harden.mds +7 -7
  109. package/src/assets/agents/knowledge.mds +23 -23
  110. package/src/assets/agents/refactor.mds +2 -2
  111. package/src/assets/agents/research.mds +15 -15
  112. package/src/assets/agents/review.mds +43 -43
  113. package/src/assets/agents/skim.mds +11 -11
  114. package/src/assets/agents/triage.mds +29 -22
  115. package/src/assets/agents/validate.md +30 -50
  116. package/src/assets/commands/_partials/_decisions.mds +22 -20
  117. package/src/assets/commands/_partials/_engine.mds +8 -8
  118. package/src/assets/commands/_partials/_knowledge.mds +29 -15
  119. package/src/assets/commands/_partials/_preamble.mds +4 -4
  120. package/src/assets/commands/_partials/_settings.mds +3 -3
  121. package/src/assets/commands/_partials/_wave.mds +7 -7
  122. package/src/assets/commands/bug-analysis.mds +37 -48
  123. package/src/assets/commands/code-review.mds +53 -57
  124. package/src/assets/commands/debug.mds +14 -14
  125. package/src/assets/commands/dynamic-build.mds +38 -37
  126. package/src/assets/commands/dynamic-plan.mds +22 -22
  127. package/src/assets/commands/dynamic-profile.mds +2 -2
  128. package/src/assets/commands/dynamic-tickets.mds +8 -8
  129. package/src/assets/commands/explore.mds +20 -20
  130. package/src/assets/commands/implement.mds +77 -98
  131. package/src/assets/commands/plan.mds +27 -27
  132. package/src/assets/commands/release.mds +12 -12
  133. package/src/assets/commands/research.mds +19 -19
  134. package/src/assets/commands/resolve.mds +66 -60
  135. package/src/assets/commands/self-review.mds +20 -20
  136. package/src/assets/mds/git/_ops.mds +9 -2
  137. package/src/assets/mds/git/_ops_pr.mds +21 -11
  138. package/src/assets/mds/git/_ops_steps.mds +20 -4
  139. package/src/assets/mds/git/_pr.mds +21 -18
  140. package/src/assets/mds/git/_references.mds +6 -7
  141. package/src/assets/mds/tracker/_github.mds +1 -4
  142. package/src/assets/mds/tracker/_jira.mds +1 -4
  143. package/src/assets/mds/tracker/_linear.mds +1 -4
  144. package/src/assets/rules/quality.md +1 -0
  145. package/src/assets/scripts/ci-wait.cjs +389 -92
  146. package/src/assets/scripts/hooks/background-memory-update +81 -3
  147. package/src/assets/scripts/hooks/capture-prompt +12 -12
  148. package/src/assets/scripts/hooks/capture-question +11 -11
  149. package/src/assets/scripts/hooks/capture-turn +12 -12
  150. package/src/assets/scripts/hooks/{learning-lock → curation-lock} +2 -2
  151. package/src/assets/scripts/hooks/curation-move +293 -0
  152. package/src/assets/scripts/hooks/ensure-devflow-init +45 -13
  153. package/src/assets/scripts/hooks/ensure-proxy +4 -4
  154. package/src/assets/scripts/hooks/ensure-root-gitignore +4 -4
  155. package/src/assets/scripts/hooks/git-marker +81 -0
  156. package/src/assets/scripts/hooks/json-helper.cjs +176 -51
  157. package/src/assets/scripts/hooks/json-parse +1 -1
  158. package/src/assets/scripts/hooks/lib/curation-move.cjs +1582 -0
  159. package/src/assets/scripts/hooks/lib/{learning-store.cjs → curation-store.cjs} +308 -122
  160. package/src/assets/scripts/hooks/lib/decisions-format.cjs +3 -3
  161. package/src/assets/scripts/hooks/lib/mkdir-lock.cjs +24 -7
  162. package/src/assets/scripts/hooks/lib/project-paths.cjs +132 -39
  163. package/src/assets/scripts/hooks/lib/render-decisions.cjs +42 -22
  164. package/src/assets/scripts/hooks/lib/tracked-areas.cjs +452 -0
  165. package/src/assets/scripts/hooks/memory-permission +10 -2
  166. package/src/assets/scripts/hooks/memory-worker +12 -1
  167. package/src/assets/scripts/hooks/pre-compact-memory +17 -16
  168. package/src/assets/scripts/hooks/queue-append +444 -102
  169. package/src/assets/scripts/hooks/resolve-project-root +2 -2
  170. package/src/assets/scripts/hooks/session-start-context +198 -72
  171. package/src/assets/scripts/hooks/session-start-memory +42 -43
  172. package/src/assets/scripts/lib/project-config.cjs +12 -5
  173. package/src/assets/scripts/pr-evidence.cjs +5 -2
  174. package/src/assets/scripts/resolve-base.cjs +1043 -0
  175. package/src/assets/scripts/resolve-settings.cjs +283 -45
  176. package/src/assets/scripts/verify-evidence.cjs +307 -75
  177. package/src/assets/skills/agent-references/SKILL.md +11 -2
  178. package/src/assets/skills/agent-references/references/commands/implement-levels.md +29 -0
  179. package/src/assets/skills/agent-references/references/commands/implement-revalidate.md +6 -4
  180. package/src/assets/skills/agent-references/references/commands/resolve-levels.md +25 -0
  181. package/src/assets/skills/agent-references/references/synthesize/review.md +4 -4
  182. package/src/assets/skills/agent-references/references/triage/severity-tiers.md +43 -0
  183. package/src/assets/skills/agent-references/references/validate/passed-alone.md +14 -0
  184. package/src/assets/skills/apply-decisions/SKILL.md +1 -1
  185. package/src/assets/skills/docs-framework/SKILL.md +7 -7
  186. package/src/assets/skills/docs-framework/references/patterns.md +3 -4
  187. package/src/assets/skills/quality-gates/SKILL.md +1 -1
  188. package/src/assets/skills/worktree-support/references/roots.md +2 -2
  189. package/templates/lint-pack/.lint-pack.conf +86 -0
  190. package/templates/lint-pack/README.md +190 -0
  191. package/templates/lint-pack/lint-pack.sh +905 -0
  192. package/dist/cli/commands/learning.js +0 -554
  193. package/dist/core/learning-queue-cleanup.js +0 -27
  194. package/dist/core/learning-store.js +0 -61
  195. /package/dist/{learning-off → curation-off}/agents/debug.md +0 -0
  196. /package/dist/{learning-off → curation-off}/agents/design.md +0 -0
  197. /package/dist/{learning-off → curation-off}/agents/harden.md +0 -0
  198. /package/dist/{learning-off → curation-off}/agents/knowledge.md +0 -0
  199. /package/dist/{learning-off → curation-off}/agents/research.md +0 -0
  200. /package/dist/{learning-off → curation-off}/agents/skim.md +0 -0
  201. /package/dist/{learning-off → curation-off}/commands/dynamic-plan.md +0 -0
  202. /package/dist/{learning-off → curation-off}/commands/dynamic-profile.md +0 -0
  203. /package/dist/{learning-off → curation-off}/commands/dynamic-tickets.md +0 -0
  204. /package/dist/{learning-off → curation-off}/commands/release.md +0 -0
  205. /package/dist/{learning-off → curation-off}/commands/research.md +0 -0
@@ -11,12 +11,12 @@ output-dir: dist/commands
11
11
  @import "./_partials/_settings.mds" as settings
12
12
  {{authoring_preamble()}}
13
13
 
14
- <!-- learning:on -->
14
+ <!-- curation:on -->
15
15
  ### Settings line
16
16
 
17
17
  {{settings.settings_resolve()}}
18
18
 
19
- <!-- learning:end -->
19
+ <!-- curation:end -->
20
20
  {{authoring_decisions()}}
21
21
  ---
22
22
 
@@ -52,12 +52,12 @@ Before authoring, verify:
52
52
 
53
53
  Pass `{worktree}` to the workflow as its `root` argument, and its `slug` argument: the `{slug}` of the ticket directory (`tickets/{slug}/{ts}/`) when that is the ticket source, otherwise `wave`.
54
54
 
55
- <!-- learning:on -->
55
+ <!-- curation:on -->
56
56
  **1. Apply decisions context**
57
57
 
58
58
  Apply the `devflow:apply-decisions` algorithm to the DECISIONS_CONTEXT loaded by the decisions step above: scan the index, Read relevant entries, note verbatim ADR/PF IDs to inject into Design agent prompts.
59
59
 
60
- <!-- learning:end -->
60
+ <!-- curation:end -->
61
61
  **2. Read the preference profile**
62
62
 
63
63
  Check whether `~/.devflow/preference-profile.md` exists:
@@ -122,9 +122,9 @@ export const meta = {
122
122
  // AskUserQuestion happens at the command boundary after this workflow returns — NOT here.
123
123
 
124
124
  const ticketSource = args.ticketSource || args[0] || "see task description";
125
- <!-- learning:on -->
125
+ <!-- curation:on -->
126
126
  const DECISIONS_CONTEXT = args.decisionsContext || ""; // injected before authoring
127
- <!-- learning:end -->
127
+ <!-- curation:end -->
128
128
  const PREFERENCE_PROFILE = args.preferenceProfile || ""; // injected before authoring
129
129
  const TP_CONTRACT = args.tpContract || ""; // the "Test-plan line (TP)" contract below — its paragraph and four bullets — passed verbatim as tpContract when invoking the workflow, never pasted into this script (it holds backticks)
130
130
  const slug = args.slug || "wave";
@@ -146,9 +146,9 @@ const plans = await phase("plan-parallel", () =>
146
146
  parallel((tickets || []).map(ticket => () =>
147
147
  agent(`Write an implementation plan for this ticket.
148
148
  Ticket: ${JSON.stringify(ticket)}
149
- <!-- learning:on -->
149
+ <!-- curation:on -->
150
150
  Decisions context (apply devflow:apply-decisions; a plan file can be posted to the tracker, so state each decision in words, never by ID): ${DECISIONS_CONTEXT}
151
- <!-- learning:end -->
151
+ <!-- curation:end -->
152
152
  The plan must cover: approach overview, affected files and modules, key design decisions, implementation sequence (what to build first), risks and mitigations, and any open questions you cannot resolve from the ticket alone.
153
153
  Write a thorough but tight plan — every section must earn its place for a Code agent who has no other context.
154
154
  Return: { ticketTitle, planMarkdown, openDecisions (array of genuine unknowns requiring user input) }.`, { agentType: "Design" })
@@ -192,9 +192,9 @@ Return: { ticketTitle, improvements (array), acceptanceCriteria (array of number
192
192
  const crossCritic = await phase("cross-plan-critic", () =>
193
193
  agent(`Cross-plan conflict audit.
194
194
  All ticket plans + challenged criteria: ${JSON.stringify(challenged)}
195
- <!-- learning:on -->
195
+ <!-- curation:on -->
196
196
  Decisions context: ${DECISIONS_CONTEXT}
197
- <!-- learning:end -->
197
+ <!-- curation:end -->
198
198
 
199
199
  Audit:
200
200
  1. API conflicts: two tickets defining the same API differently (different signatures, return types, error codes).
@@ -202,11 +202,11 @@ Audit:
202
202
  3. Undeclared dependencies: ticket A's plan implicitly requires something ticket B provides, but no dependency is declared.
203
203
  4. Scope overlap: two tickets both claim ownership of the same module or behavior.
204
204
 
205
- <!-- learning:on -->
205
+ <!-- curation:on -->
206
206
  For each conflict found: state which two tickets are involved, describe the conflict precisely, and propose a resolution aligned with the decisions ledger.
207
- <!-- learning:off -->
207
+ <!-- curation:off -->
208
208
  For each conflict found: state which two tickets are involved, describe the conflict precisely, and propose a resolution.
209
- <!-- learning:end -->
209
+ <!-- curation:end -->
210
210
 
211
211
  Return: { conflicts (array of {tickets, conflictDescription, proposedResolution}), planAmendments (array of {ticketTitle, amendment}) }.`, { agentType: "Design" })
212
212
  );
@@ -243,26 +243,26 @@ For each ticket, write ${OUTDIR}/{ticket-slug}-plan.md, {ticket-slug} being the
243
243
  - ## Acceptance Criteria (numbered, positive + negative)
244
244
  - ## Test Plan — the challenger's testPlan lines, verbatim, one per line, and nothing else: no prose, no blank line between them, no setup or outcome
245
245
  - ## Test Scenarios — one line per TP, in TP order: TP-n: its setup, then its expected outcome, from testScenarios
246
- <!-- learning:on -->
246
+ <!-- curation:on -->
247
247
  - ## Auto-Resolved Decisions (if any — list each as: decision → resolution → source, naming a recorded decision in words, never by ID)
248
- <!-- learning:off -->
248
+ <!-- curation:off -->
249
249
  - ## Auto-Resolved Decisions (if any — list each as: decision → resolution → source)
250
- <!-- learning:end -->
250
+ <!-- curation:end -->
251
251
 
252
252
  Then write ${OUTDIR}/DECISIONS-NEEDED.md:
253
- <!-- learning:on -->
253
+ <!-- curation:on -->
254
254
  - ## Auto-Resolved Decisions — list each silently-resolved decision as: decision → resolution → source (preference profile / ADR-NNN), so auto-resolution is auditable and reversible. If none, write "None."
255
- <!-- learning:off -->
255
+ <!-- curation:off -->
256
256
  - ## Auto-Resolved Decisions — list each silently-resolved decision as: decision → resolution → source (preference profile), so auto-resolution is auditable and reversible. If none, write "None."
257
- <!-- learning:end -->
257
+ <!-- curation:end -->
258
258
  - ## Decisions Needed
259
259
  - One section per open decision: what the decision is, why it matters, what options exist.
260
260
  - Include cross-plan conflicts that were not auto-resolved.
261
- <!-- learning:on -->
261
+ <!-- curation:on -->
262
262
  - If no decisions needed, write: "No open decisions — all settled by preference profile or existing ADRs."
263
- <!-- learning:off -->
263
+ <!-- curation:off -->
264
264
  - If no decisions needed, write: "No open decisions — all settled by the preference profile."
265
- <!-- learning:end -->
265
+ <!-- curation:end -->
266
266
 
267
267
  Return: { planPaths (array), decisionsNeededPath (string), decisionsNeededCount (number) }.`, { agentType: "Synthesize" })
268
268
  );
@@ -7,12 +7,12 @@ output-dir: dist/commands
7
7
  @import "./_partials/_settings.mds" as settings
8
8
  {{authoring_preamble()}}
9
9
 
10
- <!-- learning:on -->
10
+ <!-- curation:on -->
11
11
  ### Settings line
12
12
 
13
13
  {{settings.settings_resolve()}}
14
14
 
15
- <!-- learning:end -->
15
+ <!-- curation:end -->
16
16
  {{authoring_decisions()}}
17
17
  ---
18
18
 
@@ -12,12 +12,12 @@ output-dir: dist/commands
12
12
  @import "./_partials/_settings.mds" as settings
13
13
  {{authoring_preamble()}}
14
14
 
15
- <!-- learning:on -->
15
+ <!-- curation:on -->
16
16
  ### Settings line
17
17
 
18
18
  {{settings.settings_resolve()}}
19
19
 
20
- <!-- learning:end -->
20
+ <!-- curation:end -->
21
21
  {{authoring_decisions()}}
22
22
  ---
23
23
 
@@ -61,12 +61,12 @@ Before you write the workflow script:
61
61
 
62
62
  Pass `{worktree}` to the workflow as its `root` argument.
63
63
 
64
- <!-- learning:on -->
64
+ <!-- curation:on -->
65
65
  **1. Apply decisions context**
66
66
 
67
67
  Apply the `devflow:apply-decisions` algorithm to the DECISIONS_CONTEXT loaded by the decisions step above: scan the index, Read relevant entries, note the verbatim ADR/PF IDs you will inject into Design agent prompts.
68
68
 
69
- <!-- learning:end -->
69
+ <!-- curation:end -->
70
70
  **2. Read and distill the initiative**
71
71
 
72
72
  Read or note the user's input:
@@ -103,9 +103,9 @@ export const meta = {
103
103
  const candidates = args.candidates || []; // [{title, summary, wave, dependsOn}]
104
104
  const initiative = args.initiative || args[0] || "see task description";
105
105
  const constraints = args.constraints || "";
106
- <!-- learning:on -->
106
+ <!-- curation:on -->
107
107
  const DECISIONS_CONTEXT = args.decisionsContext || ""; // injected before authoring
108
- <!-- learning:end -->
108
+ <!-- curation:end -->
109
109
  const slug = args.slug || initiative.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-+/, '').slice(0, 50).replace(/-+$/, '') || 'untitled';
110
110
  const now = new Date(), two = (n) => String(n).padStart(2, '0');
111
111
  const ts = `${now.getFullYear()}-${two(now.getMonth() + 1)}-${two(now.getDate())}_${two(now.getHours())}${two(now.getMinutes())}`;
@@ -118,9 +118,9 @@ const drafts = await phase("draft", () =>
118
118
  agent(`Draft ticket for initiative: "${initiative}"
119
119
  Ticket: ${JSON.stringify(c)}
120
120
  Constraints: ${constraints}
121
- <!-- learning:on -->
121
+ <!-- curation:on -->
122
122
  Decisions context (apply devflow:apply-decisions; the ticket is filed to the tracker, so state each decision in words, never by ID): ${DECISIONS_CONTEXT}
123
- <!-- learning:end -->
123
+ <!-- curation:end -->
124
124
  Write the ticket body following the ticket_body_template structure (Wave/Depends-on header, Summary, Scope with In/Out + anti-features, Invariants, numbered Acceptance Criteria with at least one negative criterion, Open Questions).
125
125
  Return a JSON object with: title (string), summary (string), wave (number), dependsOn (array), bodyMarkdown (string), openQuestions (array).`, { agentType: "Design" })
126
126
  ))
@@ -32,34 +32,34 @@ $ARGUMENTS
32
32
 
33
33
  ## Phases
34
34
 
35
- <!-- learning:on -->
35
+ <!-- curation:on -->
36
36
  ### Phase 1: Load Decisions (Orchestrator-Local)
37
- <!-- learning:off -->
37
+ <!-- curation:off -->
38
38
  ### Phase 1: Resolve Settings
39
- <!-- learning:end -->
39
+ <!-- curation:end -->
40
40
 
41
- <!-- learning:on -->
41
+ <!-- curation:on -->
42
42
  **Produces:** DECISIONS_CONTEXT
43
43
 
44
- <!-- learning:end -->
44
+ <!-- curation:end -->
45
45
  {{settings.settings_resolve()}}
46
46
 
47
47
  {{decisions_load()}}
48
- <!-- learning:on -->
48
+ <!-- curation:on -->
49
49
  The orchestrator uses `DECISIONS_CONTEXT` locally when framing exploration — prior decisions and pitfalls suggest specific areas to investigate. Follow `devflow:apply-decisions` to Read full entry bodies on demand. **Do NOT pass `DECISIONS_CONTEXT` to Explore sub-agents** — decisions context stays in the orchestrator, not in the investigation workers.
50
50
 
51
- <!-- learning:end -->
51
+ <!-- curation:end -->
52
52
  **No up-front feature knowledge load** — explore investigation workers read code directly to avoid confirmation bias. Feature knowledge is only created as a write-back at the end, after exploration is complete.
53
53
 
54
54
  ### Phase 2: Orient
55
55
 
56
56
  **Produces:** ORIENT_OUTPUT
57
57
 
58
- <!-- learning:on -->
59
- Spawn `Agent(subagent_type="Skim")` with `LEARNING` from the settings line, to get codebase overview relevant to the exploration question:
60
- <!-- learning:off -->
58
+ <!-- curation:on -->
59
+ Spawn `Agent(subagent_type="Skim")` with `CURATION` from the settings line, to get codebase overview relevant to the exploration question:
60
+ <!-- curation:off -->
61
61
  Spawn `Agent(subagent_type="Skim")` to get codebase overview relevant to the exploration question:
62
- <!-- learning:end -->
62
+ <!-- curation:end -->
63
63
 
64
64
  - File structure and module boundaries in the target area
65
65
  - Entry points and key abstractions
@@ -105,11 +105,11 @@ Present findings to user. Use AskUserQuestion to offer focused follow-up explora
105
105
 
106
106
  ### Phase 6: Suggest Feature Knowledge Creation (Conditional)
107
107
 
108
- <!-- learning:on -->
108
+ <!-- curation:on -->
109
109
  **Requires:** MERGED_FINDINGS, DECISIONS_CONTEXT
110
- <!-- learning:off -->
110
+ <!-- curation:off -->
111
111
  **Requires:** MERGED_FINDINGS
112
- <!-- learning:end -->
112
+ <!-- curation:end -->
113
113
  **Produces:** FEATURE_KNOWLEDGE_STATUS (created | skipped)
114
114
 
115
115
  1. Check if matching feature knowledge already exists by reading `{worktree}/.devflow/features/index.md` (or globbing frontmatter if absent). If covered → skip
@@ -143,11 +143,11 @@ Structured exploration findings with concrete code references:
143
143
  ```
144
144
  /explore (orchestrator)
145
145
  │
146
- <!-- learning:on -->
146
+ <!-- curation:on -->
147
147
  ├─ Phase 1: Load Decisions (Orchestrator-Local)
148
- <!-- learning:off -->
148
+ <!-- curation:off -->
149
149
  ├─ Phase 1: Resolve Settings
150
- <!-- learning:end -->
150
+ <!-- curation:end -->
151
151
  │
152
152
  ├─ Phase 2: Orient
153
153
  │ └─ Skim agent (codebase overview)
@@ -168,11 +168,11 @@ Structured exploration findings with concrete code references:
168
168
 
169
169
  1. **Structure over browsing** - Every claim must cite file:line references
170
170
  2. **Parallel execution** - All explorers run simultaneously for speed
171
- <!-- learning:on -->
171
+ <!-- curation:on -->
172
172
  3. **Knowledge-informed** - Prior decisions guide where to look; NO pre-loaded feature knowledge in sub-agents (avoids confirmation bias)
173
- <!-- learning:off -->
173
+ <!-- curation:off -->
174
174
  3. **Knowledge-informed** - NO pre-loaded feature knowledge in sub-agents (avoids confirmation bias)
175
- <!-- learning:end -->
175
+ <!-- curation:end -->
176
176
  4. **User-driven depth** - Present findings, then offer drill-down into specific areas
177
177
 
178
178
  ## Error Handling