@tekyzinc/gsd-t 2.69.13 → 2.70.10

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.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,16 @@
2
2
 
3
3
  All notable changes to GSD-T are documented here. Updated with each release.
4
4
 
5
+ ## [2.70.10] - 2026-04-06
6
+
7
+ ### Added (design pipeline — 2 new capabilities)
8
+ - **Design System Detection** — all design pipeline commands now ask for a design system / component library URL upfront before extraction or implementation. If provided, the agent fetches the library docs, catalogs available components, and maps design elements to library primitives (use library components instead of building custom). Added to: `gsd-t-design-decompose` (Step 0.4), `gsd-t-design-audit` (Step 0), `design-to-code.md` (new Section 1 — all subsequent sections renumbered). Verification checklist updated with 2 new items.
9
+ - **SVG Structural Overlay Comparison** — new mandatory verification layer that exports the Figma frame as SVG, parses element positions/dimensions/colors from the SVG DOM, maps to built DOM bounding boxes, and compares geometry mechanically (≤2px = MATCH, 3-5px = REVIEW, >5px = DEVIATION). Catches aggregate spacing drift, alignment issues, and proportion errors that pass property-level checks but are visually wrong. Added to: `gsd-t-execute` (Step 5 inside Design Verification Agent), `gsd-t-quick` (step 7 inside Design Verification Agent), `gsd-t-design-audit` (Step 3.5), `design-to-code.md` (Target 3 + workflow step 7 + checklist item).
10
+
11
+ ### Why
12
+ - **Design system**: Building custom cards, tables, tabs, and buttons from scratch when a library like shadcn-vue already provides them wastes effort and produces inferior results (missing accessibility, focus states, interactive states). Asking upfront eliminates redundant work.
13
+ - **SVG overlay**: The property-level comparison table catches wrong values but misses aggregate visual drift — spacing rhythm, alignment, proportions that are individually correct but collectively off. SVG structural diff is mechanical and non-interpretive: geometry vs geometry, no agent reasoning required.
14
+
5
15
  ## [2.69.13] - 2026-04-05
6
16
 
7
17
  ### Fixed (design-to-code pipeline — extraction + verification)
@@ -17,6 +17,12 @@ Extract from `$ARGUMENTS`:
17
17
  If Figma source is missing → ask user: "Provide the Figma file key or URL"
18
18
  If built app target is missing → check if a dev server is running. If not → ask user: "Provide the route or URL of the built page to audit"
19
19
 
20
+ **Design system / component library?**
21
+ - Ask user: "Is a design system or component library being used (e.g., shadcn-vue, Vuetify, Radix, MUI)? If so, provide the URL."
22
+ - If yes → fetch the docs, note which components the library provides and their default styling (padding, radius, shadows, colors)
23
+ - Factor into Step 3 comparisons: deviations that match library defaults (not Figma) may indicate "used library default instead of design value" — flag as a distinct deviation category
24
+ - If no → proceed as normal
25
+
20
26
  ## Step 1: Map the Figma Design — Node-Level Decomposition
21
27
 
22
28
  ### 1a. Get the page tree
@@ -142,9 +148,58 @@ For each widget, produce a comparison table with **minimum 10 rows per widget**
142
148
  | **MEDIUM** | Wrong alignment, color, or order that looks incorrect but doesn't change meaning | Legend left instead of center; segment order reversed; wrong shade |
143
149
  | **LOW** | Minor sizing or spacing that's barely noticeable | 2px padding difference; slight font-size mismatch |
144
150
 
