@tekyzinc/gsd-t 5.11.29 → 5.11.30
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 +35 -0
- package/README.md +1 -1
- package/package.json +1 -1
- package/templates/workflows/gsd-t-scan.workflow.js +15 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,41 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to GSD-T are documented here. Updated with each release.
|
|
4
4
|
|
|
5
|
+
## [5.11.30] - 2026-08-11
|
|
6
|
+
|
|
7
|
+
### Fixed — the scan crashed before any finder ran: `slices is not defined`
|
|
8
|
+
|
|
9
|
+
The Atos scan died after 4 agents (preflight, probe, graph-wiring) with a
|
|
10
|
+
JavaScript reference error. Nothing was written; no finder ever started.
|
|
11
|
+
|
|
12
|
+
618: slices = budgetPlan.slices; // never declared at this scope
|
|
13
|
+
|
|
14
|
+
v5.11.26 added that assignment to a bare name. v5.11.27 then added a
|
|
15
|
+
`const slices` INSIDE a helper function — a different scope entirely, which made
|
|
16
|
+
the name look declared to anyone skimming the file. The workflow sandbox runs in
|
|
17
|
+
strict mode, where assigning to an undeclared name throws.
|
|
18
|
+
|
|
19
|
+
`slices` is now declared where the code that uses it runs, starting as the
|
|
20
|
+
probe's own carve so the budget-failed branch needs no assignment at all.
|
|
21
|
+
|
|
22
|
+
**Nothing caught this, which is the more important half.** `node --check` parses
|
|
23
|
+
an undeclared assignment happily — it is legal syntax, and only strict mode makes
|
|
24
|
+
it an error, at runtime. The sandbox lint checks banned requires and `args`
|
|
25
|
+
handling, not scope. No test executes this path, because the workflow only runs
|
|
26
|
+
against a real project.
|
|
27
|
+
|
|
28
|
+
- `templates/workflows/gsd-t-scan.workflow.js`: `let slices = rawSlices` at the
|
|
29
|
+
scope that runs them.
|
|
30
|
+
- `test/m112-workflow-undeclared-assignment.test.js`: a static check over every
|
|
31
|
+
workflow for an assignment to a name its scope never declares, with a
|
|
32
|
+
function-body map so an `if`/`else` block is not mistaken for a nested scope.
|
|
33
|
+
|
|
34
|
+
The check was itself wrong twice before it worked, and the meta-test is what
|
|
35
|
+
caught it: the first version tested a hand-written sample with the offending line
|
|
36
|
+
at column zero and passed while missing the real bug, which is indented two
|
|
37
|
+
spaces inside an `if`. Verified against the actual shipped file — it reports
|
|
38
|
+
line 618 there and passes the fixed one.
|
|
39
|
+
|
|
5
40
|
## [5.11.29] - 2026-08-11
|
|
6
41
|
|
|
7
42
|
### Fixed — 20 of 27 projects had no usable code graph, and nothing said so
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# GSD-T: Contract-Driven Development for Claude Code
|
|
2
2
|
|
|
3
|
-
**v5.11.
|
|
3
|
+
**v5.11.30** - 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.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tekyzinc/gsd-t",
|
|
3
|
-
"version": "5.11.
|
|
3
|
+
"version": "5.11.30",
|
|
4
4
|
"description": "GSD-T: Contract-Driven Development for Claude Code \u2014 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",
|
|
@@ -602,6 +602,21 @@ const budgetPlan = await runCli(
|
|
|
602
602
|
"slice-budget"
|
|
603
603
|
);
|
|
604
604
|
|
|
605
|
+
// What the finders will actually run. Declared HERE, at the scope that uses it.
|
|
606
|
+
//
|
|
607
|
+
// [RULE] slices-declared-at-the-scope-that-runs-them
|
|
608
|
+
//
|
|
609
|
+
// v5.11.26 assigned to a bare `slices` that was never declared anywhere, and
|
|
610
|
+
// v5.11.27 added a `const slices` inside probePlaceholderFaults() — a different
|
|
611
|
+
// scope entirely. The workflow sandbox runs in strict mode, so the assignment
|
|
612
|
+
// below threw `slices is not defined` and killed the Atos scan after 4 agents,
|
|
613
|
+
// before a single finder ran. Nothing had checked it: `node --check` parses an
|
|
614
|
+
// undeclared assignment happily, and no test executed this path.
|
|
615
|
+
//
|
|
616
|
+
// It starts as the probe's own slices, so the failure branch below needs no
|
|
617
|
+
// assignment — an unmeasured plan still runs what the probe carved.
|
|
618
|
+
let slices = rawSlices;
|
|
619
|
+
|
|
605
620
|
if (budgetPlan && budgetPlan.ok && Array.isArray(budgetPlan.slices) && budgetPlan.slices.length) {
|
|
606
621
|
const a = budgetPlan.after || {};
|
|
607
622
|
if (budgetPlan.slices.length > rawSlices.length) {
|