@rse/ase 1.0.7 → 2.0.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 (279) hide show
  1. package/dst/ase-agent-definition-api.d.ts +184 -0
  2. package/dst/ase-agent-definition-api.js +6 -0
  3. package/dst/ase-agent-definition-builtin/condenser.js +42 -0
  4. package/dst/ase-agent-definition-builtin/editor.js +45 -0
  5. package/dst/ase-agent-definition-builtin/estimator.js +98 -0
  6. package/dst/ase-agent-definition-builtin/implementer.js +121 -0
  7. package/dst/ase-agent-definition-builtin/integrator.js +56 -0
  8. package/dst/ase-agent-definition-builtin/qualifier.js +61 -0
  9. package/dst/ase-agent-definition-builtin/rebooter.js +41 -0
  10. package/dst/ase-agent-definition-builtin/researcher.js +77 -0
  11. package/dst/ase-agent-definition-core.js +827 -0
  12. package/dst/ase-agent-fleet.js +772 -0
  13. package/dst/ase-agent-process.js +232 -0
  14. package/dst/ase-agent-relay-client.js +509 -0
  15. package/dst/ase-agent-relay-core.js +213 -0
  16. package/dst/ase-agent-relay-server-bind.js +242 -0
  17. package/dst/ase-agent-relay-server-cli.js +50 -0
  18. package/dst/ase-agent-runtime-claim.js +189 -0
  19. package/dst/ase-agent-runtime-engine.js +1100 -0
  20. package/dst/ase-agent-runtime-exec.js +275 -0
  21. package/dst/ase-agent-runtime-phase.js +581 -0
  22. package/dst/ase-agent-runtime-request.js +272 -0
  23. package/dst/ase-agent-runtime-tool.js +207 -0
  24. package/dst/ase-agent-runtime.js +1316 -0
  25. package/dst/ase-agent.js +65 -0
  26. package/dst/ase-artifact.js +6 -5
  27. package/dst/ase-config-core.js +465 -0
  28. package/dst/ase-config-schema.js +351 -0
  29. package/dst/ase-config-scope.js +172 -0
  30. package/dst/ase-config.js +25 -585
  31. package/dst/ase-hook.js +228 -111
  32. package/dst/ase-lib-daemon-cli.js +130 -0
  33. package/dst/ase-lib-hash.js +20 -0
  34. package/dst/{ase-log.js → ase-lib-log.js} +40 -7
  35. package/dst/ase-lib-server-bind.js +115 -0
  36. package/dst/ase-lib-server-cli.js +474 -0
  37. package/dst/{ase-table.js → ase-lib-table.js} +1 -1
  38. package/dst/{ase-version.js → ase-lib-version.js} +3 -0
  39. package/dst/ase-man.js +96 -0
  40. package/dst/ase-mcp.js +166 -13
  41. package/dst/{ase-getopt.js → ase-service-getopt.js} +82 -80
  42. package/dst/{ase-markdown.js → ase-service-markdown.js} +18 -11
  43. package/dst/ase-service-otel.js +1246 -0
  44. package/dst/{ase-skills.js → ase-service-skills.js} +29 -64
  45. package/dst/ase-service-state.js +101 -0
  46. package/dst/ase-service.js +251 -76
  47. package/dst/ase-setup-common.js +141 -0
  48. package/dst/ase-setup-mcp.js +359 -0
  49. package/dst/ase-setup-settings.js +837 -0
  50. package/dst/ase-setup.js +113 -869
  51. package/dst/ase-spec.js +31 -19
  52. package/dst/ase-statusline.js +108 -43
  53. package/dst/ase-task-board-core.js +739 -0
  54. package/dst/ase-task-board-filter.js +127 -0
  55. package/dst/ase-task-board-flow.js +237 -0
  56. package/dst/ase-task-board-graph.js +497 -0
  57. package/dst/ase-task-board-stats.js +263 -0
  58. package/dst/ase-task-board-tui-control.js +775 -0
  59. package/dst/ase-task-board-tui-model.js +1008 -0
  60. package/dst/ase-task-board-tui-popup.js +626 -0
  61. package/dst/ase-task-board-tui-style.js +106 -0
  62. package/dst/ase-task-board-tui-view.js +847 -0
  63. package/dst/ase-task-board-tui.js +189 -0
  64. package/dst/ase-task-board-web-client.css +1 -0
  65. package/dst/ase-task-board-web-client.html +20 -0
  66. package/dst/ase-task-board-web-client.js +81 -0
  67. package/dst/ase-task-board-web-server.js +823 -0
  68. package/dst/ase-task-board.js +134 -0
  69. package/dst/ase-task-format.js +757 -0
  70. package/dst/ase-task-request.js +208 -0
  71. package/dst/ase-task-store-client.js +495 -0
  72. package/dst/ase-task-store-core.js +804 -0
  73. package/dst/ase-task-store-issues.js +237 -0
  74. package/dst/ase-task-store-plugin-api.js +6 -0
  75. package/dst/ase-task-store-plugin-ase.js +484 -0
  76. package/dst/ase-task-store-plugin-delegate.js +137 -0
  77. package/dst/ase-task-store-plugin-gitea.js +666 -0
  78. package/dst/ase-task-store-plugin-github.js +696 -0
  79. package/dst/ase-task-store-plugin-gitlab.js +668 -0
  80. package/dst/ase-task-store-server-bind.js +538 -0
  81. package/dst/ase-task-store-server-cli.js +154 -0
  82. package/dst/ase-task.js +1335 -357
  83. package/dst/{ase-compat.js → ase-util-compat.js} +2 -2
  84. package/dst/{ase-diagram.js → ase-util-diagram.js} +107 -32
  85. package/dst/{ase-meta.js → ase-util-meta.js} +2 -2
  86. package/dst/{ase-metric.js → ase-util-metric.js} +2 -2
  87. package/dst/{ase-mint.js → ase-util-mint.js} +19 -12
  88. package/dst/{ase-worktree.js → ase-util-worktree.js} +30 -19
  89. package/dst/ase-util.js +20 -0
  90. package/dst/ase.js +108 -32
  91. package/dst/man/ase-agent-adhoc.1 +515 -0
  92. package/dst/man/ase-agent-condenser.1 +193 -0
  93. package/dst/man/ase-agent-editor.1 +212 -0
  94. package/dst/man/ase-agent-estimator.1 +214 -0
  95. package/dst/man/ase-agent-fleet.1 +185 -0
  96. package/dst/man/ase-agent-implementer.1 +233 -0
  97. package/dst/man/ase-agent-integrator.1 +213 -0
  98. package/dst/man/ase-agent-qualifier.1 +214 -0
  99. package/dst/man/ase-agent-rebooter.1 +193 -0
  100. package/dst/man/ase-agent-relay.1 +128 -0
  101. package/dst/man/ase-agent-researcher.1 +217 -0
  102. package/dst/man/ase-agent.1 +264 -0
  103. package/dst/man/ase-artifact-list.1 +38 -0
  104. package/dst/man/ase-artifact-name.1 +39 -0
  105. package/dst/man/ase-artifact.1 +56 -0
  106. package/dst/man/ase-config-delete.1 +45 -0
  107. package/dst/man/ase-config-edit.1 +48 -0
  108. package/dst/man/ase-config-get.1 +46 -0
  109. package/dst/man/ase-config-init.1 +60 -0
  110. package/dst/man/ase-config-list.1 +42 -0
  111. package/dst/man/ase-config-set.1 +52 -0
  112. package/dst/man/ase-config.1 +225 -0
  113. package/dst/man/ase-hook-permission-request.1 +36 -0
  114. package/dst/man/ase-hook-pre-tool-use.1 +59 -0
  115. package/dst/man/ase-hook-session-end.1 +47 -0
  116. package/dst/man/ase-hook-session-persona.1 +37 -0
  117. package/dst/man/ase-hook-session-start.1 +81 -0
  118. package/dst/man/ase-hook-stop.1 +34 -0
  119. package/dst/man/ase-hook-user-prompt-submit.1 +34 -0
  120. package/dst/man/ase-hook.1 +51 -0
  121. package/dst/man/ase-man.1 +67 -0
  122. package/dst/man/ase-mcp.1 +61 -0
  123. package/dst/man/ase-service-log.1 +43 -0
  124. package/dst/man/ase-service-send.1 +47 -0
  125. package/dst/man/ase-service-start.1 +54 -0
  126. package/dst/man/ase-service-status.1 +46 -0
  127. package/dst/man/ase-service-stop.1 +37 -0
  128. package/dst/man/ase-service.1 +85 -0
  129. package/dst/man/ase-setup-disable.1 +44 -0
  130. package/dst/man/ase-setup-enable.1 +45 -0
  131. package/dst/man/ase-setup-install.1 +73 -0
  132. package/dst/man/ase-setup-mcp.1 +124 -0
  133. package/dst/man/ase-setup-status.1 +60 -0
  134. package/dst/man/ase-setup-statusline.1 +92 -0
  135. package/dst/man/ase-setup-telemetry.1 +92 -0
  136. package/dst/man/ase-setup-uninstall.1 +59 -0
  137. package/dst/man/ase-setup-update.1 +64 -0
  138. package/dst/man/ase-setup.1 +93 -0
  139. package/dst/man/ase-spec-export.1 +62 -0
  140. package/dst/man/ase-spec-lint.1 +40 -0
  141. package/dst/man/ase-spec-preview.1 +40 -0
  142. package/dst/man/ase-spec.1 +46 -0
  143. package/dst/man/ase-statusline.1 +189 -0
  144. package/dst/man/ase-task-assign.1 +71 -0
  145. package/dst/man/ase-task-board.1 +384 -0
  146. package/dst/man/ase-task-delete.1 +35 -0
  147. package/dst/man/ase-task-edit.1 +46 -0
  148. package/dst/man/ase-task-idscheme.1 +65 -0
  149. package/dst/man/ase-task-lifecycle.1 +57 -0
  150. package/dst/man/ase-task-list.1 +47 -0
  151. package/dst/man/ase-task-load.1 +36 -0
  152. package/dst/man/ase-task-newid.1 +61 -0
  153. package/dst/man/ase-task-purge.1 +37 -0
  154. package/dst/man/ase-task-rename.1 +44 -0
  155. package/dst/man/ase-task-request.1 +61 -0
  156. package/dst/man/ase-task-save.1 +48 -0
  157. package/dst/man/ase-task-status.1 +55 -0
  158. package/dst/man/ase-task-store.1 +194 -0
  159. package/dst/man/ase-task-view.1 +40 -0
  160. package/dst/man/ase-task.1 +160 -0
  161. package/dst/man/ase-util-compat.1 +25 -0
  162. package/dst/man/ase-util-diagram.1 +76 -0
  163. package/dst/man/ase-util-meta.1 +45 -0
  164. package/dst/man/ase-util-metric.1 +54 -0
  165. package/dst/man/ase-util-mint.1 +59 -0
  166. package/dst/man/ase-util-worktree.1 +72 -0
  167. package/dst/man/ase-util.1 +50 -0
  168. package/dst/man/ase.1 +124 -0
  169. package/package.json +79 -21
  170. package/plugin/.claude-plugin/plugin.json +1 -1
  171. package/plugin/.codex-plugin/plugin.json +1 -1
  172. package/plugin/.github/plugin/plugin.json +1 -1
  173. package/plugin/agents/ase-meta-diagram.md +12 -8
  174. package/plugin/agents/ase-repo-review.md +322 -0
  175. package/plugin/hooks/hooks-codex.json +5 -0
  176. package/plugin/hooks/hooks-copilot.json +5 -0
  177. package/plugin/hooks/hooks.json +8 -0
  178. package/plugin/meta/ase-common-approach.md +117 -0
  179. package/plugin/meta/ase-common-changeset.md +256 -0
  180. package/plugin/meta/ase-common-code.md +10 -173
  181. package/plugin/meta/ase-common-grill.md +317 -0
  182. package/plugin/meta/ase-common-resolve.md +305 -0
  183. package/plugin/meta/ase-common-task.md +83 -4
  184. package/plugin/meta/ase-constitution.md +0 -2
  185. package/plugin/meta/ase-format-specbook.md +208 -25
  186. package/plugin/meta/ase-format-specbook.yaml +242 -851
  187. package/plugin/meta/ase-format-task.md +669 -125
  188. package/plugin/meta/ase-persona.md +3 -4
  189. package/plugin/meta/ase-skill.md +9 -0
  190. package/plugin/mods/ase-mods.ts +409 -0
  191. package/plugin/mods/claude-code.d.ts +13417 -0
  192. package/plugin/skills/ase-arch-analyze/SKILL.md +1 -1
  193. package/plugin/skills/ase-arch-analyze/help.md +2 -2
  194. package/plugin/skills/ase-code-analyze/SKILL.md +59 -8
  195. package/plugin/skills/ase-code-analyze/help.md +29 -4
  196. package/plugin/skills/ase-code-edit/SKILL.md +107 -181
  197. package/plugin/skills/ase-code-edit/help.md +118 -31
  198. package/plugin/skills/ase-code-lint/SKILL.md +64 -13
  199. package/plugin/skills/ase-code-lint/help.md +32 -2
  200. package/plugin/skills/ase-docs-proofread/SKILL.md +4 -4
  201. package/plugin/skills/ase-docs-proofread/help.md +1 -1
  202. package/plugin/skills/ase-docs-refine/SKILL.md +4 -4
  203. package/plugin/skills/ase-docs-shorten/SKILL.md +4 -4
  204. package/plugin/skills/ase-help-intent/data.md +2164 -1087
  205. package/plugin/skills/ase-help-intent/help.md +1 -1
  206. package/plugin/skills/ase-help-skill/catalog.md +12 -9
  207. package/plugin/skills/ase-meta-brainstorm/SKILL.md +1 -1
  208. package/plugin/skills/ase-meta-config/SKILL.md +3 -4
  209. package/plugin/skills/ase-meta-config/help.md +31 -10
  210. package/plugin/skills/ase-meta-mint/SKILL.md +5 -5
  211. package/plugin/skills/ase-meta-mint/help.md +10 -5
  212. package/plugin/skills/ase-meta-why/help.md +1 -1
  213. package/plugin/skills/ase-meta-workflow/SKILL.md +7 -7
  214. package/plugin/skills/ase-meta-workflow/help.md +4 -4
  215. package/plugin/skills/ase-meta-workflow/sample.md +3 -3
  216. package/plugin/skills/ase-meta-workflow/workflow.txt +22 -18
  217. package/plugin/skills/{ase-meta-changelog → ase-repo-changelog}/SKILL.md +4 -3
  218. package/plugin/skills/{ase-meta-changelog → ase-repo-changelog}/help.md +5 -5
  219. package/plugin/skills/{ase-meta-commit → ase-repo-commit}/SKILL.md +6 -6
  220. package/plugin/skills/{ase-meta-commit → ase-repo-commit}/help.md +5 -5
  221. package/plugin/skills/{ase-meta-diff → ase-repo-diff}/SKILL.md +6 -6
  222. package/plugin/skills/{ase-meta-diff → ase-repo-diff}/help.md +8 -8
  223. package/plugin/skills/{ase-code-dissect → ase-repo-dissect}/SKILL.md +19 -19
  224. package/plugin/skills/{ase-code-dissect → ase-repo-dissect}/help.md +10 -12
  225. package/plugin/skills/ase-repo-merge/SKILL.md +346 -0
  226. package/plugin/skills/ase-repo-merge/help.md +107 -0
  227. package/plugin/skills/ase-repo-resolve/SKILL.md +158 -0
  228. package/plugin/skills/ase-repo-resolve/help.md +102 -0
  229. package/plugin/skills/ase-repo-review/SKILL.md +406 -0
  230. package/plugin/skills/ase-repo-review/help.md +181 -0
  231. package/plugin/skills/ase-spec-edit/SKILL.md +117 -183
  232. package/plugin/skills/ase-spec-edit/help.md +107 -26
  233. package/plugin/skills/ase-sync-reconcile/help.md +1 -1
  234. package/plugin/skills/ase-task-assign/SKILL.md +111 -0
  235. package/plugin/skills/ase-task-assign/help.md +119 -0
  236. package/plugin/skills/ase-task-condense/SKILL.md +21 -21
  237. package/plugin/skills/ase-task-condense/help.md +12 -10
  238. package/plugin/skills/ase-task-delete/SKILL.md +1 -1
  239. package/plugin/skills/ase-task-dissect/SKILL.md +71 -48
  240. package/plugin/skills/ase-task-dissect/help.md +10 -9
  241. package/plugin/skills/ase-task-edit/SKILL.md +379 -94
  242. package/plugin/skills/ase-task-edit/help.md +95 -22
  243. package/plugin/skills/ase-task-estimate/SKILL.md +492 -0
  244. package/plugin/skills/ase-task-estimate/help.md +158 -0
  245. package/plugin/skills/ase-task-grill/SKILL.md +246 -138
  246. package/plugin/skills/ase-task-grill/help.md +129 -26
  247. package/plugin/skills/ase-task-id/SKILL.md +8 -1
  248. package/plugin/skills/ase-task-id/help.md +6 -3
  249. package/plugin/skills/ase-task-implement/SKILL.md +535 -145
  250. package/plugin/skills/ase-task-implement/help.md +138 -47
  251. package/plugin/skills/ase-task-integrate/SKILL.md +549 -0
  252. package/plugin/skills/ase-task-integrate/help.md +187 -0
  253. package/plugin/skills/ase-task-list/SKILL.md +55 -23
  254. package/plugin/skills/ase-task-list/help.md +45 -21
  255. package/plugin/skills/ase-task-reboot/SKILL.md +84 -43
  256. package/plugin/skills/ase-task-reboot/help.md +28 -8
  257. package/plugin/skills/ase-task-rename/SKILL.md +10 -2
  258. package/plugin/skills/ase-task-research/SKILL.md +386 -0
  259. package/plugin/skills/ase-task-research/help.md +102 -0
  260. package/plugin/skills/ase-task-status/SKILL.md +137 -0
  261. package/plugin/skills/ase-task-status/help.md +80 -0
  262. package/plugin/skills/ase-task-view/SKILL.md +49 -24
  263. package/plugin/skills/ase-task-view/help.md +19 -9
  264. package/plugin/agents/ase-meta-review.md +0 -187
  265. package/plugin/skills/ase-code-craft/SKILL.md +0 -264
  266. package/plugin/skills/ase-code-craft/help.md +0 -122
  267. package/plugin/skills/ase-code-refactor/SKILL.md +0 -232
  268. package/plugin/skills/ase-code-refactor/help.md +0 -109
  269. package/plugin/skills/ase-code-resolve/SKILL.md +0 -289
  270. package/plugin/skills/ase-code-resolve/help.md +0 -116
  271. package/plugin/skills/ase-meta-review/SKILL.md +0 -210
  272. package/plugin/skills/ase-meta-review/help.md +0 -96
  273. package/plugin/skills/ase-task-preflight/SKILL.md +0 -166
  274. package/plugin/skills/ase-task-preflight/help.md +0 -82
  275. /package/dst/{ase-ignore.js → ase-lib-ignore.js} +0 -0
  276. /package/dst/{ase-stdio.js → ase-lib-stdio.js} +0 -0
  277. /package/dst/{ase-kv.js → ase-service-kv.js} +0 -0
  278. /package/dst/{ase-sleep.js → ase-service-sleep.js} +0 -0
  279. /package/dst/{ase-timestamp.js → ase-service-timestamp.js} +0 -0
