@tekyzinc/gsd-t 4.10.11 → 4.10.12
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 +11 -0
- package/README.md +1 -1
- package/bin/gsd-t-graph-freshness.cjs +14 -4
- package/bin/gsd-t-graph-index.cjs +5 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,17 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to GSD-T are documented here. Updated with each release.
|
|
4
4
|
|
|
5
|
+
## [4.10.12] - 2026-06-27
|
|
6
|
+
|
|
7
|
+
### Fixed — freshness hash mismatch made every graph query re-index the whole repo
|
|
8
|
+
|
|
9
|
+
`compute_touched_files` hashed files with md5 (full length) while the indexer stores sha256 sliced to 16 chars — a guaranteed permanent mismatch. So every file read as "edited" on every query and freshness re-indexed the entire repo (re-running SCIP), hanging `gsd-t graph status` for 30s+ (then reporting graph-unavailable) on large projects.
|
|
10
|
+
|
|
11
|
+
- `bin/gsd-t-graph-freshness.cjs`: `hashFileContent` now `sha256().slice(0,16)` — matches the indexer's `contentHash` exactly. `EXCLUDE_DIRS` synced with the indexer's `SKIP_DIRS` (`.venv`/`site-packages`/etc.) so freshness doesn't see phantom ADDs from vendored dirs the indexer skipped.
|
|
12
|
+
- 5 D4 freshness test fixtures seeded stores with md5 hashes — updated to sha256(16) to match the real store.
|
|
13
|
+
|
|
14
|
+
Measured on Tekyz-CRM: `gsd-t graph status` 30s-timeout-unavailable → 0.38s ok; `compute_touched_files` 291ms / 11,821-files-stale → 12ms / 0-stale. This also makes graph queries cheap enough for ambient grep-interception (the next milestone). Suite: 2502/2502 pass.
|
|
15
|
+
|
|
5
16
|
## [4.10.11] - 2026-06-27
|
|
6
17
|
|
|
7
18
|
### Fixed — M96: the code graph now actually runs in projects (native-dep resolution)
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# GSD-T: Contract-Driven Development for Claude Code
|
|
2
2
|
|
|
3
|
-
**v4.10.
|
|
3
|
+
**v4.10.12** - 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.
|
|
@@ -48,22 +48,32 @@ function fail(msg) { return `${C.red}✘${C.reset} ${msg}`; }
|
|
|
48
48
|
// ─── Source-file extensions the indexer tracks ────────────────────────────────
|
|
49
49
|
const TRACKED_EXTS = new Set(['.js', '.mjs', '.cjs', '.ts', '.tsx', '.jsx', '.py']);
|
|
50
50
|
|
|
51
|
-
// ─── Content-hash
|
|
52
|
-
//
|
|
53
|
-
//
|
|
51
|
+
// ─── Content-hash — MUST match the indexer's contentHash EXACTLY ─────────────
|
|
52
|
+
// The indexer (gsd-t-graph-index.cjs::contentHash) stores sha256(content) sliced
|
|
53
|
+
// to the first 16 hex chars. Freshness MUST compute the identical value, or EVERY
|
|
54
|
+
// file reads as "edited" on every query (the hash never matches) and freshness
|
|
55
|
+
// re-indexes the whole repo — the hang. (Was md5/full-length: a guaranteed
|
|
56
|
+
// permanent mismatch.) [RULE] freshness-hash-matches-indexer-hash
|
|
54
57
|
function hashFileContent(filePath) {
|
|
55
58
|
try {
|
|
56
59
|
const content = fs.readFileSync(filePath);
|
|
57
|
-
return crypto.createHash('
|
|
60
|
+
return crypto.createHash('sha256').update(content).digest('hex').slice(0, 16);
|
|
58
61
|
} catch {
|
|
59
62
|
return null;
|
|
60
63
|
}
|
|
61
64
|
}
|
|
62
65
|
|
|
63
66
|
// ─── Walk the working tree for source files ───────────────────────────────────
|
|
67
|
+
// MUST stay in sync with the indexer's SKIP_DIRS (gsd-t-graph-index.cjs). If
|
|
68
|
+
// freshness walks a dir the indexer skipped, every file in it reads as a phantom
|
|
69
|
+
// ADD on every query → re-index storm (bee-poc/Tekyz-CRM: 9,008 phantom adds from
|
|
70
|
+
// .venv + build bundles). [RULE] freshness-excludes-match-indexer-skipdirs
|
|
64
71
|
const EXCLUDE_DIRS = new Set([
|
|
65
72
|
'node_modules', '.git', 'dist', 'build', 'coverage',
|
|
66
73
|
'.gsd-t', '.claude', '__pycache__', '.next', 'out',
|
|
74
|
+
'.cache', '.nyc_output', '.turbo',
|
|
75
|
+
'.venv', 'venv', 'env', '.dart_tool', 'Pods', 'vendor', '.gradle',
|
|
76
|
+
'.idea', '.vscode', 'tmp', '.tmp', 'site-packages',
|
|
67
77
|
]);
|
|
68
78
|
|
|
69
79
|
function walkTree(dir, results = []) {
|
|
@@ -70,6 +70,11 @@ const SKIP_DIRS = new Set([
|
|
|
70
70
|
'node_modules', '.next', 'dist', 'build', '.git',
|
|
71
71
|
'.cache', '__pycache__', 'coverage', '.nyc_output',
|
|
72
72
|
'out', '.turbo',
|
|
73
|
+
// M96 follow-up: vendored / generated trees that aren't project source and
|
|
74
|
+
// explode the file count (bee-poc had 18K files from .venv + iOS build assets,
|
|
75
|
+
// hanging scip-typescript at 8.5GB). Exclude language vendor/build dirs.
|
|
76
|
+
'.venv', 'venv', 'env', '.dart_tool', 'Pods', 'vendor', '.gradle',
|
|
77
|
+
'.idea', '.vscode', 'tmp', '.tmp', 'site-packages',
|
|
73
78
|
]);
|
|
74
79
|
|
|
75
80
|
// ── Content hash ──────────────────────────────────────────────────────────────
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tekyzinc/gsd-t",
|
|
3
|
-
"version": "4.10.
|
|
3
|
+
"version": "4.10.12",
|
|
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",
|