@rse/ase 2.0.1 → 2.0.3

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 (155) hide show
  1. package/dst/ase-agent-definition-core.js +111 -87
  2. package/dst/ase-agent-fleet.js +1 -1
  3. package/dst/ase-agent-runtime-claim.js +5 -3
  4. package/dst/ase-agent-runtime-engine.js +1 -1
  5. package/dst/ase-agent-runtime-phase.js +1 -1
  6. package/dst/ase-agent-runtime-request.js +1 -1
  7. package/dst/ase-agent-runtime.js +3 -5
  8. package/dst/ase-artifact.js +3 -3
  9. package/dst/ase-config-core.js +2 -16
  10. package/dst/ase-config-schema.js +1 -3
  11. package/dst/ase-config.js +4 -1
  12. package/dst/ase-hook.js +14 -19
  13. package/dst/ase-lib-daemon-cli.js +117 -4
  14. package/dst/ase-lib-server-cli.js +10 -10
  15. package/dst/ase-mcp.js +4 -4
  16. package/dst/ase-service-getopt.js +2 -2
  17. package/dst/ase-service-otel.js +4 -4
  18. package/dst/ase-service-skills.js +5 -15
  19. package/dst/ase-service.js +87 -210
  20. package/dst/ase-setup-common.js +1 -2
  21. package/dst/ase-setup-settings.js +6 -9
  22. package/dst/ase-setup.js +2 -3
  23. package/dst/ase-statusline.js +170 -170
  24. package/dst/ase-task-board-core.js +1 -1
  25. package/dst/ase-task-board-flow.js +7 -6
  26. package/dst/ase-task-board-graph.js +5 -4
  27. package/dst/ase-task-board-tui-control.js +51 -45
  28. package/dst/ase-task-board-tui-model.js +195 -181
  29. package/dst/ase-task-board-tui-popup.js +2 -3
  30. package/dst/ase-task-board-tui-view.js +88 -79
  31. package/dst/ase-task-board-web-client.css +1 -1
  32. package/dst/ase-task-board-web-client.js +2 -2
  33. package/dst/ase-task-board-web-server.js +4 -27
  34. package/dst/ase-task-board.js +1 -1
  35. package/dst/ase-task-format.js +1 -1
  36. package/dst/ase-task-store-client.js +17 -5
  37. package/dst/ase-task-store-core.js +5 -7
  38. package/dst/ase-task-store-issues.js +91 -0
  39. package/dst/ase-task-store-plugin-ase.js +7 -3
  40. package/dst/ase-task-store-plugin-gitea.js +11 -97
  41. package/dst/ase-task-store-plugin-github.js +5 -77
  42. package/dst/ase-task-store-plugin-gitlab.js +4 -83
  43. package/dst/ase-task.js +51 -23
  44. package/dst/ase-util-compat.js +1 -1
  45. package/dst/ase-util-diagram.js +16 -42
  46. package/dst/ase.js +5 -5
  47. package/dst/man/ase-agent-adhoc.1 +1 -1
  48. package/dst/man/ase-agent-condenser.1 +1 -1
  49. package/dst/man/ase-agent-editor.1 +1 -1
  50. package/dst/man/ase-agent-estimator.1 +1 -1
  51. package/dst/man/ase-agent-fleet.1 +1 -1
  52. package/dst/man/ase-agent-implementer.1 +1 -1
  53. package/dst/man/ase-agent-integrator.1 +1 -1
  54. package/dst/man/ase-agent-qualifier.1 +1 -1
  55. package/dst/man/ase-agent-rebooter.1 +1 -1
  56. package/dst/man/ase-agent-relay.1 +1 -1
  57. package/dst/man/ase-agent-researcher.1 +1 -1
  58. package/dst/man/ase-agent.1 +1 -1
  59. package/dst/man/ase-artifact-list.1 +1 -1
  60. package/dst/man/ase-artifact-name.1 +1 -1
  61. package/dst/man/ase-artifact.1 +1 -1
  62. package/dst/man/ase-config-delete.1 +1 -1
  63. package/dst/man/ase-config-edit.1 +1 -1
  64. package/dst/man/ase-config-get.1 +1 -1
  65. package/dst/man/ase-config-init.1 +1 -1
  66. package/dst/man/ase-config-list.1 +1 -1
  67. package/dst/man/ase-config-set.1 +1 -1
  68. package/dst/man/ase-config.1 +1 -1
  69. package/dst/man/ase-hook-permission-request.1 +1 -1
  70. package/dst/man/ase-hook-pre-tool-use.1 +1 -1
  71. package/dst/man/ase-hook-session-end.1 +1 -1
  72. package/dst/man/ase-hook-session-persona.1 +1 -1
  73. package/dst/man/ase-hook-session-start.1 +1 -1
  74. package/dst/man/ase-hook-stop.1 +1 -1
  75. package/dst/man/ase-hook-user-prompt-submit.1 +1 -1
  76. package/dst/man/ase-hook.1 +1 -1
  77. package/dst/man/ase-man.1 +1 -1
  78. package/dst/man/ase-mcp.1 +1 -1
  79. package/dst/man/ase-service-log.1 +1 -1
  80. package/dst/man/ase-service-send.1 +1 -1
  81. package/dst/man/ase-service-start.1 +1 -1
  82. package/dst/man/ase-service-status.1 +1 -1
  83. package/dst/man/ase-service-stop.1 +1 -1
  84. package/dst/man/ase-service.1 +1 -1
  85. package/dst/man/ase-setup-disable.1 +1 -1
  86. package/dst/man/ase-setup-enable.1 +1 -1
  87. package/dst/man/ase-setup-install.1 +1 -1
  88. package/dst/man/ase-setup-mcp.1 +1 -1
  89. package/dst/man/ase-setup-status.1 +1 -1
  90. package/dst/man/ase-setup-statusline.1 +1 -1
  91. package/dst/man/ase-setup-telemetry.1 +1 -1
  92. package/dst/man/ase-setup-uninstall.1 +1 -1
  93. package/dst/man/ase-setup-update.1 +1 -1
  94. package/dst/man/ase-setup.1 +1 -1
  95. package/dst/man/ase-spec-export.1 +1 -1
  96. package/dst/man/ase-spec-lint.1 +1 -1
  97. package/dst/man/ase-spec-preview.1 +1 -1
  98. package/dst/man/ase-spec.1 +1 -1
  99. package/dst/man/ase-statusline.1 +1 -1
  100. package/dst/man/ase-task-assign.1 +1 -1
  101. package/dst/man/ase-task-board.1 +3 -3
  102. package/dst/man/ase-task-delete.1 +1 -1
  103. package/dst/man/ase-task-edit.1 +1 -1
  104. package/dst/man/ase-task-idscheme.1 +1 -1
  105. package/dst/man/ase-task-lifecycle.1 +1 -1
  106. package/dst/man/ase-task-list.1 +1 -1
  107. package/dst/man/ase-task-load.1 +1 -1
  108. package/dst/man/ase-task-newid.1 +1 -1
  109. package/dst/man/ase-task-purge.1 +1 -1
  110. package/dst/man/ase-task-rename.1 +1 -1
  111. package/dst/man/ase-task-request.1 +1 -1
  112. package/dst/man/ase-task-save.1 +1 -1
  113. package/dst/man/ase-task-status.1 +1 -1
  114. package/dst/man/ase-task-store.1 +1 -1
  115. package/dst/man/ase-task-view.1 +1 -1
  116. package/dst/man/ase-task.1 +1 -1
  117. package/dst/man/ase-util-compat.1 +1 -1
  118. package/dst/man/ase-util-diagram.1 +1 -1
  119. package/dst/man/ase-util-meta.1 +1 -1
  120. package/dst/man/ase-util-metric.1 +1 -1
  121. package/dst/man/ase-util-mint.1 +1 -1
  122. package/dst/man/ase-util-worktree.1 +1 -1
  123. package/dst/man/ase-util.1 +1 -1
  124. package/dst/man/ase.1 +1 -1
  125. package/package.json +1 -1
  126. package/plugin/.claude-plugin/plugin.json +1 -1
  127. package/plugin/.codex-plugin/plugin.json +1 -1
  128. package/plugin/.github/plugin/plugin.json +1 -1
  129. package/plugin/meta/ase-common-resolve.md +2 -2
  130. package/plugin/meta/ase-skill.md +7 -0
  131. package/plugin/mods/ase-mods.ts +16 -12
  132. package/plugin/skills/ase-arch-analyze/SKILL.md +3 -1
  133. package/plugin/skills/ase-code-analyze/SKILL.md +26 -10
  134. package/plugin/skills/ase-code-analyze/help.md +11 -6
  135. package/plugin/skills/ase-code-edit/SKILL.md +5 -4
  136. package/plugin/skills/ase-code-edit/help.md +1 -1
  137. package/plugin/skills/ase-code-lint/SKILL.md +52 -27
  138. package/plugin/skills/ase-code-lint/help.md +10 -5
  139. package/plugin/skills/ase-help-intent/data.md +60 -30
  140. package/plugin/skills/ase-help-skill/help.md +3 -4
  141. package/plugin/skills/ase-meta-quorum/SKILL.md +9 -0
  142. package/plugin/skills/ase-meta-quorum/help.md +5 -3
  143. package/plugin/skills/ase-meta-workflow/sample.md +5 -3
  144. package/plugin/skills/ase-repo-changelog/SKILL.md +8 -9
  145. package/plugin/skills/ase-repo-changelog/help.md +2 -2
  146. package/plugin/skills/ase-repo-review/SKILL.md +5 -3
  147. package/plugin/skills/ase-repo-review/help.md +3 -1
  148. package/plugin/skills/ase-spec-edit/SKILL.md +2 -1
  149. package/plugin/skills/ase-spec-edit/help.md +2 -1
  150. package/plugin/skills/ase-sync-reconcile/help.md +4 -4
  151. package/plugin/skills/ase-task-dissect/SKILL.md +10 -6
  152. package/plugin/skills/ase-task-grill/help.md +1 -1
  153. package/plugin/skills/ase-task-implement/SKILL.md +58 -1
  154. package/plugin/skills/ase-task-implement/help.md +16 -0
  155. package/plugin/skills/ase-task-list/help.md +2 -2
