@tekyzinc/gsd-t 4.19.10 → 4.19.11

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
+ ## [4.19.11] - 2026-07-07
6
+
7
+ ### Fixed — `/gsd-t-stories` diagrams: semantic coloring + fit-to-page
8
+
9
+ The command's flow diagrams were rendering as flat single-color and overflowing the page. Diagram generation now mandates **role-based semantic coloring** (green=action/go, orange=decision, red=destructive, blue-dashed=new/optional, purple=screen, white=terminal, via a `classDef` block) and **fit-to-page** layout (prefer `flowchart LR` for long linear flows, `subgraph` lanes or a part-1/2 split for large ones, explicit render sizing, and a verify-not-clipped-then-re-render step). Same rules mirrored into the bundled format reference. Also reconciled the backlog (removed 14 shipped/superseded items, renumbered survivors 1..46, fixed 4 number collisions).
10
+
11
+ - `commands/gsd-t-stories.md`: Step 4 → 4a (semantic coloring) / 4b (fit-to-page) / 4c (render).
12
+ - `templates/playbooks/tekyz-user-stories-format.md`: coloring + fit rules.
13
+ - `.gsd-t/backlog.md`: 55 headings → 46 contiguous items.
14
+
5
15
  ## [4.19.10] - 2026-07-07
6
16
 
7
17
  ### Added — `/gsd-t-stories`: dev-team handoff user stories in the Tekyz format
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # GSD-T: Contract-Driven Development for Claude Code
2
2
 
3
- **v4.19.10** - A methodology for reliable, parallelizable development using Claude Code with optional Agent Teams support.
3
+ **v4.19.11** - A methodology for reliable, parallelizable development using Claude Code with optional Agent Teams support.
4
4
 
5
5
  **Eliminates context rot** — task-level fresh dispatch (one subagent per task, ~10-20% context each) means compaction never triggers.
6
6
  **Compaction-proof debug loops** — `gsd-t headless --debug-loop` runs test-fix-retest cycles as separate `claude -p` sessions. A JSONL debug ledger persists all hypothesis/fix/learning history across fresh sessions. Anti-repetition preamble injection prevents retrying failed hypotheses. Escalation tiers (sonnet → opus → human) and a hard iteration ceiling enforced externally.
