@tekyzinc/gsd-t 4.0.12 → 4.0.14
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 +25 -0
- package/commands/gsd-t-complete-milestone.md +6 -12
- package/commands/gsd-t-feature.md +2 -6
- package/commands/gsd-t-gap-analysis.md +3 -6
- package/commands/gsd-t-help.md +2 -2
- package/commands/gsd-t-init-scan-setup.md +7 -7
- package/commands/gsd-t-scan.md +45 -652
- package/package.json +1 -1
- package/templates/CLAUDE-global.md +1 -0
- package/templates/workflows/gsd-t-scan.workflow.js +711 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,31 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to GSD-T are documented here. Updated with each release.
|
|
4
4
|
|
|
5
|
+
## [4.0.14] - 2026-05-29 (M67 Scan Deep Document Phase — patch)
|
|
6
|
+
|
|
7
|
+
### Added — deterministic deep document cross-population in the scan Workflow
|
|
8
|
+
|
|
9
|
+
M66 made the tech-debt register deep but left living-document cross-population as a non-deterministic "lead-agent follow-on" — effectively dropped, a regression vs the old prose scan's Step 5. M67 adds a `Document` phase to `templates/workflows/gsd-t-scan.workflow.js` (between Synthesis and Render) that fans out **one agent per document**, each drawing on the same slices + verified findings the finders produced, so the docs are as thorough as the register.
|
|
10
|
+
|
|
11
|
+
- `templates/workflows/gsd-t-scan.workflow.js`: new `Document` phase produces `docs/{architecture,workflows,infrastructure,requirements}.md` + `README.md` (merge-not-overwrite, Edit-not-Write on existing files) and the five `.gsd-t/scan/{architecture,security,quality,business-rules,contract-drift}.md` dimension files in the renderer's parsed formats. Component map + a user journey per feature-domain slice. Synthesis no longer writes the dimension files (moved to the doc stage); runs before Render so the HTML report reads the deep `architecture.md`.
|
|
12
|
+
- Red Team (FAIL → GRUDGING-PASS, 1 fix cycle): HIGH-1 doc-clobber data-loss → deterministic `.gsd-t/scan/.doc-backup/` snapshot before the fan-out; HIGH-2 render double-count → grand total written as a `| Grand Total | N files | LOC |` table row that the parser short-circuits on (verified 1809, not 1919); LOW → dropped `-f` from git add + pathspec-excluded and gitignored `.doc-backup`.
|
|
13
|
+
- `commands/gsd-t-scan.md`, `commands/gsd-t-help.md`, `templates/CLAUDE-global.md`: doc-ripple for the new phase. `.gitignore`: `.gsd-t/scan/.doc-backup/`.
|
|
14
|
+
|
|
15
|
+
Suite: 1267 pass / 0 fail / 4 skip — zero regressions.
|
|
16
|
+
|
|
17
|
+
## [4.0.13] - 2026-05-29 (M66 Scan Volume-Scaled Workflow Migration — patch)
|
|
18
|
+
|
|
19
|
+
### Fixed — scan-depth regression: scan now fans out by codebase volume, not a fixed 5-teammate count
|
|
20
|
+
|
|
21
|
+
Scan was the only major phase never migrated to a native Workflow. It hard-coded exactly 5 teammates (one per dimension) with zero volume scaling — a 5-file repo and a 1,809-file repo both got 5 agents, so a single `quality` agent sampled the top ~5 issues across the whole codebase and stopped. On a large codebase that produced a cursory 16-item register where a deep per-domain scan surfaced 117 findings. It also referenced a retired `autoSpawnHeadless()` + `headless-default-contract v2.0.0`.
|
|
22
|
+
|
|
23
|
+
- `templates/workflows/gsd-t-scan.workflow.js` (NEW): `preflight → volume-probe (derives a per-area slice list, scaling 1-3 slices tiny → 15-40 large) → pipeline(per-slice deep finder "enumerate don't sample" → single verify) → deterministic JS archive + TD-numbering → synthesis (dedup/merge/re-rank) → render`. Slice depth is budget-aware.
|
|
24
|
+
- `commands/gsd-t-scan.md`: rewritten as a thin `Workflow({scriptPath, args})` invoker; dead `autoSpawnHeadless`/`headless-default-contract v2.0.0` references stripped.
|
|
25
|
+
- Red Team (FAIL → GRUDGING-PASS, 2 fix cycles): prose-driven archive/TD-numbering → deterministic JS (`fs.renameSync` collision-safe + `_parseMaxTd` + prior register content threaded into synthesis); render hollow-report guard + prompt↔parser format alignment; pipeline stage-2 defensive signature; probe model haiku→sonnet.
|
|
26
|
+
- Doc-ripple: removed retired fixed-5-teammate scan-dimension references from `gsd-t-{complete-milestone,gap-analysis,feature,init-scan-setup}.md`; `templates/CLAUDE-global.md` + `commands/gsd-t-help.md`.
|
|
27
|
+
|
|
28
|
+
Suite: 1267 pass / 0 fail / 4 skip — zero regressions.
|
|
29
|
+
|
|
5
30
|
## [4.0.12] - 2026-05-29
|
|
6
31
|
|
|
7
32
|
### Removed — M61-carryover test cleanup (green the suite)
|
|
@@ -463,19 +463,13 @@ node scripts/gsd-t-watch-state.js advance --agent-id "$GSD_T_AGENT_ID" --parent-
|
|
|
463
463
|
|
|
464
464
|
Before tagging, ensure scan docs reflect the final state of the codebase after all milestone work. This is the full-refresh counterpart to the micro-updates done during execute/quick/debug.
|
|
465
465
|
|
|
466
|
-
If `.gsd-t/
|
|
467
|
-
1. Check `.gsd-t/scan/.cache.json`
|
|
468
|
-
2. If **
|
|
469
|
-
- Log: "Running milestone scan checkpoint — refreshing
|
|
470
|
-
- Re-run
|
|
471
|
-
- Stale `architecture.md` → architecture teammate (model: haiku)
|
|
472
|
-
- Stale `quality.md` → quality teammate (model: sonnet)
|
|
473
|
-
- Stale `security.md` → security teammate (model: sonnet)
|
|
474
|
-
- Stale `business-rules.md` → business-rules teammate (model: haiku)
|
|
475
|
-
- Stale `contract-drift.md` → contracts teammate (model: haiku)
|
|
476
|
-
- Update `.gsd-t/scan/.cache.json` after refresh
|
|
466
|
+
If `.gsd-t/techdebt.md` exists (a prior scan has been run):
|
|
467
|
+
1. Check staleness — count commits since the register was last written (use `.gsd-t/scan/.cache.json` if present, else the register's git mtime).
|
|
468
|
+
2. If **stale** (>0 commits since scan):
|
|
469
|
+
- Log: "Running milestone scan checkpoint — refreshing the tech-debt register..."
|
|
470
|
+
- Re-run the scan by invoking the volume-scaled scan Workflow (`templates/workflows/gsd-t-scan.workflow.js`, same as `/gsd-t-scan`) — the probe re-slices the codebase and the finders refresh the register. This replaces the retired fixed-5-teammate dimension refresh.
|
|
477
471
|
- Update `.gsd-t/techdebt.md` — mark any items resolved during this milestone as `[RESOLVED]`
|
|
478
|
-
3. If
|
|
472
|
+
3. If fresh → skip with log: "Scan register is fresh — no checkpoint refresh needed"
|
|
479
473
|
|
|
480
474
|
If `.gsd-t/scan/` doesn't exist → skip (no scan data to maintain).
|
|
481
475
|
|
|
@@ -14,12 +14,8 @@ If `.gsd-t/scan/.cache.json` exists:
|
|
|
14
14
|
1. Read the cache and check `scannedAt` for each dimension
|
|
15
15
|
2. Count commits since the scan: `git rev-list --count --after="{scannedAt}" HEAD`
|
|
16
16
|
3. If **>10 commits since scan** OR **scan is older than 14 days**:
|
|
17
|
-
- Log: "Auto-refreshing
|
|
18
|
-
- Re-run
|
|
19
|
-
- If `quality.md` stale → spawn quality teammate (model: sonnet)
|
|
20
|
-
- If `architecture.md` stale → spawn architecture teammate (model: haiku)
|
|
21
|
-
- If `security.md` stale → spawn security teammate (model: sonnet)
|
|
22
|
-
- Update `.gsd-t/scan/.cache.json` after refresh
|
|
17
|
+
- Log: "Auto-refreshing the tech-debt register (stale by {N} commits / {N} days)..."
|
|
18
|
+
- Re-run the scan by invoking the volume-scaled scan Workflow (`templates/workflows/gsd-t-scan.workflow.js`, same as `/gsd-t-scan`) — the probe re-slices the codebase and the finders refresh the register. This replaces the retired fixed-dimension teammate refresh.
|
|
23
19
|
4. If fresh → proceed silently
|
|
24
20
|
|
|
25
21
|
If `.gsd-t/scan/` doesn't exist at all → skip (no scan data to refresh).
|
|
@@ -14,14 +14,11 @@ If `.gsd-t/scan/.cache.json` exists:
|
|
|
14
14
|
1. Read the cache and check `scannedAt` for each dimension
|
|
15
15
|
2. Count commits since the scan: `git rev-list --count --after="{scannedAt}" HEAD`
|
|
16
16
|
3. If **>10 commits since scan** OR **scan is older than 14 days**:
|
|
17
|
-
- Log: "Auto-refreshing
|
|
18
|
-
- Re-run
|
|
19
|
-
- If `architecture.md` stale → spawn architecture teammate (model: haiku)
|
|
20
|
-
- If `quality.md` stale → spawn quality teammate (model: sonnet)
|
|
21
|
-
- Update `.gsd-t/scan/.cache.json` after refresh
|
|
17
|
+
- Log: "Auto-refreshing the tech-debt register (stale by {N} commits / {N} days)..."
|
|
18
|
+
- Re-run the scan by invoking the volume-scaled scan Workflow (`templates/workflows/gsd-t-scan.workflow.js`, same as `/gsd-t-scan`) — the probe re-slices the codebase and the finders refresh the register. This replaces the retired fixed-dimension teammate refresh.
|
|
22
19
|
4. If fresh → proceed silently
|
|
23
20
|
|
|
24
|
-
If `.gsd-t/
|
|
21
|
+
If no prior `.gsd-t/techdebt.md` exists at all → skip (no scan data to refresh).
|
|
25
22
|
|
|
26
23
|
## Step 1: Load Context
|
|
27
24
|
|
package/commands/gsd-t-help.md
CHANGED
|
@@ -196,9 +196,9 @@ Use these when user asks for help on a specific command:
|
|
|
196
196
|
- **Use when**: Adding significant new functionality to existing project
|
|
197
197
|
|
|
198
198
|
### scan
|
|
199
|
-
- **Summary**: Deep codebase analysis producing
|
|
199
|
+
- **Summary**: Deep codebase analysis producing techdebt.md — volume-scaled native Workflow (`templates/workflows/gsd-t-scan.workflow.js`): a probe carves the codebase into per-area slices, one deep finder per slice (enumerate-don't-sample), a single verify pass drops false positives, synthesis dedups/re-ranks into the register. Finder count scales with codebase volume (1-3 slices tiny → 15-40 large), not a fixed 5.
|
|
200
200
|
- **Auto-invoked**: No
|
|
201
|
-
- **Creates**: `.gsd-t/
|
|
201
|
+
- **Creates**: `.gsd-t/techdebt.md` (prior archived to `.gsd-t/techdebt_YYYY-MM-DD.md`), the `.gsd-t/scan/*.md` dimension files, the full living-doc set (`docs/architecture.md`, `docs/workflows.md`, `docs/infrastructure.md`, `docs/requirements.md`, `README.md` — merged not overwritten, via the M67 document phase), and the HTML scan report
|
|
202
202
|
- **Use when**: Understanding an existing codebase or auditing technical debt
|
|
203
203
|
|
|
204
204
|
### gap-analysis
|
|
@@ -101,16 +101,16 @@ If the project has source code, graph indexing (`.gsd-t/graph/`) will run as par
|
|
|
101
101
|
|
|
102
102
|
## Step 4: Deep Codebase Scan (gsd-t-scan)
|
|
103
103
|
|
|
104
|
-
Execute the full scan
|
|
104
|
+
Execute the full scan by invoking the volume-scaled scan Workflow (same as `/gsd-t-scan` — `templates/workflows/gsd-t-scan.workflow.js`):
|
|
105
105
|
|
|
106
|
-
1.
|
|
107
|
-
2.
|
|
108
|
-
3. Cross-populate findings into living documents (docs/architecture.md, docs/workflows.md, docs/infrastructure.md, docs/requirements.md)
|
|
109
|
-
4. Update README.md with discovered tech stack and setup info
|
|
106
|
+
1. The volume-probe slices the codebase by area (scaling with volume, not a fixed dimension set); per-slice deep finders enumerate; a single verify pass drops false positives.
|
|
107
|
+
2. Synthesis builds the `.gsd-t/techdebt.md` register and the `.gsd-t/scan/*.md` analysis files.
|
|
108
|
+
3. Cross-populate findings into living documents (docs/architecture.md, docs/workflows.md, docs/infrastructure.md, docs/requirements.md) from the register + analysis files.
|
|
109
|
+
4. Update README.md with discovered tech stack and setup info.
|
|
110
110
|
|
|
111
|
-
|
|
111
|
+
The Workflow's fan-out scales with codebase volume automatically — no team-mode toggle.
|
|
112
112
|
|
|
113
|
-
**If `.gsd-t/techdebt.md` already exists**:
|
|
113
|
+
**If `.gsd-t/techdebt.md` already exists**: the Workflow archives it to `.gsd-t/techdebt_YYYY-MM-DD.md` and continues TD numbering.
|
|
114
114
|
|
|
115
115
|
## Step 5: Generate Project CLAUDE.md (gsd-t-setup)
|
|
116
116
|
|