@@ -0,0 +1,187 @@
1
+
2
+ ## NAME
3
+
4
+ `ase-task-integrate` - Integrate a Task Change Set
5
+
6
+ ## SYNOPSIS
7
+
8
+ `ase-task-integrate`
9
+ [`--help`|`-h`]
10
+ [`--next`|`-n` *option*[,...]]
11
+ [`--worktree`|`-w` *name*]
12
+ [`--changeset`|`-c` *changeset*]
13
+ [`--draft`|`-d`]
14
+ [`--target`|`-t` *target*]
15
+ [`--mode`|`-m` `merge`|`rebase`|`squash`]
16
+ [`--no-cleanup`|`-K`]
17
+ [`--stateless`|`-S`]
18
+ [*id*]
19
+
20
+ ## DESCRIPTION
21
+
22
+ The `ase-task-integrate` skill delivers the *change set* of a task
23
+ plan, as created by `ase-task-implement`, from the plan's *changeset*
24
+ (the location of the change set) into the plan's *target* (the place
25
+ of integration). The integration itself is performed by the skill
26
+ `ase-repo-merge`, which commits still uncommitted changes of the
27
+ change set, merges them into the target branch (through a regular
28
+ merge, a rebase with fast-forward, or a squash merge, as selected via
29
+ `--mode`), resolves merge conflicts semantically, and reports the
30
+ verdict `MERGED`, `CONFLICT`, or `FAILED`.
31
+
32
+ The *changeset* is selected by the plan's `Changeset:` frontmatter
33
+ key (if absent, the configured default `project.task.default.changeset`),
34
+ overridable via `--changeset`:
35
+
36
+ - `worktree` (default): the uncommitted changes and the checked-out
37
+ branch of the context worktree. If it equals the target branch
38
+ (only possible without `--worktree`), the integration just commits
39
+ the uncommitted changes in place.
40
+ - `branch:`*name*: the existing branch *name*.
41
+ - `attachment:`*name*: the attachment block of type `text/x-diff;
42
+ charset=utf-8; kind="<name>"` of the plan, which is applied on a
43
+ *temporary* branch at the commit it is based on, so drift of the
44
+ target is resolved by the merge. A *stale* attachment -- one whose
45
+ `Modified:` key is absent or older than the `Modified:` key of the
46
+ plan frontmatter -- stops the skill with an error, and so does an
47
+ already *delivered* one -- one whose `Desc:` key carries the
48
+ `merged` marker of an earlier `--no-cleanup` integration.
49
+ - `attachment:draft`: the *implementation draft* of the plan, as
50
+ created by `ase-task-implement --draft`, selectable via the
51
+ `--draft` shorthand.
52
+
53
+ The skill does *not* maintain the *change set snapshot* of the plan
54
+ (the attachment block of type `text/x-diff; charset=utf-8;
55
+ kind="changeset"`), which only the `integrator` agent of `ase agent`
56
+ updates after a successful integration, but passes an existing one
57
+ through unchanged.
58
+
59
+ The *target* is selected by the plan's `Target:` frontmatter key
60
+ (if absent, the configured default `project.task.default.target`),
61
+ overridable via `--target`:
62
+
63
+ - `worktree`: the checked-out branch of the *origin* working copy,
64
+ i.e. the one the skill was started in (also with `--worktree`).
65
+ - `branch:`*name*: the existing branch *name*, which has to be
66
+ checked out in some worktree and to have no uncommitted changes.
67
+ - `source` (default): whatever the plan's `Source:` key refers to.
68
+
69
+ The skill stops with an error -- touching nothing -- if the change set
70
+ and the target are the same branch (except for the `worktree` changeset
71
+ of the origin working copy, which just commits in place, see above), or
72
+ if the change set carries neither commits beyond the target nor
73
+ uncommitted changes. Likewise, a merge which leaves the content of the
74
+ target unchanged, as the change set already landed earlier (e.g. on a
75
+ repeated integration), counts as *no* integration: its empty merge
76
+ commit is dropped again and the skill stops with an error. So it never
77
+ reports a success without having delivered anything.
78
+
79
+ Unless `--stateless` is given, the plan's `Status:` key follows the
80
+ task lifecycle model: for `solo` the plan has to be `OPEN` (otherwise
81
+ the integration is refused) and it becomes `CLOSED` on a successful
82
+ integration and stays `OPEN` otherwise, for `enterprise` it becomes
83
+ `INTEGRATING` before and `INTEGRATED` (on success), `QUALIFIED` (on
84
+ nothing delivered), or `DEFERRED` (otherwise) after the integration,
85
+ and for `team`, which defines no integration states, it stays
86
+ untouched.
87
+
88
+ After a successful integration, the user is asked whether to preserve
89
+ or delete the task plan, unless `--next` pre-selects this choice.
90
+
91
+ ## OPTIONS
92
+
93
+ - `--next`|`-n` *option*[,...]:
94
+ Automatically answer the user dialog for the next step. Recognized
95
+ tokens at this skill: `none` (default, interactive answer
96
+ required), `DONE` (preserve task plan and stop), or `DELETE` (hand
97
+ off to `ase-task-delete`).
98
+
99
+ - `--worktree`|`-w` *name*:
100
+ Operate on the *context worktree* `.ase/worktree/<name>` instead
101
+ of the current working copy, as for `ase-task-implement`. The
102
+ worktree has to exist already: an integration never creates it, so
103
+ a mistyped *name* stops the skill with an error. The option is
104
+ permitted for a `worktree` changeset only, as a `branch:` or
105
+ `attachment:` changeset would leave the context worktree unused.
106
+
107
+ - `--changeset`|`-c` *changeset*:
108
+ Override the plan's `Changeset:` key (`worktree`, `branch:`*name*,
109
+ or `attachment:`*name*) for this run, without changing the plan.
110
+
111
+ - `--draft`|`-d`:
112
+ Shorthand for `--changeset attachment:draft`: deliver the
113
+ *implementation draft* of the plan. Mutually exclusive with
114
+ `--changeset`.
115
+
116
+ - `--target`|`-t` *target*:
117
+ Override the plan's `Target:` key (`worktree`, `branch:`*name*, or
118
+ `source`) for this run, without changing the plan.
119
+
120
+ - `--mode`|`-m` `merge`|`rebase`|`squash`:
121
+ The merge mode, passed through to `ase-repo-merge` (default:
122
+ `merge`): `merge` creates a merge commit, `rebase` rebases the
123
+ change set branch (rewriting its commits) onto the target branch
124
+ and fast-forwards the target branch, and `squash` combines all
125
+ changes of the change set into one new commit on the target branch.
126
+
127
+ - `--no-cleanup`|`-K`:
128
+ After a successful integration, keep the delivered change set
129
+ instead of removing it: the branch and its worktree, or the
130
+ attachment block, which is then marked as delivered by appending
131
+ `, merged <commit>` to its `Desc:` key, so it is never delivered
132
+ again. Without this option, a delivered branch is removed only if
133
+ Git considers it merged (always for `--mode squash`) and its
134
+ worktree has no uncommitted changes. A temporary branch of an
135
+ attachment is always removed.
136
+
137
+ - `--stateless`|`-S`:
138
+ Leave the plan's `Status:` key untouched.
139
+
140
+ ## ARGUMENTS
141
+
142
+ - *id*:
143
+ The unique identifier of the task whose change set should be
144
+ integrated. If omitted, the *current* task id is used.
145
+
146
+ ## SCENARIOS
147
+
148
+ - You want the implemented change set committed to the code base
149
+ - You want a change set branch merged into its target branch
150
+ - You want a change set attachment delivered into the code base
151
+ - You want a reviewed implementation draft applied to the code base
152
+ - You want the task closed once its change set has landed
153
+
154
+ ## EXAMPLES
155
+
156
+ Integrate (commit) the change set of the current task plan:
157
+
158
+ ```text
159
+ ❯ /ase-task-integrate
160
+ ```
161
+
162
+ Apply the implementation draft of the task `hello` and remove the
163
+ draft attachment afterwards:
164
+
165
+ ```text
166
+ ❯ /ase-task-integrate --draft hello
167
+ ```
168
+
169
+ Merge the change set branch of the task `hello` into `main` and
170
+ keep the branch afterwards:
171
+
172
+ ```text
173
+ ❯ /ase-task-integrate --changeset branch:feature-hello --target branch:main --no-cleanup hello
174
+ ```
175
+
176
+ Squash the change set branch of the task `hello` into one commit on
177
+ its target:
178
+
179
+ ```text
180
+ ❯ /ase-task-integrate --changeset branch:feature-hello --mode squash hello
181
+ ```
182
+
183
+ ## SEE ALSO
184
+
185
+ [`ase-task-implement`](../ase-task-implement/help.md), [`ase-repo-merge`](../ase-repo-merge/help.md),
186
+ [`ase-task-status`](../ase-task-status/help.md), [`ase-task-delete`](../ase-task-delete/help.md).
187
+
@@ -19,7 +19,7 @@ List Task Plans
19
19
 