@@ -45,8 +45,37 @@ A table mapping every story → phase → epic: `| Story ID | Title | Phase | Ep
45
45
 
46
46
  Per the standing directive, diagrams are authored as Mermaid but **embedded as rendered images** (matching the sample's `<img>` flow charts) — NOT left as raw Mermaid text.
47
47
 
48
- 1. Write each diagram's Mermaid source to `.gsd-t/user-stories/diagrams/<name>.mmd` (app-flow = `app-flow`, per-story = `<PREFIX>-NNN-flow`).
49
- 2. Render each to PNG beside the deliverable: `mmdc -i <src>.mmd -o share/media/<name>.png` (Mermaid CLI `@mermaid-js/mermaid-cli`; fall back to `npx @mermaid-js/mermaid-cli -i … -o …`).
48
+ ### 4a. Semantic coloring (MANDATORY never flat single-color)
49
+
50
+ Every diagram MUST use **intelligent, role-based coloring** — NOT mermaid's default flat purple. Assign each node a `class` by its ROLE and define matching `classDef`s. Standard palette (green=go/success, orange=decision, red=destructive, blue=new/optional, purple=screen/state, grey=terminal):
51
+
52
+ ```mermaid
53
+ %% put at the TOP of every flowchart:
54
+ classDef start fill:#fff,stroke:#333,color:#000; %% start/end terminals (ellipse)
55
+ classDef decision fill:#fdebc8,stroke:#e8a33d,color:#7a4f00; %% decisions (diamonds)
56
+ classDef screen fill:#ece9fb,stroke:#8b7fd6,color:#2d2160; %% screens / states
57
+ classDef action fill:#d4f4dd,stroke:#4caf72,color:#0f5132; %% success / go / user actions
58
+ classDef destructive fill:#fde2e2,stroke:#e06666,color:#7a1f1f; %% end / delete / irreversible
59
+ classDef newfeat fill:#e2f0fb,stroke:#5b9bd5,color:#1f4e79,stroke-dasharray:4 3; %% NEW / optional (dashed)
60
+ ```
61
+
62
+ - **Decisions** are diamonds `{...}` classed `decision`; **terminals** (start/end) are stadium/round `([...])` classed `start`; **screens/states** classed `screen`; **success/go paths** classed `action`; **destructive/irreversible** (End, Delete) classed `destructive`; **new/optional** classed `newfeat` (dashed).
63
+ - Label decision-branch edges (`-->|Yes|`, `-->|Returning User|`).
64
+ - Reference the sample styling in `~/.claude/playbooks/tekyz-user-stories-format.md`.
65
+
66
+ ### 4b. Fit-to-page (MANDATORY — the whole diagram must fit)
67
+
68
+ A long top-down flow overflows the page (the failure the user flagged). Keep EVERY diagram fully on one page:
69
+
70
+ - **Prefer `flowchart LR`** (left-to-right) for long linear flows — wide pages fit more than tall ones. Use `TD` only for short (≤6-node) flows.
71
+ - For a flow with many nodes, **break into logical lanes with `subgraph`s**, or split into a "part 1 / part 2" pair of diagrams rather than one that runs off-page.
72
+ - Render with an explicit width/scale and padding so nothing is clipped: `mmdc -i <src>.mmd -o share/media/<name>.png --width 1600 --backgroundColor white --scale 2 --padding 20` (a mermaid config `{ "flowchart": { "useMaxWidth": true } }` via `-c` also helps).
73
+ - **After rendering, VERIFY the image isn't clipped** — check the PNG's dimensions are sane and, if a node count is high, that the layout direction kept it on-page. If a diagram still overflows, switch direction (`TD`→`LR`) or split it, and re-render. Do NOT ship a clipped diagram (`feedback_no_silent_degradation`).
74
+
75
+ ### 4c. Render pipeline
76
+
77
+ 1. Write each diagram's Mermaid source (with the `classDef` block + role classes + fit-appropriate direction) to `.gsd-t/user-stories/diagrams/<name>.mmd` (app-flow = `app-flow`, per-story = `<PREFIX>-NNN-flow`).
78
+ 2. Render each to PNG: `mmdc -i <src>.mmd -o share/media/<name>.png --width 1600 --backgroundColor white --scale 2 --padding 20` (Mermaid CLI `@mermaid-js/mermaid-cli`; fall back to `npx @mermaid-js/mermaid-cli …`).
50
79
  3. **If `mmdc` is unavailable → HALT** and tell the user to install it (`npm i -g @mermaid-js/mermaid-cli`). Do NOT silently ship raw Mermaid where an embedded image is expected (`feedback_no_silent_degradation`).
51
80
  4. Embed each rendered PNG in the markdown at its `Flow Diagram:` / §1 position: `![Flow Diagram](media/<name>.png)`.
52
81
  5. Keep the `.mmd` source (editable, version-controllable) alongside the PNG.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tekyzinc/gsd-t",
3
- "version": "4.19.10",
3
+ "version": "4.19.11",
4
4
  "description": "GSD-T: Contract-Driven Development for Claude Code — 54 slash commands with headless-by-default workflow spawning, unattended supervisor relay with event stream, graph-powered code analysis, real-time agent dashboard, 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",
@@ -107,11 +107,40 @@ A table mapping every story to its phase + epic, so a team sees MVP vs later-pha
107
107
  Per the user directive, diagrams are **authored as Mermaid but EMBEDDED as rendered images**
108
108
  (like the sample's `<img>` flow charts) — not left as raw Mermaid text.
109
109
 
110
- 1. Write each diagram's Mermaid source to `.gsd-t/user-stories/diagrams/<name>.mmd`.
111
- 2. Render to PNG with the Mermaid CLI: `mmdc -i <name>.mmd -o media/<name>.png` (installed:
112
- `@mermaid-js/mermaid-cli`; fall back to `npx @mermaid-js/mermaid-cli`). If `mmdc` is
113
- unavailable, HALT and tell the user to install it do NOT silently ship raw Mermaid where
114
- an embedded image is expected (no-silent-degradation).
110
+ ### Semantic coloring (MANDATORY never flat single-color)
111
+
112
+ Every diagram uses **role-based coloring**, never mermaid's default flat purple. Put a
113
+ `classDef` block at the top of each flowchart and class each node by ROLE:
114
+
115
+ ```
116
+ classDef start fill:#fff,stroke:#333,color:#000; %% start/end terminal
117
+ classDef decision fill:#fdebc8,stroke:#e8a33d,color:#7a4f00; %% decision diamond
118
+ classDef screen fill:#ece9fb,stroke:#8b7fd6,color:#2d2160; %% screen / state
119
+ classDef action fill:#d4f4dd,stroke:#4caf72,color:#0f5132; %% success / go / action
120
+ classDef destructive fill:#fde2e2,stroke:#e06666,color:#7a1f1f; %% end / delete / irreversible
121
+ classDef newfeat fill:#e2f0fb,stroke:#5b9bd5,color:#1f4e79,stroke-dasharray:4 3; %% NEW / optional (dashed)
122
+ ```
123
+
124
+ Green = go/success/action · Orange = decision · Red = destructive/irreversible · Blue(dashed)
125
+ = new/optional · Purple = screen/state · White = terminal. Decisions are diamonds `{...}`;
126
+ terminals are round `([...])`; label decision-branch edges (`-->|Yes|`).
127
+
128
+ ### Fit-to-page (MANDATORY — the whole diagram must fit)
129
+
130
+ A long top-down flow overflows the page. Keep EVERY diagram fully on one page:
131
+ - Prefer `flowchart LR` (left-to-right) for long linear flows; use `TD` only for ≤6-node flows.
132
+ - For many nodes, break into `subgraph` lanes or split into part-1/part-2 diagrams.
133
+ - Render with explicit sizing so nothing clips, then VERIFY the PNG isn't clipped; if it is,
134
+ switch direction or split and re-render. Never ship a clipped diagram.
135
+
136
+ ### Render
137
+
138
+ 1. Write each diagram's Mermaid source (classDef block + role classes + fit-appropriate
139
+ direction) to `.gsd-t/user-stories/diagrams/<name>.mmd`.
140
+ 2. Render to PNG: `mmdc -i <name>.mmd -o media/<name>.png --width 1600 --backgroundColor white
141
+ --scale 2 --padding 20` (`@mermaid-js/mermaid-cli`; fall back to `npx @mermaid-js/mermaid-cli`).
142
+ If `mmdc` is unavailable, HALT and tell the user to install it — do NOT silently ship raw
143
+ Mermaid where an embedded image is expected (no-silent-degradation).
115
144
  3. Embed the PNG in the markdown: `![Flow Diagram](media/<name>.png)`.
116
145
  4. On `.docx` conversion, pandoc embeds these PNGs as real Word images — matching the sample.
117
146