@kudusov.takhir/ba-toolkit 3.5.0 → 3.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,55 +1,98 @@
1
1
  # Data Dictionary: [PROJECT_NAME]
2
2
 
3
+ **Version:** 0.1
4
+ **Status:** Draft
3
5
  **Domain:** [DOMAIN]
4
6
  **Date:** [DATE]
5
7
  **Slug:** [SLUG]
6
8
  **References:** `02_srs_[SLUG].md`, `03_stories_[SLUG].md`
9
+ **Scope:** Logical data model only. Physical schema (DBMS choice, indexes, sharding) lives in `07a_research_[SLUG].md` ADRs.
7
10
 
8
11
  ---
9
12
 
10
13
  ## Entity: [EntityName]
11
14
 
12
- **Description:** [What this entity represents in the domain.]
13
- **Table / Collection:** `[table_name]`
14
- **Linked FR:** FR-[NNN]
15
+ | Field | Value |
16
+ |-------|-------|
17
+ | **Source** | FR-[NNN], US-[NNN] *(Required — what introduced this entity)* |
18
+ | **Owner** | [Team or role accountable for schema changes and data quality] |
19
+ | **Sensitivity** | Public / Internal / Confidential / PII / PCI / PHI / Financial |
20
+ | **Description** | [What this entity represents in the domain] |
21
+ | **Logical name** | `[entity_name]` *(physical table / collection name decided in /research)* |
15
22
 
16
- | Field | Type | Required | Default | Description | Constraints |
17
- |-------|------|----------|---------|-------------|------------|
23
+ ### Attributes
24
+
25
+ | Field | Logical Type | Required | Default | Description | Constraints |
26
+ |-------|--------------|----------|---------|-------------|-------------|
18
27
  | id | UUID | Yes | auto | Primary key | Unique |
19
- | [field] | [String \| Int \| Boolean \| Timestamp \| Decimal \| Enum \| FK] | Yes/No | [value or —] | [description] | [constraints, e.g. max 255, 0] |
20
- | created_at | Timestamp | Yes | now() | Record creation time | |
21
- | updated_at | Timestamp | Yes | now() | Last update time | |
28
+ | [field] | String / Integer / Decimal / Boolean / Timestamp / UUID / Enum / FK / JSON / Binary | Yes/No | [value or —] | [description] | [PK, FK, unique, not null, enum values, min/max, regex] |
29
+ | created_at | Timestamp | Yes | now() | Record creation time (UTC) | |
30
+ | updated_at | Timestamp | Yes | now() | Last update time (UTC) | |
31
+
32
+ ### Relationships
33
+
34
+ | Related Entity | Cardinality | FK Field | Cascade on Parent Delete |
35
+ |----------------|-------------|----------|--------------------------|
36
+ | [OtherEntity] | many-to-one | `[other_entity]_id` | Cascade / Restrict / Set null / Prevent |
37
+
38
+ ### State Machine *(required if entity has more than two distinct lifecycle states)*
39
+
40
+ **States:** Draft → Pending → Confirmed → InProgress → Completed → Archived
41
+ **Terminal states:** Completed, Cancelled, Failed
42
+
43
+ | From → To | Trigger | Allowed actor | Side effects |
44
+ |-----------|---------|---------------|--------------|
45
+ | Draft → Pending | submit() | Owner | Notification, audit log |
46
+ | Pending → Confirmed | approve() | Reviewer | Status email, FK lock |
47
+ | Confirmed → InProgress | start() | Owner | Timer starts |
48
+ | InProgress → Completed | finish() | Owner | Final notification, FK unlock |
49
+ | Any → Cancelled | cancel() | Owner / Admin | Reservation released, audit log |
50
+
51
+ ### Indexes *(logical — physical indexes decided by /research)*
52
+
53
+ - `[field]` — for [reason, e.g. "frequent lookup by email during login"]
54
+ - `(field_a, field_b)` — composite, for [reason]
55
+
56
+ ### Retention
22
57
 