20
20
  <expand name="getopt"
21
21
  arg1="ase-task-list"
22
- arg2="--verbose|-v --include|-i=none --exclude|-e=COMPLETED,CANCELLED">
22
+ arg2="--verbose|-v --include|-i=none --exclude|-e=finished">
23
23
  $ARGUMENTS
24
24
  </expand>
25
25
 
@@ -31,21 +31,40 @@ Procedure
31
31
  ---------
32
32
 
33
33
  1. Determine the *effective state set* <states/>, i.e., the lifecycle
34
- states a task plan has to be in to be listed at all. For this, parse
35
- <getopt-option-include/> and <getopt-option-exclude/> as
34
+ states a task plan has to be in to be listed at all. For this, first
35
+ determine the *all states* set <all-states/> and the *finished
36
+ states* set <finished-states/> of the task lifecycle model
37
+ <ase-project-task-lifecycle/> of the current project:
38
+
39
+ - If <ase-project-task-lifecycle/> is `solo` (or absent):
40
+ <all-states/> is `OPEN`, `SHELVED`, `CLOSED`, and `CANCELLED`,
41
+ and <finished-states/> is `CLOSED` and `CANCELLED`.
42
+
43
+ - If <ase-project-task-lifecycle/> is `team`:
44
+ <all-states/> is `PLANNING`, `SHELVED`, `IMPLEMENTING`,
45
+ `STALLED`, `IMPLEMENTED`, and `CANCELLED`, and
46
+ <finished-states/> is `IMPLEMENTED` and `CANCELLED`.
47
+
48
+ - If <ase-project-task-lifecycle/> is `enterprise`:
49
+ <all-states/> is `DRAFTED`, `SHELVED`, `PLANNING`, `PLANNED`,
50
+ `STALLED`, `IMPLEMENTING`, `IMPLEMENTED`, `DECLINED`,
51
+ `QUALIFYING`, `QUALIFIED`, `DEFERRED`, `INTEGRATING`, `INTEGRATED`,
52
+ and `CANCELLED`, and <finished-states/> is `INTEGRATED` and
53
+ `CANCELLED`.
54
+
55
+ Then parse <getopt-option-include/> and <getopt-option-exclude/> as
36
56
  comma-separated token lists, silently dropping the `none` sentinel