@@ -58,10 +58,9 @@ related changes:
58
58
  The <artifact-kind/> is one or more of the following *artifact* tags,
59
59
  classifying which kind of artifact the change primarily touches. If
60
60
  multiple artifact kinds apply, comma-separate them
61
- (e.g. `[arch, code]`):
61
+ (e.g. `[code, docs]`):
62
62
 
63
63
  - `spec`: requirement/specification artifacts
64
- - `arch`: architecture/design artifacts
65
64
  - `code`: source code artifacts
66
65
  - `docs`: documentation artifacts
67
66
  - `infr`: infrastructure/build/tooling artifacts
@@ -114,14 +113,14 @@ Processing
114
113
  level-2 section (next patch version, current date) *above* it, which
115
114
  then becomes the *first* (most recent) section all subsequent steps
116
115
  operate on - the already released section *MUST* *NOT* be modified.
117
- If this command produces *no* output, the
118
- first section is still in-progress/untagged, so use the `N.M.K` from
119
- the *second* level-2 header as the baseline tag instead. If *no*
116
+ If this command produces *no* output, the first section is still
117
+ in-progress/untagged, so use the `N.M.K` from the *second* level-2
118
+ header as the baseline tag instead. Then check all Git commits
119
+ between `HEAD` and this baseline tag with the command
120
+ `git log N.M.K..HEAD --numstat --pretty=format:'%h: %s'`. If *no*
120
121
  second level-2 header exists (very first, still untagged release),