23
- **Relationships:**
24
- - `[EntityName]` belongs to `[OtherEntity]` via `[field]` (many-to-one)
25
- - `[EntityName]` has many `[OtherEntity]` (one-to-many)
58
+ **Retention class:** [duration in years, or "indefinite", or "until consent withdrawn"]
59
+ **Reason:** [legal / regulatory / operational]
60
+ **Soft delete:** Yes (`deleted_at` timestamp) | No (hard delete only)
26
61
 
27
- **Indexes:**
28
- - `[field]` — for [reason, e.g. lookup by email]
62
+ ### Notes
29
63
 
30
- **Soft delete:** Yes `deleted_at` field / No — hard delete
31
- **Notes:** [Business rules, state machine, or special handling.]
64
+ [Business rules, validation logic, special handling, edge cases.]
32
65
 
33
66
  ---
34
67
 
35
68
  ## Entity: [EntityName2]
36
69
 
37
- **Description:** [What this entity represents in the domain.]
38
- **Table / Collection:** `[table_name]`
39
- **Linked FR:** FR-[NNN]
70
+ | Field | Value |
71
+ |-------|-------|
72
+ | **Source** | FR-[NNN] |
73
+ | **Owner** | [team] |
74
+ | **Sensitivity** | [class] |
75
+ | **Description** | [...] |
76
+ | **Logical name** | `[entity_name_2]` |
40
77
 
41
- | Field | Type | Required | Default | Description | Constraints |
42
- |-------|------|----------|---------|-------------|------------|
78
+ ### Attributes
79
+
80
+ | Field | Logical Type | Required | Default | Description | Constraints |
81
+ |-------|--------------|----------|---------|-------------|-------------|
43
82
  | id | UUID | Yes | auto | Primary key | Unique |
44
83
  | [field] | [type] | Yes/No | [value] | [description] | [constraints] |
45
- | created_at | Timestamp | Yes | now() | Record creation time | |
46
- | updated_at | Timestamp | Yes | now() | Last update time | |
84
+ | created_at | Timestamp | Yes | now() | (UTC) | |
85
+ | updated_at | Timestamp | Yes | now() | (UTC) | |
86
+
87
+ ### Relationships
47
88
 
48
- **Relationships:**
49
- - [relationship description]
89
+ | Related Entity | Cardinality | FK Field | Cascade on Parent Delete |
90
+ |----------------|-------------|----------|--------------------------|
91
+ | [Entity] | [cardinality] | `[fk_field]` | [cascade rule] |
50
92
 
51
- **Soft delete:** Yes / No
52
- **Notes:** [Special handling.]
93
+ ### Notes
94
+
95
+ [Notes.]
53
96
 
54
97
  <!-- Repeat Entity block for each domain entity. -->
55
98
 
@@ -65,6 +108,18 @@
65
108
 
66
109
  ---
67
110
 
111
+ ## FR → Entity Coverage Matrix
112
+
113
+ Forward traceability from each Functional Requirement in `02_srs_[SLUG].md` to the entities it reads or writes. An FR with no linked entity is flagged — every data-touching FR must have at least one linked entity.
114
+
115
+ | FR ID | FR Title | Linked Entities | Read / Write | Coverage Status |
116
+ |-------|----------|-----------------|--------------|-----------------|
117
+ | FR-001 | [title] | User, Session | R/W | ✓ |
118
+ | FR-002 | [title] | Order, OrderLine | R/W | ✓ |
119
+ | FR-003 | [title] | (none) | — | ⚠ Stateless FR — confirm intent |
120
+
121
+ ---
122
+
68
123
  ## Entity Relationship Overview
69
124
 
70
125
  ```
@@ -72,4 +127,4 @@
72
127
  [EntityName2] >── [EntityName3]
73
128
  ```
74
129
 
75
- _Full ERD: generated separately by the development team._
130
+ _Full ERD with physical layout: generated by the development team based on this logical model + `07a_research_[SLUG].md` ADRs._
@@ -1,97 +1,203 @@
1
1
  # Non-functional Requirements: [PROJECT_NAME]
2
2
 
3
+ **Version:** 0.1
4
+ **Status:** Draft
3
5
  **Domain:** [DOMAIN]
4
6
  **Date:** [DATE]
5
7
  **Slug:** [SLUG]
6
8
  **References:** `02_srs_[SLUG].md`, `00_principles_[SLUG].md`