37
- and any empty token. If a token <token/> is *not* one of the eight
38
- `Status:` values `DRAFTED`, `REJECTED`, `APPROVED`, `DEFERRED`,
39
- `STARTED`, `BLOCKED`, `COMPLETED`, or `CANCELLED`, only output the
40
- following <template/> and then *STOP* processing the entire current
41
- skill:
57
+ and any empty token, and replacing the `finished` sentinel with
58
+ <finished-states/>. If a token <token/> is *not* one of the
59
+ `Status:` values in <all-states/>, only output the following
60
+ <template/> and then *STOP* processing the entire current skill:
42
61
 
43
62
  <template>
44
63
  ⧉ **ASE**: ✪ skill: **ase-task-list**, ▶ ERROR: invalid state: **<token/>**
45
64
  </template>
46
65
 
47
- Otherwise set <states/> to *all* eight states if both lists are
48
- empty, to the *include* list if only it is non-empty, to all eight
66
+ Otherwise set <states/> to <all-states/> if both lists are
67
+ empty, to the *include* list if only it is non-empty, to <all-states/>
49
68
  *minus* the *exclude* list if only it is non-empty, and to the
50
69
  *include* list *minus* the *exclude* list if both are non-empty. If
51
70
  the resulting <states/> is *empty*, only output the following
