@tekyzinc/gsd-t 2.56.13 → 2.56.15

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.
@@ -283,31 +283,46 @@ Execute the task above:
283
283
  A test that would pass on an empty HTML page with the right element IDs is useless.
284
284
  Every assertion must prove the FEATURE WORKS, not that the ELEMENT EXISTS.
285
285
  7. **Visual Design Verification** (MANDATORY when design-to-code stack rule is active):
286
- If the task involves UI implementation from a design reference, this step is NOT optional:
286
+ If the task involves UI implementation from a design reference, this step is NOT optional.
287
+ **FAIL-BY-DEFAULT**: Every element is UNVERIFIED until you prove it matches. "Looks close" is not
288
+ a verdict. "Appears to match" is not a verdict. Assume NOTHING matches.
287
289
  a. **Get the Figma reference screenshot**: If Figma MCP is available, call `get_screenshot` with the
288
290
  relevant nodeId and fileKey from `.gsd-t/contracts/design-contract.md`. Save this as the reference.
289
291
  If no Figma MCP, use the design image/screenshot provided in the contract.
290
- b. **Render the built component in a real browser**: Start the dev server if not running.
291
- Use Claude Preview, Chrome MCP, or Playwright to open the page at the correct URL.
292
- Capture screenshots at each target breakpoint:
292
+ b. **Build the element inventory**: Before comparing ANYTHING, enumerate every distinct visual
293
+ element in the design walk top-to-bottom, left-to-right. Every chart, label, icon, heading,
294
+ card, button, spacing boundary, color, and data visualization detail gets its own row.
295
+ Data visualizations expand into multiple rows: chart type, orientation, axis labels, legend
296
+ position, bar/segment colors, data labels, grid lines, center text, tooltip style.
297
+ If a full-page inventory has fewer than 30 elements, you missed items — go back.
298
+ c. **Open side-by-side browser sessions for direct visual comparison**:
299
+ Start the dev server if not running. Open TWO views simultaneously:
300
+ - **View 1 — Built frontend**: Use Claude Preview, Chrome MCP, or Playwright to open the
301
+ implemented page at the correct URL. Navigate to the exact route/component being verified.
302
+ - **View 2 — Original design**: If Figma URL → open the Figma page in another browser tab.
303
+ If design image file → open the image in a browser tab (`file://` path or HTML wrapper).
304
+ If Figma MCP screenshot → open that screenshot image.
305
+ Walk through each component with both views visible. Compare element-by-element at matching
306
+ zoom levels. Capture screenshot pairs (design + implementation) at each target breakpoint:
293
307
  - Mobile: 375px width
294
308
  - Tablet: 768px width
295
309
  - Desktop: 1280px width
