@rse/ase 0.9.0 → 0.9.2

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.
@@ -0,0 +1,1278 @@
1
+
2
+ @./ase-format-meta.md
3
+
4
+ Specification (SPEC)
5
+ ====================
6
+
7
+ The **Artifact Set** **Specification (SPEC)** specifies the "input"
8
+ and the "what" of the Software Engineering project.
9
+
10
+ Each **Artifact** of the **Artifact Set**
11
+ **Specification (SPEC)** is stored under
12
+ `docs/spec/SPEC-<artifact-no/>-<artifact-id/>-<artifact-slug/>.md`,
13
+ relative to the project root directory, with <artifact-no/> being the
14
+ zero-padded, two-digit sequence number of the **Artifact** (starting at
15
+ `01`) according to the order of the **Artifact** list below, and with
16
+ <artifact-slug/> being derived from <artifact-name/> (see below) by
17
+ Pascal-casing each word (upper-casing its first letter) and using `-`
18
+ characters instead of spaces (e.g. `Customer-Journey`).
19
+
20
+ Each **Artifact** file *MUST* begin with a single blank line before its
21
+ `#` heading and end with a single blank line after its last content line
22
+ (followed by the trailing newline), mirroring the blank lines shown
23
+ inside the `<format>` blocks below.
24
+
25
+ Each **Artifact** contains two timestamps: the <timestamp-created/>
26
+ is the timestamp when this **Artifact** was created. The
27
+ <timestamp-modified/> is the timestamp when this **Artifact** was last
28
+ modified. Both use an ISO-style format value. The value of both can be
29
+ determined by a call to the `ase_timestamp(format: "yyyy-LL-dd HH:mm")`
30
+ tool of the `ase` MCP server and use the `text` field of its response.
31
+ Whenever an **Artifact** is updated, the <timestamp-modified/> *MUST* be
32
+ updated, too.
33
+
34
+ The **Artifact Set** **Specification (SPEC)** consists of the following
35
+ distinct **Artifact**s (listed under their <artifact-name/> and their
36
+ <artifact-id/>):
37
+
38
+ 01. **Solution Vision (SV)**:
39
+ The high-level, aspirational description of the solution, capturing
40
+ its purpose, value proposition, and the desired future state it aims
41
+ to achieve.
42
+
43
+ 02. **Personas (PE)**:
44
+ The *archetypal* user profiles representing distinct user groups,
45
+ capturing their goals, needs, behaviors, and context.
46
+
47
+ 03. **Customer Journey (CJ)**:
48
+ The end-to-end experience a customer has while discovering, adopting,
49
+ and using the solution, mapping their steps, touchpoints, and emotions
50
+ over time.
51
+
52
+ 04. **Functional Requirements (FR)**:
53
+ The concrete behaviors and capabilities the solution must provide,
54
+ describing *what* the system does in terms of functions, features, and
55
+ operations.
56
+
57
+ 05. **Non-Functional Requirements (NR)**:
58
+ The quality attributes and constraints the solution must satisfy, such
59
+ as performance, security, scalability, reliability, and usability.
60
+
61
+ 06. **Business Rules (BR)**:
62
+ The domain invariants, policies, and decision logic that must always
63
+ hold true in the problem domain, independent of any single feature,
64
+ constraining the Functional and Non-Functional Requirements.
65
+
66
+ 07. **Data Model (DM)**:
67
+ The structure of named entities, named attributes, and named directed
68
+ relationships (including a cardinality) of the data the solution
69
+ manages, defining how information is organized and connected.
70
+
71
+ 08. **State Model (SM)**:
72
+ For each entity with a non-trivial lifecycle, the legal states it can
73
+ occupy and the permitted transitions between them over its lifetime,
74
+ making the forbidden moves as explicit as the allowed ones.
75
+
76
+ 09. **Glossary (GL)**:
77
+ The ubiquitous language of the domain, defining the meaning of each
78
+ domain term in business language, together with its synonyms and the
79
+ ambiguities to avoid, shared consistently across all Artifacts.
80
+
81
+ 10. **Use Cases (UC)**:
82
+ The discrete goals users pursue with the solution, each describing
83
+ an actor's interaction to achieve a specific outcome. For each Use
84
+ Case, also the concrete step-by-step flows, detailing the sequence
85
+ of actions for main, alternative, and exceptional paths.
86
+
87
+ 11. **Test Cases (TC)**:
88
+ The verifiable conditions and steps used to confirm that requirements
89
+ are correctly implemented, with mandatory defined inputs, mandatory
90
+ expected outcomes, and optional pre- and post-conditions.
91
+
92
+ 12. **Interaction Concept (IC)**:
93
+ The overarching idea of how users interact with the solution,
94
+ describing the intended workflows and interaction philosophy (e.g.
95
+ auto-save behavior).
96
+
97
+ 13. **Language Conventions (LC)**:
98
+ The terminology, naming, tone, and wording standards used consistently
99
+ across the solution and its content.
100
+
101
+ 14. **Dialog Patterns (DP)**:
102
+ The reusable interaction structures governing how the system and user
103
+ exchange information across recurring conversational or UI flows (e.g.
104
+ master-detail dialog).
105
+
106
+ 15. **Dialog Storyboard (DS)**:
107
+ The sequenced visual or textual depiction of a specific dialog flow,
108
+ illustrating how an interaction unfolds screen by screen or turn by
109
+ turn.
110
+
111
+ 16. **Visual Design (VD)**:
112
+ The aesthetic and layout aspects of the solution, defining colors,
113
+ typography, spacing, imagery, and overall look and feel.
114
+
115
+ The **Artifact**s have the following cross-references:
116
+
117
+ ```text
118
+ SPEC-03-CJ Customer Journey ──(step actor)─► SPEC-02-PE Personas
119
+ SPEC-06-BR Business Rules ──(constrains)─► SPEC-04-FR Functional Requirements
120
+ SPEC-06-BR Business Rules ──(constrains)─► SPEC-05-NR Non-Functional Requirements
121
+ SPEC-08-SM State Model ──(of entity)─► SPEC-07-DM Data Model
122
+ SPEC-10-UC Use Cases ──(use case actor)─► SPEC-02-PE Personas
123
+ SPEC-10-UC Use Cases ──(realizes)─► SPEC-04-FR Functional Requirements
124
+ SPEC-10-UC Use Cases ──(transitions)─► SPEC-08-SM State Model
125
+ SPEC-11-TC Test Cases ──(verifies)─► SPEC-04-FR Functional Requirements
126
+ SPEC-11-TC Test Cases ──(verifies)─► SPEC-05-NR Non-Functional Requirements
127
+ SPEC-15-DS Dialog Storyboard ──(scenario)─► SPEC-10-UC Use Cases
128
+ SPEC-15-DS Dialog Storyboard ──(pattern)─► SPEC-14-DP Dialog Patterns
129
+ ```
130
+
131
+ Solution Vision (SV)
132
+ --------------------
133
+
134
+ The high-level, aspirational description of the solution, capturing
135
+ its purpose, value proposition, and the desired future state it aims
136
+ to achieve.
137
+
138
+ - Format:
139
+
140
+ <format>
141
+
142
+ # SPECIFICATION: SOLUTION VISION (SPEC-SV)
143
+
144
+ ✳ Created: **<timestamp-created/>**
145
+ ✎ Modified: **<timestamp-modified/>**
146
+
147
+ <spec-sv-aspect/>
148
+ <spec-sv-aspect/>
149
+ [...]
150
+
151
+ </format>
152
+
153
+ - <spec-sv-aspect/> format:
154
+
155
+ <format>
156
+
157
+ ## ASPECT: <spec-sv-aspect-name/> <a id="SPEC-SV-<spec-sv-aspect-id/>"></a>
158
+
159
+ <spec-sv-aspect-statement/>
160
+
161
+ </format>
162
+
163
+ - <spec-sv-aspect/> details:
164
+
165
+ - <spec-sv-aspect-id/>: per-artifact unique "slug" of always 1-3
166
+ lower-cased words (concatenated with "-" characters and
167
+ in total not longer than 30 characters), derived from
168
+ <spec-sv-aspect-name/>.
169
+
170
+ - <spec-sv-aspect-name/>: a short (2-5 word) summary of the vision
171
+ aspect. The recommended aspects are `Purpose` (why the solution
172
+ exists), `Target Audience` (who it serves), `Value Proposition`
173
+ (the unique benefit offered), `Differentiators` (how it stands
174
+ apart from alternatives), and `Future State` (the desired
175
+ outcome once adopted).
176
+
177
+ - <spec-sv-aspect-statement/>: a concise paragraph (1-3 sentences)
178
+ of prose describing the vision aspect in an aspirational but
179
+ unambiguous tone.
180
+
181
+ Personas (PE)
182
+ -------------
183
+
184
+ The *archetypal* user profiles representing distinct user groups,
185
+ capturing their goals, needs, behaviors, and context.
186
+
187
+ - Format:
188
+
189
+ <format>
190
+
191
+ # SPECIFICATION: PERSONAS (SPEC-PE)
192
+
193
+ ✳ Created: **<timestamp-created/>**
194
+ ✎ Modified: **<timestamp-modified/>**
195
+
196
+ <spec-pe-persona/>
197
+ <spec-pe-persona/>
198
+ [...]
199
+
200
+ </format>
201
+
202
+ - <spec-pe-persona/> format:
203
+
204
+ <format>
205
+
206
+ ## PERSONA: <spec-pe-persona-name/> <a id="SPEC-PE-<spec-pe-persona-id/>"></a>
207
+
208
+ - Gender: <spec-pe-persona-gender/>
209
+ - Age: <spec-pe-persona-age/>
210
+ - Role: <spec-pe-persona-role/>
211
+
212
+ "<spec-pe-persona-quote/>"
213
+
214
+ </format>
215
+
216
+ - <spec-pe-persona/> details:
217
+
218
+ - <spec-pe-persona-id/>: per-artifact unique "slug" of always 1-3
219
+ lower-cased words (concatenated with "-" characters and
220
+ in total not longer than 30 characters), derived from
221
+ <spec-pe-persona-name/>.
222
+
223
+ - <spec-pe-persona-name/>: per-artifact unique first name of fictional
224
+ described person.
225
+
226
+ - <spec-pe-persona-gender/>: the gender of the persona: `male`,
227
+ `female`, or `diverse`.
228
+
229
+ - <spec-pe-persona-age/>: the age in years of the persona.
230
+
231
+ - <spec-pe-persona-role/>: the role of the persona.
232
+
233
+ - <spec-pe-persona-quote/>: a short and bold, first-person statement —
234
+ written in the persona's own voice — that captures their core
235
+ attitude, motivation, frustration, or need in a single memorable line.
236
+ It's sometimes called the persona's "tagline," "mantra," or "defining
237
+ statement."
238
+
239
+ Customer Journey (CJ)
240
+ ---------------------
241
+
242
+ The end-to-end experience a customer has while discovering, adopting,
243
+ and using the solution, mapping their steps, touchpoints, and emotions
244
+ over time.
245
+
246
+ - Format:
247
+
248
+ <format>
249
+
250
+ # SPECIFICATION: CUSTOMER JOURNEY (SPEC-CJ)
251
+
252
+ ✳ Created: **<timestamp-created/>**
253
+ ✎ Modified: **<timestamp-modified/>**
254
+
255
+ <spec-cj-step/>
256
+ <spec-cj-step/>
257
+ [...]
258
+
259
+ </format>
260
+
261
+ - <spec-cj-step/> format:
262
+
263
+ <format>
264
+
265
+ ## STEP: <spec-cj-step-name/> <a id="SPEC-CJ-<spec-cj-step-id/>"></a>
266
+
267
+ - Stage: <spec-cj-step-stage/>
268
+ - Actor: <spec-cj-step-actor/>
269
+ - Goal: <spec-cj-step-goal/>
270
+ - Touchpoint: <spec-cj-step-touchpoint/>
271
+ - Action: <spec-cj-step-action/>
272
+ - Emotion: <spec-cj-step-emotion/>
273
+ - Pain Point: <spec-cj-step-painpoint/>
274
+
275
+ </format>
276
+
277
+ - <spec-cj-step/> details:
278
+
279
+ - <spec-cj-step-id/>: per-artifact unique "slug" of always 1-3
280
+ lower-cased words (concatenated with "-" characters and
281
+ in total not longer than 30 characters), derived from
282
+ <spec-cj-step-name/>.
283
+
284
+ - <spec-cj-step-name/> is a summary (5-10 words) of the *step* at its
285
+ <spec-cj-step-touchpoint/>.
286
+
287
+ - <spec-cj-step-actor/> is a `SPEC-PE-<spec-pe-persona-id/>` reference to the
288
+ corresponding **Aspect** of the Personas **Artifact**.
289
+
290
+ - <spec-cj-step-stage/> is one of:
291
+
292
+ - `Awareness`: Customer is not aware of solution, but has a need.
293
+ - `Consideration`: Customer is aware of solution, and should consider its use.
294
+ - `Decision`: Customer wants to pick the solution.
295
+ - `Onboarding`: Customer is using the solution.
296
+ - `Retention`: Customer in the long-term stays a customer.
297
+ - `Advocacy`: Customer is a fan of solution and tells the tribe.
298
+
299
+ - <spec-cj-step-goal/> is what the actor wants to achieve at this step.
300
+
301
+ - <spec-cj-step-touchpoint/> is where or how the interaction happens
302
+ (e.g. landing page, email, support call).
303
+
304
+ - <spec-cj-step-action/> is what the actor actually does at this step.
305
+
306
+ - <spec-cj-step-emotion/> is the **AS IS** felt state at this step, given
307
+ as a word plus an intensity on a 1-5 Likert scale (e.g. `Curious (4)`).
308
+
309
+ - <spec-cj-step-painpoint/> is the **AS IS** friction or frustration the
310
+ actor encounters at this step (optional).
311
+
312
+ - In case a <spec-cj-step/> has no pain point at all, the
313
+ entire `- Pain Point:` bullet point is omitted.
314
+
315
+ Functional Requirements (FR)
316
+ ----------------------------
317
+
318
+ The concrete behaviors and capabilities the solution must provide,
319
+ describing *what* the system does in terms of functions, features, and
320
+ operations.
321
+
322
+ - Format:
323
+
324
+ <format>
325
+
326
+ # SPECIFICATION: FUNCTIONAL REQUIREMENTS (SPEC-FR)
327
+
328
+ ✳ Created: **<timestamp-created/>**
329
+ ✎ Modified: **<timestamp-modified/>**
330
+
331
+ <spec-fr-requirement/>
332
+ <spec-fr-requirement/>
333
+ [...]
334
+
335
+ </format>
336
+
337
+ - <spec-fr-requirement/> format:
338
+
339
+ <format>
340
+
341
+ ## REQUIREMENT: <spec-fr-requirement-name/> <a id="SPEC-FR-<spec-fr-requirement-id/>"></a>
342
+
343
+ - Priority: <spec-fr-requirement-priority/>
344
+
345
+ <spec-fr-requirement-statement/>,
346
+ **BECAUSE** <spec-fr-requirement-rationale/>.
347
+
348
+ </format>
349
+
350
+ - <spec-fr-requirement/> details:
351
+
352
+ - <spec-fr-requirement-id/>: per-artifact unique "slug" of always
353
+ 1-3 lower-cased words (concatenated with "-" characters and
354
+ in total not longer than 30 characters), derived from
355
+ <spec-fr-requirement-name/>.
356
+
357
+ - <spec-fr-requirement-name/>: a short (3-8 word) summary of the
358
+ functional requirement.
359
+
360
+ - <spec-fr-requirement-priority/>: the MoSCoW priority of the
361
+ requirement: `MUST`, `SHOULD`, `COULD`, or `WONT`. The `WONT`
362
+ priority records a requirement deliberately excluded from the
363
+ current scope ("won't have this time"), preserving the conscious
364
+ decision rather than silently dropping it.
365
+
366
+ - <spec-fr-requirement-statement/>: a concise paragraph (1-3
367
+ sentences) of prose describing *what* the solution must do,
368
+ written with the keyword `MUST`, `SHOULD`, `COULD`, or `WONT`
369
+ to indicate the obligation level.
370
+
371
+ - <spec-fr-requirement-rationale/>: the 1-sentence rationale ("why")
372
+ of the functional requirement.
373
+
374
+ - In case the rationale is not present, the
375
+ entire `, **BECAUSE** [...]` clause is omitted.
376
+
377
+ Non-Functional Requirements (NR)
378
+ --------------------------------
379
+
380
+ The quality attributes and constraints the solution must satisfy, such
381
+ as performance, security, scalability, reliability, and usability.
382
+
383
+ - Format:
384
+
385
+ <format>
386
+
387
+ # SPECIFICATION: NON-FUNCTIONAL REQUIREMENTS (SPEC-NR)
388
+
389
+ ✳ Created: **<timestamp-created/>**
390
+ ✎ Modified: **<timestamp-modified/>**
391
+
392
+ <spec-nr-requirement/>
393
+ <spec-nr-requirement/>
394
+ [...]
395
+
396
+ </format>
397
+
398
+ - <spec-nr-requirement/> format:
399
+
400
+ <format>
401
+
402
+ ## REQUIREMENT: <spec-nr-requirement-name/> <a id="SPEC-NR-<spec-nr-requirement-id/>"></a>
403
+
404
+ - Priority: <spec-nr-requirement-priority/>
405
+ - Category: <spec-nr-requirement-category/>
406
+
407
+ <spec-nr-requirement-statement/>,
408
+ **BECAUSE** <spec-nr-requirement-rationale/>.
409
+
410
+ </format>
411
+
412
+ - <spec-nr-requirement/> details:
413
+
414
+ - <spec-nr-requirement-id/>: per-artifact unique "slug" of always
415
+ 1-3 lower-cased words (concatenated with "-" characters and
416
+ in total not longer than 30 characters), derived from
417
+ <spec-nr-requirement-name/>.
418
+
419
+ - <spec-nr-requirement-name/>: a short (3-8 word) summary of the
420
+ non-functional requirement.
421
+
422
+ - <spec-nr-requirement-priority/>: the MoSCoW priority of the
423
+ requirement: `MUST`, `SHOULD`, `COULD`, or `WONT`. The `WONT`
424
+ priority records a requirement deliberately excluded from the
425
+ current scope ("won't have this time"), preserving the conscious
426
+ decision rather than silently dropping it.
427
+
428
+ - <spec-nr-requirement-category/>: the quality attribute category
429
+ the requirement addresses, one of `Performance`,
430
+ `Compatibility`, `Usability`, `Reliability`, `Security`,
431
+ `Safety`, `Maintainability`, `Flexibility`, and `Compliance`,
432
+ according to the top-level characteristics in the ISO/IEC
433
+ 25010:2023 Software-Quality Model (except for `Functional
434
+ Suitability` which is described by our Functional Requirements
435
+ (FR)).
436
+
437
+ - <spec-nr-requirement-statement/>: a concise paragraph (1-3
438
+ sentences) of prose describing the quality attribute or
439
+ constraint the solution must satisfy. It especially *MUST*
440
+ contain a *METRIC* within the <spec-nr-requirement-category/>,
441
+ which (according to the SMART principle) is the *specific*,
442
+ *measurable*, *achievable*, *relevant* and *time-bound*
443
+ threshold or target by which the requirement is judged satisfied
444
+ (e.g. `p95 latency < 200ms`, `99.9% uptime`).
445
+
446
+ - <spec-nr-requirement-rationale/>: the 1-sentence rationale ("why")
447
+ of the non-functional requirement.
448
+
449
+ - In case the rationale is not present, the
450
+ entire `, **BECAUSE** [...]` clause is omitted.
451
+
452
+ Business Rules (BR)
453
+ -------------------
454
+
455
+ The domain invariants, policies, and decision logic that must always
456
+ hold true in the problem domain, independent of any single feature,
457
+ constraining the Functional and Non-Functional Requirements.
458
+
459
+ - Format:
460
+
461
+ <format>
462
+
463
+ # SPECIFICATION: BUSINESS RULES (SPEC-BR)
464
+
465
+ ✳ Created: **<timestamp-created/>**
466
+ ✎ Modified: **<timestamp-modified/>**
467
+
468
+ <spec-br-rule/>
469
+ <spec-br-rule/>
470
+ [...]
471
+
472
+ </format>
473
+
474
+ - <spec-br-rule/> format:
475
+
476
+ <format>
477
+
478
+ ## RULE: <spec-br-rule-name/> <a id="SPEC-BR-<spec-br-rule-id/>"></a>
479
+
480
+ - Category: <spec-br-rule-category/>
481
+ - Constrains: <spec-br-rule-constrains/>
482
+
483
+ <spec-br-rule-statement/>,
484
+ **BECAUSE** <spec-br-rule-rationale/>.
485
+
486
+ </format>
487
+
488
+ - <spec-br-rule/> details:
489
+
490
+ - <spec-br-rule-id/>: per-artifact unique "slug" of always 1-3
491
+ lower-cased words (concatenated with "-" characters and
492
+ in total not longer than 30 characters), derived from
493
+ <spec-br-rule-name/>.
494
+
495
+ - <spec-br-rule-name/>: a short (3-8 word) summary of the business
496
+ rule.
497
+
498
+ - <spec-br-rule-category/>: the kind of rule, one of `Invariant`
499
+ (a condition that must always hold), `Constraint` (a limit on
500
+ allowed values or actions), `Derivation` (a value computed from
501
+ others), or `Policy` (a deliberate business decision or
502
+ guideline).
503
+
504
+ - <spec-br-rule-constrains/>: a comma-separated list of zero or more
505
+ `SPEC-FR-<spec-fr-requirement-id/>` or
506
+ `SPEC-NR-<spec-nr-requirement-id/>` references to the
507
+ corresponding **Aspect**s of the Functional or Non-Functional
508
+ Requirements **Artifact** the rule constrains.
509
+
510
+ - <spec-br-rule-statement/>: a concise paragraph (1-3 sentences) of
511
+ prose stating the rule declaratively as a condition that must
512
+ hold, written with the keyword `MUST`, `SHOULD`, or `MUST NOT`
513
+ to indicate the obligation level, and naming the domain terms it
514
+ governs (defined in the Glossary **Artifact**).
515
+
516
+ - <spec-br-rule-rationale/>: the 1-sentence rationale ("why") of the
517
+ business rule.
518
+
519
+ - In case the rule constrains no specific requirement, the
520
+ entire `- Constrains:` bullet point is omitted.
521
+
522
+ - In case the rationale is not present, the
523
+ entire `, **BECAUSE** [...]` clause is omitted.
524
+
525
+ Data Model (DM)
526
+ ---------------
527
+
528
+ The structure of named entities, named attributes, and named directed
529
+ relationships (including a cardinality) of the data the solution
530
+ manages, defining how information is organized and connected.
531
+
532
+ - Format:
533
+
534
+ <format>
535
+
536
+ # SPECIFICATION: DATA MODEL (SPEC-DM)
537
+
538
+ ✳ Created: **<timestamp-created/>**
539
+ ✎ Modified: **<timestamp-modified/>**
540
+
541
+ <spec-dm-entity/>
542
+ <spec-dm-entity/>
543
+ [...]
544
+
545
+ </format>
546
+
547
+ - <spec-dm-entity/> format:
548
+
549
+ <format>
550
+
551
+ ## ENTITY: `<spec-dm-entity-name/>` <a id="SPEC-DM-<spec-dm-entity-id/>"></a>
552
+
553
+ <spec-dm-entity-description/>,
554
+ **BECAUSE** <spec-dm-entity-rationale/>.
555
+
556
+ ### ATTRIBUTES
557
+
558
+ - `<spec-dm-attribute-id/>`: `<spec-dm-attribute-qualifier/><spec-dm-attribute-type/>`:<br/>
559
+ <spec-dm-attribute-description/>,
560
+ **BECAUSE** <spec-dm-attribute-rationale/>.
561
+
562
+ - [...]
563
+
564
+ ### RELATIONS
565
+
566
+ - `<spec-dm-relation-id/>`: [`<spec-dm-relation-target/>`](#<spec-dm-relation-id/>)(`<spec-dm-relation-cardinality/>`):<br/>
567
+ <spec-dm-relation-description/>,
568
+ **BECAUSE** <spec-dm-relation-rationale/>.
569
+
570
+ - [...]
571
+
572
+ </format>
573
+
574
+ - <spec-dm-entity/> details:
575
+
576
+ - <spec-dm-entity-id/>: per-artifact unique "slug" of always 1-3
577
+ lower-cased words (concatenated with "-" characters and
578
+ in total not longer than 30 characters), derived from
579
+ <spec-dm-entity-name/>.
580
+
581
+ - <spec-dm-entity-name/>: Pascal-cased, 1-3 word long, per-artifact
582
+ unique name of the entity.
583
+
584
+ - <spec-dm-entity-description/>: the 1-sentence description ("what")
585
+ of the entity.
586
+
587
+ - <spec-dm-entity-rationale/>: the 1-sentence rationale ("why") of
588
+ the entity.
589
+
590
+ - <spec-dm-attribute-id/>: camel-cased, 1-3 word long, per-entity
591
+ unique identifier of the entity attribute.
592
+
593
+ - <spec-dm-attribute-qualifier/>: the optional prefix `unique `
594
+ to indicate inclusion into the primary key of the entity.
595
+
596
+ - <spec-dm-attribute-type/>: the type of the entity attribute:
597
+ `boolean`, `integer`, `float`, `uuid`, `string`, `bytes`,
598
+ `enum(XXX,YYY[,...])`, `date`, `time`, or `datetime`.
599
+
600
+ - <spec-dm-attribute-description/>: the 1-sentence description
601
+ ("what") of the entity attribute.
602
+
603
+ - <spec-dm-attribute-rationale/>: the 1-sentence rationale ("why")
604
+ of the entity attribute.
605
+
606
+ - <spec-dm-relation-id/>: camel-cased, 1-3 word long, per-entity
607
+ unique identifier of the entity relation.
608
+
609
+ - <spec-dm-relation-description/>: the 1-sentence description
610
+ ("what") of the entity relation.
611
+
612
+ - <spec-dm-relation-rationale/>: the 1-sentence rationale ("why") of
613
+ the entity relation.
614
+
615
+ - <spec-dm-relation-target/>: the <spec-dm-entity-name/> of the
616
+ entity the directed relation targets.
617
+
618
+ - <spec-dm-relation-id/>: the <spec-dm-entity-id/> of the
619
+ entity the directed relation targets.
620
+
621
+ - <spec-dm-relation-cardinality/>: the cardinality of the entity
622
+ relation at the target entity: `0..1` for zero or one
623
+ ("optional"), `1` for exactly one ("mandatory"), `0..n` for
624
+ zero or more, and `1..n` for one or more.
625
+
626
+ - In case a <spec-dm-entity/> has no relations at all, the
627
+ entire `### RELATIONS` block is omitted.
628
+
629
+ - In case any rationale is not present, the
630
+ entire `, **BECAUSE** [...]` clause is omitted.
631
+
632
+ State Model (SM)
633
+ ----------------
634
+
635
+ For each entity with a non-trivial lifecycle, the legal states it can
636
+ occupy and the permitted transitions between them over its lifetime,
637
+ making the forbidden moves as explicit as the allowed ones.
638
+
639
+ - Format:
640
+
641
+ <format>
642
+
643
+ # SPECIFICATION: STATE MODEL (SPEC-SM)
644
+
645
+ ✳ Created: **<timestamp-created/>**
646
+ ✎ Modified: **<timestamp-modified/>**
647
+
648
+ <spec-sm-lifecycle/>
649
+ <spec-sm-lifecycle/>
650
+ [...]
651
+
652
+ </format>
653
+
654
+ - <spec-sm-lifecycle/> format:
655
+
656
+ <format>
657
+
658
+ ## LIFECYCLE: <spec-sm-lifecycle-name/> <a id="SPEC-SM-<spec-sm-lifecycle-id/>"></a>
659
+
660
+ - Entity: <spec-sm-lifecycle-entity/>
661
+ - Initial: <spec-sm-lifecycle-initial/>
662
+ - Final: <spec-sm-lifecycle-final/>
663
+
664
+ ### STATES
665
+
666
+ - `<spec-sm-state-name/>`:
667
+ <spec-sm-state-description/>.
668
+
669
+ - [...]
670
+
671
+ ### TRANSITIONS
672
+
673
+ - `<spec-sm-transition-from/>` ─(<spec-sm-transition-event/>)─► `<spec-sm-transition-to/>`:
674
+ <spec-sm-transition-effect/>,
675
+ **WHEN** <spec-sm-transition-guard/>.
676
+
677
+ - [...]
678
+
679
+ </format>
680
+
681
+ - <spec-sm-lifecycle/> details:
682
+
683
+ - <spec-sm-lifecycle-id/>: per-artifact unique "slug" of always 1-3
684
+ lower-cased words (concatenated with "-" characters and
685
+ in total not longer than 30 characters), derived from
686
+ <spec-sm-lifecycle-name/>.
687
+
688
+ - <spec-sm-lifecycle-name/>: a short (1-3 word) name of the lifecycle,
689
+ normally the name of the entity it governs.
690
+
691
+ - <spec-sm-lifecycle-entity/> is a `SPEC-DM-<spec-dm-entity-id/>`
692
+ reference to the corresponding **Aspect** of the Data Model
693
+ **Artifact** whose lifecycle this models.
694
+
695
+ - <spec-sm-lifecycle-initial/>: the <spec-sm-state-name/> of the
696
+ single state every instance of the entity enters upon creation.
697
+
698
+ - <spec-sm-lifecycle-final/>: a comma-separated list of one or more
699
+ <spec-sm-state-name/>s in which the entity may legally come to
700
+ rest permanently (terminal states).
701
+
702
+ - <spec-sm-state-name/>: a short, Pascal-cased, per-lifecycle unique
703
+ name of one state the entity can occupy (e.g. `Draft`,
704
+ `Shipped`).
705
+
706
+ - <spec-sm-state-description/>: the 1-sentence description ("what
707
+ holds true") of the state.
708
+
709
+ - <spec-sm-transition-from/>: the <spec-sm-state-name/> the
710
+ transition departs from.
711
+
712
+ - <spec-sm-transition-to/>: the <spec-sm-state-name/> the transition
713
+ arrives at.
714
+
715
+ - <spec-sm-transition-event/>: a short, lower-cased verb naming the
716
+ event or action that triggers the transition (e.g. `submit`,
717
+ `ship`, `cancel`).
718
+
719
+ - <spec-sm-transition-effect/>: the 1-sentence description ("what
720
+ happens") of the side effect the transition produces.
721
+
722
+ - <spec-sm-transition-guard/>: the condition that must hold for the
723
+ transition to be permitted; any move not listed as a transition
724
+ is implicitly forbidden.
725
+
726
+ - Every <spec-sm-state-name/> used in a transition *MUST* be
727
+ declared in the `### STATES` block, and every non-final state
728
+ *MUST* have at least one outgoing transition.
729
+
730
+ - In case a transition has no side effect, the
731
+ entire `<spec-sm-transition-effect/>,` clause is omitted.
732
+
733
+ - In case a transition has no guard, the
734
+ entire `, **WHEN** [...]` clause is omitted.
735
+
736
+ Glossary (GL)
737
+ -------------
738
+
739
+ The ubiquitous language of the domain, defining the meaning of each
740
+ domain term in business language, together with its synonyms and the
741
+ ambiguities to avoid, shared consistently across all Artifacts.
742
+
743
+ - Format:
744
+
745
+ <format>
746
+
747
+ # SPECIFICATION: GLOSSARY (SPEC-GL)
748
+
749
+ ✳ Created: **<timestamp-created/>**
750
+ ✎ Modified: **<timestamp-modified/>**
751
+
752
+ <spec-gl-term/>
753
+ <spec-gl-term/>
754
+ [...]
755
+
756
+ </format>
757
+
758
+ - <spec-gl-term/> format:
759
+
760
+ <format>
761
+
762
+ ## TERM: <spec-gl-term-name/> <a id="SPEC-GL-<spec-gl-term-id/>"></a>
763
+
764
+ - Synonyms: <spec-gl-term-synonyms/>
765
+
766
+ <spec-gl-term-definition/>
767
+
768
+ </format>
769
+
770
+ - <spec-gl-term/> details:
771
+
772
+ - <spec-gl-term-id/>: per-artifact unique "slug" of always 1-3
773
+ lower-cased words (concatenated with "-" characters and
774
+ in total not longer than 30 characters), derived from
775
+ <spec-gl-term-name/>.
776
+
777
+ - <spec-gl-term-name/>: the canonical, preferred name of the domain
778
+ term, capitalized as it should appear in all Artifacts.
779
+
780
+ - <spec-gl-term-synonyms/>: a comma-separated list of one or more
781
+ alternative names or abbreviations that refer to the same term
782
+ but are *not* the preferred form.
783
+
784
+ - <spec-gl-term-definition/>: a concise paragraph (1-3 sentences) of
785
+ prose defining the term in business language, independent of any
786
+ implementation, and referencing other terms by their
787
+ <spec-gl-term-name/> where helpful.
788
+
789
+ - In case a term has no synonyms, the
790
+ entire `- Synonyms:` bullet point is omitted.
791
+
792
+ Use Cases (UC)
793
+ --------------
794
+
795
+ The discrete goals users pursue with the solution, each describing an
796
+ actor's interaction to achieve a specific outcome. For each Use Case,
797
+ also the concrete step-by-step flows, detailing the sequence of actions
798
+ for main, alternative, and exceptional paths.
799
+
800
+ - Format:
801
+
802
+ <format>
803
+
804
+ # SPECIFICATION: USE CASES (SPEC-UC)
805
+
806
+ ✳ Created: **<timestamp-created/>**
807
+ ✎ Modified: **<timestamp-modified/>**
808
+
809
+ <spec-uc-usecase/>
810
+ <spec-uc-usecase/>
811
+ [...]
812
+
813
+ </format>
814
+
815
+ - <spec-uc-usecase/> format:
816
+
817
+ <format>
818
+
819
+ ## USE CASE: <spec-uc-usecase-name/> <a id="SPEC-UC-<spec-uc-usecase-id/>"></a>
820
+
821
+ - Actor: <spec-uc-usecase-actor/>
822
+ - Requirements: <spec-uc-usecase-requirements/>
823
+ - Goal: <spec-uc-usecase-goal/>
824
+ - Pre-Condition: <spec-uc-usecase-precondition/>
825
+ - Post-Condition: <spec-uc-usecase-postcondition/>
826
+
827
+ <spec-uc-usecase-description/>
828
+
829
+ <spec-uc-usecase-scenario/>
830
+ <spec-uc-usecase-scenario/>
831
+ [...]
832
+
833
+ </format>
834
+
835
+ - <spec-uc-usecase/> details:
836
+
837
+ - <spec-uc-usecase-id/>: per-artifact unique "slug" of always 1-3
838
+ lower-cased words (concatenated with "-" characters and
839
+ in total not longer than 30 characters), derived from
840
+ <spec-uc-usecase-name/>.
841
+
842
+ - <spec-uc-usecase-name/>: a short (3-8 word) summary of the use
843
+ case, phrased as an actor goal (e.g. `Reset Forgotten Password`).
844
+
845
+ - <spec-uc-usecase-actor/> is a `SPEC-PE-<spec-pe-persona-id/>`
846
+ reference to the corresponding **Aspect** of the Personas
847
+ **Artifact**, denoting the primary actor pursuing the goal.
848
+
849
+ - <spec-uc-usecase-requirements/> is a comma-separated list of one
850
+ or more `SPEC-FR-<spec-fr-requirement-id/>` references to the
851
+ corresponding **Aspect**s of the Functional Requirements
852
+ **Artifact** the use case realizes.
853
+
854
+ - <spec-uc-usecase-goal/>: the 1-sentence statement of what the
855
+ actor wants to achieve through this use case.
856
+
857
+ - <spec-uc-usecase-precondition/>: the condition that must hold
858
+ before the use case can begin.
859
+
860
+ - <spec-uc-usecase-postcondition/>: the condition that holds after
861
+ the use case completes successfully.
862
+
863
+ - <spec-uc-usecase-description/>: a concise paragraph (1-3
864
+ sentences) of prose describing the use case at a glance, without
865
+ prescribing the step-by-step flow (which belongs to the **Use
866
+ Case Scenarios** **Artifact**).
867
+
868
+ - In case the use case realizes no specific functional requirement,
869
+ the entire `- Requirements:` bullet point is omitted.
870
+
871
+ - In case a precondition or postcondition is not present, the
872
+ respective bullet point is omitted.
873
+
874
+ - <spec-uc-usecase-scenario/> format:
875
+
876
+ <format>
877
+
878
+ ### SCENARIO: <spec-uc-usecase-scenario-name/> (<spec-uc-usecase-scenario-type/>)
879
+
880
+ 1. <spec-uc-usecase-scenario-step/>
881
+ 2. <spec-uc-usecase-scenario-step/>
882
+ [...]
883
+
884
+ </format>
885
+
886
+ - <spec-uc-usecase-scenario/> details:
887
+
888
+ - <spec-uc-usecase-scenario-name/>: a short (3-8 word) summary of the
889
+ scenario.
890
+
891
+ - <spec-uc-usecase-scenario-type/>: the path the scenario represents, one
892
+ of `Main` (the primary, happy-path flow), `Alternative` (a
893
+ valid but secondary flow), or `Exceptional` (an error or
894
+ failure-handling flow).
895
+
896
+ - <spec-uc-usecase-scenario-step/>: a single, imperative step in the flow,
897
+ naming the acting party (actor or system) and the action taken
898
+ (e.g. `The user submits the login form.`). Steps are numbered
899
+ sequentially to convey their order.
900
+
901
+ Test Cases (TC)
902
+ ---------------
903
+
904
+ The verifiable conditions and steps used to confirm that requirements
905
+ are correctly implemented, with mandatory defined inputs, mandatory
906
+ expected outcomes, and optional pre- and post-conditions.
907
+
908
+ - Format:
909
+
910
+ <format>
911
+
912
+ # SPECIFICATION: TEST CASES (SPEC-TC)
913
+
914
+ ✳ Created: **<timestamp-created/>**
915
+ ✎ Modified: **<timestamp-modified/>**
916
+
917
+ <spec-tc-testcase/>
918
+ <spec-tc-testcase/>
919
+ [...]
920
+
921
+ </format>
922
+
923
+ - <spec-tc-testcase/> format:
924
+
925
+ <format>
926
+
927
+ ## TEST CASE: <spec-tc-testcase-name/> <a id="SPEC-TC-<spec-tc-testcase-id/>"></a>
928
+
929
+ - Verifies: <spec-tc-testcase-verifies/>
930
+ - Pre-Condition: <spec-tc-testcase-precondition/>
931
+ - Input: <spec-tc-testcase-input/>
932
+ - Expected: <spec-tc-testcase-expected/>
933
+ - Post-Condition: <spec-tc-testcase-postcondition/>
934
+
935
+ </format>
936
+
937
+ - <spec-tc-testcase/> details:
938
+
939
+ - <spec-tc-testcase-id/>: per-artifact unique "slug" of always 1-3
940
+ lower-cased words (concatenated with "-" characters and
941
+ in total not longer than 30 characters), derived from
942
+ <spec-tc-testcase-name/>.
943
+
944
+ - <spec-tc-testcase-name/>: a short (3-8 word) summary of the test
945
+ case.
946
+
947
+ - <spec-tc-testcase-verifies/> is a `SPEC-FR-<spec-fr-requirement-id/>`
948
+ or `SPEC-NR-<spec-nr-requirement-id/>` reference to the
949
+ corresponding **Aspect** of the Functional Requirements or
950
+ Non-Functional Requirements **Artifact** the test case verifies.
951
+
952
+ - <spec-tc-testcase-precondition/>: the state or setup that must
953
+ hold before the test is executed (optional).
954
+
955
+ - <spec-tc-testcase-input/>: the mandatory, concrete input data or
956
+ actions applied during the test.
957
+
958
+ - <spec-tc-testcase-expected/>: the mandatory, concrete expected
959
+ outcome or observable result that defines a passing test.
960
+
961
+ - <spec-tc-testcase-postcondition/>: the state that must hold after
962
+ the test completes (optional).
963
+
964
+ - In case a pre-condition or post-condition is not present, the
965
+ respective bullet point is omitted.
966
+
967
+ Interaction Concept (IC)
968
+ ------------------------
969
+
970
+ The overarching idea of how users interact with the solution,
971
+ describing the intended workflows and interaction philosophy (e.g.
972
+ auto-save behavior).
973
+
974
+ - Format:
975
+
976
+ <format>
977
+
978
+ # SPECIFICATION: INTERACTION CONCEPT (SPEC-IC)
979
+
980
+ ✳ Created: **<timestamp-created/>**
981
+ ✎ Modified: **<timestamp-modified/>**
982
+
983
+ <spec-ic-principle/>
984
+ <spec-ic-principle/>
985
+ [...]
986
+
987
+ </format>
988
+
989
+ - <spec-ic-principle/> format:
990
+
991
+ <format>
992
+
993
+ ## PRINCIPLE: <spec-ic-principle-name/> <a id="SPEC-IC-<spec-ic-principle-id/>"></a>
994
+
995
+ <spec-ic-principle-statement/>,
996
+ **BECAUSE** <spec-ic-principle-rationale/>.
997
+
998
+ </format>
999
+
1000
+ - <spec-ic-principle/> details:
1001
+
1002
+ - <spec-ic-principle-id/>: per-artifact unique "slug" of always 1-3
1003
+ lower-cased words (concatenated with "-" characters and
1004
+ in total not longer than 30 characters), derived from
1005
+ <spec-ic-principle-name/>.
1006
+
1007
+ - <spec-ic-principle-name/>: a short (2-5 word) summary of the
1008
+ interaction principle (e.g. `Auto-Save`, `Optimistic Updates`,
1009
+ `Undo over Confirm`).
1010
+
1011
+ - <spec-ic-principle-statement/>: a concise paragraph (1-3
1012
+ sentences) of prose describing the interaction principle and how
1013
+ it governs the user's experience across the solution.
1014
+
1015
+ - <spec-ic-principle-rationale/>: the 1-sentence rationale ("why")
1016
+ of the interaction principle.
1017
+
1018
+ - In case the rationale is not present, the
1019
+ entire `, **BECAUSE** [...]` clause is omitted.
1020
+
1021
+ Language Conventions (LC)
1022
+ -------------------------
1023
+
1024
+ The terminology, naming, tone, and wording standards used consistently
1025
+ across the solution and its content.
1026
+
1027
+ - Format:
1028
+
1029
+ <format>
1030
+
1031
+ # SPECIFICATION: LANGUAGE CONVENTIONS (SPEC-LC)
1032
+
1033
+ ✳ Created: **<timestamp-created/>**
1034
+ ✎ Modified: **<timestamp-modified/>**
1035
+
1036
+ <spec-lc-convention/>
1037
+ <spec-lc-convention/>
1038
+ [...]
1039
+
1040
+ </format>
1041
+
1042
+ - <spec-lc-convention/> format:
1043
+
1044
+ <format>
1045
+
1046
+ ## CONVENTION: <spec-lc-convention-name/> <a id="SPEC-LC-<spec-lc-convention-id/>"></a>
1047
+
1048
+ - Category: <spec-lc-convention-category/>
1049
+
1050
+ <spec-lc-convention-statement/>
1051
+ (e.g. <spec-lc-convention-example/>)
1052
+
1053
+ </format>
1054
+
1055
+ - <spec-lc-convention/> details:
1056
+
1057
+ - <spec-lc-convention-id/>: per-artifact unique "slug" of always
1058
+ 1-3 lower-cased words (concatenated with "-" characters and
1059
+ in total not longer than 30 characters), derived from
1060
+ <spec-lc-convention-name/>.
1061
+
1062
+ - <spec-lc-convention-name/>: a short (2-5 word) summary of the
1063
+ language convention.
1064
+
1065
+ - <spec-lc-convention-category/>: the aspect of language the
1066
+ convention governs, one of `Terminology` (preferred and
1067
+ forbidden terms), `Naming` (naming patterns), `Tone` (voice and
1068
+ register), `Capitalization`, `Punctuation`, or `Formatting`.
1069
+
1070
+ - <spec-lc-convention-statement/>: a concise paragraph (1-3
1071
+ sentences) of prose describing the convention to be applied
1072
+ consistently across the solution.
1073
+
1074
+ - <spec-lc-convention-example/>: a short, concrete illustration of
1075
+ the convention in practice (optional).
1076
+
1077
+ - In case the example is not present, the
1078
+ entire `(e.g. [...])` chunk is omitted.
1079
+
1080
+ Dialog Patterns (DP)
1081
+ --------------------
1082
+
1083
+ The reusable interaction structures governing how the system and user
1084
+ exchange information across recurring conversational or UI flows (e.g.
1085
+ master-detail dialog).
1086
+
1087
+ - Format:
1088
+
1089
+ <format>
1090
+
1091
+ # SPECIFICATION: DIALOG PATTERNS (SPEC-DP)
1092
+
1093
+ ✳ Created: **<timestamp-created/>**
1094
+ ✎ Modified: **<timestamp-modified/>**
1095
+
1096
+ <spec-dp-pattern/>
1097
+ <spec-dp-pattern/>
1098
+ [...]
1099
+
1100
+ </format>
1101
+
1102
+ - <spec-dp-pattern/> format:
1103
+
1104
+ <format>
1105
+
1106
+ ## PATTERN: <spec-dp-pattern-name/> <a id="SPEC-DP-<spec-dp-pattern-id/>"></a>
1107
+
1108
+ - Context: <spec-dp-pattern-context/>
1109
+ - Problem: <spec-dp-pattern-problem/>
1110
+
1111
+ <spec-dp-pattern-description/>,
1112
+ **BECAUSE** <spec-dp-pattern-rationale/>.
1113
+
1114
+ </format>
1115
+
1116
+ - <spec-dp-pattern/> details:
1117
+
1118
+ - <spec-dp-pattern-id/>: per-artifact unique "slug" of always 1-3
1119
+ lower-cased words (concatenated with "-" characters and
1120
+ in total not longer than 30 characters), derived from
1121
+ <spec-dp-pattern-name/>.
1122
+
1123
+ - <spec-dp-pattern-name/>: a short (2-5 word) summary of the dialog
1124
+ pattern (e.g. `Master-Detail`, `Wizard`, `Inline Edit`).
1125
+
1126
+ - <spec-dp-pattern-context/>: the recurring situation or flow in
1127
+ which the pattern is applied.
1128
+
1129
+ - <spec-dp-pattern-problem/>: the 1-sentence tension or difficulty
1130
+ the pattern resolves ("why is the pattern needed"),
1131
+ stated independently of its solution (which belongs to
1132
+ <spec-dp-pattern-description/>) and its rationale (which belongs
1133
+ to <spec-dp-pattern-rationale/>).
1134
+
1135
+ - <spec-dp-pattern-description/>: a concise paragraph (1-3
1136
+ sentences) of prose describing the reusable interaction structure
1137
+ and how the system and user exchange information within it.
1138
+
1139
+ - <spec-dp-pattern-rationale/>: the 1-sentence justification for why
1140
+ the structure in <spec-dp-pattern-description/> is the right
1141
+ response — the benefit it secures or the trade-off it wins.
1142
+ Unlike <spec-dp-pattern-problem/> (which states *why the pattern
1143
+ is needed*, independent of any solution), the rationale states
1144
+ *why this particular solution is worth adopting*.
1145
+
1146
+ - In case the rationale is not present, the
1147
+ entire `, **BECAUSE** [...]` clause is omitted.
1148
+
1149
+ Dialog Storyboard (DS)
1150
+ ----------------------
1151
+
1152
+ The sequenced visual or textual depiction of a specific dialog flow,
1153
+ illustrating how an interaction unfolds screen by screen or turn by
1154
+ turn.
1155
+
1156
+ - Format:
1157
+
1158
+ <format>
1159
+
1160
+ # SPECIFICATION: DIALOG STORYBOARD (SPEC-DS)
1161
+
1162
+ ✳ Created: **<timestamp-created/>**
1163
+ ✎ Modified: **<timestamp-modified/>**
1164
+
1165
+ <spec-ds-storyboard/>
1166
+ <spec-ds-storyboard/>
1167
+ [...]
1168
+
1169
+ </format>
1170
+
1171
+ - <spec-ds-storyboard/> format:
1172
+
1173
+ <format>
1174
+
1175
+ ## STORYBOARD: <spec-ds-storyboard-name/> <a id="SPEC-DS-<spec-ds-storyboard-id/>"></a>
1176
+
1177
+ - Pattern: <spec-ds-storyboard-pattern/>
1178
+ - Use Case: <spec-ds-storyboard-usecase/>
1179
+ - Scenario: <spec-ds-storyboard-scenario/>
1180
+
1181
+ 1. **<spec-ds-frame-name/>**: <spec-ds-frame-description/>
1182
+ 2. **<spec-ds-frame-name/>**: <spec-ds-frame-description/>
1183
+ [...]
1184
+
1185
+ </format>
1186
+
1187
+ - <spec-ds-storyboard/> details:
1188
+
1189
+ - <spec-ds-storyboard-id/>: per-artifact unique "slug" of always
1190
+ 1-3 lower-cased words (concatenated with "-" characters and
1191
+ in total not longer than 30 characters), derived from
1192
+ <spec-ds-storyboard-name/>.
1193
+
1194
+ - <spec-ds-storyboard-name/>: a short (3-8 word) summary of the
1195
+ depicted dialog flow.
1196
+
1197
+ - <spec-ds-storyboard-pattern/> is a `SPEC-DP-<spec-dp-pattern-id/>`
1198
+ reference to the corresponding **Aspect** of the Dialog Patterns
1199
+ **Artifact** the storyboard instantiates (optional).
1200
+
1201
+ - <spec-ds-storyboard-usecase/> is a
1202
+ `SPEC-UC-<spec-uc-usecase-id/>` reference to the corresponding
1203
+ **Aspect** of the Use Case **Artifact** the storyboard
1204
+ visualizes (optional).
1205
+
1206
+ - <spec-ds-storyboard-scenario/> is a
1207
+ Use Case scenario type `<spec-uc-usecase-scenario-type/>` of
1208
+ the corresponding **Aspect** of the Use Case **Artifact** the
1209
+ storyboard visualizes (optional).
1210
+
1211
+ - <spec-ds-frame-name/>: a short (2-5 word) label for the screen,
1212
+ turn, or state depicted by the storyboard frame. Frames are
1213
+ numbered sequentially to convey their order.
1214
+
1215
+ - <spec-ds-frame-description/>: a concise (1-2 sentence) description
1216
+ of what the user sees and does at this frame of the interaction.
1217
+
1218
+ - In case a pattern, use case, or scenario reference is not present,
1219
+ the respective bullet point is omitted.
1220
+
1221
+ Visual Design (VD)
1222
+ ------------------
1223
+
1224
+ The aesthetic and layout aspects of the solution, defining colors,
1225
+ typography, spacing, imagery, and overall look and feel.
1226
+
1227
+ - Format:
1228
+
1229
+ <format>
1230
+
1231
+ # SPECIFICATION: VISUAL DESIGN (SPEC-VD)
1232
+
1233
+ ✳ Created: **<timestamp-created/>**
1234
+ ✎ Modified: **<timestamp-modified/>**
1235
+
1236
+ <spec-vd-element/>
1237
+ <spec-vd-element/>
1238
+ [...]
1239
+
1240
+ </format>
1241
+
1242
+ - <spec-vd-element/> format:
1243
+
1244
+ <format>
1245
+
1246
+ ## ELEMENT: <spec-vd-element-name/> <a id="SPEC-VD-<spec-vd-element-id/>"></a>
1247
+
1248
+ - Category: <spec-vd-element-category/>
1249
+
1250
+ <spec-vd-element-specification/>,
1251
+ **BECAUSE** <spec-vd-element-rationale/>.
1252
+
1253
+ </format>
1254
+
1255
+ - <spec-vd-element/> details:
1256
+
1257
+ - <spec-vd-element-id/>: per-artifact unique "slug" of always 1-3
1258
+ lower-cased words (concatenated with "-" characters and
1259
+ in total not longer than 30 characters), derived from
1260
+ <spec-vd-element-name/>.
1261
+
1262
+ - <spec-vd-element-name/>: a short (2-5 word) summary of the visual
1263
+ design element.
1264
+
1265
+ - <spec-vd-element-category/>: the aspect of visual design the
1266
+ element governs, one of `Color`, `Typography`, `Iconography`,
1267
+ `Imagery`, `Layout`, or `Animation`.
1268
+
1269
+ - <spec-vd-element-specification/>: a concise paragraph (1-3
1270
+ sentences) of prose specifying the concrete values, tokens, or
1271
+ rules that define the visual design element (e.g. palette,
1272
+ font family, scale).
1273
+
1274
+ - <spec-vd-element-rationale/>: the 1-sentence rationale ("why") of
1275
+ the visual design element.
1276
+
1277
+ - In case the rationale is not present, the
1278
+ entire `, **BECAUSE** [...]` clause is omitted.