@@ -61,18 +80,30 @@ Procedure
61
80
  hence emit no output at all):
62
81
 
63
82
  <ase-tpl-hint level="minimal">
64
- The `--exclude` default `COMPLETED,CANCELLED` still applies -- add `--exclude none` to reach states like `COMPLETED` via `--include`.
83
+ The `--exclude` default `finished` (the finished states of the task lifecycle model) still applies -- add `--exclude none` to reach finished states via `--include`.
65
84
  </ase-tpl-hint>
66
85
 
67
86
  2. Call the `ase_task_list(verbose: <getopt-option-verbose/>)` tool from
68
87
  the `ase` MCP server. The result is a structured object with a
69
88
  `tasks` array where each entry has an `id` and a `status` field, and
70
89
  -- if <getopt-option-verbose/> is `true` -- additionally an `mtime`
71
- field (formatted as `YYYY-MM-DD HH:MM`). *Drop* from the `tasks`
72
- array every entry whose `status` is *not* contained in <states/>. Do
73
- not output anything.
90
+ field (formatted as `YYYY-MM-DD HH:MM`) and an `effort` field (the
91
+ T-shirt size `XS`, `S`, `M`, `L`, or `XL` of the task, empty if not
92
+ estimated). *Drop* from the `tasks`
93
+ array every entry whose `status` is contained in <all-states/> but
94
+ *not* in <states/>. *Keep* every entry whose `status` is *not*
95
+ contained in <all-states/> at all, regardless of <states/>, and
96
+ remember it as an *unknown-status entry*. Do not output anything.
97
+
98
+ 3. For each *unknown-status entry* of step 2, output the following
99
+ <template/>, where <id/> and <status/> correspond to the entry and
100
+ <all-states/> is rendered as a comma-separated list:
101
+
102
+ <template>
103
+ ⧉ **ASE**: ◉ task: **<id/>**, ▶ WARNING: unknown status **<status/>** (expected one of: <all-states/>)
104
+ </template>
74
105
 