9
+ **Standard:** ISO/IEC 25010:2011 Software Quality Model
10
+
11
+ > Every NFR maps to one of the 8 ISO 25010 characteristics: Functional Suitability, Performance Efficiency, Compatibility, Usability, Reliability, Security, Maintainability, Portability. Project-specific extensions (Compliance, Localisation, Observability) are marked as such and reference the parent ISO characteristic.
7
12
 
8
13
  ---
9
14
 
10
- ## NFR-001: Performance
15
+ ## Performance Efficiency (ISO 25010)
11
16
 
12
- | Attribute | Requirement | Measurement Method |
13
- |-----------|------------|-------------------|
14
- | [Page / operation] | [Target, e.g. < 2s p95] | [Lighthouse / load test / APM] |
17
+ ### NFR-001: [Sub-characteristic Time behaviour]
15
18
 
16
- **Rationale:** [Why this target matters for this project.]
19
+ | Field | Value |
20
+ |-------|-------|
21
+ | **Sub-characteristic** | Time behaviour |
22
+ | **Description** | [Page / operation / endpoint] response time target |
23
+ | **Metric** | p95 latency in milliseconds |
24
+ | **Acceptance threshold** | < 300ms p95, < 800ms p99 |
25
+ | **Verification** | Load test (k6 / Locust) running [scenario], measured by APM (Datadog / New Relic / Grafana) |
26
+ | **Source** | NFR-baseline from `00_principles_[SLUG].md` §5 / FR-NNN constraint / regulatory requirement |
27
+ | **Rationale** | [Why this target — competitive benchmark, user-perception threshold, contractual SLA] |
28
+ | **Priority** | Must |
29
+ | **Linked FR** | FR-[NNN] |
17
30
 
18
31
  ---
19
32
 
20
- ## NFR-002: Scalability
21
-
22
- | Attribute | Requirement | Measurement Method |
23
- |-----------|------------|-------------------|
24
- | Concurrent users | [N at peak] | [Load test scenario] |
25
- | Data volume | [N records, N GB] | [Capacity model] |
33
+ ### NFR-002: [Sub-characteristic — Capacity]
26
34
 
27
- **Rationale:** [Expected growth, peak events.]
35
+ | Field | Value |
36
+ |-------|-------|
37
+ | **Sub-characteristic** | Capacity |
38
+ | **Description** | Concurrent users / requests per second the system supports |
39
+ | **Metric** | Concurrent users at peak; sustained RPS |
40
+ | **Acceptance threshold** | [N concurrent users; N RPS sustained for 30 min without error rate > 0.1%] |
41
+ | **Verification** | Load test scenario [name], pass / fail at the threshold |
42
+ | **Source** | [Brief goal G-N or stakeholder] |
43
+ | **Rationale** | [Expected growth, peak events — Black Friday, end-of-quarter, exam day] |
44
+ | **Priority** | Should |
45
+ | **Linked FR** | FR-[NNN] |
28
46
 
29
47
  ---
30
48
 
31
- ## NFR-003: Availability & Reliability
49
+ ## Reliability (ISO 25010)
50
+
51
+ ### NFR-003: [Sub-characteristic — Availability]
52
+
53
+ | Field | Value |
54
+ |-------|-------|
55
+ | **Sub-characteristic** | Availability |
56
+ | **Description** | Service uptime target |
57
+ | **Metric** | Uptime % over rolling 30-day window |
58
+ | **Acceptance threshold** | 99.9% (8.76 hours downtime/year) |
59
+ | **Verification** | Status page measurement, third-party uptime monitor |
60
+ | **Source** | [SLA contract / regulatory requirement] |
61
+ | **Rationale** | [Customer-facing SLA, internal commitment] |
62
+ | **Priority** | Must |
63
+ | **Linked FR** | All customer-facing FRs |
64
+
65
+ ### NFR-004: [Sub-characteristic — Recoverability]
66
+
67
+ | Field | Value |
68
+ |-------|-------|
69
+ | **Sub-characteristic** | Recoverability |
70
+ | **Description** | Disaster-recovery RTO / RPO |
71
+ | **Metric** | RTO (Recovery Time Objective) in hours; RPO (Recovery Point Objective) in minutes |
72
+ | **Acceptance threshold** | RTO < 4h, RPO < 15min |
73
+ | **Verification** | Documented runbook, tested via DR drill quarterly |
74
+ | **Source** | [Compliance / business continuity policy] |
75
+ | **Rationale** | [Cost of downtime, regulatory requirement] |
76
+ | **Priority** | Must |
32
77
 
