feat(speckit): workflow architecture upgrades + rework 038 spec per new flow
Add prototype/openapi/validate/resume commands, wire edge-failure matrix into UX, enforce traceability + validation gates, mandate C4/C5 belief-runtime verification. Rework 038-dashboard-scenario-model artifacts: applicability, structured edge cases, 24-class UX state matrix, interactive HTML prototype, standardized OpenAPI 3.1 (7 ops), full RTM with coverage gate, 56-task backlog, and PASS validation report.
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
#region Std.Specify.UxReference [C:3] [TYPE ADR] [SEMANTICS ux, reference, [DOMAIN]]
|
||||
@BRIEF UX interaction reference — persona, flows, states, and recovery paths. Drives `@UX_*` contract tags in Phase 1.
|
||||
#region Std.Specify.UxReference [C:3] [TYPE ADR] [SEMANTICS ux,reference,[DOMAIN]]
|
||||
@BRIEF UX interaction reference — persona, flows, states, recovery paths, and edge/failure matrix coverage. Drives `@UX_*` contract tags in Phase 1 and feeds prototype + OpenAPI generation.
|
||||
|
||||
**Feature Branch**: `[###-feature-name]`
|
||||
**Created**: [DATE] | **Status**: Draft
|
||||
@@ -57,6 +57,35 @@ $ command --flag value
|
||||
|
||||
**Semantic Requirement**: Every documented failure path here should map to `@UX_RECOVERY` and, where relevant, `@UX_FEEDBACK` in the generated component contracts.
|
||||
|
||||
### Edge & Failure State Matrix Reference
|
||||
|
||||
Use the following matrix to ensure systematic coverage of failure states. Mark each as **Applicable** or **Not Applicable (with reason)**. This feeds directly into `/speckit.prototype` state switcher and `/speckit.openapi` error responses.
|
||||
|
||||
| State Class | Trigger | Applicable? | Visual/Feedback | Recovery |
|
||||
|-------------|---------|:-----------:|-----------------|----------|
|
||||
| NET_01 — Offline | `navigator.onLine == false` | | Offline banner | Auto-retry on reconnect |
|
||||
| NET_02 — Timeout | >30s no response | | Toast + countdown | Retry (3 attempts) |
|
||||
| NET_03 — Retry exhausted | 3 failed retries | | Persistent banner | Manual retry |
|
||||
| VAL_01 — Field validation | On blur/submit | | Inline red border | Re-type |
|
||||
| VAL_02 — Cross-field validation | On submit | | Summary banner | Fix + re-submit |
|
||||
| AUTH_01 — 401 Unauthorized | Expired token | | Redirect to login | Login → redirect back |
|
||||
| AUTH_02 — 403 Forbidden | Wrong role | | Full-page explanation | Navigate to dashboard |
|
||||
| NF_01 — 404 Not Found | Deleted resource | | Full-page not found | Navigate to list |
|
||||
| CONF_01 — 409 Concurrent edit | Version conflict | | Modal: "Reload?" | Reload or discard |
|
||||
| CONF_02 — 409 Duplicate | Idempotency key | | Return existing | Transparent |
|
||||
| 422 — Server validation | Business rule | | Toast with detail | Correct + re-submit |
|
||||
| 429 — Rate limited | Too many requests | | Countdown timer | Wait Retry-After |
|
||||
| 5XX — Server error | Backend failure | | Error section + retry | Retry button |
|
||||
| STALE — Background update | Newer version exists | | Refresh banner | Click refresh |
|
||||
| PARTIAL — Partial load | Some rows failed | | Failed row placeholder | Per-row retry |
|
||||
| DUP_01 — Double submit | Rapid double-click | | Button disabled | Normal completion |
|
||||
| DUP_02 — Navigation interrupt | Dirty form + route | | Confirm dialog | Stay or discard |
|
||||
| LARGE — Large dataset | >1000 items | | Virtual scroll | Search refinement |
|
||||
| EMPTY — No data | No matching items | | Empty state + guidance | CTA or clear filters |
|
||||
| MALFORMED — Bad response | Backend bug | | Error ID + retry | Note error ID |
|
||||
| A11Y — Screen reader | State change | | aria-live announcements | Built into transitions |
|
||||
| RESP — Responsive | Viewport <768px | | Stacked layout | Built into layout |
|
||||
|
||||
### Scenario A: [Common Error, e.g. Invalid Input]
|
||||
|
||||
* **User Action**: Enters "123" in a text-only field.
|
||||
|
||||
Reference in New Issue
Block a user