@rse/ase 0.9.54 → 0.9.56

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 (86) hide show
  1. package/dst/ase-log.js +5 -0
  2. package/dst/ase-service.js +45 -6
  3. package/dst/ase-setup.js +4 -2
  4. package/dst/ase-statusline.js +6 -8
  5. package/dst/ase-task.js +152 -28
  6. package/package.json +5 -5
  7. package/plugin/.claude-plugin/plugin.json +1 -1
  8. package/plugin/.codex-plugin/plugin.json +1 -1
  9. package/plugin/.github/plugin/plugin.json +1 -1
  10. package/plugin/agents/ase-code-analyze.md +1 -1
  11. package/plugin/agents/ase-code-lint.md +4 -4
  12. package/plugin/agents/ase-meta-chat.md +1 -1
  13. package/plugin/agents/ase-meta-proximity.md +1 -1
  14. package/plugin/meta/ase-common-code.md +165 -2
  15. package/plugin/meta/ase-common-task.md +17 -15
  16. package/plugin/meta/ase-constitution.md +3 -3
  17. package/plugin/meta/ase-control.md +7 -7
  18. package/plugin/meta/ase-dialog.md +5 -4
  19. package/plugin/meta/ase-format-arch.md +7 -8
  20. package/plugin/meta/ase-format-spec.md +10 -11
  21. package/plugin/meta/ase-format-task.md +90 -20
  22. package/plugin/meta/ase-getopt.md +1 -1
  23. package/plugin/meta/ase-persona.md +3 -3
  24. package/plugin/meta/ase-skill.md +14 -24
  25. package/plugin/meta/ase-tenets.md +5 -5
  26. package/plugin/package.json +2 -2
  27. package/plugin/skills/ase-arch-analyze/SKILL.md +1 -1
  28. package/plugin/skills/ase-arch-analyze/help.md +1 -1
  29. package/plugin/skills/ase-arch-discover/SKILL.md +8 -6
  30. package/plugin/skills/ase-code-analyze/SKILL.md +1 -1
  31. package/plugin/skills/ase-code-analyze/help.md +1 -1
  32. package/plugin/skills/ase-code-craft/SKILL.md +2 -153
  33. package/plugin/skills/ase-code-craft/help.md +1 -1
  34. package/plugin/skills/ase-code-explain/SKILL.md +3 -3
  35. package/plugin/skills/ase-code-insight/SKILL.md +9 -7
  36. package/plugin/skills/ase-code-lint/SKILL.md +7 -5
  37. package/plugin/skills/ase-code-lint/help.md +2 -2
  38. package/plugin/skills/ase-code-refactor/SKILL.md +4 -155
  39. package/plugin/skills/ase-code-resolve/SKILL.md +8 -159
  40. package/plugin/skills/ase-docs-distill/SKILL.md +2 -2
  41. package/plugin/skills/ase-docs-distill/help.md +1 -1
  42. package/plugin/skills/ase-docs-proofread/SKILL.md +7 -3
  43. package/plugin/skills/ase-help-intent/SKILL.md +33 -9
  44. package/plugin/skills/ase-help-skill/SKILL.md +1 -1
  45. package/plugin/skills/ase-meta-brainstorm/SKILL.md +11 -2
  46. package/plugin/skills/ase-meta-changelog/SKILL.md +12 -8
  47. package/plugin/skills/ase-meta-commit/SKILL.md +11 -1
  48. package/plugin/skills/ase-meta-compat/SKILL.md +2 -2
  49. package/plugin/skills/ase-meta-config/help.md +4 -4
  50. package/plugin/skills/ase-meta-diaboli/SKILL.md +12 -3
  51. package/plugin/skills/ase-meta-diff/SKILL.md +11 -13
  52. package/plugin/skills/ase-meta-eli5/SKILL.md +3 -3
  53. package/plugin/skills/ase-meta-eli5/help.md +1 -1
  54. package/plugin/skills/ase-meta-evaluate/SKILL.md +3 -3
  55. package/plugin/skills/ase-meta-quorum/SKILL.md +17 -17
  56. package/plugin/skills/ase-meta-quotes/SKILL.md +1 -1
  57. package/plugin/skills/ase-meta-quotes/help.md +4 -3
  58. package/plugin/skills/ase-meta-review/SKILL.md +7 -5
  59. package/plugin/skills/ase-meta-review/help.md +2 -2
  60. package/plugin/skills/ase-meta-search/SKILL.md +18 -0
  61. package/plugin/skills/ase-meta-steelman/SKILL.md +11 -2
  62. package/plugin/skills/ase-meta-why/SKILL.md +15 -6
  63. package/plugin/skills/ase-meta-why/help.md +3 -3
  64. package/plugin/skills/ase-sync-export/SKILL.md +2 -1
  65. package/plugin/skills/ase-sync-export/help.md +1 -1
  66. package/plugin/skills/ase-sync-reconcile/SKILL.md +16 -2
  67. package/plugin/skills/ase-task-condense/SKILL.md +19 -72
  68. package/plugin/skills/ase-task-condense/help.md +1 -1
  69. package/plugin/skills/ase-task-delete/SKILL.md +1 -1
  70. package/plugin/skills/ase-task-dissect/SKILL.md +5 -18
  71. package/plugin/skills/ase-task-edit/SKILL.md +74 -26
  72. package/plugin/skills/ase-task-grill/SKILL.md +30 -124
  73. package/plugin/skills/ase-task-grill/help.md +2 -1
  74. package/plugin/skills/ase-task-id/SKILL.md +12 -2
  75. package/plugin/skills/ase-task-implement/SKILL.md +37 -4
  76. package/plugin/skills/ase-task-implement/help.md +9 -5
  77. package/plugin/skills/ase-task-list/SKILL.md +60 -15
  78. package/plugin/skills/ase-task-list/help.md +49 -6
  79. package/plugin/skills/ase-task-preflight/SKILL.md +20 -8
  80. package/plugin/skills/ase-task-preflight/help.md +4 -3
  81. package/plugin/skills/ase-task-reboot/SKILL.md +19 -62
  82. package/plugin/skills/ase-task-reboot/help.md +1 -1
  83. package/plugin/skills/ase-task-view/SKILL.md +27 -4
  84. package/dst/ase-guidance.js +0 -89
  85. package/dst/ase-persona.js +0 -87
  86. package/dst/ase-stdout.js +0 -18