296
- c. **Pixel-by-pixel comparison**: Place the Figma screenshot and browser screenshot side-by-side.
297
- Systematically compare every element:
298
- - Chart types (bar vs stacked bar vs donut exact match required)
299
- - Colors (exact hex match — #1A73E8 is not #1A74E9)
300
- - Typography (font family, weight, size, line-height, letter-spacing)
301
- - Spacing (padding, margins, gapsexact pixel match)
302
- - Layout (grid structure, alignment, element positioning)
303
- - Component states (toggles, active states, expanded/collapsed sections)
304
- - Data visualization style (chart axis, labels, legends, distribution bars)
305
- d. **Log every deviation** with specifics: "Donut chart missing center text '485 Total Interactions',
306
- Number of Tools uses vertical bars but design shows horizontal stacked bar"
307
- e. **Fix ALL deviations** max 3 fix-and-recheck iterations per component.
308
- After each fix, re-render and re-compare. Every fix must trace to a design contract value.
309
- f. **If deviations remain after 3 iterations**: log to `.gsd-t/qa-issues.md` with severity CRITICAL
310
- and tag `[VISUAL]`. This BLOCKS task completion — the task is NOT done.
310
+ d. **Structured element-by-element comparison** (MANDATORY FORMAT no prose comparisons):
311
+ Produce a table with this exact structure for every element in the inventory:
312
+ `| # | Section | Element | Design (specific) | Implementation (specific) | Verdict |`
313
+ Rules:
314
+ - "Design" column: SPECIFIC values (chart type name, hex color, px size, font weight)
315
+ - "Implementation" column: SPECIFIC observed values from the screenshot not code assumptions
316
+ - Verdict: only MATCH or ❌ DEVIATION — never "appears to match" or "need to verify"
317
+ - Data visualizations: chart type, axis orientation, axis labels, legend position, bar colors,
318
+ data label placement, grid lines, center text each a SEPARATE row
319
+ - NEVER lead with "what's working" the table IS the comparison, start with row 1
320
+ e. **Fix every DEVIATION** fix each row individually, trace to design contract value.
321
+ Re-render after each batch of fixes. Update verdict only after visual re-verification.
322
+ Max 3 fix-and-recheck iterations per component.
323
+ f. **Final table**: After fixes, every row must be ✅ MATCH. Any remaining ❌ → log to
324
+ `.gsd-t/qa-issues.md` with severity CRITICAL and tag `[VISUAL]`. BLOCKS task completion.
325
+ Report: "Verified: {N}/{total} elements match at {breakpoints} breakpoints"
311
326
  g. **Log results** in the design contract's Verification Status table.
312
327
  h. **If no browser/preview tools available**: This is a CRITICAL blocker, not a warning.
313
328
  Log to `.gsd-t/qa-issues.md`: "CRITICAL: No browser tools available for visual verification.
@@ -679,13 +694,27 @@ Rules:
679
694
  behavior (state changes, data loaded, navigation works) or just check
680
695
  that elements exist? Flag and rewrite any shallow/layout tests.
681
696
  8. **Design Fidelity** (if .gsd-t/contracts/design-contract.md exists):
682
- Open every implemented screen in a real browser. Screenshot at mobile
683
- (375px), tablet (768px), desktop (1280px). Get Figma reference via
684
- Figma MCP get_screenshot (or design contract images). Compare every
685
- element: chart types, colors, typography, spacing, layout, component
686
- states, data visualization style. Any visual deviation from the design
687
- is a CRITICAL bug. 'Build shows vertical bars but design shows horizontal
688
- stacked bars' is a real bug, not a style opinion.
697
+ FAIL-BY-DEFAULT: assume NOTHING matches. Prove each element individually.
698
+ a. Open every implemented screen in a real browser. Screenshot at mobile
699
+ (375px), tablet (768px), desktop (1280px). Get Figma reference via
700
+ Figma MCP get_screenshot (or design contract images).
701
+ b. Build an element inventory: enumerate every distinct visual element
702
+ in the design top-to-bottom. Every chart, label, icon, heading, card,
703
+ spacing boundary, and color. Data visualizations expand: chart type,
704
+ orientation, axis labels, legend position, bar colors, data labels,
705
+ grid lines, center text — each a separate item.
706
+ c. Produce a structured comparison table (MANDATORY):
707
+ | # | Section | Element | Design (specific) | Implementation (specific) | Verdict |
708
+ Every element gets specific values in both columns (hex colors, chart
709
+ type names, px sizes, font weights — never vague descriptions).
710
+ Only valid verdicts: ✅ MATCH or ❌ DEVIATION.
711
+ NEVER write "appears to match" or "looks correct."
712
+ d. Any ❌ DEVIATION is a CRITICAL bug with full reproduction:
713
+ 'Design: horizontal stacked bar with % labels inside bars.
714
+ Build: vertical grouped bar with labels above bars.' — this is a bug.
715
+ 'Design: 32px Inter SemiBold. Build: 24px Inter Regular.' — this is a bug.
716
+ e. If the comparison table has fewer than 30 rows for a full page, the
717
+ audit is incomplete — go back and find the missing elements.
689
718
 
690
719
  ## Exploratory Testing (if Playwright MCP available)
691
720
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tekyzinc/gsd-t",
3
- "version": "2.56.13",
3
+ "version": "2.56.15",
4
4
  "description": "GSD-T: Contract-Driven Development for Claude Code — 51 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",
@@ -322,7 +322,7 @@ After QA passes, every code-producing command spawns a **Red Team agent** — an
322
322
  **Key Red Team rules:**
323
323
  - **Inverted incentive**: More bugs found = more value. Zero bugs requires exhaustive proof of thoroughness.
324
324
  - **False positive penalty**: Reporting non-bugs destroys credibility. Every bug must be reproduced with proof.
325
- - **Exhaustive categories**: Contract violations, boundary inputs, state transitions, error paths, missing flows, regression, E2E functional gaps, design fidelity (when design contract exists: render in browser, screenshot, compare pixel-by-pixel against Figma) — all must be attempted.
325
+ - **Exhaustive categories**: Contract violations, boundary inputs, state transitions, error paths, missing flows, regression, E2E functional gaps, design fidelity (when design contract exists: render in browser, screenshot, build element inventory, produce structured comparison table with per-element MATCH/DEVIATION verdicts — never "looks close") — all must be attempted.
326
326
  - **VERDICT**: `FAIL` (bugs found — blocks completion) or `GRUDGING PASS` (exhaustive search, nothing found).
327
327
  - **Report**: Written to `.gsd-t/red-team-report.md`; bugs also appended to `.gsd-t/qa-issues.md`.
328
328
 
@@ -435,6 +435,8 @@ MANDATORY:
435
435
 
436
436
  ## 15. Visual Verification Loop
437
437
 
438
+ **FAIL-BY-DEFAULT RULE**: Every visual element starts as UNVERIFIED. You must prove each one matches — not assume it does. "Looks close" is not a verdict. "Appears to match" is not a verdict. The only valid verdicts are MATCH (with proof) or DEVIATION (with specifics). If you catch yourself writing "looks correct" or "appears right" without element-level proof, you are doing it wrong.
439
+
438
440
  ```
439
441
  MANDATORY:
440
442
  ├── After implementing any design component, you MUST verify it visually.
@@ -445,38 +447,98 @@ MANDATORY:
445
447
  │ If no MCP → use design image/screenshot from the design contract
446
448
  │ You MUST have a reference image before proceeding
447
449
 
448
- ├── Step 2: RENDER IN A REAL BROWSER
450
+ ├── Step 2: BUILD THE ELEMENT INVENTORY
451
+ │ Before ANY comparison, enumerate every distinct visual element in the
452
+ │ design. Walk the design top-to-bottom, left-to-right. For each section:
453
+ │ - Section title text and icon
454
+ │ - Every chart/visualization (type, orientation, labels, legend, series count)
455
+ │ - Every data table (columns, row structure, sort indicators)
456
+ │ - Every KPI/stat card (value, label, icon, trend indicator)
457
+ │ - Every button, toggle, tab, dropdown
458
+ │ - Every text element (headings, body, captions, labels)
459
+ │ - Every spacing boundary (section gaps, card padding, element margins)
460
+ │ - Every color usage (backgrounds, borders, text, chart fills)
461
+ │ Write each element as a row in the comparison table (Step 4).
462
+ │ If the inventory has fewer than 20 elements for a full page, you missed items.
463
+
464
+ ├── Step 3: OPEN SIDE-BY-SIDE BROWSER SESSIONS
449
465
  │ Start the dev server (npm run dev, etc.)
450
- │ Open the page using Claude Preview, Chrome MCP, or Playwright
451
- You MUST see real rendered output — not just read the code
466
+ │ Open TWO browser views simultaneously for direct visual comparison:
467
+
468
+ │ VIEW 1 — BUILT FRONTEND:
469
+ │ Open the implemented page using Claude Preview, Chrome MCP, or Playwright
470
+ │ Navigate to the exact route/component being verified
471
+ │ You MUST see real rendered output — not just read the code
472
+
473
+ │ VIEW 2 — ORIGINAL DESIGN REFERENCE:
474
+ │ If Figma URL available → open the Figma page in a browser tab/window
475
+ │ Use the Figma URL from the design contract Source Reference field
476
+ │ Navigate to the specific frame/component being compared
477
+ │ If design image file → open the image in a browser tab/window
478
+ │ Use: file://{absolute-path-to-image} or render in an HTML page
479
+ │ If Figma MCP screenshot was captured → open that screenshot image
480
+
481
+ │ COMPARISON APPROACH:
482
+ │ With both views open, walk through each component/section:
483
+ │ - Position views side-by-side (or switch between tabs)
484
+ │ - Compare each element visually at the same zoom level
485
+ │ - Screenshot BOTH views at matching viewport sizes
486
+ │ Capture implementation screenshots at each target breakpoint:
487
+ │ Mobile (375px), Tablet (768px), Desktop (1280px) minimum
488
+ │ Each breakpoint is a separate screenshot pair (design + implementation)
489
+
490
+ ├── Step 4: STRUCTURED ELEMENT-BY-ELEMENT COMPARISON (MANDATORY FORMAT)
491
+ │ You MUST produce a comparison table with this exact structure.
492
+ │ Every row from the inventory gets its own row. No summarizing, no grouping,
493
+ │ no "appears to match" prose. Each element gets an individual verdict.
494
+
495
+ │ | # | Section | Element | Design (specific) | Implementation (specific) | Verdict |
496
+ │ |---|---------|---------|-------------------|--------------------------|---------|
497
+ │ | 1 | Summary | Chart type | Horizontal stacked bar | Vertical grouped bar | ❌ DEVIATION |
498
+ │ | 2 | Summary | Chart colors | #4285F4, #34A853, #FBBC04 | #4285F4, #34A853, #FBBC04 | ✅ MATCH |
499
+ │ | 3 | Summary | Y-axis labels | Tool names, left-aligned | Tool names, left-aligned | ✅ MATCH |
500
+ │ | 4 | Summary | Bar label placement | Inside bar, white text | Above bar, black text | ❌ DEVIATION |
501
+ │ | 5 | KPIs | Font size | 32px semibold | 24px regular | ❌ DEVIATION |
502
+ │ | ... | ... | ... | ... | ... | ... |
452
503
 
453
- ├── Step 3: SCREENSHOT AT EVERY BREAKPOINT
454
- Mobile (375px), Tablet (768px), Desktop (1280px) minimum
455
- Each breakpoint is a separate screenshot
504
+ │ Rules for the table:
505
+ - "Design" column must have SPECIFIC values (chart type name, hex color,
506
+ pixel size, font weight name) — not vague descriptions
507
+ │ - "Implementation" column must have SPECIFIC observed values — not assumptions
508
+ │ from reading code. You must LOOK at the rendered screenshot.
509
+ │ - NEVER write "Appears to match" or "Looks correct" — measure and verify
510
+ │ - NEVER write "Need to verify" — verify it NOW or mark UNVERIFIED
511
+ │ - Data visualizations get MULTIPLE rows: chart type, axis orientation,
512
+ │ axis labels, legend position, bar/line/segment colors, data labels,
513
+ │ grid lines, tooltip style — each is a separate element
514
+ │ - If the table has fewer than 30 rows for a full-page comparison,
515
+ │ you skipped elements. Go back to the inventory.
456
516
 
457
- ├── Step 4: PIXEL-BY-PIXEL COMPARISON
458
- Place Figma screenshot and browser screenshot side-by-side
459
- Check EVERY element systematically:
460
- Chart types bar vs stacked bar vs donut (exact type match)
461
- Colors exact hex values, not "close enough"
462
- Typography font family, weight, size, line-height, letter-spacing
463
- Spacing padding, margins, gaps (exact pixel match)
464
- Layout grid structure, alignment, positioning
465
- Component states toggle active/inactive, expanded/collapsed
466
- Data visualization axis labels, legends, chart orientation
467
- Icons and imagery correct icon set, correct sizes
517
+ │ DATA VISUALIZATION CHECKLIST (expand into table rows):
518
+ Chart type: bar/stacked-bar/grouped-bar/horizontal-bar/line/area/donut/pie/scatter
519
+ Chart orientation: horizontal vs vertical
520
+ Axis labels: present, position, font, values
521
+ Axis grid lines: present, style, color
522
+ Legend: position (top/bottom/right/inline), format, colors
523
+ Data labels: inside bars/above bars/on segments, font, color
524
+ Chart colors: exact hex per series/segment
525
+ Bar width/spacing: relative proportions
526
+ Center text (donut/pie): present, value, font
527
+ Tooltip style: if visible in design
468
528
 
469
529
  ├── Step 5: FIX EVERY DEVIATION
470
- Log each deviation with specifics before fixing
471
- Fix one by one, tracing each fix to the design contract
530
+ Fix each row from the table, one by one
531
+ Trace each fix to the design contract value
472
532
  │ Re-render after each batch of fixes
533
+ │ Update the table: change ❌ to ✅ only after visual re-verification
473
534
  │ Maximum 3 fix-and-recheck iterations
474
535
 
475
536
  ├── Step 6: FINAL VERIFICATION
476
537
  │ After fixes, take fresh screenshots at all breakpoints
477
- Confirm every deviation is resolved
478
- If deviations remain → CRITICAL finding in .gsd-t/qa-issues.md
479
- │ Task is NOT complete until visual match is confirmed
538
+ Produce a FINAL comparison table — every row must be ✅ MATCH
539
+ Any remaining → CRITICAL finding in .gsd-t/qa-issues.md
540
+ │ Task is NOT complete until every row shows ✅ MATCH
541
+ │ Count: "Verified: {N}/{total} elements match at {breakpoints} breakpoints"
480
542
 
481
543
  ├── NO BROWSER TOOLS = BLOCKER
482
544
  │ If Claude Preview, Chrome MCP, and Playwright are ALL unavailable:
@@ -487,9 +549,9 @@ MANDATORY:
487
549
  └── Log all verification results in the design contract Verification Status table
488
550
  ```
489
551
 
490
- **BAD** — Writing CSS, committing, moving on without ever opening a browser to see the result. "Tests pass" is not visual verification.
552
+ **BAD** — A vague comparison table with "Appears to match" and "Looks correct" entries. Leading with "What's Working Well" before identifying deviations. Saying "implementation looks very close to the designs" without element-level proof.
491
553
 
492
- **GOOD** — Render at 375px Screenshot Compare to Figma "Donut chart missing center text, stacked bars rendered as vertical bars" Fix chart type Fix center text Re-render Confirm match Repeat at 768px and 1280px All match Log "verified at 3 breakpoints" in design contract.
554
+ **GOOD** — 45-row structured comparison table where every element has specific design values vs. specific implementation values. 12 deviations identified: wrong chart type (horizontal stacked barvertical grouped bar), wrong font size (32px24px), missing data labels inside bars, etc. Each fixed individually with re-render verification. Final table: 45/45 ✅ MATCH.
493
555
 
494
556
  ---
495
557