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:
2026-07-31 11:25:43 +03:00
parent 2136082d6d
commit d874a4dca6
30 changed files with 3327 additions and 355 deletions

View File

@@ -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.