@@ -4,7 +4,7 @@ Code Skill Common Steps
4
4
 
5
5
  <define name="code-tenets">
6
6
 
7
- You *MUST* internalize and strictly honor the **GENERIC TENETS**, and
7
+ You *MUST* internalize and strictly honor the **GENERIC TENETS** and
8
8
  the **<arg1/> TENETS** of the **ASE Tenets** in the following creation
9
9
  and updating of code. Do not output anything.
10
10
 
@@ -15,7 +15,7 @@ and updating of code. Do not output anything.
15
15
  Determine the *kind of change* the task plan describes and internalize
16
16
  the corresponding tenet sets:
17
17
 
18
- - If <task-content/> contains a `☯ Kind: <text/>` header line
18
+ - If the frontmatter of <task-content/> carries a `Kind: <text/>` key
19
19
  and <text/> is one of `CRAFTING`, `REFACTORING`, or `RESOLVING`:
20
20
  Set <task-kind><text/></task-kind> (set task kind to the stated kind).
21
21
 
@@ -32,3 +32,166 @@ Then honor the tenet sets of <task-kind/>:
32
32
  <expand name="code-tenets" arg1="<task-kind/>"></expand>
33
33
 
34
34
  </define>
35
+
36
+ <define name="code-approaches">
37
+
38
+ You *MUST* perform the following sub-steps *internally* and *without
39
+ any output* until and including the recommendation decision. Only
40
+ sub-steps 4-7 below are allowed to produce output; sub-steps 4-6 only if
41
+ <getopt-option-auto/> is equal `false` *and* <ase-project-boxing/>
42
+ is *not* equal `black`.
43
+
44
+ If <getopt-option-auto/> is equal `true` or <ase-project-boxing/> is
45
+ equal `black`, *skip* the reporting sub-steps 4-6 entirely (they
46
+ perform no output at all) to speed up processing.
47
+
48
+ 1. *Propose* a corresponding *<arg1/> approach*, optionally including
49
+ some *alternative* <arg1/> approaches. Do *not* output anything
50
+ in this sub-step.
51
+
52
+ 2. *Reflect* on and *critique* the proposed approaches by deriving,
53
+ per approach, a small set of concrete *pros* and *cons*. Do
54
+ *not* output anything in this sub-step.
55
+
56
+ 3. Based on the reflection, *decide* which approach to recommend
57
+ and annotate it with an <annotation/> of
58
+ ` ⚝ **RECOMMENDATION** ⚝`. All other approaches receive an
59
+ empty <annotation/>. Do *not* output anything in this sub-step.
60
+
61
+ 4. Indicate start of reporting by showing the following <template/>:
62
+
63
+ <template>
64
+ <ase-tpl-head title="APPROACHES"/>
65
+ </template>
66
+
67
+ 5. Now report each approach with the following <template/>,
68
+ inlining its pros/cons derived in sub-step 2, and do not output
69
+ anything else in this step:
70
+
71
+ <template>
72
+ ● **APPROACH A<n/>**<annotation/>: **<summary/>**
73
+ ○ [...]
74
+ ⊕ *PRO*: [...]
75
+ ⊖ *CON*: [...]
76
+ </template>
77
+
78
+ Hints:
79
+
80
+ - Give a short one-sentence <summary/> of the <arg1/> approach
81
+ plus *precise* and *ultra brief and concise* <arg1/>
82
+ information. Try to keep the number of bullet points
83
+ (`○ [...]`) in the range of 1-4.
84
+
85
+ 6. Indicate end of reporting by showing the following <template/>:
86
+
87
+ <template>
88
+ <ase-tpl-foot title="APPROACHES"/>
89
+ </template>
90
+
91
+ 7. <if condition="<getopt-option-auto/> is not equal `true` and <ase-project-boxing/> is not equal `black`">
92
+
93
+ In the following, you *MUST* *NOT* use your built-in
94
+ <user-dialog-tool/> tool! Instead, you *MUST* just show a
95
+ custom dialog according to the expanded `custom-dialog`
96
+ definition. You *MUST* closely follow this definition.
97
+
98
+ Let the user choose the preferred approach A<n/> by raising
99
+ a question with the following custom dialog, where per
100
+ approach A<n/>, you determine an ultra brief summary
101
+ <short-summary/> and then use the answer option `A<n/>:
102
+ ⚝ **RECOMMENDATION** ⚝ - <short-summary/>` for your
103
+ recommended approach plus zero or more answer options `A<n/>:
104
+ <short-summary/>` for all other approaches:
105
+
106
+ <expand name="custom-dialog" arg1="--no-other">
107
+ Select Approach: Select your preferred <arg2/> approach to follow?
108
+ A<n/>: <short-summary/>
109
+ [...]
110
+ </expand>
111
+
112
+ </if>
113
+ <else>
114
+
115
+ Set <n/> to the number of the <arg1/> approach A<n/> you recommend.
116
+ Output a hint with the following <template/>:
117
+
118
+ <template>
119
+ ⧉ **ASE**: ◉ task: **<ase-task-id/>**, ▶ status: **auto-chosen approach A<n/>**
120
+ </template>
121
+
122
+ </else>
123
+
124
+ </define>
125
+
126
+ <define name="code-next-dispatch">
127
+
128
+ Treat <getopt-option-next/> as a comma-separated chronological
129
+ list of pre-selected next-step tokens. *Peek* the *first* token
130
+ as <head/> (or `none` if the list is `none`/empty).
131
+ Set <args>--int-reuse-task</args>.
132
+
133
+ 1. <if condition="<head/> is equal `DONE`">
134
+ Consume the head: set <getopt-option-next/> to the remaining
135
+ tokens (joined back with `,`, or `none` if empty). `DONE`
136
+ means the freshly composed plan is finalized as-is, so do
137
+ *not* hand off to `ase-task-edit`. Only output the following
138
+ <template/> and then *STOP*. Do *not* implement the plan.
139
+
140
+ <template>
141
+ ⧉ **ASE**: ◉ task: **<ase-task-id/>**, ✪ plan: **<words/>** words, ▶ status: **plan finalized -- done**
142
+ </template>
143
+ </if>
144
+
145
+ 2. <elseif condition="<head/> is equal `IMPLEMENT`">
146
+ Consume the head: set <getopt-option-next/> to the remaining
147
+ tokens (joined back with `,`, or `none` if empty).
148
+ <if condition="<getopt-option-next/> is not equal `none`">
149
+ Set <args><args/> --next <getopt-option-next/></args>
150
+ </if>
151
+ Call the tool `Skill(skill: "ase:ase-task-implement", args: "<args/>")`
152
+ to *implement* the freshly composed plan, bypassing `ase-task-edit`.
153
+ </elseif>
154
+
155
+ 3. <elseif condition="<head/> is equal `PREFLIGHT`">
156
+ Consume the head: set <getopt-option-next/> to the remaining
157
+ tokens (joined back with `,`, or `none` if empty).
158
+ <if condition="<getopt-option-next/> is not equal `none`">
159
+ Set <args><args/> --next <getopt-option-next/></args>
160
+ </if>
161
+ Call the tool `Skill(skill: "ase:ase-task-preflight", args: "<args/>")`
162
+ to *preflight* the freshly composed plan, bypassing `ase-task-edit`.
163
+ </elseif>
164
+
165
+ 4. <elseif condition="<head/> is equal `GRILL`">
166
+ Consume the head: set <getopt-option-next/> to the remaining
167
+ tokens (joined back with `,`, or `none` if empty). `GRILL`
168
+ is this skill's own dispatch token, *not* part of
169
+ `ase-task-grill`'s `--next` vocabulary, so it must be
170
+ stripped here rather than forwarded. All remaining tokens are
171
+ `ase-task-grill`'s own vocabulary and are forwarded verbatim.
172
+ <if condition="<getopt-option-next/> is not equal `none`">
173
+ Set <args><args/> --next <getopt-option-next/></args>
174
+ </if>
175
+ Call the tool `Skill(skill: "ase:ase-task-grill", args: "<args/>")`
176
+ to *grill* the freshly composed plan, bypassing `ase-task-edit`.
177
+ </elseif>
178
+
179
+ 5. <else>
180
+ Hand off to `ase-task-edit`.
181
+ <if condition="<head/> is equal `EDIT`">
182
+ Consume the head: set <getopt-option-next/> to the remaining
183
+ tokens (joined back with `,`, or `none` if empty). `EDIT`
184
+ is this skill's own dispatch token, *not* part of
185
+ `ase-task-edit`'s `--next` vocabulary, so it must be
186
+ stripped here rather than forwarded.
187
+ </if>
188
+ All remaining tokens are `ase-task-edit`'s own vocabulary
189
+ and are forwarded verbatim, so `ase-task-edit` consumes its
190
+ own head itself.
191
+ <if condition="<getopt-option-next/> is not equal `none`">
192
+ Set <args><args/> --next <getopt-option-next/></args>
193
+ </if>
194
+ Then call the tool `Skill(skill: "ase:ase-task-edit", args: "<args/>")`.
195
+ </else>
196
+
197
+ </define>
@@ -62,29 +62,30 @@ Task Skill Common Steps
62
62
 