121
122
  skip the baseline tag and check *all* Git commits with the command
122
- `git log HEAD --numstat --pretty=format:'%h: %s'` instead. Then
123
- check all Git commits between `HEAD` and this baseline tag with the
124
- command `git log N.M.K..HEAD --numstat --pretty=format:'%h: %s'`.
123
+ `git log HEAD --numstat --pretty=format:'%h: %s'` instead.
125
124
 
126
125
  For finding the corresponding staged Git *changes* in the Git
127
126
  *index*, use the command `git diff --cached --numstat`, but silently
@@ -152,7 +151,7 @@ Processing
152
151
  tag(s) from the paths of the changed files. To classify a changed
153
152
  file to its artifact class, call the `ase_artifact_list(kind: [
154
153
  ... ])` tool of the `ase` MCP server *once*, passing the `kind`
155
- tokens (`spec`, `arch`, `code`, `docs`, `infr`, `othr`), and read
154
+ tokens (`spec`, `code`, `docs`, `infr`, `othr`), and read
156
155
  the returned `artifacts` array of `{ kind, files }` objects to match
157
156
  each changed file to its kind. Use the matched lower-cased kind
158
157
  directly as its <artifact-kind/> tag, and comma-separate multiple
@@ -18,8 +18,8 @@ changes in the Git *index*.
18
18
  Each entry is formatted as `<change-type> [<artifact-kind>]: <summary>`
19
19
  where *change-type* is one of `FEATURE`, `IMPROVEMENT`, `BUGFIX`,
