spec(SD-0002 §5.1, D-14): commit Claude Design hi-fi bundle for the Products surface; amend design-tooling decision to Design → Code; adopt toast refinement; v0.3.0

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-06-11 13:46:48 -07:00
parent 0116afbba9
commit 8a0c7bc35e
26 changed files with 4069 additions and 15 deletions
@@ -15,6 +15,7 @@
| --- | --- | --- | --- |
| 2026-06-11 | v0.1.0 | Initial draft — §1 Business Context (session ecomm-0030) | Claude + Ben |
| 2026-06-11 | v0.2.0 | Full draft complete, §§114, authored section-at-a-time with operator review at each boundary (session ecomm-0030) | Claude + Ben |
| 2026-06-11 | v0.3.0 | Claude Design hi-fi bundle committed (`ui/designs/SD-0002-…`); §5.1 decision amended to Design → Code (D-14); §5.2 toast refinement adopted | Claude + Ben |
---
@@ -484,22 +485,34 @@ Scenario: PUC-11 — The sample CSV and column reference teach the shape
## 5. UX Layout
Text is the source of truth; wireframes are generated from these descriptions
on demand and never committed. All surfaces live inside SD-0001's admin shell
(its header: storefront name left, signed-in email + sign out right).
Text is the source of truth; the committed **Claude Design hi-fi bundle** at
[`ui/designs/SD-0002-products-bulk-csv-import-export/`](../ui/designs/SD-0002-products-bulk-csv-import-export/)
renders these descriptions interactively (all four screens + states, built on
the wiggleverse design-system bundle) and serves as SLICE-5's visual
bootstrap artifact. Where bundle and prose disagree, this prose governs
(GUIDE §3.2). All surfaces live inside SD-0001's admin shell (its header:
storefront name left, signed-in email + sign out right; the bundle's sidebar
treatment is indicative — the shell remains SD-0001's).
### 5.1 Design tooling decision
- **Decision:** Code directly.
- **Rationale:** rubric score **1** (claude-design-vs-code.md): Q1 **+1**
(net-new Products section, no data-surface precedent in the codebase),
Q2 **1** (this section describes the UI to wireframe level — named
components, enumerated states), Q3 **0** (one admin section, multi-step but
utilitarian), Q4 **+1** (no design system in the ecomm app yet), Q5 **1**
(solo build, operator is the only reviewer), Q6 **1** (work is dominantly
logic: parsing, diffing, upsert, image pipeline). Default at 1 is Code; no
override fires — the import preview is novel but structural, and prose
specifies it adequately.
- **Decision:** Design → Code, with the Claude Design project scoped to: the
Products section (Products page · import upload · preview · run detail).
Export bundle committed at `ui/designs/SD-0002-products-bulk-csv-import-export/`;
per the rubric's integration note it is a **bootstrap artifact, not a
sync** — after SLICE-5 lands it, iteration happens in code, and Claude
Design returns only when a new spec independently scores for it.
- **Rationale:** the rubric scored **1 → Code directly** as drafted (Q1 +1
net-new section, Q2 1 wireframe-level prose, Q3 0, Q4 +1 no app design
system, Q5 1 solo review, Q6 1 logic-dominant). The operator then ran
the Design step anyway — the shareable-artifact override in effect — and
produced the hi-fi bundle from this spec's §§45, validating the prose
rather than replacing it. Both the score and the actual path are recorded
so neither is re-litigated (D-14, §13).
- **Design notes carried into implementation:** the bundle's thin
single-weight geometric icon set is flagged (by the bundle itself) as a
**net-new admin icon set**, not yet house brand; the design-system bundle
(`_ds/wiggleverse-design-system-…`) is the same one SD-0001's designs use.
### 5.2 Screen: Products (serves PUC-1, PUC-7, PUC-8, PUC-9, PUC-11)
@@ -529,8 +542,10 @@ on demand and never committed. All surfaces live inside SD-0001's admin shell
imports yet."
- **States:** loading: skeleton for count + history · error: honest failure
banner with retry (INV-9 spirit) · empty/populated per above.
- **Notifications:** none beyond the notices band (no toasts here; outcomes
live on durable surfaces).
- **Notifications:** toasts for the two fire-and-forget gestures — export
started/completed and sample-CSV downloaded (a design-bundle refinement);
import outcomes never toast — they live on durable surfaces (preview, run
detail, notices band).
### 5.3 Screen: Import — upload (serves PUC-2, PUC-5a, PUC-11)
@@ -1378,6 +1393,7 @@ rationale for engineering choices lives in §6.7)
| D-11 | Format learning | Sample CSV + column reference, app-served (DOC-2/3) | 2026-06-11 |
| D-12 | Re-import of images | Platform-hosted and already-fetched URLs are never re-fetched; fetch only new URLs + retries of failed/rejected (round-trip integrity, INV-12) | 2026-06-11 |
| D-13 | Storage & serving | Catalog in existing Cloud SQL (additive); images in a per-env private GCS bucket, app-served with immutable caching; CDN named as the #24 seam (§6.3.1) | 2026-06-11 |
| D-14 | Design artifact | Operator ran the Claude Design step (overriding the rubric's Code-directly score); hi-fi bundle committed at `ui/designs/SD-0002-…/` as SLICE-5's bootstrap artifact; prose (§5) remains the source of truth (§5.1) | 2026-06-11 |
## 14. Glossary & References