151
+ ## Step 3.5: SVG Structural Overlay Comparison (MANDATORY)
152
+
153
+ After the per-widget property comparison, run a mechanical SVG-based diff to catch aggregate visual drift that individual property checks miss.
154
+
155
+ 1. **Export the Figma frame as SVG**:
156
+ - Use the Figma REST API or MCP to export the page/frame as SVG
157
+ - If export is unavailable, ask the user to export and provide the SVG path
158
+ - Store the SVG at `.gsd-t/design-verify/{page-name}-figma.svg`
159
+
160
+ 2. **Parse the SVG DOM**: extract every `<rect>`, `<text>`, `<circle>`, `<path>`, `<g>` with their positions (x, y), dimensions (width, height), fills, strokes, and text content
161
+
162
+ 3. **Screenshot the built page** at the same viewport width via Playwright
163
+
164
+ 4. **Map SVG elements → built DOM elements** by:
165
+ - Text content matching (highest confidence)
166
+ - Position proximity (x,y within 10px tolerance)
167
+ - Dimensional similarity (width/height within 10% tolerance)
168
+
169
+ 5. **Compare each mapped pair**:
170
+
171
+ | Check | SVG Value | Built Value | Threshold |
172
+ |-------|-----------|-------------|-----------|
173
+ | Position (x,y) | SVG coordinates | DOM bounding box | ≤2px = MATCH, 3-5px = REVIEW, >5px = DEVIATION |
174
+ | Dimensions (w,h) | SVG width/height | DOM width/height | ≤2px = MATCH, 3-5px = REVIEW, >5px = DEVIATION |
175
+ | Colors | SVG fill/stroke hex | Computed CSS color | Exact hex = MATCH |
176
+ | Text content | SVG `<text>` | DOM textContent | Exact = MATCH |
177
+
178
+ 6. **Produce SVG structural diff table**:
179
+
180
+ ```markdown
181
+ ### SVG Structural Diff
182
+
183
+ | # | SVG Element | SVG Position | Built Position | Δ px | Verdict |
184
+ |---|-------------|-------------|----------------|------|---------|
185
+ | 1 | stat-card-1 rect | (24, 120) 320×200 | (24, 118) 320×204 | 2/4 | ⚠ REVIEW |
186
+ | 2 | chart-title text | (40, 140) | (40, 140) | 0 | ✅ MATCH |
187
+ ```
188
+
189
+ 7. **Unmapped elements**:
190
+ - SVG elements with no DOM match → flag as "MISSING IN BUILD"
191
+ - DOM elements with no SVG match → flag as "EXTRA — not in design"
192
+
193
+ 8. **Visual overlay** (optional but recommended):
194
+ - Render SVG in browser at target viewport size
195
+ - Overlay on built page screenshot with 50% opacity or difference blend mode
196
+ - Save to `.gsd-t/design-verify/{page-name}-overlay.png`
197
+
198
+ This step catches spacing rhythm, alignment drift, and proportion issues that pass the per-widget property check but are visually wrong in aggregate.
199
+
145
200
  ## Step 4: Summary Report
146
201
 
147
- After all widgets are audited, produce a summary:
202
+ After all widgets are audited (property tables + SVG structural diff), produce a summary:
148
203
 