20
20
  `UPDATE`, `CLEANUP`, or `REFACTOR`, and *artifact-kind* is one or more
21
- comma-separated *artifact class* tags out of `spec`, `arch`, `code`,
22
- `docs`, `infr`, or `othr`. Entries are grouped and sorted by this
21
+ comma-separated *artifact class* tags out of `spec`, `code`, `docs`,
22
+ `infr`, or `othr`. Entries are grouped and sorted by this
23
23
  prefix. The date in the section header is also updated to the current
24
24
  date.
25
25
 
@@ -224,11 +224,12 @@ Procedure
224
224
 
225
225
  2. <step id="STEP 2: Review Investigation">
226
226
 
227
- <if condition="<ase-project-boxing/> is equal `black`">
227
+ <if condition="<ase-project-boxing/> is equal `black` and <getopt-option-severity/> is equal `AUTO`">
228
228
 
229
229
  The project source artifacts are classified as a *black box*, so
230
230
  the user does *not* want the changes scrutinized or their
231
- findings surfaced. *Skip* the entire review investigation: do
231
+ findings surfaced (an *explicitly* given severity floor lifts this
232
+ skip). *Skip* the entire review investigation: do
232
233
  *not* invoke the `Agent` tool and do *not* read any change, set
233
234
  <findings/> to the *empty* list, set <hidden/> to `0`, set
234
235
  <verdict/> to `SKIPPED (boxing: black)`, set <summary/> to a
@@ -288,7 +289,8 @@ Procedure
288
289
  <else>
289
290
  Set <floor><getopt-option-severity/></floor> and
290
291
  <floor-origin>--severity <getopt-option-severity/></floor-origin>:
291
- an *explicitly* given severity floor always *wins* over the boxing.
292
+ an *explicitly* given severity floor always *wins* over the boxing,
293
+ both over the `grey` floor and over the `black` skip.
292
294
  </else>
293
295
 
294
296
  Then *apply the effective severity floor* <floor/>: *Keep* a finding
@@ -75,7 +75,9 @@ before it is committed or merged.
75
75
  threshold are suppressed, ordered `LOW` < `MEDIUM` < `HIGH`. The
76
76
  default `AUTO` means `MEDIUM` for a project with `grey` boxing and
77
77
  `LOW` (keep all findings) otherwise; an explicitly given floor always
78
- wins over the boxing. `ACCEPTED` findings are never suppressed, and
78
+ wins over the boxing, i.e. it also reviews a project with `black`
79
+ boxing and, e.g. with `LOW`, shows all findings of a project with
80
+ `grey` boxing. `ACCEPTED` findings are never suppressed, and
79
81
  the number of suppressed findings is always reported. Surviving
80
82
  findings are rendered in *descending severity* order `HIGH`,
81
83
  `MEDIUM`, `LOW`, `ACCEPTED`. The floor only affects the rendered
@@ -47,7 +47,8 @@ and *MUST* *NOT* call `ase_task_save(...)`. Instead, it applies the
47
47
  requested edit *in place*, so the *implementing* state *requires* `Edit`
48
48
  and `Write` to modify the affected artifacts. Every modification *MUST*
49
49
  stay restricted to the `SPEC` artifacts the edit actually demands -- the
50
- kinds `CODE`, `DOCS`, `TASK`, `INFR`, and `OTHR` are *never* touched.
50
+ kinds `CODE`, `DOCS`, `TASK`, `INFR`, and `OTHR` are *never* touched,
51
+ except for an entry in an already existing `CHANGELOG.md` file.
51
52
 
52
53
  <define name="todo-box">
53
54
 
@@ -44,7 +44,8 @@ approach selection close with an `EDIT TODO` box showing the established
44
44
 
45
45
  The change set stays strictly restricted to the `SPEC` artifacts -- the
46
46
  artifact kinds `CODE`, `DOCS`, `TASK`, `INFR`, and `OTHR` are never
47
- touched. Every generated artifact carries the current `Created:` and
47
+ touched, except for an entry in an already existing `CHANGELOG.md`
48
+ file. Every generated artifact carries the current `Created:` and
48
49
  `Modified:` timestamps, and every changed artifact gets its `Modified:`
49
50
  timestamp refreshed.
50
51
 
@@ -70,13 +70,13 @@ a unified diff instead.
70
70
  as nothing is written to disk.
71
71
 
72
72
  - `--target`|`-t` *target*[,...]:
