@tekyzinc/gsd-t 2.63.10 → 2.64.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.64.10] - 2026-04-05
6
+
7
+ ### Added (page-contract template)
8
+ - **Page Fixture (OPTIONAL)** section — formalizes the composition chain (element → widget → page) by referencing each widget's fixture via `$ref:{widget-name}#/fixture`. Closes gap P2 from page-tier convergence run 1.
9
+ - **Boundary Rules (MANDATORY)** section — explicit rules on what a page may vs may not do (pass data through widget props = OK; declare CSS for widget internal classes = VIOLATION). Adds a grep-based enforcement check. Closes gap P3.
10
+ - **Grid position format** clarification — use `grid[row=N, col=M]` OR named CSS grid areas, consistently within one page. Closes gap P4.
11
+
12
+ ### Changed
13
+ - **Widgets Used** table: renamed "Notes" column → "Layout Notes" with positioning-only guidance (spans/stacking/sticky — NOT widget configuration). Closes gap P1.
14
+
5
15
  ## [2.63.10] - 2026-04-05
6
16
 
7
17
  ### Added
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tekyzinc/gsd-t",
3
- "version": "2.63.10",
3
+ "version": "2.64.10",
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",
@@ -18,14 +18,31 @@ Top-level assembly of widgets + global layout + routing + data loading. Pages PO
18
18
 
19
19
  ## Widgets Used
20
20
 
21
- | Position in Grid | Widget Contract | Notes |
21
+ | Position in Grid | Widget Contract | Layout Notes |
22
22
  |----------------------------------|---------------------------------|------------------------------|
23
- | header | page-header-widget | {sticky} |
24
- | sidebar | nav-sidebar-widget | {collapsible at <1024px} |
25
- | grid[row=1, cols=1-4] | stat-strip-widget | {4 KPI tiles} |
26
- | grid[row=2, col=1-2] | revenue-breakdown-widget | {spans 2 columns} |
27
- | grid[row=2, col=3-4] | user-growth-widget | {spans 2 columns} |
28
- | grid[row=3, col=1-4] | recent-activity-table-widget | {full width} |
23
+ | header | page-header-widget | sticky |
24
+ | sidebar | nav-sidebar-widget | collapsible at <1024px |
25
+ | grid[row=1, cols=1-4] | stat-strip-widget | full-width row |
26
+ | grid[row=2, col=1-2] | revenue-breakdown-widget | spans 2 columns |
27
+ | grid[row=2, col=3-4] | user-growth-widget | spans 2 columns |
28
+ | grid[row=3, col=1-4] | recent-activity-table-widget | full width |
29
+
30
+ **Grid position format**: use EITHER `grid[row=N, col=M]` / `grid[row=N, cols=M-K]` OR named CSS grid areas (`grid-area: strip`). Be consistent within one page. The **Layout Notes** column documents positioning metadata only (spans, stacking, sticky/fixed) — NOT widget configuration (widget props live in the widget contract).
31
+
32
+ ## Page Fixture (OPTIONAL)
33
+
34
+ If you want to formalize the composition chain (element → widget → page), declare a page-level fixture that references each widget's fixture by `$ref`:
35
+
36
+ ```json
37
+ {
38
+ "__fixture_source__": "composed-from-widgets",
39
+ "strip": "$ref:stat-strip-widget#/fixture",
40
+ "donut": "$ref:revenue-breakdown-widget#/fixture",
41
+ "bar": "$ref:user-growth-widget#/fixture"
42
+ }
43
+ ```
44
+
45
+ Skip this section for pages that are pure assembly with no storybook / harness target. Include it when the page has a dedicated demo route or when multiple pages share widget fixtures and you want to document which instance each page references.
29
46
 
30
47
  ## Layout
31
48
 
@@ -123,6 +140,20 @@ Top-level assembly of widgets + global layout + routing + data loading. Pages PO
123
140
  - **Router integration**: {vue-router / react-router / next.js app dir}
124
141
  - **Data fetching**: {composable / hook / server component}
125
142
 
143
+ ## Boundary Rules (MANDATORY)
144
+
145
+ A page is allowed to:
146
+ - Pass DATA through a widget's documented `defineProps` / public API (titles, subtitles, fixture data — these are the widget's legitimate inputs)
147
+ - Declare page-level layout CSS (grid template, gaps, padding, max-width, background, landmark regions)
148
+ - Manage route-level state and data fetching
149
+
150
+ A page is **FORBIDDEN** from:
151
+ - Declaring CSS selectors that target a widget's internal classes (`.card-title`, `.donut-segment`, `.legend-dot`) — this is a boundary violation
152
+ - Overriding widget visual spec via `:deep()` selectors or `!important` on widget-owned properties
153
+ - Re-specifying element visual spec (colors, font sizes, radii, paddings owned by elements)
154
+
155
+ **Enforcement check**: `grep` the page file for any CSS selector matching a widget's internal class names — if found, move the styling into the widget contract or create a widget variant.
156
+
126
157
  ## Verification Checklist
127
158
 
128
159
  Page-level verification runs AFTER all widgets pass their own verification. Page verification only checks assembly — widget and element internals are out of scope.