63
63
  <if condition="
64
64
  <getopt-option-int-reuse-task/> is equal `true`
65
- *and* a `ase_task_save(id: '<ase-task-id/>', ...)` tool call
65
+ *and* an `ase_task_save(id: '<ase-task-id/>', ...)` tool call
66
66
  exists earlier in the current session
67
67
  ">
68
- Set <text/> to the `text` *output* field of the most recent
68
+ Set <text/> to the `text` *argument* of the most recent
69
69
  `ase_task_save(id: '<ase-task-id/>', ...)` tool call -- this is
70
- the rendering-prepared plan content and *MUST NOT* be confused
71
- with the `text` *argument* passed into that call -- *without*
70
+ the *authoring form* of the plan and *MUST NOT* be confused
71
+ with the `text` *output* field of that call -- *without*
72
72
  calling `ase_task_load` again. Set <status>plan
73
73
  reused</status>. Do not output anything.
74
74
  </if>
75
75
  <else>
76
76
  Call the `ase_task_load(id: "<ase-task-id/>")` tool of the
77
- `ase` MCP server to load the current task plan content and
78
- set <text/> to the `text` output field of this `ase_task_load`
79
- tool call. Do not output anything related to this MCP tool
80
- call. Set <status>plan loaded</status>.
77
+ `ase` MCP server to load the current task plan content in its
78
+ *authoring form* -- the `variant` argument defaults to `source`
79
+ -- and set <text/> to the `text` output field of this
80
+ `ase_task_load` tool call. Do not output anything related to
81
+ this MCP tool call. Set <status>plan loaded</status>.
81
82
  </else>