73
- The comma-separated list of artifact kinds to update. Required (the
74
- skill errors out on an empty target).
73
+ The comma-separated list of artifact kinds to update (default:
74
+ `CODE,DOCS,INFR,OTHR`). An empty target lets the skill error out.
75
75
 
76
76
  - `--source`|`-s` *source*[,...]:
77
77
  The comma-separated list of artifact kinds to update *from*. The
78
- special value `auto` resolves to all recognized kinds except those
79
- in *target*.
78
+ special value `auto` (the default) resolves to all recognized kinds
79
+ except those in *target*.
80
80
 
81
81
  ## ARGUMENTS
82
82
 
@@ -142,7 +142,8 @@ Procedure
142
142
 
143
143
  2. *Identify the parts* according to the task id scheme of the
144
144
  project: for *every* part in <parts/>, in their derived order,
145
- call the `ase_task_newid(title: "<scope/>", proposal:
145
+ remember its <part-id/> as its <part-proposal/> and call the
146
+ `ase_task_newid(title: "<scope/>", proposal:
146
147
  "<part-id/>", taken: [ <previous/> ])` tool of the `ase` MCP
147
148
  server, where <previous/> lists the already re-identified
148
149
  <part-id/> of all preceding parts (as the tool reserves ids for
@@ -175,8 +176,9 @@ Procedure
175
176
  Call the `ase_task_list(verbose: false)` tool of the `ase` MCP
176
177
  server and set <existing/> to the `id` fields of the returned
177
178
  `tasks` array. Do not output anything related to this MCP tool
178
- call. Set <collisions/> to all <part-id/> of <parts/> which are
179
- already present in <existing/>.
179
+ call. Set <collisions/> to all <part-proposal/> of <parts/> which
180
+ are already present in <existing/> (as each <part-id/> itself was
181
+ re-identified to a free id in step 3.2).
180
182
 
181
183
  <if condition="<collisions/> is not empty AND <getopt-option-force/> is not equal `true`">
182
184
  Only output the following <template/> -- with <collisions/>
@@ -200,8 +202,9 @@ Procedure
200
202
  </if>
201
203
 
202
204
  <if condition="<collisions/> is not empty AND <getopt-option-force/> is equal `true`">
203
- The colliding sub-task plans are *overwritten* in sub-step 4.3
204
- below. Do not output anything.
205
+ Set the <part-id/> of every colliding part back to its
206
+ <part-proposal/>, so the colliding sub-task plans are
207
+ *overwritten* in sub-step 4.3 below. Do not output anything.
205
208
  </if>
206
209
 
207
210
  3. *Compose and persist one sub-task plan per part*:
@@ -263,7 +266,8 @@ Procedure
263
266
  </elseif>
264
267
 
265
268
  2. Call the `ase_task_save(id: "<part-id/>", text:
266
- "<part-content/>", create: true)` tool of the `ase` MCP server to persist
269
+ "<part-content/>", create: true)` tool of the `ase` MCP server -- for
270
+ a part of <collisions/> *without* the `create` argument -- to persist
267
271
  the sub-task plan -- this MCP tool call is the *only*
268
272
  permitted way to persist it, *NEVER* write the plan file
269
273
  via `Write`/`Edit` or by executing a shell command. If this
@@ -152,7 +152,7 @@ in state `[-]` (cancelled) or `[>]` (deferred) are never questioned.
152
152
  ## ARGUMENTS
153
153
 
154
154
  - *id*:
155
- Grill the task with the unique identifier *id* (default: `default`).
155
+ Grill the task with the unique identifier *id* (default: the current task).
156
156
  The skill accepts *only* an optional *id* argument and never a
157
157
  free-text instruction.
158
158
 
@@ -409,6 +409,32 @@ Procedure
409
409
  here. Do not output anything.
410
410
  </if>
411
411
 
412
+ Set <decisions></decisions> (empty) and
413
+ <open-points></open-points> (empty). They collect, one entry
414
+ each, the decisions you take on your own while implementing and
415
+ whatever ends up waiting for the *user*.
416
+
417
+ The implementation is *complete or it is not done*: you *MUST*
418
+ *NEVER* conclude this step while any point of the task plan is
419
+ still unimplemented -- not because the change set already grew
420
+ large, not because the remaining points look secondary or
421
+ cosmetic, and not because an open question stands in the way.
422
+ Work through *every* point of the plan within this single run.
423
+
424
+ Open questions therefore *MUST* *NOT* end the run: whenever the
425
+ plan leaves a detail undecided or admits several defensible
426
+ alternatives, *decide it yourself* -- picking what best fits the
427
+ surrounding artifacts and the internalized tenets -- and append
428
+ the decision plus a half-sentence rationale to <decisions/>,
429
+ instead of asking the user and stopping. Only a *genuine
430
+ blocker*, which no defensible assumption can bridge (a missing
431
+ credential, an inaccessible external system), may leave a point
432
+ unimplemented; append such a point to <open-points/> instead,
433
+ naming what remains open and why. Append to <open-points/> as
434
+ well whatever else now waits for the user once this run ends --
435
+ follow-ups you deliberately left out of scope, each with its
436
+ reason, and results which genuinely need their review.
437
+
412
438
  You *MUST* *skip* every bullet-point of <task-content/> in