149
204
  ```markdown
150
205
  ## Design Audit Summary
@@ -32,7 +32,14 @@ Run these checks, log results to user inline:
32
32
  3. **Design source provided?**
33
33
  - Required: Figma URL, image path, or prototype URL in `$ARGUMENTS`
34
34
  - If missing → ask user: "Provide the design source (Figma URL, image path, or prototype URL)"
35
- 4. **Load the chart taxonomy (MANDATORY)**
35
+ 4. **Design system / component library?**
36
+ - Ask user: "Is a design system or component library being used (e.g., shadcn-vue, Vuetify, Radix, MUI, Ant Design)? If so, provide the URL."
37
+ - If yes → fetch the docs landing page, catalog available components (cards, tables, tabs, charts, buttons, etc.)
38
+ - Record in working memory: which design elements can be mapped to library primitives vs. built custom
39
+ - Factor into Step 2 classification: if the library provides a component (e.g., `Card`, `Table`, `Tabs`), the element contract should reference it as the implementation target
40
+ - Factor into Step 3 widget composition: library layout primitives (e.g., `Grid`, `Flex`, `Sheet`) inform widget structure
41
+ - If no → proceed as normal (all components built custom)
42
+ 5. **Load the chart taxonomy (MANDATORY)**
36
43
  - READ `templates/design-chart-taxonomy.md` from the GSD-T package (or `~/.claude/` if installed)
37
44
  - This is the **CLOSED SET** of valid element names. You MUST pick from this list. Inventing new element names is FORBIDDEN without user approval to extend the taxonomy.
38
45
  - Keep the taxonomy in working memory while classifying — every element you identify MUST be matched against it
@@ -748,19 +748,57 @@ Rules:
748
748
  - NEVER write 'Appears to match' or 'Looks correct' — measure and verify
749
749
  - If the table has fewer than 30 rows for a full-page comparison, you skipped elements
750
750
 
751
- ## Step 5: Report Deviations
751
+ ## Step 5: SVG Structural Overlay Comparison (MANDATORY)
752
+
753
+ After the property-level comparison, run a mechanical SVG-based diff to catch
754
+ aggregate visual drift that individual property checks miss.
755
+
756
+ 1. Export the Figma frame as SVG:
757
+ - Use the Figma REST API or MCP to export the page/frame as SVG
758
+ - If export is unavailable, ask the user to export and provide the SVG path
759
+ - Store the SVG at .gsd-t/design-verify/{page-name}-figma.svg
760
+ 2. Parse the SVG DOM: extract every <rect>, <text>, <circle>, <path>, <g>
761
+ with their positions (x, y), dimensions (width, height), fills, strokes,
762
+ and text content
763
+ 3. Screenshot the built page at the same viewport width via Playwright
764
+ 4. Inspect the built page DOM: extract element bounding boxes, computed
765
+ styles (colors, dimensions), and text content
766
+ 5. Map SVG elements → built DOM elements by:
767
+ - Text content matching (highest confidence)
768
+ - Position proximity (x,y within 10px tolerance)
769
+ - Dimensional similarity (width/height within 10% tolerance)
770
+ 6. For each mapped pair, compare:
771
+ - Position: SVG (x,y) vs DOM bounding box (x,y). Within 2px = MATCH
772
+ - Dimensions: SVG (w,h) vs DOM (w,h). Within 2px = MATCH
773
+ - Colors: SVG fill/stroke vs computed CSS color. Exact hex = MATCH
774
+ - Text: SVG <text> content vs DOM textContent. Exact = MATCH
775
+ 7. Produce an SVG structural diff table:
776
+ | # | SVG Element | SVG Position | Built Position | Δ px | Verdict |
777
+ Threshold: ≤2px = ✅ MATCH, 3-5px = ⚠ REVIEW, >5px = ❌ DEVIATION
778
+ 8. Unmapped SVG elements (no DOM match) → flag as MISSING IN BUILD
779
+ Unmapped DOM elements (no SVG match) → flag as EXTRA IN BUILD
780
+ 9. Generate a visual overlay image (optional but recommended):
781
+ - Render SVG in browser at target viewport size
782
+ - Overlay on built page screenshot with 50% opacity or difference blend
783
+ - Save to .gsd-t/design-verify/{page-name}-overlay.png
784
+
785
+ This step catches spacing rhythm, alignment drift, and proportion issues
786
+ that pass the property-level check but are visually wrong in aggregate.
787
+
788
+ ## Step 6: Report Deviations
752
789
 
753
790
  For each ❌ DEVIATION, write a specific finding:
754
791
  'Design: {exact value}. Implementation: {exact value}. File: {path}:{line}'
755
792
 
756
- Write the FULL comparison table to .gsd-t/contracts/design-contract.md
757
- under a '## Verification Status' section.
793
+ Write the FULL comparison table (property-level from Step 4 + SVG structural
794
+ from Step 5) to .gsd-t/contracts/design-contract.md under a
795
+ '## Verification Status' section.
758
796
 
759
797
  Any ❌ DEVIATION → also append to .gsd-t/qa-issues.md with severity HIGH
760
798
  and tag [VISUAL]:
761
799
  | {date} | gsd-t-execute | Step 5.25 | opus | {duration} | HIGH | [VISUAL] {description} |
762
800
 
763
- ## Step 6: Verdict
801
+ ## Step 7: Verdict
764
802
 
765
803
  Count results: '{MATCH_COUNT}/{TOTAL} elements match at {breakpoints} breakpoints'
766
804
 
@@ -277,9 +277,21 @@ cannot be redeemed by visual polish.
277
277
  6. Produce structured comparison table:
278
278
  | # | Section | Element | Design (specific) | Implementation (specific) | Verdict |
279
279
  Only valid verdicts: ✅ MATCH or ❌ DEVIATION (never 'appears to match')
280
- 7. Write results to .gsd-t/contracts/design-contract.md under '## Verification Status'
281
- 8. Any append to .gsd-t/qa-issues.md with [VISUAL] tag
282
- 9. Report: DESIGN VERIFIED | DESIGN DEVIATIONS FOUND ({count})"
280
+ 7. SVG Structural Overlay Comparison:
281
+ a. Export Figma frame as SVG (or ask user for SVG path if export unavailable)
282
+ b. Parse SVG DOM: extract positions, dimensions, fills, text for every element
283
+ c. Screenshot built page at same viewport width via Playwright
284
+ d. Map SVG elements → built DOM elements by text content + position proximity
285
+ e. Compare: position (≤2px=MATCH, 3-5px=REVIEW, >5px=DEVIATION),
286
+ dimensions, colors (exact hex), text (exact match)
287
+ f. Produce SVG structural diff table:
288
+ | # | SVG Element | SVG Position | Built Position | Δ px | Verdict |
289
+ g. Flag unmapped SVG elements as MISSING, unmapped DOM elements as EXTRA
290
+ This catches aggregate visual drift that property-level checks miss.
291
+ 8. Write results (property table + SVG diff) to .gsd-t/contracts/design-contract.md
292
+ under '## Verification Status'
293
+ 9. Any ❌ → append to .gsd-t/qa-issues.md with [VISUAL] tag
294
+ 10. Report: DESIGN VERIFIED | DESIGN DEVIATIONS FOUND ({count})"
283
295
  ```