75
- 3. If the `tasks` array is empty, output the following <template/>:
106
+ Then, if the `tasks` array is empty, output the following <template/>:
76
107
 
77
108
  <template>
78
109
  ⧉ **ASE**: ◉ tasks: *(none)*
@@ -81,16 +112,17 @@ Procedure
81
112
  Else, dispatch on <getopt-option-verbose/>:
82
113
 
83
114
  - If <getopt-option-verbose/> is `true`, output the list of tasks
84
- with the following <template/>, where each <id/>, <status/>, and
85
- <mtime/> correspond to an entry in the task list:
115
+ with the following <template/>, where each <id/>, <status/>,
116
+ <effort/>, and <mtime/> correspond to an entry in the task list,
117
+ with an empty <effort/> rendered as `-`:
86
118
 
87
119
  <template>
88
120
  ⧉ **ASE**: ◉ tasks:
89
121
 
90
- | *Task Id* | *Status* | *Last Modified* |
91
- |-----------|-------------|--------------------|
92
- | **<id/>** | `<status/>` | `<mtime/>` |
93
- | [...] | [...] | [...] |
122
+ | *Task Id* | *Status* | *Effort* | *Last Modified* |
123
+ |-----------|-------------|-------------|--------------------|
124
+ | **<id/>** | `<status/>` | `<effort/>` | `<mtime/>` |
125
+ | [...] | [...] | [...] | [...] |
94
126
 
95
127
  </template>
96
128
 
@@ -130,11 +162,11 @@ Procedure
130
162
 
131
163
  <if condition="<getopt-option-verbose/> is not equal `true`">
132
164
  <ase-tpl-hint level="verbose">
133
- Use `/ase-task-list --verbose` to additionally show the status and the last-modified timestamp of each task plan.
165
+ Use `/ase-task-list --verbose` to additionally show the status, the effort size, and the last-modified timestamp of each task plan.
134
166
  </ase-tpl-hint>
135
167
  </if>
136
168
 
137
169
  <ase-tpl-hint level="verbose">
138
- Use `/ase-task-list --include`/`--exclude` to narrow the listing to certain lifecycle states, e.g. `--include STARTED,BLOCKED`.
170
+ Use `/ase-task-list --include`/`--exclude` to narrow the listing to certain lifecycle states, e.g. `--include IMPLEMENTING,STALLED`.
139
171
  </ase-tpl-hint>
140
172
 
@@ -16,42 +16,66 @@
16
16
  The `ase-task-list` skill lists all available *task ids* in the
17
17
  current project by calling the `ase_task_list` MCP tool. In the
18
18
  default mode, only the task ids are rendered as a single-column
19
- Markdown table. In verbose mode, the lifecycle status and the
20
- last-modified timestamp of each task plan are rendered as additional
21
- columns.
19
+ Markdown table. In verbose mode, the lifecycle status, the effort size
20
+ (see `ase-task-estimate`), and the last-modified timestamp of each task
21
+ plan are rendered as additional columns.
22
22
 
23
23
  The listing is restricted to an *effective state set*, derived from the
24
- `Status:` frontmatter key of each task plan (which defaults to `DRAFTED`
25
- for a plan carrying no such key): with `--include` only, exactly the
26
- listed states are shown; with `--exclude` only, all states except the
27
- listed ones; with both, the included ones minus the excluded ones. An
28
- unknown state, or a combination which cancels out to an empty set,
29
- aborts the skill with an error. By default,
30
- `--exclude COMPLETED,CANCELLED` is in effect, so finished and
31
- abandoned task plans stay out of the way. The eight states are:
24
+ `Status:` frontmatter key of each task plan (which defaults to the
25
+ initial state of the task lifecycle model for a plan carrying no such
26
+ key): with `--include` only, exactly the listed states are shown; with
27
+ `--exclude` only, all states except the listed ones; with both, the
28
+ included ones minus the excluded ones. An unknown state, or a
29
+ combination which cancels out to an empty set, aborts the skill with an
30
+ error. The `finished` sentinel stands for the finished states of the
31
+ task lifecycle model. By default, `--exclude finished` is in effect, so
32
+ finished and abandoned task plans stay out of the way. A task plan whose
33
+ `Status:` is not a state of the task lifecycle model at all is never
34
+ filtered out: it is kept in the listing and reported with a warning.
35
+
36
+ The states depend on the task lifecycle model configured for the
37
+ project via `project.task.lifecycle`. The `solo` model (default) has
38
+ the 4 states (initial: `OPEN`, finished: `CLOSED` and `CANCELLED`):
32
39
 