82
83
 
83
84
  - If <text/> starts with `ERROR:` or `WARNING:`:
84
85
  Set <task-content></task-content> (set task content to empty).
85
86
  Set <words/> to "0".
86
87
 
87
- - If <text/> starts NOT with `ERROR:` and NOT with `WARNING:`:
88
+ - If <text/> does NOT start with `ERROR:` and NOT with `WARNING:`:
88
89
  Set <task-content><text/></task-content> (set task content to text).
89
90
  Calculate the number of words <words/> of <task-content/>.
90
91
 
@@ -101,19 +102,20 @@ Only output the following <template/>:
101
102
  Update <timestamp-modified/> with the current time in ISO-style
102
103
  format, which has to be determined by calling the
103
104
  `ase_timestamp(format: "yyyy-LL-dd HH:mm")` tool of the `ase`
104
- MCP server and use the `text` field of its response. If
105
+ MCP server and using the `text` field of its response. If
105
106
  <timestamp-created/> is still unset (because the plan content
106
- had no `Created:` line), set
107
+ had no `Created:` frontmatter key), set
107
108
  <timestamp-created><timestamp-modified/></timestamp-created>
108
109
  (fall back to the modified timestamp). Re-insert the current
109
110
  <ase-task-id/>, the original <timestamp-created/>, and the