284
296
 
285
297
  After subagent returns — run observability Bash and append to token-log.md.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tekyzinc/gsd-t",
3
- "version": "2.69.13",
3
+ "version": "2.70.10",
4
4
  "description": "GSD-T: Contract-Driven Development for Claude Code — 54 slash commands with headless CI/CD mode, graph-powered code analysis, real-time agent dashboard, execution intelligence, task telemetry, doc-ripple enforcement, backlog management, impact analysis, test sync, milestone archival, and PRD generation",
5
5
  "author": "Tekyz, Inc.",
6
6
  "license": "MIT",
@@ -35,7 +35,43 @@ A widget that uses `chart-donut` cannot change `chart-donut`'s bar-gap, colors,
35
35
 
36
36
  ---
37
37
 
38
- ## 1. Design Source Setup
38
+ ## 1. Design System Detection
39
+
40
+ ```
41
+ MANDATORY:
42
+ ├── BEFORE any extraction or implementation, check for a design system:
43
+ │ Ask user: "Is a design system or component library being used
44
+ │ (e.g., shadcn-vue, Vuetify, Radix, MUI, Ant Design, Chakra)?
45
+ │ If so, provide the URL."
46
+ ├── If YES:
47
+ │ Fetch the library's docs landing page
48
+ │ Catalog available components (cards, tables, tabs, charts, buttons,
49
+ │ inputs, dialogs, dropdowns, etc.)
50
+ │ Identify the theming system (CSS variables, Tailwind config, theme object)
51
+ │ Determine customization model:
52
+ │ Copy-paste (shadcn) → full control, edit component source directly
53
+ │ Config-based (MUI theme) → customize via theme overrides
54
+ │ Utility-first (Tailwind + headless) → style via utility classes
55
+ │ Map design elements to library primitives — use library components
56
+ │ instead of building custom whenever a match exists
57
+ │ Record in the design contract: library name, URL, version,
58
+ │ components used, theming approach
59
+ ├── If NO:
60
+ │ Proceed with fully custom implementation
61
+ │ Note in design contract: "No design system — all components custom"
62
+ └── WHY: Design system components provide battle-tested accessibility,
63
+ interactive states, and responsive behavior out of the box.
64
+ Building custom when a library component exists wastes effort
65
+ and produces inferior results (missing focus states, ARIA, etc.)
66
+ ```
67
+
68
+ **BAD** — Building a custom card component, dropdown, and table from scratch when shadcn-vue already provides them with full accessibility and Tailwind theming.
69
+
70
+ **GOOD** — Detecting shadcn-vue, mapping 60% of the design's UI elements to library components, customizing via Tailwind theme tokens, and only building custom for elements the library doesn't cover (specialized charts, domain-specific widgets).
71
+
72
+ ---
73
+
74
+ ## 2. Design Source Setup
39
75
 
40
76
  ```
41
77
  MANDATORY:
@@ -62,7 +98,7 @@ MANDATORY:
62
98
 
63
99
  ---
64
100
 
65
- ## 2. MCP & Tool Detection
101
+ ## 3. MCP & Tool Detection
66
102
 
67
103
  ```
68
104
  MANDATORY:
@@ -95,7 +131,7 @@ MANDATORY:
95
131
 
96
132
  ---
97
133
 
98
- ## 3. Stack Capability Evaluation
134
+ ## 4. Stack Capability Evaluation
99
135
 
