@rse/ase 0.9.62 → 0.9.63
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dst/ase-artifact.js +19 -8
- package/dst/ase-config.js +12 -8
- package/dst/ase-hook.js +8 -0
- package/dst/ase-service.js +2 -0
- package/dst/ase-spec.js +241 -0
- package/dst/ase.js +2 -0
- package/package.json +10 -8
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/.codex-plugin/plugin.json +1 -1
- package/plugin/.github/plugin/plugin.json +1 -1
- package/plugin/etc/stx.conf +5 -3
- package/plugin/meta/ase-format-meta.md +23 -105
- package/plugin/meta/ase-format-spec.md +22 -1326
- package/plugin/meta/ase-tenets.md +63 -4
- package/plugin/package.json +6 -2
- package/plugin/skills/ase-code-edit/SKILL.md +14 -9
- package/plugin/skills/ase-help-skill/catalog.md +3 -0
- package/plugin/skills/ase-meta-review/help.md +1 -1
- package/plugin/skills/ase-spec-edit/SKILL.md +520 -0
- package/plugin/skills/ase-spec-edit/help.md +130 -0
- package/plugin/skills/ase-sync-export/SKILL.md +57 -116
- package/plugin/skills/ase-sync-export/help.md +30 -42
- package/plugin/skills/ase-sync-import/SKILL.md +37 -15
- package/plugin/skills/ase-sync-import/help.md +14 -10
- package/plugin/skills/ase-sync-reconcile/SKILL.md +37 -16
- package/plugin/skills/ase-sync-reconcile/help.md +19 -16
- package/plugin/skills/ase-task-grill/SKILL.md +5 -4
- package/plugin/meta/ase-format-arch.md +0 -1164
|
@@ -6,7 +6,7 @@ The following are the **ASE Tenets** -- the guiding principles you
|
|
|
6
6
|
*MUST* internalize when requested. They are organized into *Generic
|
|
7
7
|
Tenets*, which always apply, and *Operation-Specific Tenets*, which
|
|
8
8
|
apply only to a particular kind of operation (Crafting, Reconciling,
|
|
9
|
-
Refactoring, Resolving).
|
|
9
|
+
Refactoring, Resolving, Specifying).
|
|
10
10
|
|
|
11
11
|
GENERIC TENETS
|
|
12
12
|
--------------
|
|
@@ -149,11 +149,11 @@ you *MUST* honor the following so-called **RECONCILIATION TENETS**:
|
|
|
149
149
|
- **Level-Appropriate Translation**:
|
|
150
150
|
Re-express source facts at the *target's* level of abstraction and
|
|
151
151
|
altitude; do not copy verbatim across artifact levels. A SPEC states
|
|
152
|
-
intent
|
|
153
|
-
|
|
152
|
+
intent and structure, CODE states realization, DOCS states facts,
|
|
153
|
+
etc. -- align the *meaning*, not the wording.
|
|
154
154
|
|
|
155
155
|
- **Format Conformance**:
|
|
156
|
-
Keep every formatted target (SPEC,
|
|
156
|
+
Keep every formatted target (SPEC, TASK) conformant to its
|
|
157
157
|
format contract (headings, structure, identifiers). Treat CODE,
|
|
158
158
|
DOCS, INFR, and OTHR kinds of artifacts as foreign-defined, but not
|
|
159
159
|
as free-form.
|
|
@@ -221,3 +221,62 @@ you *MUST* honor the following so-called **RESOLVING TENETS**:
|
|
|
221
221
|
handled *near the origin*. Problems for *theoretical, fictive, or
|
|
222
222
|
unexpected* errors *should* be handled more generally and in parent
|
|
223
223
|
scopes.
|
|
224
|
+
|
|
225
|
+
SPECIFYING TENETS
|
|
226
|
+
-----------------
|
|
227
|
+
|
|
228
|
+
When *specifying* -- creating, revising, or editing the statements of a
|
|
229
|
+
specification artifact set -- you *MUST* honor the following so-called
|
|
230
|
+
**SPECIFYING TENETS**:
|
|
231
|
+
|
|
232
|
+
- **Intent over Realization**:
|
|
233
|
+
A specification, in its domain-specific and non-architecture related
|
|
234
|
+
aspects, states only the *WHAT* and the *WHY*, never the *HOW*.
|
|
235
|
+
Record intent, structure, constraints, and relationships here.
|
|
236
|
+
Implementation steps, algorithms, technologies, and code-level
|
|
237
|
+
details describe the *WHAT* and *HOW* and belong only into
|
|
238
|
+
the domain-unspecific and architecture-related aspects of the
|
|
239
|
+
specification.
|
|
240
|
+
|
|
241
|
+
- **Statement with Rationale**:
|
|
242
|
+
Every statement carries its *WHY* behind the `, BECAUSE ` clause in
|
|
243
|
+
a description. A statement without a rationale can neither be judged
|
|
244
|
+
nor revised, so never leave the rationale implicit and never restate
|
|
245
|
+
the statement as its own rationale.
|
|
246
|
+
|
|
247
|
+
- **Unambiguous and Verifiable**:
|
|
248
|
+
Every statement is precise enough that two readers derive the same
|
|
249
|
+
meaning and that its fulfillment is decidable. Replace vague
|
|
250
|
+
qualifiers ("fast", "user-friendly", "robust") with the concrete
|
|
251
|
+
property, threshold, or scenario actually meant.
|
|
252
|
+
|
|
253
|
+
- **Single Source of Truth**:
|
|
254
|
+
Every fact resides in exactly *one* object of the specification. Do
|
|
255
|
+
not restate a fact in a second place -- point at its owning object
|
|
256
|
+
with a `[[xxx]]` reference instead, so a later change has exactly
|
|
257
|
+
one place to land.
|
|
258
|
+
|
|
259
|
+
- **Atomic Statement**:
|
|
260
|
+
Every statement expresses exactly *one* fact with exactly *one*
|
|
261
|
+
rationale. Split a statement that joins independent facts with
|
|
262
|
+
"and"/"or" -- otherwise its fulfillment is only partially decidable
|
|
263
|
+
and its rationale covers more than it explains.
|
|
264
|
+
|
|
265
|
+
- **Schema Conformance**:
|
|
266
|
+
Every object stays conformant to the **SpecBook SCHEMA Model** of
|
|
267
|
+
the project: allowed kinds, allowed nesting, mandatory and optional
|
|
268
|
+
properties, and the configured value constraints. Never invent an
|
|
269
|
+
object kind or a property key the schema does not define.
|
|
270
|
+
|
|
271
|
+
- **Referential Integrity**:
|
|
272
|
+
Every `[[xxx]]` reference resolves to exactly one object. When an
|
|
273
|
+
object is renamed, moved, or removed, follow *all* references to it
|
|
274
|
+
through the entire specification corpus and adjust or remove them
|
|
275
|
+
in the same change set -- a dangling or ambiguous reference is a
|
|
276
|
+
defect.
|
|
277
|
+
|
|
278
|
+
- **No Fabrication**:
|
|
279
|
+
Never invent specification content the request does not warrant. If
|
|
280
|
+
the request is silent, ambiguous, or contradictory on something the
|
|
281
|
+
specification needs, surface the gap explicitly rather than papering
|
|
282
|
+
over it with a plausible guess.
|
package/plugin/package.json
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"homepage": "https://ase.tools",
|
|
7
7
|
"repository": { "url": "git+https://github.com/rse/ase.git", "type": "git" },
|
|
8
8
|
"bugs": { "url": "https://github.com/rse/ase/issues" },
|
|
9
|
-
"version": "0.9.
|
|
9
|
+
"version": "0.9.63",
|
|
10
10
|
"license": "Apache-2.0",
|
|
11
11
|
"author": {
|
|
12
12
|
"name": "Dr. Ralf S. Engelschall",
|
|
@@ -15,9 +15,10 @@
|
|
|
15
15
|
},
|
|
16
16
|
"devDependencies": {
|
|
17
17
|
"@rse/stx": "1.1.6",
|
|
18
|
+
"@rse/specbook": "1.0.2",
|
|
18
19
|
"markdownlint": "0.41.1",
|
|
19
20
|
"markdownlint-cli2": "0.23.2",
|
|
20
|
-
"eslint": "10.9.
|
|
21
|
+
"eslint": "10.9.1",
|
|
21
22
|
"@eslint/markdown": "8.0.3",
|
|
22
23
|
"eslint-markdown": "0.14.0"
|
|
23
24
|
},
|
|
@@ -25,6 +26,9 @@
|
|
|
25
26
|
"npm": ">=10.0.0",
|
|
26
27
|
"node": ">=22.13.0"
|
|
27
28
|
},
|
|
29
|
+
"allowScripts": {
|
|
30
|
+
"fsevents": true
|
|
31
|
+
},
|
|
28
32
|
"scripts": {
|
|
29
33
|
"start": "stx -v4 -l warning -c etc/stx.conf"
|
|
30
34
|
}
|
|
@@ -189,9 +189,11 @@ empty <todo-what/> or <todo-how/> renders as `(none)`:
|
|
|
189
189
|
|
|
190
190
|
2. DETERMINE QUESTIONS:
|
|
191
191
|
|
|
192
|
-
Determine the questions, comprised of a
|
|
193
|
-
<question-N-id/> of `Q<N
|
|
194
|
-
|
|
192
|
+
Determine the questions, comprised of a round-local id
|
|
193
|
+
<question-N-id/> of `Q<N/>` -- where <N/> restarts at `1`
|
|
194
|
+
in *every* round, independent of the numbering of previous
|
|
195
|
+
rounds --, and a very brief but precise question text
|
|
196
|
+
<question-N-text/>. Each question is chosen to
|
|
195
197
|
resolve the open points related to the above understanding
|
|
196
198
|
of grilling, by focusing on the mentioned *Focus Areas*.
|
|
197
199
|
|
|
@@ -229,9 +231,10 @@ empty <todo-what/> or <todo-how/> renders as `(none)`:
|
|
|
229
231
|
Finally, *sort* the questions by descending focus area
|
|
230
232
|
order -- first all `DOMAIN`, then all `INTERFACE`, then all
|
|
231
233
|
`ARCHITECTURE`, and then all `IMPLEMENTATION` ones -- and
|
|
232
|
-
renumber <N/> according to this order
|
|
233
|
-
after a maximum of 10 questions and set
|
|
234
|
-
of remaining questions. Do not output
|
|
234
|
+
renumber <N/> according to this order, starting at `1`.
|
|
235
|
+
Truncate the list after a maximum of 10 questions and set
|
|
236
|
+
<n/> to the number of remaining questions. Do not output
|
|
237
|
+
anything.
|
|
235
238
|
|
|
236
239
|
Finally, assemble the <question-N/> out of
|
|
237
240
|
`**<question-N-id/>** ▶ **<context-N-id/>** ▷
|
|
@@ -241,8 +244,10 @@ empty <todo-what/> or <todo-how/> renders as `(none)`:
|
|
|
241
244
|
|
|
242
245
|
For all remaining <question-N/>, check the code base and
|
|
243
246
|
your world knowledge to find *two to three* grounded answer
|
|
244
|
-
alternatives <answer-N-K/> with
|
|
245
|
-
of `A<K
|
|
247
|
+
alternatives <answer-N-K/> with a question-local id
|
|
248
|
+
<answer-N-K-id/> of `A<K/>` -- where <K/> restarts at `1`
|
|
249
|
+
for *every* question, independent of the numbering of other
|
|
250
|
+
questions --, a 1-3 word label <answer-N-K-label/>, and
|
|
246
251
|
an ultra brief description <answer-N-K-description/> of
|
|
247
252
|
at most *10 words*. For the answer which reflects the
|
|
248
253
|
current <todo-what/>/<todo-how/> understanding, append
|
|
@@ -304,7 +309,7 @@ empty <todo-what/> or <todo-how/> renders as `(none)`:
|
|
|
304
309
|
| [...] | [...] |
|
|
305
310
|
|
|
306
311
|
Legend: **DOM**: Domain (MUST), **IFC**: Interface (MUST), **ARC**: Architecture (SHOULD), **IMP**: Implementation (MAY)
|
|
307
|
-
**Qn**:
|
|
312
|
+
**Qn**: round-local question id, **An**: question-local answer id, ⚑: current decision state
|
|
308
313
|
</template>
|
|
309
314
|
|
|
310
315
|
2. Show a custom dialog. Its only answer options are the
|
|
@@ -20,6 +20,9 @@
|
|
|
20
20
|
○ `ase-arch-analyze`: Review Software Architecture
|
|
21
21
|
○ `ase-arch-discover`: Discover Components
|
|
22
22
|
|
|
23
|
+
⎈ **SPECIFICATION**
|
|
24
|
+
○ `ase-spec-edit`: Edit Specification
|
|
25
|
+
|
|
23
26
|
⎈ **CODING**
|
|
24
27
|
○ `ase-code-analyze`: Analyze Source Code
|
|
25
28
|
○ `ase-code-lint`: Lint Source Code
|
|
@@ -27,7 +27,7 @@ naming, abstraction level), **clarity** (readability and
|
|
|
27
27
|
self-documentation for a future reader), **robustness** (error handling,
|
|
28
28
|
resource and concurrency safety), **security** and **performance** (risks
|
|
29
29
|
introduced by the change), **convention** (conformance to the
|
|
30
|
-
project's documented conventions - code style and the plan/spec
|
|
30
|
+
project's documented conventions - code style and the plan/spec
|
|
31
31
|
formats described in `AGENTS.md` and the `ase-format-*` meta documents),
|
|
32
32
|
**testing** (inadequate coverage for the change - new or fixed behavior
|
|
33
33
|
left untested, adjacent tests not updated, or existing tests silently
|