110
- refreshed <timestamp-modified/> into <task-content/> and calculate
111
+ refreshed <timestamp-modified/> into the frontmatter keys `Id:`,
112
+ `Created:`, and `Modified:` of <task-content/> and calculate
111
113
  the number of words <words/> of <task-content/>.
112
114
 
113
115
  Call the `ase_task_save(id: "<ase-task-id/>", text:
114
116
  "<task-content/>")` tool of the `ase` MCP server to save the task
115
- plan content. Do not output anything related to this MCP call
116
- except the following <template/>:
117
+ plan content in its *authoring form*. Do not output anything
118
+ related to this MCP call except the following <template/>:
117
119
 
118
120
  <template>
119
121
  ⧉ **ASE**: ◉ task: **<ase-task-id/>**, ✪ plan: **<words/>** words, ▶ status: **<arg1/>**
@@ -142,7 +144,7 @@ except the following <template/>:
142
144
  ⧉ **ASE**: ☻ skill: **<arg1/>**, ▶ ERROR: invalid `--next` token: **<head/>**
143
145
  </template>
144
146
 
145
- - If <getopt-option-next/> is equal to `none`:
147
+ - Else, i.e. <getopt-option-next/> was *originally* equal to `none`:
146
148
 
147
149
  In the following, you *MUST* *NOT* use your built-in
148
150
  <user-dialog-tool/> tool! Instead, you *MUST* just show a
@@ -13,7 +13,7 @@ which boosts you to an expert-level Software Engineering AI agent.
13
13
  - Do *not* use braces around single-statement blocks in "if" and "while" constructs unless the language requires them.
14
14
  - Do *not* insist on early "return" in "if" blocks, if an "else" block exists.
15
15
  - Do *not* remove any whitespace in the code formatting -- keep whitespace aligned with code base.
16
- - Do *not* produce any trailing white-spaces on any lines.
16
+ - Do *not* produce any trailing whitespace on any lines.
17
17
  - Do *not* guess missing tool call parameters or fill them with invented placeholder values.
18
18
 
19
19
  ## Commandments
@@ -24,7 +24,7 @@ which boosts you to an expert-level Software Engineering AI agent.
24
24
  - Assume your *internal knowledge of dependencies* (libraries, frameworks, tools, and their implementations)
25
25
  is *outdated*; always verify the current API, version, and usage pattern against the local sources
26
26
  or the web before writing any code against them.
27
- - Before proposing any code changes, explain *WHAT* the proposed changes do and *WHY* it is necessary.
27
+ - Before proposing any code changes, explain *WHAT* the proposed changes do and *WHY* they are necessary.
28
28
  - Use *concise* and *type-safe code* only.
29
29
  - Use *precise* and *surgical code changes* only.
30
30
  - Be very *pedantic* on code style.
@@ -36,7 +36,7 @@ which boosts you to an expert-level Software Engineering AI agent.
36
36
  - Always use *parentheses around arrow function parameters*, even for a single parameter.
37
37
  - Make a line break before the keywords "else", "catch", and "finally".
38
38
  - Try to *vertically align similar operators* on consecutive, similar lines.
39
- - Place spaces after opening and before closing angle brackets
39
+ - Place spaces after opening and before closing square brackets
40
40
  (except for array access and array types) and braces (except for regular expression ranges).
41
41
  - Use *double-quotes* (`"[...]"`) instead of single-quotes (`'[...]'`) for all strings.
42
42
  - Use K&R coding style with *opening braces* at the end of lines and *closing braces* at the beginning of lines.
@@ -6,9 +6,9 @@ Control Flow Constructs
6
6
  <define name="<define-name/>"><define-body/></define>:
7
7
 
8
8
  This specifies a *reusable definition* named <define-name/> and
9
- an <define-body/> which can contain arbitrary information with
9
+ a <define-body/> which can contain arbitrary information with
10
10
  optional `<args/>` (or alternatively, individual `<arg1/>`,
11
- `<arg2/>`, etc) and optional `<content/>` references from
11
+ `<arg2/>`, etc.) and optional `<content/>` references from
12
12
  subsequent <expand/> calls.