33
40
  ```text
34
- DRAFTED APPROVED STARTED COMPLETED
35
- REJECTED DEFERRED BLOCKED CANCELLED
41
+ OPEN SHELVED CLOSED CANCELLED
42
+ ```
43
+
44
+ The `team` model has the 6 states (initial: `PLANNING`, finished:
45
+ `IMPLEMENTED` and `CANCELLED`):
46
+
47
+ ```text
48
+ PLANNING SHELVED IMPLEMENTING STALLED IMPLEMENTED CANCELLED
49
+ ```
50
+
51
+ The `enterprise` model has the 14 states (initial: `DRAFTED`, finished:
52
+ `INTEGRATED` and `CANCELLED`):
53
+
54
+ ```text
55
+ DRAFTED SHELVED PLANNING PLANNED STALLED
56
+ IMPLEMENTING IMPLEMENTED DECLINED QUALIFYING QUALIFIED
57
+ DEFERRED INTEGRATING INTEGRATED CANCELLED
36
58
  ```
37
59
 
38
60
  ## OPTIONS
39
61
 
40
62
  - `--verbose`|`-v`:
41
- Render an additional `Status` column with the lifecycle state and an
42
- additional `Last Modified` column with the `YYYY-MM-DD HH:MM`
43
- timestamp of each task plan.
63
+ Render an additional `Status` column with the lifecycle state, an
64
+ additional `Effort` column with the T-shirt size (`-` if not
65
+ estimated), and an additional `Last Modified` column with the
66
+ `YYYY-MM-DD HH:MM` timestamp of each task plan.
44
67
 
45
68
  - `--include`|`-i`=*state*[`,`...]:
46
69
  Restrict the listed task plans to the given comma-separated list of
47
- lifecycle states (e.g. `STARTED,BLOCKED`). Without this option, all
48
- eight states are listed. The `none` sentinel selects no state at all.
70
+ lifecycle states (e.g. `IMPLEMENTING,STALLED`). Without this option,
71
+ all states are listed. The `none` sentinel selects no state at all,
72
+ the `finished` sentinel selects the finished states.
49
73
 
50
74
  - `--exclude`|`-e`=*state*[`,`...]:
51
75
  Remove the given comma-separated list of lifecycle states from the
52
76
  listed task plans. Applied *after* `--include`, so
53
- `-i DRAFTED,STARTED -e STARTED` lists `DRAFTED` only. Defaults to
54
- `COMPLETED,CANCELLED`; pass `--exclude none` to suppress the
77
+ `-i PLANNING,IMPLEMENTING -e IMPLEMENTING` lists `PLANNING` only.
78
+ Defaults to `finished`; pass `--exclude none` to suppress the
55
79
  default and list task plans in every state.
56
80
 
57
81
  ## SCENARIOS
@@ -83,7 +107,7 @@ List the task ids of every task plan, including the finished ones:
83
107
  List only the task ids of the task plans currently under work:
84
108
 
85
109
  ```text
86
- ❯ /ase-task-list --include STARTED,BLOCKED
110
+ ❯ /ase-task-list --include IMPLEMENTING,STALLED
87
111
  ```
88
112
 
89
113
  ## SEE ALSO
@@ -21,16 +21,17 @@ Reboot a Task Plan
21
21
 
22
22
  <expand name="getopt"
23
23
  arg1="ase-task-reboot"
24
- arg2="--next|-n=(none|DONE|EDIT|IMPLEMENT|PREFLIGHT)... --int-reuse-task">
24
+ arg2="--next|-n=(none|DONE|EDIT|IMPLEMENT|DRAFT)... --int-reuse-task">
25
25
  $ARGUMENTS
26
26
  </expand>
27
27
 
28
28
  <objective>
29
29
  *Reboot* the task plan by crafting it from scratch,
30
- based on the existing *WHAT* and *WHY*.
30
+ based on the existing `SPECIFICATION (WHAT)`.
31
31
  </objective>
32
32
 
33
33
  @${CLAUDE_SKILL_DIR}/../../meta/ase-format-task.md
34
+ @${CLAUDE_SKILL_DIR}/../../meta/ase-format-meta.md
34
35
  @${CLAUDE_SKILL_DIR}/../../meta/ase-common-task.md
35
36
 
36
37
  Procedure
@@ -55,8 +56,7 @@ Procedure
55
56
  <expand name="task-load-content"></expand>
56
57
 
57
58
  2. <if condition="<task-content/> is empty">
58
- Complain and tell the user to use the `ase-code-resolve`,
59
- `ase-code-refactor`, `ase-code-craft`, or `ase-task-edit` skills
59
+ Complain and tell the user to use the `ase-task-edit` skill
60
60
  first to create a task plan. Then immediately stop processing
61
61
  this skill.
62
62
  </if>
@@ -66,58 +66,98 @@ Procedure
66
66
  1. Start with <instruction></instruction> (set instruction to empty).
67
67
  Do not output anything.
68
68
 
69
- 2. <if condition="<task-content/> contains neither '- **WHAT**:' nor '- **WHY**:'">
70
- Set <instruction><task-content/></instruction> (set instruction to task content).
69
+ 2. <if condition="the `## SPECIFICATION (WHAT)` section of <task-content/> contains at least one `DOM` or `IFC` bullet-point">
70
+ Set <mode>structured</mode>. Extract the <text/> of *every*
71
+ `DOM` and `IFC` bullet-point of the `## SPECIFICATION (WHAT)`
72
+ section, in their original order, each with its
73
+ `- <box/> <type/>:` prefix stripped and its wording kept
74
+ *verbatim*. Set <instruction/> to these texts, joined by a
75
+ blank line (set instruction to the extracted specification).
76
+ The `## DESIGN (HOW)` and `## VERIFICATION (WHEN)` sections
77
+ are *deliberately* ignored, as the reboot re-derives them from
78
+ scratch.
71
79
  </if>
72
80
 
73
- 3. <if condition="<task-content/> contains '- **WHAT**: <text/>'">
74
- Set <instruction><text/></instruction> (set instruction to extracted text).
81
+ 3. <if condition="<instruction/> is still empty">
82
+ Set <mode>unstructured</mode>. The plan does not follow the
83
+ <format/> (or carries no `DOM` or `IFC` bullet-point), so the
84
+ reboot has to *file* its entire existing content into the
85
+ <format/> instead. Set <instruction/> to the full previous plan
86
+ "body" (the second block of <task-content/>, without frontmatter
87
+ and backmatter), with its wording kept *verbatim*.
75
88
  </if>
76
89
 
77
- 4. <if condition="<task-content/> contains '- **WHY**: <text/>' and <instruction/> is empty">
78
- Set <instruction><text/></instruction> (set instruction to extracted text).
79
- </if>
80
-
81
- 5. <if condition="<task-content/> contains '- **WHY**: <text/>' and <instruction/> is NOT empty">
82
- Set <instruction><instruction/>, BECAUSE <text/></instruction>
83
- (append extracted text to instruction).
84
- </if>
85
-
86
- 6. <if condition="the frontmatter of <task-content/> carries a `Created: <text/>` key">
90
+ 4. <if condition="the frontmatter of <task-content/> carries a `Created: <text/>` key">
87
91
  Set <timestamp-created><text/></timestamp-created> (set
88
92
  timestamp-created to extracted text).
