@tekyzinc/gsd-t 5.19.10 → 5.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 +18 -0
- package/README.md +1 -1
- package/bin/gsd-t-pick-worktree.cjs +43 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,24 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to GSD-T are documented here. Updated with each release.
|
|
4
4
|
|
|
5
|
+
## [5.19.11] - 2026-09-15
|
|
6
|
+
|
|
7
|
+
### Fixed — a broken git made the worktree prompt vanish with nothing said
|
|
8
|
+
|
|
9
|
+
An Xcode update left the licence unaccepted, so every git command exited 69 with a licence
|
|
10
|
+
notice. The worktree picker's first check asks "is this a git repo" and read that failure as
|
|
11
|
+
a plain "no" — which is the ordinary case for most directories, so it exited silently. The
|
|
12
|
+
launcher then skipped the worktree prompt entirely and started the session where it stood.
|
|
13
|
+
A prompt that disappears reads as a GSD-T bug; the actual cause was git, two commands away.
|
|
14
|
+
|
|
15
|
+
- `bin/gsd-t-pick-worktree.cjs`: "not a repository" and "git could not answer" are now
|
|
16
|
+
different answers. git's own exit tells them apart — a genuine non-repo says so on stderr;
|
|
17
|
+
anything else (missing binary, unaccepted licence, broken install) HALTS with what git said
|
|
18
|
+
and how to fix it. The sibling checks in `gsd-t-worktree-detect.cjs` already halted this way;
|
|
19
|
+
this one was the inconsistent member.
|
|
20
|
+
- `test/m111-pick-worktree.test.js`: 3 regression tests — a licence-style failure halts, a
|
|
21
|
+
directory that is genuinely not a repo stays silent, and git missing from PATH also halts.
|
|
22
|
+
|
|
5
23
|
## [5.19.10] - 2026-09-09
|
|
6
24
|
|
|
7
25
|
### Added — M117 Graph Search Guard: the graph rule finally fires on the path work actually takes
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# GSD-T: Contract-Driven Development for Claude Code
|
|
2
2
|
|
|
3
|
-
**v5.19.
|
|
3
|
+
**v5.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.
|
|
@@ -208,9 +208,50 @@ function isSwitchedOff(cwd) {
|
|
|
208
208
|
return cfg.enabled === false;
|
|
209
209
|
}
|
|
210
210
|
|
|
211
|
-
|
|
211
|
+
/**
|
|
212
|
+
* Is this directory a git repo?
|
|
213
|
+
*
|
|
214
|
+
* "No" and "git could not tell me" are DIFFERENT answers and must not collapse
|
|
215
|
+
* into one. Most directories are genuinely not repos, which is ordinary and
|
|
216
|
+
* silent. But a git that cannot run at all fails the same probe, and reading
|
|
217
|
+
* that as "not a repo" makes the whole picker exit silently — the launcher then
|
|
218
|
+
* skips the worktree prompt entirely and starts the session wherever it stood,
|
|
219
|
+
* with nothing said. That happened for real on 2026-09-15: an Xcode update left
|
|
220
|
+
* the license unaccepted, every git command exited 69, and `cc` quietly stopped
|
|
221
|
+
* asking. The prompt vanishing looked like a GSD-T bug for as long as it took to
|
|
222
|
+
* run git by hand.
|
|
223
|
+
*
|
|
224
|
+
* git distinguishes them itself: a plain "not a repository" exits 128 with that
|
|
225
|
+
* message on stderr. Anything else — a missing binary, an unaccepted licence, a
|
|
226
|
+
* broken install — is git failing to answer, and that HALTS with what git said.
|
|
227
|
+
*/
|
|
212
228
|
function isGitRepo(dir) {
|
|
213
|
-
|
|
229
|
+
const r = spawnSync("git", ["rev-parse", "--git-dir"], {
|
|
230
|
+
cwd: dir, encoding: "utf8", timeout: 10000,
|
|
231
|
+
});
|
|
232
|
+
|
|
233
|
+
if (r.status === 0) return true;
|
|
234
|
+
|
|
235
|
+
// git never ran: no binary on PATH, or it could not be spawned.
|
|
236
|
+
if (r.error) {
|
|
237
|
+
fail(
|
|
238
|
+
`git could not be run (${r.error.message}), so it cannot be told whether ` +
|
|
239
|
+
`${dir} is a repository. Fix git, then start the session again.`
|
|
240
|
+
);
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
const stderr = String(r.stderr || "").trim();
|
|
244
|
+
|
|
245
|
+
// The ordinary answer: this is simply not a repository.
|
|
246
|
+
if (/not a git repository/i.test(stderr)) return false;
|
|
247
|
+
|
|
248
|
+
// Anything else is git declining to answer, not an answer.
|
|
249
|
+
fail(
|
|
250
|
+
`git could not say whether ${dir} is a repository — it exited ${r.status}` +
|
|
251
|
+
(stderr ? ` saying: ${stderr}` : " with no message") + ".\n" +
|
|
252
|
+
`Until git works, the worktree prompt cannot run. Fix the cause above, then ` +
|
|
253
|
+
`start the session again.`
|
|
254
|
+
);
|
|
214
255
|
}
|
|
215
256
|
|
|
216
257
|
// Shared with branch-guard so the two cannot drift apart — see
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tekyzinc/gsd-t",
|
|
3
|
-
"version": "5.19.
|
|
3
|
+
"version": "5.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",
|