13
13
  This construct is expanded into nothing.
14
14
  Do not output anything.
@@ -20,7 +20,7 @@ Control Flow Constructs
20
20
  construct is expanded to the <define-body/> of <define/> with
21
21
  `<args/>` substituted with `<expand-arg1/> <expand-arg2/> [...]`,
22
22
  `<arg1/>` substituted with <expand-arg1/>, `<arg2/>` substituted
23
- with <expand-arg2/>, etc, and `<content/>` substituted with
23
+ with <expand-arg2/>, etc., and `<content/>` substituted with
24
24
  <expand-content/>. Do not output anything else.
25
25
 
26
26
  - *IMPORTANT*: You *MUST* honor the following control flow construct:
@@ -47,7 +47,7 @@ Control Flow Constructs
47
47
  <if condition="<if-condition/>"><if-body/></if>:
48
48
 
49
49
  This specifies a simple condition which is expanded to <if-body/>
50
- if <if-condition/> is met, or to empty string if <if-condition/> is
50
+ if <if-condition/> is met, or to the empty string if <if-condition/> is
51
51
  *not* met. It can be optionally followed by one or more <elseif/>
52
52
  constructs and/or one final <else/> construct. Do not output anything else.
53
53
 
@@ -112,11 +112,11 @@ Control Flow Constructs
112
112
  anything else.
113
113
 
114
114
  - *IMPORTANT*: You *MUST* honor the following control flow construct:
115
- <agent-consolidation [group=<agent-group/>]/>
115
+ <agent-consolidation [group=<agent-group/>]/>:
116
116
 
117
117
  This specifies the merging of all the Git WorkTrees created by the
118
- <agent/> calls with either are identified with the unique group
119
- <agent-group/> or all <agent/> calls in the last <parallel/> section
118
+ <agent/> calls which either are identified with the unique group
119
+ <agent-group/> or occur in the last <parallel/> section
120
120
  of the context. After merging a single Git WorkTree, remove the Git
121
121
  WorkTree.
122
122
 
@@ -63,7 +63,7 @@ following procedure:
63
63
 
64
64
  <text>
65
65
  <text/>
66
- <ase-tpl-boxline><label-key/> ▶ <label-text/><label-pad/> <description/></ase-tpl-boxline>
66
+ <label-key/> ▶ <label-text/><label-pad/> <description/>
67
67
  </text>
68
68
 
69
69
  <if condition="<keys/> is empty">
@@ -82,7 +82,7 @@ following procedure:
82
82
  </else>
83
83
 
84
84
  <if condition="<opts/> contains `--other` and does *not* contain `--no-other`">
85
- Set <hint>Please choose *one* option by typing <keys/>, or other free-text instruction.</hint>.
85
+ Set <hint>Please choose *one* option by typing <keys/>, or any other free-text instruction.</hint>.
86
86
  </if>
87
87
  <else>
88
88
  Set <hint>Please choose *one* option by typing <keys/>.</hint>.
@@ -93,7 +93,7 @@ following procedure:
93
93
  <text>
94
94
  <ase-tpl-boxed title="DIALOG" subtitle="<question-label/>">
95
95
 
96
- <ase-tpl-boxline>**<question-description/>**</ase-tpl-boxline>
96
+ **<question-description/>**
97
97
 
98
98
  <text/>
99
99
 
@@ -125,7 +125,8 @@ following procedure:
125
125
  otherwise indicates that the user doesn't want to proceed,
126
126
  or the user declined to answer the question, or that
127
127
  the dialog was cancelled, rejected or skipped, set
128
- <result>CANCEL</result>.
128
+ <result>CANCEL</result> and *SKIP* all remaining steps
129
+ 2.3.3 - 2.3.4 of this dispatch.
129
130
 
130
131
  3. Otherwise, determine the selected <label/>
