@tekyzinc/gsd-t 3.12.12 → 3.12.13
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 +73 -26
- package/README.md +76 -76
- package/bin/design-orchestrator.js +1 -1
- package/bin/gsd-t-unattended.cjs +1 -1
- package/bin/gsd-t-unattended.js +1 -1
- package/bin/gsd-t.js +82 -10
- package/commands/gsd-t-backlog-promote.md +6 -6
- package/commands/gsd-t-complete-milestone.md +7 -7
- package/commands/gsd-t-design-audit.md +3 -3
- package/commands/gsd-t-design-build.md +1 -1
- package/commands/gsd-t-design-decompose.md +4 -4
- package/commands/gsd-t-execute.md +1 -1
- package/commands/gsd-t-feature.md +3 -3
- package/commands/gsd-t-gap-analysis.md +3 -3
- package/commands/gsd-t-health.md +3 -3
- package/commands/gsd-t-help.md +10 -10
- package/commands/gsd-t-impact.md +3 -3
- package/commands/gsd-t-init-scan-setup.md +5 -5
- package/commands/gsd-t-init.md +4 -4
- package/commands/gsd-t-log.md +1 -1
- package/commands/gsd-t-milestone.md +2 -2
- package/commands/gsd-t-pause.md +2 -2
- package/commands/gsd-t-prd.md +2 -2
- package/commands/gsd-t-project.md +1 -1
- package/commands/gsd-t-resume.md +4 -4
- package/commands/gsd-t-scan.md +3 -3
- package/commands/gsd-t-setup.md +2 -2
- package/commands/gsd-t-test-sync.md +1 -1
- package/commands/gsd-t-unattended-watch.md +5 -5
- package/commands/gsd-t-unattended.md +9 -9
- package/commands/gsd-t-wave.md +4 -4
- package/commands/gsd.md +17 -17
- package/docs/GSD-T-README.md +68 -68
- package/docs/architecture.md +8 -8
- package/docs/context-budget-recovery-plan.md +2 -2
- package/docs/infrastructure.md +7 -7
- package/docs/methodology.md +1 -1
- package/docs/neo4j-setup.md +2 -2
- package/docs/prd-gsd2-hybrid.md +1 -1
- package/docs/prd-harness-evolution.md +1 -1
- package/docs/requirements.md +2 -2
- package/docs/unattended-config.md +1 -1
- package/docs/unattended-windows-caveats.md +1 -1
- package/docs/workflows.md +1 -1
- package/package.json +1 -1
- package/scripts/context-meter/threshold.test.js +2 -2
- package/scripts/gsd-t-auto-route.js +1 -1
- package/scripts/gsd-t-context-meter.e2e.test.js +1 -1
- package/scripts/gsd-t-context-meter.test.js +1 -1
- package/scripts/gsd-t-update-check.js +1 -1
- package/templates/CLAUDE-global.md +18 -163
- package/templates/stacks/_markdown.md +32 -0
- package/templates/stacks/design-to-code.md +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,53 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to GSD-T are documented here. Updated with each release.
|
|
4
4
|
|
|
5
|
+
## [3.12.13] - 2026-04-17
|
|
6
|
+
|
|
7
|
+
### Fixed — `/` Prefix Strip Sitewide
|
|
8
|
+
|
|
9
|
+
Claude Code does not namespace local slash commands under `user:`, so every `/gsd-t-*`, `/checkin`, `/branch`, `/Claude-md`, `/global-change` reference produced `Unknown command: /X` errors when the user typed one. This release strips the prefix from every live reference:
|
|
10
|
+
|
|
11
|
+
- **54 command files** in `commands/*.md`
|
|
12
|
+
- **All live docs**: `README.md`, `GSD-T-README.md`, `CHANGELOG.md`, `docs/*.md`, `CLAUDE.md`
|
|
13
|
+
- **All templates**: `templates/CLAUDE-global.md`, `templates/CLAUDE-project.md`, `templates/stacks/*.md`
|
|
14
|
+
- **Scripts and CLI**: `bin/gsd-t.js`, `bin/gsd-t-unattended.js`, `bin/design-orchestrator.js`, `scripts/gsd-t-auto-route.js`, `scripts/gsd-t-update-check.js`
|
|
15
|
+
- **All `.gsd-t/contracts/*.md` and live `.gsd-t/domains/*/scope.md`**
|
|
16
|
+
- **User-global `~/.claude/CLAUDE.md`** (via `sed` in the same pass)
|
|
17
|
+
- Test fixture strings in `test/headless.test.js` preserved — those are regression-test literals asserting `claude -p` rejects the `/` prefix.
|
|
18
|
+
- Historical archives (`.gsd-t/milestones/*`, `.gsd-t/progress-archive/*`, `.gsd-t/continue-here-*`) left untouched as time-capsule records.
|
|
19
|
+
|
|
20
|
+
### Fixed — `update-all` Now Upgrades the Global CLI Binary
|
|
21
|
+
|
|
22
|
+
v3.12.12's `update-all` propagated command files to `~/.claude/commands/` but never ran `npm install -g @tekyzinc/gsd-t@latest`. Result: the CLI binary stayed stale even after `npm publish`, so new features (like v3.12.12's token-log observability) never activated on user machines that had updated "successfully."
|
|
23
|
+
|
|
24
|
+
`bin/gsd-t.js`:
|
|
25
|
+
- `doUpdateAll()` now calls new `upgradeGlobalBinary()` helper FIRST, which runs `npm install -g @tekyzinc/gsd-t@latest` via `execFileSync({stdio: 'inherit'})`.
|
|
26
|
+
- After upgrade succeeds, the newly-installed on-disk version is compared against the running process's `PKG_VERSION`. If they diverge, `reexecUpdateAll()` hands off to the new binary with `GSDT_POST_UPGRADE=1` to prevent recursion.
|
|
27
|
+
- On upgrade failure (e.g., missing global-npm permissions), logs the error and continues with command-file propagation so the user isn't fully blocked.
|
|
28
|
+
- Upgrade is skipped when `GSDT_POST_UPGRADE=1` is set (re-entry from self-invocation).
|
|
29
|
+
|
|
30
|
+
### Changed — Global `CLAUDE.md` Size Reduction (−26%)
|
|
31
|
+
|
|
32
|
+
`~/.claude/CLAUDE.md` was 41,131 chars (above Claude Code's 40k auto-warning threshold). Three optimizations trimmed it to 30,272 chars without losing information:
|
|
33
|
+
|
|
34
|
+
1. **Commands Reference table removed** (~63 lines). The router and `/gsd-t-help` resolve commands dynamically — nothing reads this table at runtime. Replaced with a one-line pointer: *"See `/gsd-t-help` for the complete command list."*
|
|
35
|
+
2. **Markdown Tables / emoji-padding section extracted** to `templates/stacks/_markdown.md` (32 lines, `_` prefix = universal stack rule, auto-injected by Stack Rules Engine for every subagent spawn). CLAUDE.md now has a one-line pointer at that template.
|
|
36
|
+
3. **Autonomous Execution Rules subsections tightened** — QA Agent, Design Verification, Red Team, Headless-by-Default Spawn, Unattended Execution each cut from multi-paragraph re-statements to 2–3 lines: rule + enforcement + path to the authoritative contract/protocol file. The contracts (`qa-agent-contract.md`, `headless-default-contract.md`, etc.) and prompts (`red-team-subagent.md`, `design-verify-subagent.md`) remain the source of truth for method specifics.
|
|
37
|
+
|
|
38
|
+
Same edits propagated to `templates/CLAUDE-global.md` so future installs inherit the lean version.
|
|
39
|
+
|
|
40
|
+
### Changed — Project `CLAUDE.md` Audit
|
|
41
|
+
|
|
42
|
+
Audited `CLAUDE.md` in this repo (the @tekyzinc/gsd-t dev repo itself). Removed a duplicate Destructive Action Guard block (verbatim copy of the global's). Pre-Commit Gate now points at `.gsd-t/contracts/pre-commit-gate.md` (which exists and owns the full checklist) while retaining the 7 repo-specific extensions inline. 7,095 → 6,269 chars (−12%).
|
|
43
|
+
|
|
44
|
+
### Added — New Stack Rule: `templates/stacks/_markdown.md`
|
|
45
|
+
|
|
46
|
+
Universal (always-injected) stack rule covering markdown-table formatting with emoji. Included in every subagent spawn regardless of detected tech stack, per the Stack Rules Engine's `_`-prefix convention.
|
|
47
|
+
|
|
48
|
+
### Note — v3.12.12 Supervisor Status
|
|
49
|
+
|
|
50
|
+
The earlier hypothesis that v3.12.12 broke `bin/gsd-t-unattended.cjs` via a missing `require("./debug-ledger.js")` was incorrect. `bin/debug-ledger.js` exists, ships in the package, and has been present since a March commit. The supervisor was running fine on the globally-installed v3.11.11 binary — it simply never picked up v3.12.12's env-var injection because `update-all` never upgraded the binary (see above fix).
|
|
51
|
+
|
|
5
52
|
## [3.12.12] - 2026-04-17
|
|
6
53
|
|
|
7
54
|
### Fixed — Token-Log Observability for Headless/Unattended Workers
|
|
@@ -265,9 +312,9 @@ M36 ships the third pillar of the context/runway/autonomy arc (M34 context meter
|
|
|
265
312
|
- **`bin/gsd-t-unattended-safety.js`** — safety rails module. Exports: `checkGitBranch` (protected branch list; configurable), `checkWorktreeCleanliness` (dirty-tree guard with whitelist), `checkIterationCap`, `checkWallClockCap`, `validateState`, `detectBlockerSentinel` (scan run.log tail for unrecoverable/dispatch-failed patterns), `detectGutter` (repeated-error / file-thrash / no-progress stall detection). Each check returns `{ ok, reason?, code? }`.
|
|
266
313
|
- **`bin/gsd-t-unattended-platform.js`** — platform abstraction. Exports: `spawnSupervisor` (detached spawn with `windowsHide`), `preventSleep` / `releaseSleep` (`caffeinate -i` on darwin; no-op on linux/win32), `sendNotification` (osascript on darwin; `notify-send` on linux; toast via PowerShell on win32 — all graceful no-op on failure), `resolveClaudeBin` (`claude.cmd` on win32; `claude` elsewhere + PATH search), `getPlatform`.
|
|
267
314
|
- **`bin/handoff-lock.js`** — parent/child race guard for headless-auto-spawn. Writes `.gsd-t/.handoff/{session-id}.lock` before detaching; child removes on first iteration. Prevents the parent from reporting "failed" while the child is still starting. Exports: `acquireLock`, `releaseLock`, `waitForRelease`, `isLocked`.
|
|
268
|
-
- **`commands/gsd-t-unattended.md`** — `/
|
|
269
|
-
- **`commands/gsd-t-unattended-watch.md`** — `/
|
|
270
|
-
- **`commands/gsd-t-unattended-stop.md`** — `/
|
|
315
|
+
- **`commands/gsd-t-unattended.md`** — `/gsd-t-unattended` launch command. Pre-flights (singleton check, safety rails, active milestone), spawns the supervisor via `bin/gsd-t-unattended-platform.js`, polls for `supervisor.pid` + `status=running` (up to 5s), prints the initial watch block, calls `ScheduleWakeup(270, '/gsd-t-unattended-watch')`.
|
|
316
|
+
- **`commands/gsd-t-unattended-watch.md`** — `/gsd-t-unattended-watch` watch tick. Stateless; reads `supervisor.pid` + `state.json`; renders progress or final summary; reschedules via `ScheduleWakeup(270, ...)` on non-terminal status; stops on terminal status or missing PID file.
|
|
317
|
+
- **`commands/gsd-t-unattended-stop.md`** — `/gsd-t-unattended-stop` stop command. Touches `.gsd-t/.unattended/stop` sentinel; prints reassurance; returns immediately (no kill, no wait).
|
|
271
318
|
- **`.gsd-t/contracts/unattended-supervisor-contract.md` v1.0.0 ACTIVE** — authoritative interface for state file schema (18 fields), PID file lifecycle, sentinel semantics, exit codes 0–8+124, launch handshake, watch tick decision tree, resume auto-reattach handshake, stop mechanism, notification levels, safety rails hook points, and configuration file schema.
|
|
272
319
|
- **`docs/unattended-windows-caveats.md`** — known Windows limitations: sleep-prevention not supported (no `caffeinate` equivalent wired; `powercfg /requests` path is v2), `claude.cmd` wrapper adds ~500ms per spawn, Windows Defender may scan each worker spawn, notification via PowerShell toast requires non-interactive shell workaround.
|
|
273
320
|
- **`.claude/settings.json`** (project-shared) — SessionStart hook registered: `node bin/check-headless-sessions.js . 2>/dev/null || true` surfaces completed headless session banners on session start.
|
|
@@ -280,7 +327,7 @@ M36 ships the third pillar of the context/runway/autonomy arc (M34 context meter
|
|
|
280
327
|
|
|
281
328
|
### Fixed
|
|
282
329
|
|
|
283
|
-
- **`bin/gsd-t.js` headless dispatch** (Phase 0 P0, committed prior milestone): `mapHeadlessExitCode` now maps `"Unknown command:"` in worker stdout → exit code 5 (`command-dispatch-failed`). Worker invocation no longer prepends
|
|
330
|
+
- **`bin/gsd-t.js` headless dispatch** (Phase 0 P0, committed prior milestone): `mapHeadlessExitCode` now maps `"Unknown command:"` in worker stdout → exit code 5 (`command-dispatch-failed`). Worker invocation no longer prepends `/` to command names, preventing "Unknown command:" failures in non-interactive `claude -p` sessions.
|
|
284
331
|
|
|
285
332
|
### Tests
|
|
286
333
|
|
|
@@ -294,7 +341,7 @@ M36 ships the third pillar of the context/runway/autonomy arc (M34 context meter
|
|
|
294
341
|
|
|
295
342
|
### Migration
|
|
296
343
|
|
|
297
|
-
After `npm install @tekyzinc/gsd-t@3.10.10`, run `/
|
|
344
|
+
After `npm install @tekyzinc/gsd-t@3.10.10`, run `/gsd-t-version-update-all` to propagate v3.10.10 to all registered projects. The new command files, `bin/` modules, and contract are written into each project automatically. No existing `.gsd-t/` state is modified.
|
|
298
345
|
|
|
299
346
|
---
|
|
300
347
|
|
|
@@ -309,7 +356,7 @@ After `npm install @tekyzinc/gsd-t@3.10.10`, run `/user:gsd-t-version-update-all
|
|
|
309
356
|
- **`bin/model-selector.js`** — declarative phase→tier mapping (≥13 phase mappings) with complexity-signal escalation (`cross_module_refactor`, `security_boundary`, `data_loss_risk`, `contract_design`) that escalates sonnet→opus at plan time. Each command file carries a `## Model Assignment` block.
|
|
310
357
|
- **`bin/runway-estimator.js`** — `estimateRunway({command, domain_type, remaining_tasks})` reads `.gsd-t/token-metrics.jsonl` via a three-tier query fallback (exact → command+phase → command) and returns `{can_start, projected_end_pct, confidence, recommendation}`. Confidence grading: high ≥50 records, medium ≥10, low <10 (+1.25× skew).
|
|
311
358
|
- **`bin/headless-auto-spawn.js`** — detached `child_process.spawn({detached:true, stdio:['ignore', fd, fd]}) + child.unref()`. Writes `.gsd-t/headless-sessions/{session-id}.json`, polls with `process.kill(pid, 0)` (timer `.unref()`-ed), marks `status: completed`, posts a macOS `osascript` notification on exit (graceful no-op on non-darwin).
|
|
312
|
-
- **`bin/check-headless-sessions.js`** — scans `.gsd-t/headless-sessions/` for `status === 'completed' && surfaced !== true` and renders the read-back banner on `/
|
|
359
|
+
- **`bin/check-headless-sessions.js`** — scans `.gsd-t/headless-sessions/` for `status === 'completed' && surfaced !== true` and renders the read-back banner on `/gsd-t-resume` and `/gsd-t-status`. Exports `checkCompletedSessions`, `markSurfaced`, `formatBanner`, `printBannerIfAny`, `computeDurationLabel`.
|
|
313
360
|
- **`bin/token-telemetry.js`** — per-spawn token bracket writes one frozen 18-field JSONL record per subagent spawn to `.gsd-t/token-metrics.jsonl`. Fields: `timestamp, session_id, command, phase, domain, task_id, model, complexity_signals[], input_tokens, output_tokens, duration_seconds, start_pct, end_pct, halt_type, halt_reason, exit_code, run_type, projection_variance`. `halt_type` values: `clean`, `stop-band`, `runway-refuse`, `native-compact` (defect), `crash`.
|
|
314
361
|
- **`bin/token-optimizer.js`** — at `complete-milestone`, scans the last 3 milestones and appends recalibration recommendations to `.gsd-t/optimization-backlog.md`. Four detection rules: `demote` (opus phase ≥90% success, ≥3 volume), `escalate` (sonnet phase ≥30% failure rate, ≥5 volume), `runway-tune` (projection vs. actual divergence >15%), `investigate` (per-phase p95 > 2× median, ≥10 volume). Fingerprint-based 5-milestone cooldown on rejected items. Exports `detectRecommendations`, `appendToBacklog`, `readBacklog`, `writeBacklog`, `parseBacklog`, `setRecommendationStatus`, `DETECTION_RULES`, `REJECTION_COOLDOWN_MILESTONES`.
|
|
315
362
|
- **`bin/advisor-integration.js`** — `/advisor` escalation hook; convention-based fallback if no programmable API.
|
|
@@ -318,7 +365,7 @@ After `npm install @tekyzinc/gsd-t@3.10.10`, run `/user:gsd-t-version-update-all
|
|
|
318
365
|
- **`.gsd-t/contracts/token-telemetry-contract.md` v1.0.0 ACTIVE** — frozen 18-field per-spawn JSONL schema, `halt_type` enum, `run_type` enum.
|
|
319
366
|
- **`.gsd-t/contracts/runway-estimator-contract.md` v1.0.0 ACTIVE** — pre-flight projection, three-tier query fallback, confidence grading, refusal + headless handoff contract.
|
|
320
367
|
- **`.gsd-t/contracts/headless-auto-spawn-contract.md` v1.0.0 ACTIVE** — detached continuation, session file schema, macOS notification channel, read-back banner.
|
|
321
|
-
- **`commands/gsd-t-optimization-apply.md`** — promotes a backlog recommendation by ID, auto-routes to `/
|
|
368
|
+
- **`commands/gsd-t-optimization-apply.md`** — promotes a backlog recommendation by ID, auto-routes to `/gsd-t-quick` or `/gsd-t-backlog-promote` based on recommendation type.
|
|
322
369
|
- **`commands/gsd-t-optimization-reject.md`** — rejects a recommendation with optional `--reason`, sets 5-milestone cooldown. Reason captured in token-log.md + Decision Log.
|
|
323
370
|
- **`gsd-t metrics` flags** — `--tokens` (per-command/phase token summary), `--halts` (halt-type breakdown; flags any `native-compact` as defect), `--context-window` (trailing 20-run `end_pct` with runway headroom).
|
|
324
371
|
- **Test coverage**: `test/headless-auto-spawn.test.js` (16 tests — session file schema, completion watcher, read-back banner, non-darwin degradation, E2E shim smoke), `test/token-optimizer.test.js` (19 tests — each rule triggers/skips, parseBacklog round-trip, cooldown filter, OB-T1+OB-T4 integration roundtrip), plus rewrites of `test/token-budget.test.js` around v3.0.0. **~1011/1011 total tests green through Wave 4**.
|
|
@@ -358,7 +405,7 @@ After `npm install @tekyzinc/gsd-t@3.10.10`, run `/user:gsd-t-version-update-all
|
|
|
358
405
|
|
|
359
406
|
### Propagation
|
|
360
407
|
|
|
361
|
-
Run `/
|
|
408
|
+
Run `/gsd-t-version-update-all` from any registered GSD-T project to propagate v2.76.10 to all projects. The command files, templates, and `bin/` scripts are rewritten in place; project state in `.gsd-t/` is preserved.
|
|
362
409
|
|
|
363
410
|
---
|
|
364
411
|
|
|
@@ -412,7 +459,7 @@ Run `/user:gsd-t-version-update-all` from any registered GSD-T project to propag
|
|
|
412
459
|
|
|
413
460
|
### Propagation
|
|
414
461
|
|
|
415
|
-
After publishing, run `/
|
|
462
|
+
After publishing, run `/gsd-t-version-update-all` to propagate M34 (hook, config, installer, rewritten token-budget, command file updates, retirement migration) to every registered GSD-T project in a single sweep.
|
|
416
463
|
|
|
417
464
|
## [2.74.13] - 2026-04-14
|
|
418
465
|
|
|
@@ -426,7 +473,7 @@ After publishing, run `/user:gsd-t-version-update-all` to propagate M34 (hook, c
|
|
|
426
473
|
- **`bin/gsd-t.js`** — `PROJECT_BIN_TOOLS` now includes `task-counter.cjs`. One-line change at `bin/gsd-t.js:1562`.
|
|
427
474
|
- **`bin/gsd-t.js`** — `doInit()` now calls `copyBinToolsToProject(projectDir, projectName)` after `initGsdtDir`, so newly-initialized projects ship bin tools immediately.
|
|
428
475
|
|
|
429
|
-
v2.74.12's entire two-layer fix (task-count gate + extracted prompts) is correct — it just needed one line to actually distribute the counter script. Running `/
|
|
476
|
+
v2.74.12's entire two-layer fix (task-count gate + extracted prompts) is correct — it just needed one line to actually distribute the counter script. Running `/gsd-t-version-update-all` after publishing this version will propagate `task-counter.cjs` to every registered project.
|
|
430
477
|
|
|
431
478
|
## [2.74.12] - 2026-04-14
|
|
432
479
|
|
|
@@ -438,7 +485,7 @@ v2.74.12's entire two-layer fix (task-count gate + extracted prompts) is correct
|
|
|
438
485
|
|
|
439
486
|
#### Fix 1: Real task-count gate (replaces vaporware env-var check)
|
|
440
487
|
- **NEW `bin/task-counter.cjs`** — deterministic on-disk task counter. State: `.gsd-t/.task-counter`. Config: `.gsd-t/task-counter-config.json` (default limit: 5). Env override: `GSD_T_TASK_LIMIT`. Commands: `increment <kind>`, `status`, `reset`, `should-stop` (exit code 10 at limit). This is the real signal the old self-check *pretended* to be.
|
|
441
|
-
- **`commands/gsd-t-execute.md`** — Step 0 resets the counter; Step 3.5 calls `node bin/task-counter.cjs should-stop` as a gate before every task spawn; Step 5 increments after each task. At limit, the orchestrator checkpoints and STOPs — user runs `/clear` then `/
|
|
488
|
+
- **`commands/gsd-t-execute.md`** — Step 0 resets the counter; Step 3.5 calls `node bin/task-counter.cjs should-stop` as a gate before every task spawn; Step 5 increments after each task. At limit, the orchestrator checkpoints and STOPs — user runs `/clear` then `/gsd-t-resume`.
|
|
442
489
|
- **`commands/gsd-t-wave.md`** — analogous phase-count gate replaces the broken "Wave Orchestrator Context Self-Check."
|
|
443
490
|
- **`bin/token-budget.js`** — `getSessionStatus()` rewritten to read the task counter instead of env vars. API surface preserved (threshold/pct/consumed/estimated_remaining) so all dependent commands keep working. Graduated-degradation thresholds (warn/downgrade/conserve/stop) now fire on real signal.
|
|
444
491
|
|
|
@@ -453,7 +500,7 @@ v2.74.12's entire two-layer fix (task-count gate + extracted prompts) is correct
|
|
|
453
500
|
- Test suite (`test/token-budget.test.js`) rewritten around the new counter-based `getSessionStatus()`. 36/36 passing.
|
|
454
501
|
|
|
455
502
|
### Propagation
|
|
456
|
-
After publishing, run `/
|
|
503
|
+
After publishing, run `/gsd-t-version-update-all` to propagate the fix to every registered GSD-T project. Projects will receive the new `bin/task-counter.cjs` and updated command files in a single sweep.
|
|
457
504
|
|
|
458
505
|
## [2.74.11] - 2026-04-13
|
|
459
506
|
|
|
@@ -647,7 +694,7 @@ Build → Measure → **Automated AI Review** (reviewer → fixer → re-review
|
|
|
647
694
|
## [2.71.15] - 2026-04-08
|
|
648
695
|
|
|
649
696
|
### Changed (design-build command → orchestrator delegate)
|
|
650
|
-
- **`gsd-t-design-build.md` now delegates to the JS orchestrator** — the 388-line prompt-based command is replaced with a thin wrapper that runs `gsd-t design-build`. Both `/
|
|
697
|
+
- **`gsd-t-design-build.md` now delegates to the JS orchestrator** — the 388-line prompt-based command is replaced with a thin wrapper that runs `gsd-t design-build`. Both `/gsd-t-design-build` and `gsd-t design-build` now end up in the same deterministic pipeline. No more prompt-based gates that get skipped.
|
|
651
698
|
|
|
652
699
|
## [2.71.14] - 2026-04-08
|
|
653
700
|
|
|
@@ -762,12 +809,12 @@ BDS horizontal stacked bar cards required 5 user-prompted fix iterations to get
|
|
|
762
809
|
## [2.69.11] - 2026-04-05
|
|
763
810
|
|
|
764
811
|
### Changed (gsd-t-design-audit)
|
|
765
|
-
- **Auto-fix prompt** — after audit completes, if CRITICAL/HIGH deviations found, automatically prompts `/
|
|
812
|
+
- **Auto-fix prompt** — after audit completes, if CRITICAL/HIGH deviations found, automatically prompts `/gsd-t-quick` with the audit report as source of truth. Re-runs audit after fixes to verify. Up to 2 fix cycles before stopping.
|
|
766
813
|
|
|
767
814
|
## [2.69.10] - 2026-04-05
|
|
768
815
|
|
|
769
816
|
### Added
|
|
770
|
-
- **`/
|
|
817
|
+
- **`/gsd-t-design-audit` command** — compare a built screen against a Figma design. Node-level Figma decomposition, per-widget comparison tables (10-30+ rows each), severity-rated deviations (CRITICAL/HIGH/MEDIUM/LOW), fidelity percentage. Writes zero code — report only. Usage: `/gsd-t-design-audit {Figma URL} {route}`.
|
|
771
818
|
|
|
772
819
|
## [2.68.13] - 2026-04-05
|
|
773
820
|
|
|
@@ -891,7 +938,7 @@ Post-validation comparison of the built BDS Analytics screen against the origina
|
|
|
891
938
|
- **Hierarchical design contracts** — `element` → `widget` → `page` contract hierarchy for design-to-code projects. Element contracts are the single source of truth for visual spec (one contract per visual variant, e.g., `chart-bar-stacked-horizontal` and `chart-bar-stacked-vertical` are separate). Widgets compose elements with layout + data binding. Pages compose widgets with routing + grid layout.
|
|
892
939
|
- **Precedence rule**: element > widget > page. Widgets and pages SELECT and POSITION elements but cannot override element visual spec. Structural drift becomes impossible.
|
|
893
940
|
- **New templates**: `templates/element-contract.md`, `templates/widget-contract.md`, `templates/page-contract.md`
|
|
894
|
-
- **New command**: `/
|
|
941
|
+
- **New command**: `/gsd-t-design-decompose` — surveys a design (Figma/image/prototype), classifies elements (reuse count ≥2 or non-trivial spec → promoted to element contract), identifies widgets and pages, writes the full contract hierarchy under `.gsd-t/contracts/design/{elements,widgets,pages}/` plus an `INDEX.md` navigation map.
|
|
895
942
|
|
|
896
943
|
### Changed
|
|
897
944
|
- `design-to-code.md` stack rule adds Section 0 explaining flat vs. hierarchical contract modes and detection at execute-time (presence of `.gsd-t/contracts/design/` triggers hierarchical verification: elements first, then widgets, then pages)
|
|
@@ -1255,7 +1302,7 @@ Post-validation comparison of the built BDS Analytics screen against the origina
|
|
|
1255
1302
|
## [2.20.5] - 2026-02-16
|
|
1256
1303
|
|
|
1257
1304
|
### Added
|
|
1258
|
-
- **Next Command Hint**: After each GSD-T phase completes, displays the recommended next command (e.g., `Next → /
|
|
1305
|
+
- **Next Command Hint**: After each GSD-T phase completes, displays the recommended next command (e.g., `Next → /gsd-t-partition`). Full successor mapping for all workflow commands. Skipped during auto-advancing (Level 3 mid-wave)
|
|
1259
1306
|
|
|
1260
1307
|
## [2.20.4] - 2026-02-16
|
|
1261
1308
|
|
|
@@ -1325,7 +1372,7 @@ Post-validation comparison of the built BDS Analytics screen against the origina
|
|
|
1325
1372
|
## [2.17.0] - 2026-02-16
|
|
1326
1373
|
|
|
1327
1374
|
### Added
|
|
1328
|
-
- `/
|
|
1375
|
+
- `/gsd-t-log` command — sync progress.md Decision Log with recent git activity by scanning commits since last logged entry
|
|
1329
1376
|
- Incremental updates (only new commits) and first-time full reconstruction from git history
|
|
1330
1377
|
- Total commands: 38 GSD-T + 3 utility = 41
|
|
1331
1378
|
|
|
@@ -1341,7 +1388,7 @@ Post-validation comparison of the built BDS Analytics screen against the origina
|
|
|
1341
1388
|
## [2.16.4] - 2026-02-16
|
|
1342
1389
|
|
|
1343
1390
|
### Changed
|
|
1344
|
-
- Smart router renamed from `/
|
|
1391
|
+
- Smart router renamed from `/gsd-t` to `/gsd` — sorts first in autocomplete, shorter to type
|
|
1345
1392
|
- Pre-Commit Gate now requires timestamped progress.md entry (`YYYY-MM-DD HH:MM`) after every completed task, not just architectural decisions
|
|
1346
1393
|
|
|
1347
1394
|
## [2.16.3] - 2026-02-16
|
|
@@ -1352,7 +1399,7 @@ Post-validation comparison of the built BDS Analytics screen against the origina
|
|
|
1352
1399
|
## [2.16.2] - 2026-02-16
|
|
1353
1400
|
|
|
1354
1401
|
### Changed
|
|
1355
|
-
- Smart router renamed from `/
|
|
1402
|
+
- Smart router renamed from `/gsd-t` to `/gsd` (reverted in 2.16.3)
|
|
1356
1403
|
|
|
1357
1404
|
## [2.16.1] - 2026-02-16
|
|
1358
1405
|
|
|
@@ -1392,7 +1439,7 @@ Post-validation comparison of the built BDS Analytics screen against the origina
|
|
|
1392
1439
|
## [2.15.0] - 2026-02-13
|
|
1393
1440
|
|
|
1394
1441
|
### Added
|
|
1395
|
-
- `/
|
|
1442
|
+
- `/gsd-t-gap-analysis` command — requirements gap analysis against existing codebase
|
|
1396
1443
|
- Parses spec into discrete numbered requirements, scans codebase, classifies each as implemented/partial/incorrect/not-implemented
|
|
1397
1444
|
- Evidence-based classification with file:line references for each requirement
|
|
1398
1445
|
- Severity levels: Critical (incorrect), High (partial), Medium (not implemented), Low (deferrable)
|
|
@@ -1412,12 +1459,12 @@ Post-validation comparison of the built BDS Analytics screen against the origina
|
|
|
1412
1459
|
|
|
1413
1460
|
### Changed
|
|
1414
1461
|
- Update Notices section in CLAUDE-global template now handles both `[GSD-T UPDATE]` (update available) and `[GSD-T]` (up to date) version banners
|
|
1415
|
-
- Update command in notification changed from raw npm command to `/
|
|
1462
|
+
- Update command in notification changed from raw npm command to `/gsd-t-version-update-all`
|
|
1416
1463
|
|
|
1417
1464
|
## [2.14.0] - 2026-02-12
|
|
1418
1465
|
|
|
1419
1466
|
### Added
|
|
1420
|
-
- `/
|
|
1467
|
+
- `/gsd-t` smart router command — describe what you need in plain language, auto-routes to the correct GSD-T command
|
|
1421
1468
|
- Intent classification routes to: quick, feature, project, debug, scan, brainstorm, milestone, wave, status, resume, backlog-add, and more
|
|
1422
1469
|
- Total commands: 36 GSD-T + 3 utility = 39
|
|
1423
1470
|
|
|
@@ -1446,15 +1493,15 @@ Post-validation comparison of the built BDS Analytics screen against the origina
|
|
|
1446
1493
|
## [2.13.0] - 2026-02-12
|
|
1447
1494
|
|
|
1448
1495
|
### Added
|
|
1449
|
-
- `/
|
|
1496
|
+
- `/gsd-t-init-scan-setup` slash command — full project onboarding combining git setup, init, scan, and setup in one command
|
|
1450
1497
|
- Prompts for GitHub repo URL if not already connected; skips if remote exists
|
|
1451
1498
|
- Total commands: 35 GSD-T + 3 utility = 38
|
|
1452
1499
|
|
|
1453
1500
|
## [2.12.0] - 2026-02-12
|
|
1454
1501
|
|
|
1455
1502
|
### Added
|
|
1456
|
-
- `/
|
|
1457
|
-
- `/
|
|
1503
|
+
- `/gsd-t-version-update` slash command — update GSD-T to latest version from within Claude Code
|
|
1504
|
+
- `/gsd-t-version-update-all` slash command — update GSD-T + all registered projects from within Claude Code
|
|
1458
1505
|
- Total commands: 34 GSD-T + 3 utility = 37
|
|
1459
1506
|
|
|
1460
1507
|
## [2.11.6] - 2026-02-12
|
package/README.md
CHANGED
|
@@ -43,34 +43,34 @@ cd my-project
|
|
|
43
43
|
claude
|
|
44
44
|
|
|
45
45
|
# 2. Full onboarding (git + init + scan + setup in one)
|
|
46
|
-
/
|
|
46
|
+
/gsd-t-init-scan-setup
|
|
47
47
|
|
|
48
48
|
# Or step by step:
|
|
49
|
-
/
|
|
49
|
+
/gsd-t-init my-project
|
|
50
50
|
|
|
51
51
|
# 4. Define what you're building
|
|
52
|
-
/
|
|
52
|
+
/gsd-t-milestone "User Authentication System"
|
|
53
53
|
|
|
54
54
|
# 5. Let it rip (auto-advances through all phases)
|
|
55
|
-
/
|
|
55
|
+
/gsd-t-wave
|
|
56
56
|
|
|
57
57
|
# Or go phase by phase for more control:
|
|
58
|
-
/
|
|
59
|
-
/
|
|
60
|
-
/
|
|
61
|
-
/
|
|
62
|
-
/
|
|
63
|
-
/
|
|
64
|
-
/
|
|
65
|
-
/
|
|
66
|
-
/
|
|
58
|
+
/gsd-t-partition
|
|
59
|
+
/gsd-t-discuss
|
|
60
|
+
/gsd-t-plan
|
|
61
|
+
/gsd-t-impact
|
|
62
|
+
/gsd-t-execute
|
|
63
|
+
/gsd-t-test-sync
|
|
64
|
+
/gsd-t-integrate
|
|
65
|
+
/gsd-t-verify
|
|
66
|
+
/gsd-t-complete-milestone
|
|
67
67
|
```
|
|
68
68
|
|
|
69
69
|
### Resuming After a Break
|
|
70
70
|
|
|
71
71
|
```bash
|
|
72
72
|
claude
|
|
73
|
-
/
|
|
73
|
+
/gsd-t-resume
|
|
74
74
|
```
|
|
75
75
|
|
|
76
76
|
GSD-T reads all state files and tells you exactly where you left off.
|
|
@@ -126,100 +126,100 @@ This will replace changed command files, back up your CLAUDE.md if customized, a
|
|
|
126
126
|
|
|
127
127
|
| Command | Purpose | Auto |
|
|
128
128
|
|---------|---------|------|
|
|
129
|
-
| `/
|
|
129
|
+
| `/gsd {request}` | Describe what you need → auto-routes to the right command | Manual |
|
|
130
130
|
| _(any plain text)_ | Auto-routed via UserPromptSubmit hook — no leading `/` needed | Auto |
|
|
131
131
|
|
|
132
132
|
### Help & Onboarding
|
|
133
133
|
|
|
134
134
|
| Command | Purpose | Auto |
|
|
135
135
|
|---------|---------|------|
|
|
136
|
-
| `/
|
|
137
|
-
| `/
|
|
138
|
-
| `/
|
|
139
|
-
| `/
|
|
140
|
-
| `/
|
|
136
|
+
| `/gsd-t-help` | List all commands with descriptions | Manual |
|
|
137
|
+
| `/gsd-t-help {cmd}` | Detailed help for specific command | Manual |
|
|
138
|
+
| `/gsd-t-prompt` | Help formulate your idea before committing | Manual |
|
|
139
|
+
| `/gsd-t-brainstorm` | Creative exploration and idea generation | Manual |
|
|
140
|
+
| `/gsd-t-prd` | Generate a GSD-T-optimized Product Requirements Document | Manual |
|
|
141
141
|
|
|
142
142
|
### Project Initialization
|
|
143
143
|
|
|
144
144
|
| Command | Purpose | Auto |
|
|
145
145
|
|---------|---------|------|
|
|
146
|
-
| `/
|
|
147
|
-
| `/
|
|
148
|
-
| `/
|
|
149
|
-
| `/
|
|
150
|
-
| `/
|
|
151
|
-
| `/
|
|
152
|
-
| `/
|
|
153
|
-
| `/
|
|
154
|
-
| `/
|
|
155
|
-
| `/
|
|
146
|
+
| `/gsd-t-setup` | Generate or restructure project CLAUDE.md | Manual |
|
|
147
|
+
| `/gsd-t-init` | Initialize GSD-T structure in project | Manual |
|
|
148
|
+
| `/gsd-t-init-scan-setup` | Full onboarding: git + init + scan + setup in one | Manual |
|
|
149
|
+
| `/gsd-t-project` | Full project → milestone roadmap | Manual |
|
|
150
|
+
| `/gsd-t-feature` | Major feature → impact analysis + milestones | Manual |
|
|
151
|
+
| `/gsd-t-scan` | Deep codebase analysis → techdebt.md | Manual |
|
|
152
|
+
| `/gsd-t-gap-analysis` | Requirements gap analysis — spec vs. existing code | Manual |
|
|
153
|
+
| `/gsd-t-promote-debt` | Convert techdebt items to milestones | Manual |
|
|
154
|
+
| `/gsd-t-populate` | Auto-populate docs from existing codebase | Manual |
|
|
155
|
+
| `/gsd-t-design-decompose` | Decompose design into element/widget/page contracts | Manual |
|
|
156
156
|
|
|
157
157
|
### Milestone Workflow
|
|
158
158
|
|
|
159
159
|
| Command | Purpose | Auto |
|
|
160
160
|
|---------|---------|------|
|
|
161
|
-
| `/
|
|
162
|
-
| `/
|
|
163
|
-
| `/
|
|
164
|
-
| `/
|
|
165
|
-
| `/
|
|
166
|
-
| `/
|
|
167
|
-
| `/
|
|
168
|
-
| `/
|
|
161
|
+
| `/gsd-t-milestone` | Define new milestone | Manual |
|
|
162
|
+
| `/gsd-t-partition` | Decompose into domains + contracts | In wave |
|
|
163
|
+
| `/gsd-t-discuss` | Multi-perspective design exploration | In wave |
|
|
164
|
+
| `/gsd-t-plan` | Create atomic task lists per domain (tasks auto-split to fit one context window) | In wave |
|
|
165
|
+
| `/gsd-t-impact` | Analyze downstream effects | In wave |
|
|
166
|
+
| `/gsd-t-execute` | Run tasks — task-level fresh dispatch, worktree isolation, adaptive replanning | In wave |
|
|
167
|
+
| `/gsd-t-test-sync` | Sync tests with code changes | In wave |
|
|
168
|
+
| `/gsd-t-qa` | QA agent — test generation, execution, gap reporting | Auto-spawned |
|
|
169
169
|
| *Red Team* | Adversarial QA — finds bugs the builder missed (inverted incentives) | Auto-spawned |
|
|
170
|
-
| `/
|
|
171
|
-
| `/
|
|
172
|
-
| `/
|
|
173
|
-
| `/
|
|
170
|
+
| `/gsd-t-doc-ripple` | Automated document ripple — update downstream docs after code changes | Auto-spawned |
|
|
171
|
+
| `/gsd-t-integrate` | Wire domains together | In wave |
|
|
172
|
+
| `/gsd-t-verify` | Run quality gates + goal-backward behavior verification | In wave |
|
|
173
|
+
| `/gsd-t-complete-milestone` | Archive + git tag (goal-backward gate required) | In wave |
|
|
174
174
|
|
|
175
175
|
### Unattended Execution
|
|
176
176
|
|
|
177
177
|
| Command | Purpose | Auto |
|
|
178
178
|
|---------|---------|------|
|
|
179
|
-
| `/
|
|
180
|
-
| `/
|
|
181
|
-
| `/
|
|
179
|
+
| `/gsd-t-unattended` | Launch detached supervisor — runs active milestone to completion with zero human intervention | Manual |
|
|
180
|
+
| `/gsd-t-unattended-watch` | Watch tick — fires every 270s via ScheduleWakeup, reports supervisor status | Auto |
|
|
181
|
+
| `/gsd-t-unattended-stop` | Touch stop sentinel — supervisor halts after current worker finishes | Manual |
|
|
182
182
|
|
|
183
183
|
### Automation & Utilities
|
|
184
184
|
|
|
185
185
|
| Command | Purpose | Auto |
|
|
186
186
|
|---------|---------|------|
|
|
187
|
-
| `/
|
|
188
|
-
| `/
|
|
189
|
-
| `/
|
|
190
|
-
| `/
|
|
191
|
-
| `/
|
|
192
|
-
| `/
|
|
193
|
-
| `/
|
|
194
|
-
| `/
|
|
195
|
-
| `/
|
|
196
|
-
| `/
|
|
197
|
-
| `/
|
|
198
|
-
| `/
|
|
199
|
-
| `/
|
|
200
|
-
| `/
|
|
201
|
-
| `/
|
|
202
|
-
| `/
|
|
187
|
+
| `/gsd-t-wave` | Full cycle, auto-advances all phases | Manual |
|
|
188
|
+
| `/gsd-t-status` | Cross-domain progress view with token breakdown by domain/task/phase | Manual |
|
|
189
|
+
| `/gsd-t-resume` | Restore context, continue | Manual |
|
|
190
|
+
| `/gsd-t-quick` | Fast task with GSD-T guarantees | Manual |
|
|
191
|
+
| `/gsd-t-visualize` | Launch browser dashboard — SSE server + React Flow agent visualization | Manual |
|
|
192
|
+
| `/gsd-t-debug` | Systematic debugging with state | Manual |
|
|
193
|
+
| `/gsd-t-metrics` | View task telemetry, process ELO, signal distribution, domain health, and cross-project comparison (`--cross-project`) | Manual |
|
|
194
|
+
| `/gsd-t-health` | Validate .gsd-t/ structure, optionally repair | Manual |
|
|
195
|
+
| `/gsd-t-pause` | Save exact position for reliable resume | Manual |
|
|
196
|
+
| `/gsd-t-log` | Sync progress Decision Log with recent git activity | Manual |
|
|
197
|
+
| `/gsd-t-version-update` | Update GSD-T to latest version | Manual |
|
|
198
|
+
| `/gsd-t-version-update-all` | Update GSD-T + all registered projects | Manual |
|
|
199
|
+
| `/gsd-t-triage-and-merge` | Auto-review, merge, and publish GitHub branches | Manual |
|
|
200
|
+
| `/gsd-t-design-audit` | Compare built screen against Figma design — structured deviation report | Manual |
|
|
201
|
+
| `/gsd-t-design-build` | Build from design contracts with two-terminal review (Term 1 builder) | Manual |
|
|
202
|
+
| `/gsd-t-design-review` | Independent review agent for design build (Term 2 reviewer) | Auto |
|
|
203
203
|
|
|
204
204
|
### Backlog Management
|
|
205
205
|
|
|
206
206
|
| Command | Purpose | Auto |
|
|
207
207
|
|---------|---------|------|
|
|
208
|
-
| `/
|
|
209
|
-
| `/
|
|
210
|
-
| `/
|
|
211
|
-
| `/
|
|
212
|
-
| `/
|
|
213
|
-
| `/
|
|
214
|
-
| `/
|
|
208
|
+
| `/gsd-t-backlog-add` | Capture item, auto-categorize, append to backlog | Manual |
|
|
209
|
+
| `/gsd-t-backlog-list` | Filtered, ordered view of backlog items | Manual |
|
|
210
|
+
| `/gsd-t-backlog-move` | Reorder items by position (priority) | Manual |
|
|
211
|
+
| `/gsd-t-backlog-edit` | Modify backlog entry fields | Manual |
|
|
212
|
+
| `/gsd-t-backlog-remove` | Drop item with optional reason | Manual |
|
|
213
|
+
| `/gsd-t-backlog-promote` | Refine, classify, launch GSD-T workflow | Manual |
|
|
214
|
+
| `/gsd-t-backlog-settings` | Manage types, apps, categories, defaults | Manual |
|
|
215
215
|
|
|
216
216
|
### Git Helpers
|
|
217
217
|
|
|
218
218
|
| Command | Purpose | Auto |
|
|
219
219
|
|---------|---------|------|
|
|
220
|
-
| `/
|
|
221
|
-
| `/
|
|
222
|
-
| `/
|
|
220
|
+
| `/branch` | Create and switch to a new git branch | Manual |
|
|
221
|
+
| `/checkin` | Auto-bump version, stage, commit, and push | Manual |
|
|
222
|
+
| `/Claude-md` | Reload CLAUDE.md directives mid-session | Manual |
|
|
223
223
|
| `/global-change` | Apply file changes across all registered GSD-T projects | Manual |
|
|
224
224
|
|
|
225
225
|
---
|
|
@@ -323,17 +323,17 @@ Run the active milestone to completion over hours or days — no human in the lo
|
|
|
323
323
|
gsd-t unattended --hours=24
|
|
324
324
|
|
|
325
325
|
# Or from within Claude Code (starts a 270s watch loop)
|
|
326
|
-
/
|
|
326
|
+
/gsd-t-unattended
|
|
327
327
|
|
|
328
328
|
# Stop (graceful — supervisor halts after the current worker finishes)
|
|
329
|
-
/
|
|
329
|
+
/gsd-t-unattended-stop
|
|
330
330
|
```
|
|
331
331
|
|
|
332
332
|
**How it works:**
|
|
333
333
|
|
|
334
334
|
- `gsd-t unattended` spawns `bin/gsd-t-unattended.js` as a fully detached OS process. The supervisor runs `claude -p` workers in a relay — one worker per iteration — each in a fresh context window. State is written atomically to `.gsd-t/.unattended/state.json` between iterations.
|
|
335
|
-
- `/
|
|
336
|
-
- If you run `/clear` + `/
|
|
335
|
+
- `/gsd-t-unattended` does the same from inside Claude Code, then calls `ScheduleWakeup(270, '/gsd-t-unattended-watch')` to start an in-session watch loop that ticks every 270 seconds and prints progress.
|
|
336
|
+
- If you run `/clear` + `/gsd-t-resume` during a live run, the resume command auto-detects the running supervisor and re-attaches the watch loop — no re-launch needed.
|
|
337
337
|
- The supervisor halts automatically when: the milestone reaches COMPLETED status, the `--hours` wall-clock cap expires, `--max-iterations` is reached, safety rails detect a stall or unrecoverable error, or the stop sentinel is touched.
|
|
338
338
|
|
|
339
339
|
**Platform support:** macOS and Linux fully supported (including sleep-prevention via `caffeinate` on macOS). Windows is supported except sleep-prevention. See `docs/unattended-windows-caveats.md` for known Windows limitations.
|
|
@@ -439,7 +439,7 @@ copy commands\*.md %USERPROFILE%\.claude\commands\
|
|
|
439
439
|
cp commands/*.md ~/.claude/commands/
|
|
440
440
|
```
|
|
441
441
|
|
|
442
|
-
Verify with: `/
|
|
442
|
+
Verify with: `/gsd-t-help`
|
|
443
443
|
|
|
444
444
|
---
|
|
445
445
|
|
|
@@ -31,7 +31,7 @@ function discoverWork(projectDir) {
|
|
|
31
31
|
const indexPath = path.join(contractsDir, "INDEX.md");
|
|
32
32
|
|
|
33
33
|
if (!fs.existsSync(indexPath)) {
|
|
34
|
-
error("No design contracts found. Run /
|
|
34
|
+
error("No design contracts found. Run /gsd-t-design-decompose first.");
|
|
35
35
|
process.exit(1);
|
|
36
36
|
}
|
|
37
37
|
|
package/bin/gsd-t-unattended.cjs
CHANGED
|
@@ -498,7 +498,7 @@ function doUnattended(argv, deps) {
|
|
|
498
498
|
console.error(
|
|
499
499
|
"[gsd-t-unattended] --watch is incompatible with unattended.\n" +
|
|
500
500
|
"Unattended supervisor is detached by definition.\n" +
|
|
501
|
-
"Run /
|
|
501
|
+
"Run /gsd-t-unattended-watch from your interactive session to see live activity.",
|
|
502
502
|
);
|
|
503
503
|
return {
|
|
504
504
|
ok: false,
|
package/bin/gsd-t-unattended.js
CHANGED
|
@@ -499,7 +499,7 @@ function doUnattended(argv, deps) {
|
|
|
499
499
|
console.error(
|
|
500
500
|
"[gsd-t-unattended] --watch is incompatible with unattended.\n" +
|
|
501
501
|
"Unattended supervisor is detached by definition.\n" +
|
|
502
|
-
"Run /
|
|
502
|
+
"Run /gsd-t-unattended-watch from your interactive session to see live activity.",
|
|
503
503
|
);
|
|
504
504
|
return {
|
|
505
505
|
ok: false,
|