33
- | Service | SLA | Maintenance Window |
34
- |---------|-----|--------------------|
35
- | [Service name] | 99.9% | [Sun 02:00–04:00 UTC] |
78
+ ---
36
79
 
37
- **RTO:** [Recovery Time Objective, e.g. < 4h]
38
- **RPO:** [Recovery Point Objective, e.g. < 1h]
80
+ ## Security (ISO 25010)
81
+
82
+ ### NFR-005: [Sub-characteristic — Confidentiality]
83
+
84
+ | Field | Value |
85
+ |-------|-------|
86
+ | **Sub-characteristic** | Confidentiality |
87
+ | **Description** | Encryption at rest and in transit |
88
+ | **Metric** | Encryption algorithm + key length |
89
+ | **Acceptance threshold** | TLS 1.2+ in transit; AES-256 at rest |
90
+ | **Verification** | TLS scan, infrastructure config review, pen-test |
91
+ | **Source** | [SOC 2 / PCI DSS / HIPAA / GDPR] |
92
+ | **Rationale** | Regulatory baseline + customer trust |
93
+ | **Priority** | Must |
94
+
95
+ ### NFR-006: [Sub-characteristic — Authenticity / Accountability]
96
+
97
+ | Field | Value |
98
+ |-------|-------|
99
+ | **Sub-characteristic** | Authenticity, Accountability |
100
+ | **Description** | Authentication strength, audit trail per user action |
101
+ | **Metric** | MFA coverage, audit log completeness |
102
+ | **Acceptance threshold** | MFA mandatory for admin role; every PII access logged with actor + timestamp |
103
+ | **Verification** | Audit log inspection, security review |
104
+ | **Source** | [SOC 2 CC6.1, regulatory requirement] |
105
+ | **Rationale** | Compliance + incident-response capability |
106
+ | **Priority** | Must |
39
107
 
40
108
  ---
41
109
 
42
- ## NFR-004: Security
110
+ ## Compatibility (ISO 25010)
43
111
 
44
- | Control | Requirement |
45
- |---------|-------------|
46
- | Authentication | [e.g. JWT, OAuth 2.0, MFA for admin] |
47
- | Authorisation | [e.g. RBAC, row-level security] |
48
- | Data in transit | [TLS 1.2+] |
49
- | Data at rest | [AES-256] |
50
- | [Other control] | [requirement] |
112
+ ### NFR-007: [Sub-characteristic Interoperability]
51
113
 
52
- **Compliance standard:** [PCI DSS / HIPAA / GDPR / none]
114
+ | Field | Value |
115
+ |-------|-------|
116
+ | **Sub-characteristic** | Interoperability |
117
+ | **Description** | Data-exchange formats with external systems |
118
+ | **Metric** | Supported formats |
119
+ | **Acceptance threshold** | JSON over REST + CSV export + webhook OUT |
120
+ | **Verification** | Integration tests with each external system |
121
+ | **Source** | [Stakeholder name / partner contract] |
122
+ | **Rationale** | [Why these formats — partner constraints] |
123
+ | **Priority** | Must |
53
124
 
54
125
  ---
55
126
 
56
- ## NFR-005: Maintainability
127
+ ## Usability (ISO 25010)
57
128
 
58
- | Attribute | Requirement |
59
- |-----------|-------------|
60
- | Code coverage | [≥ 80% unit test coverage] |
61
- | Deployment | [CI/CD, zero-downtime deployments] |
62
- | Logging | [Structured JSON logs, retained N days] |
63
- | Alerting | [P1 alert on-call within 5 min] |
129
+ ### NFR-008: [Sub-characteristic Accessibility]
130
+
131
+ | Field | Value |
132
+ |-------|-------|
133
+ | **Sub-characteristic** | Accessibility (Usability sub-characteristic in ISO 25010) |
134
+ | **Description** | WCAG conformance level |
135
+ | **Metric** | WCAG 2.1 conformance level |
136
+ | **Acceptance threshold** | WCAG 2.1 AA on all customer-facing surfaces |
137
+ | **Verification** | Automated (axe-core) + manual testing with NVDA, JAWS, VoiceOver |
138
+ | **Source** | [Section 508 / EN 301 549 / domain reference] |
139
+ | **Rationale** | Legal requirement (EU public sector, US federal) + customer base inclusion |
140
+ | **Priority** | Must |
64
141
 