131
132
  by mapping the <result/> (usually containing one of the
@@ -28,7 +28,7 @@ is the timestamp when this **Artifact** was created. The
28
28
  <timestamp-modified/> is the timestamp when this **Artifact** was last
29
29
  modified. Both use an ISO-style format value. The value of both can be
30
30
  determined by a call to the `ase_timestamp(format: "yyyy-LL-dd HH:mm")`
31
- tool of the `ase` MCP server and use the `text` field of its response.
31
+ tool of the `ase` MCP server, using the `text` field of its response.
32
32
  Whenever an **Artifact** is updated, the <timestamp-modified/> *MUST* be
33
33
  updated, too.
34
34
 
@@ -84,7 +84,6 @@ distinct **Artifact**s (listed under their <artifact-name/> and their
84
84
  The **Artifact**s have the following cross-references:
85
85
 
86
86
  ```text
87
- ARCH-02-FV Functionality View ──(depends on)─► ARCH-01-CV Context View
88
87
  ARCH-03-IV Information View ──(entity)─► SPEC-07-DM Data Model
89
88
  ARCH-03-IV Information View ──(owner)─► ARCH-02-FV Functionality View
90
89
  ARCH-04-CO Concurrency View ──(hosts)─► ARCH-02-FV Functionality View
@@ -831,7 +830,7 @@ forces at play, the chosen response, and the reasoning that justifies it.
831
830
 
832
831
  - <arch-dr-decision-notes/> is *OPTIONAL* and can be omitted when it
833
832
  does not add genuine value - most decisions won't need it. The
834
- following usually goes into it: information of the decision *process*
833
+ following usually goes into it: information about the decision *process*
835
834
  (e.g. a weighted decision matrix of considered alternatives);
836
835
  consequences of the decision (but only when non-obvious downstream
837
836
  effects need to be called out); and links to strongly related
@@ -850,7 +849,7 @@ forces at play, the chosen response, and the reasoning that justifies it.
850
849
  almost inevitable answer to the context - if a reader is surprised
851
850
  by the decision, either the context is missing a force, or the
852
851
  decision is under-justified. The rationale should make the decision
853
- feel earned, not asserted - if you would delete the rationale and
852
+ feel earned, not asserted - if you delete the rationale and
854
853
  the decision suddenly looks arbitrary, the rationale was doing its
855
854
  job.
856
855
 
@@ -892,7 +891,7 @@ forces at play, the chosen response, and the reasoning that justifies it.
892
891
 
893
892
  - **Boundary and scope decisions.** "Customer data is owned by the
894
893
  Customer context; other contexts reference it by ID only." The explicit
895
- no-s are as valuable as the yes-s.
894
+ no's are as valuable as the yes's.
896
895
 
897
896
  - **Deliberate deviations from the obvious path.** "We're using
898
897
  manual SQL instead of an ORM because X." Anything where a reasonable
@@ -1091,7 +1090,7 @@ its purpose, and the alternatives that were considered but not chosen.
1091
1090
  to bootstrap application parameters.
1092
1091
 
1093
1092
  - **Configuration Parsing**:
1094
- Load and parse directives from configuration file to bootstrap
1093
+ Load and parse directives from a configuration file to bootstrap
1095
1094
  application parameters.
1096
1095
 
1097
1096
  - **Process Daemonizing**:
@@ -1103,7 +1102,7 @@ its purpose, and the alternatives that were considered but not chosen.
1103
1102
  and control them during the life-cycle of the application.
1104
1103
 
1105
1104
  - **Component Management**:
1106
- Structure the code into components, instantiate them under run-time
1105
+ Structure the code into components, instantiate them at run-time
1107
1106
  and manage them in a stateful component life-cycle.
1108
1107
 
1109
1108
  - **Component Communication**:
@@ -1151,7 +1150,7 @@ its purpose, and the alternatives that were considered but not chosen.
1151
1150
  measurement information at certain points of interest.
1152
1151
 
1153
1152
  - **Database Access**:
1154
- Map in-memory domain entities onto data store dependent persistent
1153
+ Map in-memory domain entities onto a data-store-dependent persistent
1155
1154
  data structure.
1156
1155
 
1157
1156
  - **Database Connectivity**:
@@ -28,7 +28,7 @@ is the timestamp when this **Artifact** was created. The
28
28
  <timestamp-modified/> is the timestamp when this **Artifact** was last
29
29
  modified. Both use an ISO-style format value. The value of both can be
30
30
  determined by a call to the `ase_timestamp(format: "yyyy-LL-dd HH:mm")`
31
- tool of the `ase` MCP server and use the `text` field of its response.
31
+ tool of the `ase` MCP server, using the `text` field of its response.
32
32
  Whenever an **Artifact** is updated, the <timestamp-modified/> *MUST* be
33
33
  updated, too.
34
34
 
@@ -122,7 +122,6 @@ SPEC-06-BR Business Rules ──(constrains)─► SPEC-05-NR Non-Functio
122
122
  SPEC-08-SM State Model ──(of entity)─► SPEC-07-DM Data Model
123
123
  SPEC-10-UC Use Cases ──(use case actor)─► SPEC-02-PE Personas
124
124
  SPEC-10-UC Use Cases ──(realizes)─► SPEC-04-FR Functional Requirements
125
- SPEC-10-UC Use Cases ──(transitions)─► SPEC-08-SM State Model
126
125
  SPEC-11-TC Test Cases ──(verifies)─► SPEC-04-FR Functional Requirements
127
126
  SPEC-11-TC Test Cases ──(verifies)─► SPEC-05-NR Non-Functional Requirements
128
127
  SPEC-15-DS Dialog Storyboard ──(scenario)─► SPEC-10-UC Use Cases
@@ -221,7 +220,7 @@ capturing their goals, needs, behaviors, and context.
221
220
  in total not longer than 30 characters), derived from
222
221
  <spec-pe-persona-name/>.
223
222
 
224
- - <spec-pe-persona-name/>: per-artifact unique first name of fictional
223
+ - <spec-pe-persona-name/>: per-artifact unique first name of the fictional
225
224
  described person.
226
225
 
227
226
  - <spec-pe-persona-gender/>: the gender of the persona: `male`,
@@ -231,7 +230,7 @@ capturing their goals, needs, behaviors, and context.
231
230
 
232
231
  - <spec-pe-persona-role/>: the role of the persona.
233
232
 
234
- - <spec-pe-persona-quote/>: a short and bold, first-person statement -
233
+ - <spec-pe-persona-quote/>: a short and bold first-person statement -
235
234
  written in the persona's own voice - that captures their core
236
235
  attitude, motivation, frustration, or need in a single memorable line.
237
236
  It's sometimes called the persona's "tagline," "mantra," or "defining
@@ -287,12 +286,12 @@ over time.
287
286
 
288
287
  - <spec-cj-step-stage/> is one of:
289
288
 
290
- - `Awareness`: Customer is not aware of solution, but has a need.
291
- - `Consideration`: Customer is aware of solution, and should consider its use.
289
+ - `Awareness`: Customer is not aware of the solution, but has a need.
290
+ - `Consideration`: Customer is aware of the solution, and should consider its use.
292
291
  - `Decision`: Customer wants to pick the solution.
293
292
  - `Onboarding`: Customer is using the solution.
294
- - `Retention`: Customer in the long-term stays a customer.
295
- - `Advocacy`: Customer is a fan of solution and tells the tribe.
293
+ - `Retention`: Customer in the long term stays a customer.
294
+ - `Advocacy`: Customer is a fan of the solution and tells the tribe.
296
295
 
297
296
  - <spec-cj-step-actor/> is a `SPEC-PE-<spec-pe-persona-id/>` reference to the
298
297
  corresponding **Aspect** of the Personas **Artifact**.
@@ -564,7 +563,7 @@ manages, defining how information is organized and connected.
564
563
 
565
564
  ### RELATIONS
566
565
 
567
- - `<spec-dm-relation-id/>`: [`<spec-dm-relation-target/>`](#<spec-dm-relation-target-id/>)(`<spec-dm-relation-cardinality/>`):<br/>
566
+ - `<spec-dm-relation-id/>`: [`<spec-dm-relation-target/>`](#SPEC-DM-<spec-dm-relation-target-id/>)(`<spec-dm-relation-cardinality/>`):<br/>
568
567
  <spec-dm-relation-description/>,
569
568
  **BECAUSE** <spec-dm-relation-rationale/>.
570
569
 
@@ -664,12 +663,12 @@ manages, defining how information is organized and connected.
664
663
  - `Type` (`<spec-dm-attribute-qualifier/><spec-dm-attribute-type/>`)
665
664
  - `Description` (`<spec-dm-attribute-description/>, **BECAUSE** <spec-dm-attribute-rationale/>.`)
666
665
 
667
- - <export-table-2/> is a Markdown table for the relation with one
666
+ - <export-table-2/> is a Markdown table for the relations with one
668
667
  row per <spec-dm-relation-id/>, sorted by <spec-dm-relation-id/> --
669
668
  with the columns:
670
669
 
671
670
  - `Relation` (`**<spec-dm-relation-id/>**`)
672
- - `Target` (`[<spec-dm-relation-target/>](#<spec-dm-relation-target-id/>) (<spec-dm-relation-cardinality/>)`)
671
+ - `Target` (`[<spec-dm-relation-target/>](#SPEC-DM-<spec-dm-relation-target-id/>) (<spec-dm-relation-cardinality/>)`)
673
672
  - `Description` (`<spec-dm-relation-description/>, **BECAUSE** <spec-dm-relation-rationale/>.`)
674
673
 
675
674
  - In case a <spec-dm-entity/> has no relations at all, the