100
136
  ```
101
137
  MANDATORY:
@@ -147,7 +183,7 @@ MANDATORY:
147
183
 
148
184
  ---
149
185
 
150
- ## 4. Design Token Extraction Protocol
186
+ ## 5. Design Token Extraction Protocol
151
187
 
152
188
  ```
153
189
  MANDATORY:
@@ -172,7 +208,7 @@ MANDATORY:
172
208
 
173
209
  ---
174
210
 
175
- ## 5. Design Contract Generation
211
+ ## 6. Design Contract Generation
176
212
 
177
213
  ```
178
214
  MANDATORY:
@@ -188,7 +224,7 @@ The design contract serves the same purpose as API contracts in GSD-T: it define
188
224
 
189
225
  ---
190
226
 
191
- ## 6. Component Decomposition
227
+ ## 7. Component Decomposition
192
228
 
193
229
  ```
194
230
  MANDATORY:
@@ -226,7 +262,7 @@ Page
226
262
 
227
263
  ---
228
264
 
229
- ## 7. Layout Analysis
265
+ ## 8. Layout Analysis
230
266
 
231
267
  ```
232
268
  MANDATORY:
@@ -247,7 +283,7 @@ MANDATORY:
247
283
 
248
284
  ---
249
285
 
250
- ## 8. Responsive Breakpoint Strategy
286
+ ## 9. Responsive Breakpoint Strategy
251
287
 
252
288
  ```
253
289
  MANDATORY:
@@ -280,7 +316,7 @@ MANDATORY:
280
316
 
281
317
  ---
282
318
 
283
- ## 9. Semantic HTML Structure
319
+ ## 10. Semantic HTML Structure
284
320
 
285
321
  ```
286
322
  MANDATORY:
@@ -300,7 +336,7 @@ MANDATORY:
300
336
 
301
337
  ---
302
338
 
303
- ## 10. Naming Conventions (Classes, IDs, Data Attributes)
339
+ ## 11. Naming Conventions (Classes, IDs, Data Attributes)
304
340
 
305
341
  ```
306
342
  MANDATORY:
@@ -339,7 +375,7 @@ MANDATORY:
339
375
 
340
376
  ---
341
377
 
342
- ## 11. CSS Precision Rules
378
+ ## 12. CSS Precision Rules
343
379
 
344
380
  ```
345
381
  MANDATORY:
@@ -370,7 +406,7 @@ MANDATORY:
370
406
 
371
407
  ---
372
408
 
373
- ## 12. Typography Rendering
409
+ ## 13. Typography Rendering
374
410
 
375
411
  ```
376
412
  MANDATORY:
@@ -403,7 +439,7 @@ MANDATORY:
403
439
 
404
440
  ---
405
441
 
406
- ## 13. Color Accuracy
442
+ ## 14. Color Accuracy
407
443
 
408
444
  ```
409
445
  MANDATORY:
@@ -437,7 +473,7 @@ MANDATORY:
437
473
 
438
474
  ---
439
475
 
440
- ## 14. Interactive States
476
+ ## 15. Interactive States
441
477
 
442
478
  ```
443
479
  MANDATORY:
@@ -474,7 +510,7 @@ MANDATORY:
474
510
 
475
511
  ---
476
512
 
477
- ## 15. Visual Verification — Against FIGMA, Not Just Contracts
513
+ ## 16. Visual Verification — Against FIGMA, Not Just Contracts
478
514
 
479
515
  **Visual verification is handled by a dedicated Design Verification Agent**, spawned automatically by `gsd-t-execute` (Step 5.25) after all domain tasks complete.
480
516
 
@@ -488,20 +524,26 @@ VERIFICATION TARGETS:
488
524
  │ Does the code match the contract's claimed values?
489
525
  │ (This is what the 13-task validation proved works — airtight.)
490
526
 