65
142
  ---
66
143
 
67
- ## NFR-006: Usability & Accessibility
144
+ ## Maintainability (ISO 25010)
145
+
146
+ ### NFR-009: [Sub-characteristic — Testability]
68
147
 
69
- | Attribute | Requirement |
70
- |-----------|-------------|
71
- | Accessibility | [WCAG 2.1 AA] |
72
- | Browser support | [Chrome, Safari, Firefox latest 2 versions] |
73
- | Mobile | [Responsive, iOS 15+, Android 10+] |
74
- | Language | [EN / RU / other] |
148
+ | Field | Value |
149
+ |-------|-------|
150
+ | **Sub-characteristic** | Testability |
151
+ | **Description** | Automated test coverage target |
152
+ | **Metric** | Unit + integration test coverage % |
153
+ | **Acceptance threshold** | 80% line coverage on core domain modules |
154
+ | **Verification** | CI report on every PR |
155
+ | **Source** | [Internal engineering standard] |
156
+ | **Rationale** | Catch regressions, support refactoring |
157
+ | **Priority** | Should |
75
158
 
76
159
  ---
77
160
 
78
- ## NFR-007: [Additional Category]
161
+ ## Portability (ISO 25010)
79
162
 
80
- | Attribute | Requirement | Measurement Method |
81
- |-----------|------------|-------------------|
82
- | [attribute] | [requirement] | [method] |
163
+ ### NFR-010: [Sub-characteristic Adaptability]
83
164
 
84
- <!-- Add or remove NFR sections based on project needs. Numbering: NFR-001, NFR-002, ... -->
165
+ | Field | Value |
166
+ |-------|-------|
167
+ | **Sub-characteristic** | Adaptability |
168
+ | **Description** | Browser / OS / device support matrix |
169
+ | **Metric** | Supported browser × OS × device combinations |
170
+ | **Acceptance threshold** | Latest 2 major versions of Chrome, Safari, Firefox, Edge; iOS 15+, Android 10+ |
171
+ | **Verification** | Cross-browser test suite |
172
+ | **Source** | [User analytics on existing audience] |
173
+ | **Rationale** | Coverage of 95%+ of expected user base |
174
+ | **Priority** | Should |
175
+
176
+ <!-- Add NFR sections as needed. Every NFR maps to an ISO 25010 characteristic. -->
85
177
 
86
178
  ---
87
179
 
88
- ## Priority Summary
180
+ ## FR → NFR Coverage Matrix
181
+
182
+ Forward traceability from each Functional Requirement in `02_srs_[SLUG].md` §3 to the NFRs that govern its quality. A Must-priority FR with no linked NFR is flagged — every customer-facing Must FR should have at least one Performance, Reliability, or Security NFR attached.
183
+
184
+ | FR ID | FR Title | Linked NFRs | Coverage Status |
185
+ |-------|----------|-------------|-----------------|
186
+ | FR-001 | [title] | NFR-001, NFR-003, NFR-005 | ✓ |
187
+ | FR-002 | [title] | NFR-001, NFR-005 | ✓ |
188
+ | FR-003 | [title] | (uncovered) | ✗ |
189
+
190
+ ---
89
191
 