413
439
  checkbox state `[-]` (cancelled) or `[>]` (deferred): neither
414
440
  realize its <text/> in the change set nor perform its check, and
@@ -594,7 +620,38 @@ Procedure
594
620
  ⧉ **ASE**: ◉ task: **<ase-task-id/>**, ⇢ changeset: **<task-changeset/>**, ▶ status: **plan implemented**
595
621
  </template>
596
622
 
597
- 7. Give the closing hint by expanding the following (which,
623
+ 7. Close the implementation with the boxed summary of what this run
624
+ left open and what it decided on its own. Both boxes are written
625
+ in the conversation language and the active persona style, list
626
+ *one entry per line*, and are *omitted entirely* when they carry
627
+ no content -- a run which implemented every point and took no
628
+ decision of its own outputs no box at all.
629
+
630
+ <if condition="<open-points/> is not empty">
631
+ Output everything which now waits for the *user* with the
632
+ following <template/>:
633
+
634
+ <template>
635
+ <ase-tpl-boxed title="OPEN POINTS">
636
+ ○ <open-point/>
637
+ </ase-tpl-boxed>
638
+ </template>
639
+ </if>
640
+
641
+ <if condition="<decisions/> is not empty">
642
+ The run decided open questions *on the user's behalf*, so they
643
+ *MUST* be able to revisit or overrule each of them. Output the
644
+ collected decisions -- each naming the chosen option and its
645
+ rationale -- directly below, with the following <template/>:
646
+
647
+ <template>
648
+ <ase-tpl-boxed title="DECISIONS">
649
+ ○ <decision/> -- <rationale/>
650
+ </ase-tpl-boxed>
651
+ </template>
652
+ </if>
653
+
654
+ 8. Give the closing hint by expanding the following (which,
598
655
  depending on the configured <ase-guidance-level/>, may expand
599
656
  into nothing and hence emit no output at all):
600
657
 
@@ -102,6 +102,22 @@ the entire verification phase is strictly skipped: no build, tests,
102
102
  linter, type-checker, or program execution is performed once the
103
103
  source files have been modified.
104
104
 
105
+ The implementation runs to *completion*: the skill never concludes
106
+ while any point of the plan is still unimplemented, neither because the
107
+ change set grew large nor because an open question stands in the way.
108
+ Undecided details and defensible alternatives are therefore *decided by
109
+ the skill itself*, guided by the surrounding artifacts and the
110
+ internalized tenets, instead of interrupting the run with a question.
111
+ Once the change set is applied, the run closes with up to two boxed
112
+ summaries: `OPEN POINTS` lists everything now waiting for the user --
113
+ points left unimplemented on a *genuine blocker* no assumption can
114
+ bridge, follow-ups deliberately left out of scope with their reason,
115
+ and results needing review -- and `DECISIONS` lists each decision the
116
+ skill took on its own together with its rationale, so it can be
117
+ revisited or overruled. Either box is omitted entirely when it has no
118
+ content; a run which implemented every point and decided nothing on its
119
+ own emits no box at all.
120
+
105
121
  After implementation, the user is asked whether to stop, hand off to
106
122
  `ase-task-edit`, hand off to `ase-task-integrate`, or delete the task
107
123
  plan, unless `--next` pre-selects this choice.
@@ -68,8 +68,8 @@ DEFERRED INTEGRATING INTEGRATED CANCELLED
68
68
  - `--include`|`-i`=*state*[`,`...]:
69
69
  Restrict the listed task plans to the given comma-separated list of
70
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.
71
+ all states are listed. The `none` sentinel (the default) imposes no
72
+ restriction, the `finished` sentinel selects the finished states.
73
73
 
74
74
  - `--exclude`|`-e`=*state*[`,`...]:
75
75
  Remove the given comma-separated list of lifecycle states from the