89
93
  </if>
90
94
 
91
- 7. <if condition="<instruction/> is empty or contains only whitespace">
92
- The WHAT/WHY extraction yielded no usable text (e.g. a
93
- `- **WHAT**:` line existed but captured empty text, so the
94
- whole-content fallback above did not fire). Fall back to the
95
- full previous plan content: set <instruction><task-content/></instruction>
96
- (set instruction to task content).
97
- <if condition="<instruction/> is still empty or contains only whitespace">
98
- There is nothing to reboot from. Only output the following
99
- <template/> and then immediately *STOP* processing the entire
100
- current skill:
95
+ 5. <if condition="<instruction/> is empty or contains only whitespace">
96
+ There is nothing to reboot from. Only output the following
97
+ <template/> and then immediately *STOP* processing the entire
98
+ current skill:
101
99
 
102
- <template>
103
- ⧉ **ASE**: ☻ skill: **ase-task-reboot**, ▶ ERROR: empty instruction -- nothing to reboot from
104
- </template>
105
- </if>
100
+ <template>
101
+ ⧉ **ASE**: ☻ skill: **ase-task-reboot**, ▶ ERROR: empty instruction -- nothing to reboot from
102
+ </template>
106
103
  </if>
107
104
 
108
- 8. Only output the following <template/> and continue processing:
105
+ 6. Only output the following <template/> and continue processing:
109
106
 
110
107
  <template>
111
108
  ⧉ **ASE**: ◉ task: **<ase-task-id/>**, ⇌ instruction: **<instruction/>**, ▶ status: **instruction given**
112
109
  </template>
113
110
 
114
- 9. Create a new plan from scratch and store the result as
111
+ 7. <expand name="task-ground-plan" arg1=""/>
112
+
113
+ Create a new plan from scratch and store the result as
115
114
  <task-content/> by closely following the defined plan format
116
115
  <format/> and injecting into it all the information from
117
- the <instruction/> and all decisions you derived from the
118
- <instruction/>.
119
-
120
- 10. <expand name="task-save-content" arg1="plan rebooted"></expand>
116
+ the <instruction/>, all decisions you derived from the
117
+ <instruction/>, and the grounding in the project, where:
118
+
119
+ - <if condition="<mode/> is `structured`">
120
+ the `## SPECIFICATION (WHAT)` section is *seeded* by the
121
+ extracted `DOM` and `IFC` bullet-points, re-phrased and
122
+ re-structured where the <instruction/> demands it, and the
123
+ `## DESIGN (HOW)` and `## VERIFICATION (WHEN)` sections
124
+ are *re-derived* from scratch,
125
+ </if>
126
+ - <if condition="<mode/> is `unstructured`">
127
+ *all* existing content of the <instruction/> is *filed* into
128
+ the `## SPECIFICATION (WHAT)`, `## DESIGN (HOW)`, and
129
+ `## VERIFICATION (WHEN)` sections: classify each existing
130
+ statement, prose paragraph, bullet, or list item by its
131
+ nature into a `DOM`, `IFC`, `ARC`, `IMP`, `REG`, or `CON`
132
+ bullet-point, keep its wording as *verbatim* as the
133
+ bullet-point <text/> conventions allow, *never* drop a
134
+ distinct statement, and *add* missing `DOM`/`IFC`,
135
+ `ARC`/`IMP`, and `REG`/`CON` bullet-points *derived* from
136
+ the existing content where a section would otherwise stay
137
+ empty,
138
+ </if>
139
+ - every bullet-point starts in the `[ ]` todo state,
140
+ - the `Status:` frontmatter key is *reset* to the *default*
141
+ state of the task lifecycle model
142
+ <ase-project-task-lifecycle/>, as the rebooted plan starts
143
+ its lifecycle anew,
144
+ - the frontmatter keys `Group:`, `Phase:`, `After:`, `Assignee:`,
145
+ `Kind:`, and `Tags:` are taken over from the previous plan *verbatim*
146
+ where present, except that all `grilled:` tags
147
+ are *dropped* from `Tags:` (the whole key is dropped if no
148
+ other tag remains), as the grilled plan content is gone,
149
+ - the `Kind:` frontmatter key, if *absent* in the previous plan,
150
+ is *created* by *inferring* the kind of change from the
151
+ *re-created* plan content according to the plan <format/>
152
+ (defaulting to `CRAFTING`),
153
+ - the frontmatter keys `Source:`, `Changeset:`, and `Target:`
154
+ are *dropped*, so they are *reset* to their configured
155
+ defaults according to the plan <format/>, as the rebooted
156
+ plan starts its change set flow anew, and
157
+ - the entire "backmatter" of the previous plan is passed
158
+ through *verbatim*.
159
+
160
+ 8. <expand name="task-save-content" arg1="plan rebooted"></expand>
121
161
 
122
162
  4. **Decide Next Step:**
123
163
 
@@ -125,12 +165,12 @@ Procedure
125
165
 
126
166
  <expand name="task-next-select"
127
167
  arg1="ase-task-reboot"
128
- arg2="DONE|EDIT|IMPLEMENT|PREFLIGHT">
168
+ arg2="DONE|EDIT|IMPLEMENT|DRAFT">
129
169
  Next Step: How would you like to proceed with the plan?
130
170
  DONE: Stop processing.
131
171
  EDIT: Hand off plan to editing.
132
172
  IMPLEMENT: Hand off plan to implementation.
133
- PREFLIGHT: Hand off plan to pre-flighting.
173
+ DRAFT: Hand off plan to implementation drafting.
134
174
  </expand>
135
175
 
136
176
  2. Check the tool <result/> and dispatch accordingly:
@@ -150,7 +190,8 @@ Procedure
150
190
  <expand name="task-next-handoff" arg1="ase-task-implement"
151
191
  arg2="plan rebooted -- hand-off to implementation"></expand>
152
192
 
153
- - If <result/> is `PREFLIGHT`:
154
- <expand name="task-next-handoff" arg1="ase-task-preflight"
155
- arg2="plan rebooted -- hand-off to pre-flight"></expand>
193
+ - If <result/> is `DRAFT`:
194
+ <expand name="task-next-handoff" arg1="ase-task-implement"
195
+ arg2="plan rebooted -- hand-off to implementation draft"
196
+ arg3="--draft"></expand>
156
197