90
- | ID | Category | Priority |
91
- |----|----------|---------|
92
- | NFR-001 | Performance | Must |
93
- | NFR-002 | Scalability | Should |
94
- | NFR-003 | Availability | Must |
95
- | NFR-004 | Security | Must |
96
- | NFR-005 | Maintainability | Should |
97
- | NFR-006 | Usability | Should |
192
+ ## Priority Summary by ISO 25010 Characteristic
193
+
194
+ | ISO 25010 Characteristic | NFRs | Must | Should | Could |
195
+ |--------------------------|------|------|--------|-------|
196
+ | Performance Efficiency | NFR-001, NFR-002 | 1 | 1 | 0 |
197
+ | Reliability | NFR-003, NFR-004 | 2 | 0 | 0 |
198
+ | Security | NFR-005, NFR-006 | 2 | 0 | 0 |
199
+ | Compatibility | NFR-007 | 1 | 0 | 0 |
200
+ | Usability | NFR-008 | 1 | 0 | 0 |
201
+ | Maintainability | NFR-009 | 0 | 1 | 0 |
202
+ | Portability | NFR-010 | 0 | 1 | 0 |
203
+ | Functional Suitability | (covered by FRs) | — | — | — |
@@ -1,9 +1,11 @@
1
1
  # Validation Scenarios: [PROJECT_NAME]
2
2
 
3
+ **Version:** 0.1
4
+ **Status:** Draft
3
5
  **Domain:** [DOMAIN]
4
6
  **Date:** [DATE]
5
7
  **Slug:** [SLUG]
6
- **References:** `03_stories_[SLUG].md`, `05_ac_[SLUG].md`, `09_wireframes_[SLUG].md`, `08_apicontract_[SLUG].md`
8
+ **References:** `02_srs_[SLUG].md`, `03_stories_[SLUG].md`, `05_ac_[SLUG].md`, `06_nfr_[SLUG].md`, `08_apicontract_[SLUG].md`, `09_wireframes_[SLUG].md`
7
9
 
8
10
  ---
9
11
 
@@ -19,13 +21,17 @@
19
21
 
20
22
  ## SC-001: [Scenario Title]
21
23
 
22
- **Persona:** [Name and role — e.g. "Alex, a returning customer"]
24
+ **Persona:** [Name and role — e.g. "Alex, a returning customer in DE who buys 4–6 times per year"]
23
25
  **Type:** Happy path | Negative | Edge case | Performance | Security
24
26
  **Priority:** P1 (critical) | P2 (important) | P3 (nice to have)
27
+ **Frequency:** [How often this scenario runs in production — "every login", "once per month per user", "twice per year per admin"]
28
+ **Stakes:** [Cost of failure — "data loss", "lost revenue ~€X per failed run", "regulatory breach", "reputation"]
25
29
  **Entry point:** [Where the scenario starts — e.g. "Home screen, not logged in"]
26
30
  **Platform:** Web | iOS | Android | API
27
- **Linked Stories:** US-[NNN], US-[NNN]
28
- **Linked AC:** US-[NNN] Scenario [N]
31
+ **Source — Linked Stories:** US-[NNN], US-[NNN]
32
+ **Source — Linked FR:** FR-[NNN]
33
+ **Source — Linked NFR:** NFR-[NNN] *(if scenario validates a quality attribute)*
34
+ **Linked AC:** AC-[NNN]-[NN], AC-[NNN]-[NN]
29
35
 
30
36
  ### Steps
31
37
 
@@ -82,12 +88,16 @@
82
88
 
83
89
  | Artifact | Covered | Not Covered |
84
90
  |---------|---------|------------|
85
- | User Stories | [N] / [Total] | US-[NNN], … |
86
- | Acceptance Criteria Scenarios | [N] / [Total] | |
91
+ | User Stories (Must) | [N] / [Total] | US-[NNN], … |
92
+ | Functional Requirements (Must) | [N] / [Total] | FR-[NNN], … |
93
+ | Non-functional Requirements | [N] / [Total] | NFR-[NNN], … |
94
+ | Acceptance Criteria | [N] / [Total] | AC-[NNN]-[NN], … |
87
95
  | API Endpoints | [N] / [Total] | `[endpoint]`, … |
88
96
  | Wireframe screens | [N] / [Total] | WF-[NNN], … |
89
97
 
90
98
  **Happy path scenarios:** [N]
91
99
  **Negative scenarios:** [N]
92
100
  **Edge case scenarios:** [N]
101
+ **Performance scenarios:** [N]
102
+ **Security scenarios:** [N]
93
103
  **Total scenarios:** [N]
@@ -1,5 +1,7 @@
1
1
  # Use Cases: [PROJECT_NAME]