491
- └── TARGET 2: Built screen vs FIGMA DESIGN (MANDATORY — this is new)
492
- Does the BUILT SCREEN match the ORIGINAL FIGMA SCREENSHOT?
493
- This catches: contracts that were wrong to begin with,
494
- chart type misclassification, hallucinated data, missing elements.
495
- (This is what was missing — and what caused the BDS failures.)
527
+ ├── TARGET 2: Built screen vs FIGMA DESIGN (MANDATORY)
528
+ Does the BUILT SCREEN match the ORIGINAL FIGMA STRUCTURED DATA?
529
+ This catches: contracts that were wrong to begin with,
530
+ chart type misclassification, hallucinated data, missing elements.
531
+
532
+ └── TARGET 3: SVG STRUCTURAL OVERLAY (MANDATORY)
533
+ Export Figma frame as SVG → parse element positions/dimensions/colors
534
+ → compare geometrically against built DOM bounding boxes.
535
+ This catches: aggregate spacing drift, alignment issues, proportion
536
+ errors that pass property-level checks but look wrong visually.
537
+ Mechanical, non-interpretive — no agent reasoning, just geometry.
496
538
  ```
497
539
 
498
- **Target 2 is the critical addition.** Verifying code-vs-contract is necessary but not sufficient. If the contract said "donut" when Figma showed a stacked bar, the code will faithfully build a donut, the contract verification will say MATCH, and the screen will be WRONG.
540
+ **Targets 2 and 3 are complementary.** Target 2 catches wrong values (property-level). Target 3 catches wrong placement (geometry-level). Together they cover both "is each value correct?" and "does the whole page look right?"
499
541
 
500
542
  ### Verification agent workflow
501
543
 
502
544
  ```
503
545
  SEPARATION OF CONCERNS:
504
- ├── CODING AGENT (you — Sections 1-14 above):
546
+ ├── CODING AGENT (you — Sections 1-15 above):
505
547
  │ Extract tokens → write precise CSS → trace every value to design contract
506
548
  │ Do NOT open a browser or attempt visual comparison yourself
507
549
 
@@ -524,7 +566,16 @@ SEPARATION OF CONCERNS:
524
566
  `get_design_context` response?
525
567
  6. Produce structured comparison table (30+ rows):
526
568
  | Element | Figma (get_design_context) | Built | MATCH/DEVIATION |
527
- 7. Fix deviations re-verify artifact gate enforces completion
569
+ 7. SVG STRUCTURAL OVERLAY mechanical geometry comparison:
570
+ a. Export Figma frame as SVG (API/MCP or user-provided)
571
+ b. Parse SVG DOM: positions, dimensions, fills, text per element
572
+ c. Map SVG elements → built DOM elements by text + position proximity
573
+ d. Compare geometry: position (≤2px=MATCH), dimensions, colors, text
574
+ e. Produce SVG diff table:
575
+ | SVG Element | SVG Position | Built Position | Δ px | Verdict |
576
+ f. Flag unmapped elements (MISSING IN BUILD / EXTRA IN BUILD)
577
+ This catches aggregate spacing/alignment drift the property table misses.
578
+ 8. Fix deviations → re-verify → artifact gate enforces completion
528
579
  ```
529
580
 
530
581
  The verification agent enforces the **FAIL-BY-DEFAULT** rule: every visual element starts as UNVERIFIED. The only valid verdicts are MATCH (with proof) or DEVIATION (with specifics). "Looks close" and "appears to match" are not verdicts. An artifact gate in the orchestrator blocks completion if the comparison table is missing or empty.
@@ -533,7 +584,7 @@ The verification agent enforces the **FAIL-BY-DEFAULT** rule: every visual eleme
533
584
 
534
585
  ---
535
586
 
536
- ## 16. Anti-Patterns
587
+ ## 17. Anti-Patterns
537
588
 
538
589
  ```
539
590
  NEVER DO THESE:
@@ -553,10 +604,12 @@ NEVER DO THESE:
553
604
 
554
605
  ---
555
606
 
556
- ## 17. Design-to-Code Verification Checklist
607
+ ## 18. Design-to-Code Verification Checklist
557
608
 
558
609
  Before marking any design implementation task as complete:
559
610
 
611
+ - [ ] Design system / component library identified (or confirmed none) and documented in design contract
612
+ - [ ] Library components mapped to design elements — custom build only where no library match exists
560
613
  - [ ] Design source identified and documented in design contract
561
614
  - [ ] Stack capability evaluated — all design requirements achievable (or alternatives approved)
562
615
  - [ ] All design tokens extracted (colors, typography, spacing, borders, shadows)
@@ -574,4 +627,5 @@ Before marking any design implementation task as complete:
574
627
  - [ ] Spacing exact: every padding, margin, gap matches design values
575
628
  - [ ] Accessibility: focus indicators, alt text, ARIA where needed, 44px touch targets
576
629
  - [ ] No magic numbers — every value is documented or uses a design token
630
+ - [ ] SVG structural overlay comparison completed — geometry diff ≤2px per element
577
631
  - [ ] Verification results logged in design contract Verification Status table