2
2
 
3
+ **Version:** 0.1
4
+ **Status:** Draft
3
5
  **Domain:** [DOMAIN]
4
6
  **Date:** [DATE]
5
7
  **Slug:** [SLUG]
@@ -7,26 +9,34 @@
7
9
 
8
10
  ## Use Case Index
9
11
 
10
- | ID | Title | Primary Actor | Linked Stories |
11
- |----|-------|--------------|---------------|
12
- | UC-001 | [Title] | [Actor] | US-[NNN] |
12
+ | ID | Title | Goal in Context | Primary Actor | Linked Stories |
13
+ |----|-------|-----------------|---------------|----------------|
14
+ | UC-001 | [Title] | G-1 | [Actor] | US-[NNN] |
13
15
 
14
16
  ---
15
17
 
16
18
  ## UC-001: [Use Case Title]
17
19
 
18
20
  **ID:** UC-001
21
+ **Goal in Context:** [Which Brief goal G-N from `01_brief_[SLUG].md` §2 this UC serves. Required.]
22
+ **Scope:** System | Subsystem | Component
23
+ **Level:** User-goal | Summary | Subfunction
19
24
  **Primary Actor:** [Role]
20
- **Supporting Actors:** [Other roles or external systems]
21
- **Trigger:** [What event or action initiates this use case]
25
+ **Supporting Actors:** [Other roles or external systems — payment provider, notification service, etc.]
26
+
27
+ **Stakeholders and Interests:**
28
+
29
+ | Stakeholder | Interest |
30
+ |-------------|----------|
31
+ | [Primary actor] | [What they want from this UC] |
32
+ | [Other stakeholder] | [What they want / what they want to avoid] |
33
+
22
34
  **Pre-conditions:**
23
35
  - [Condition that must be true before the use case starts]
24
36
 
25
- **Post-conditions (Success):**
26
- - [System state after successful completion]
37
+ **Trigger:** [What event or action initiates this use case]
27
38
 
28
- **Post-conditions (Failure):**
29
- - [System state after failure or cancellation]
39
+ **Source:** US-[NNN] | FR-[NNN] | regulatory requirement | parent UC-NNN *(Required — what drove this UC into existence.)*
30
40
 
31
41
  ### Main Success Scenario
32
42
 
@@ -36,16 +46,35 @@
36
46
  | 2 | System | [Responds with something] |
37
47
  | 3 | [Actor] | [Continues] |
38
48
 
39
- ### Alternative Flows
49
+ ### Extensions / Alternative Flows
40
50
 
41
51
  **Alt 1 — [Name]:** At step [N], if [condition], then [action]. Resume at step [M].
42
52
 
43
53
  ### Exception Flows
44
54
 
45
- **Exc 1 — [Name]:** At step [N], if [error condition], then [system response and outcome].
55
+ **Exc 1 — [Name]:** At step [N], if [error condition], then [system response, recovery action, and final outcome].
56
+
57
+ ### Post-conditions
58
+
59
+ **Success Guarantees:** [What is true after the Main Success Scenario completes — the contract for the happy path.]
60
+
61
+ **Minimal Guarantees:** [What is true after *any* termination of the UC, including failure — e.g. "stock reservation released, no partial order created, audit log entry written".]
46
62
 
47
63
  **Linked Stories:** US-[NNN], US-[NNN]
48
64
  **Linked FR:** FR-[NNN]
65
+ **Linked AC:** AC-[NNN]-[NN], AC-[NNN]-[NN]
49
66
  **Linked Wireframe:** WF-[NNN]
50
67
 
51
68
  <!-- Repeat UC block for each use case. Numbering: UC-001, UC-002, ... -->
69
+
70
+ ---
71
+
72
+ ## US → UC Coverage Matrix
73
+
74
+ Forward traceability from each User Story in `03_stories_[SLUG].md` to the Use Cases that detail it. Every Must-priority story should have at least one linked UC; uncovered stories are flagged here as `(uncovered)` so they cannot silently fall through to AC without UC context.
75
+
76
+ | US ID | US Title | Linked UCs | Coverage Status |
77
+ |-------|----------|------------|-----------------|
78
+ | US-001 | [title] | UC-001, UC-007 | ✓ |
79
+ | US-002 | [title] | UC-003 | ✓ |
80
+ | US-003 | [title] | (uncovered) | ✗ |
@@ -1,9 +1,12 @@
1
1
  # Wireframe Descriptions: [PROJECT_NAME]
2
2
 
3
+ **Version:** 0.1
4
+ **Status:** Draft
3
5
  **Domain:** [DOMAIN]
4
6
  **Date:** [DATE]
5
7
  **Slug:** [SLUG]
6
- **References:** `03_stories_[SLUG].md`, `04_usecases_[SLUG].md`, `05_ac_[SLUG].md`
8
+ **References:** `03_stories_[SLUG].md`, `04_usecases_[SLUG].md`, `05_ac_[SLUG].md`, `06_nfr_[SLUG].md`, `08_apicontract_[SLUG].md`
9
+ **Accessibility target:** WCAG 2.1 AA
7
10
 
8
11
  > These are textual wireframe descriptions, not visual diagrams. Each screen is described with sufficient detail for a designer to produce a high-fidelity mockup.
9
12
 
@@ -19,11 +22,15 @@
19
22
 
20
23
  ## WF-001: [Screen Name]
21
24
 
25
+ **Source:** US-[NNN] *(Required — which user story this screen serves)*
22
26
  **Platform:** Web | iOS | Android | All
23
27
  **Route / Deep link:** `[/path or app://screen]`
24
28
  **Entry points:** [Where the user comes from — e.g. Home → tap "Browse"]
25
29
  **Linked Stories:** US-[NNN], US-[NNN]
26
30
  **Linked UC:** UC-[NNN]
31
+ **Linked AC:** AC-[NNN]-[NN] *(scenarios this screen verifies)*
32
+ **Linked NFR:** NFR-[NNN] *(performance, accessibility, or other UI-impacting NFRs)*
33
+ **Internationalisation:** LTR / RTL / both; long-string accommodation: yes / no
27
34
 
28
35
  ### Layout
29
36
 
@@ -36,14 +43,19 @@
36
43
  **Footer / Bottom navigation:**
37
44
  [Describe persistent navigation or action bar if present.]
38
45
 
39
- ### States
46
+ ### States *(canonical 8 — every screen describes all that apply)*
40
47
 
41
48
  | State | Description |
42
49
  |-------|-------------|
43
- | Loading | [Skeleton screen / spinner / progress bar] |
44
- | Empty | [Empty state message and CTA] |
45
- | Error | [Error message and recovery action] |
46
- | [Feature state] | [Description, e.g. "item added to cart badge updates"] |
50
+ | Default | [Initial state when the screen first appears, if distinct from "loaded"] |
51
+ | Loading | [Skeleton screen / spinner / progress bar — what the user sees while data fetches] |
52
+ | Empty | [Empty state message + primary CTA — first-time experience] |
53
+ | Loaded | [Data is present and renderedthe canonical "happy" state] |
54
+ | Partial | [Some data shown, more loading — pagination / streaming] |
55
+ | Success | [After a user action completes — confirmation banner, toast, animation] |
56
+ | Error | [Failure state — message + recovery action] |
57
+ | Disabled | [Action not available — visible reason for the user, no dead-end] |
58
+ | [Feature state] | [Optional feature-specific state, e.g. "trial expired", "offline mode"] |
47
59
 
48
60
  ### Interactions
49
61
 
@@ -94,3 +106,15 @@
94
106
  - [Note]
95
107
 
96
108
  <!-- Repeat WF block for each screen. Numbering: WF-001, WF-002, ... -->
109
+
110
+ ---
111
+
112
+ ## US → WF Coverage Matrix
113
+
114
+ Forward traceability from each User Story to the screen(s) that implement it. Every Must-priority story should have at least one linked screen; uncovered stories are flagged.
115
+
116
+ | US ID | US Title | Linked Wireframes | Coverage Status |
117
+ |-------|----------|-------------------|-----------------|
118
+ | US-001 | [title] | WF-001, WF-002 | ✓ |
119
+ | US-002 | [title] | WF-003 | ✓ |
120
+ | US-003 | [title] | (uncovered) | ✗ |