@tekyzinc/gsd-t 5.14.10 → 5.14.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 CHANGED
@@ -2,6 +2,43 @@
2
2
 
3
3
  All notable changes to GSD-T are documented here. Updated with each release.
4
4
 
5
+ ## [5.14.11] - 2026-08-25
6
+
7
+ ### Fixed — gap analysis harvests the tracker instead of asking for a spec
8
+
9
+ The client-deliverable mode shipped in 5.14.10 stalled a live run: it asked
10
+ for a requirements document that was never going to exist. Root cause in how
11
+ it was built — the proven session was distilled from the operator's turns, and
12
+ the assistant's tool calls, where the actual derivation lived, were skipped
13
+ (26 tracker calls, 21 graph calls, 25 agents).
14
+
15
+ Five corrections, each traced to that session:
16
+
17
+ - **Step 3a HARVEST replaces "parse the provided spec."** The source is the
18
+ tracker project itself. Attachments come first: on the proven run the project
19
+ description was empty and all three requirement documents were attached
20
+ files, one a 1,431-line Statement of Work whose Exhibit B was the real
21
+ specification. Then every task, then the 192 subtasks where the file
22
+ citations live because the parent tasks are coarse rollups, then comments. A
23
+ zero-task view is not an empty project until attachments have been checked.
24
+ - **Step 3b REPAIR the graph.** Build it when missing, re-index when stale,
25
+ repair it when it emits unresolved edges and re-verify anything already
26
+ judged against it. Halt only when it cannot be built at all. The previous
27
+ text failed loud on a missing index, contradicting the standing rule that an
28
+ absent index is repairable.
29
+ - **Tracker status is a flag, never an answer.** On the proven run three of six
30
+ tasks showed open while their own comments named the shipping pull request
31
+ and commits.
32
+ - **Debt mappings resolve through `.gsd-t/techdebt.md`** for real file
33
+ citations; 152 of 154 subtasks had to be matched back to the local register
34
+ because the tracker notes were too thin to judge from.
35
+ - **A red-team finding can overturn a status call**, not just its wording. One
36
+ checker reversed a verdict by reading the code the original judgment had not.
37
+
38
+ - `commands/gsd-t-gap-analysis.md`: Steps 3a and 3b added; Step 2 is skipped in
39
+ client-deliverable mode.
40
+ - `.gsd-t/pseudocode/PseudoCode-GapAnalysis.md`: harvest and graph-repair flows.
41
+
5
42
  ## [5.14.10] - 2026-08-25
6
43
 
7
44
  ### Added — gap analysis can now produce a red-teamed client deliverable
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # GSD-T: Contract-Driven Development for Claude Code
2
2
 
3
- **v5.14.10** - A methodology for reliable, parallelizable development using Claude Code with optional Agent Teams support.
3
+ **v5.14.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.
@@ -7,13 +7,13 @@ You are performing a gap analysis between a provided specification and the exist
7
7
  | Invocation | Mode | Output |
8
8
  |---|---|---|
9
9
  | `/gsd-t-gap-analysis <spec>` | **Report** (default) | `.gsd-t/gap-analysis.md` — Steps 0.5-9 below, unchanged |
10
- | `/gsd-t-gap-analysis <spec> --sheet <url>` | **Client deliverable** | The estimating sheet's columns A-D and M-P, red-teamed — Steps 4a-6c |
10
+ | `/gsd-t-gap-analysis <spec> --sheet <url>` | **Client deliverable** | The estimating sheet's columns A-D and M-P, red-teamed — Steps 3a-6c |
11
11
 
12
12
  **Report mode is the default and is unchanged.** Every existing caller — `/gsd-t-scan`'s next-step offer, `gsd-t-phase.workflow.js` routing — invokes it without `--sheet` and behaves exactly as before.
13
13
 
14
14
  **Client-deliverable mode** is the procedure proven on the HILO AI Scheduling sheet: 141 raw requirements reduced to 33 feature rows carrying 595 checkable claims, judged against the code, then attacked by a red team that found a 70% defect rate in a column a friendly sample had already approved. It writes only the *what and whether* columns; `/gsd-t-estimate` sizes and prices them afterward. Behaviour map: `.gsd-t/pseudocode/PseudoCode-GapAnalysis.md`.
15
15
 
16
- In client-deliverable mode, run Steps 0.5-3 as written (they load context and parse the spec), then branch to Step 4a instead of Step 4.
16
+ In client-deliverable mode, run Step 0.5 and Step 1, then branch to **Step 3a (Harvest)** do NOT run Step 2 (Parse Requirements). Step 2 assumes a finished specification was handed to you; in this mode **there usually is no such document**, and expecting one is how a run stalls asking for a spec that was never going to exist.
17
17
 
18
18
  ## Step 0.5: Scan Freshness Auto-Refresh
19
19
 
@@ -196,10 +196,40 @@ If agent teams are not available or there are fewer than 3 requirements, run seq
196
196
 
197
197
  ---
198
198
 
199
- # Client-deliverable mode (Steps 4a-6c) — only when `--sheet <url>` was given
199
+ # Client-deliverable mode (Steps 3a-6c) — only when `--sheet <url>` was given
200
200
 
201
201
  Report mode skips this whole block and continues at Step 6.
202
202
 
203
+ ## Step 3a: HARVEST the sources — the requirements do not exist yet, you are deriving them
204
+
205
+ **Do not ask the user for a requirements document. In this mode there usually isn't one.** The job is to harvest everything a tracker project holds and synthesize requirements from it. A run that stops to request a spec has misread the task — this exact stall happened on the FRC Predictive run.
206
+
207
+ Harvest, in this order, and report a count for each:
208
+
209
+ 1. **The project's attachments** — NOT its description. On the proven run the description was empty and all three requirement documents were attached files. Pull `attachments?parent=<project_gid>`, then each attachment's `download_url`, and read them. A Statement of Work PDF was the single richest source: **1,431 lines, whose Exhibit B (~1,000 lines) was the real specification.**
210
+ 2. **Every task** — name, notes, and status.
211
+ 3. **Every subtask.** Parent tasks are usually coarse rollups; the real detail and the file citations live one level down. The proven run pulled **192 subtasks** because *"the rollups are too coarse."* One rollup alone carried 46 findings.
212
+ 4. **Task comments.** One Bugs section — a ticket plus three pull-request comments — drove several rows by itself.
213
+ 5. **Any spec documents in the repo**, if the user named one.
214
+
215
+ **An empty section list or a zero-task view is not an empty project.** Check attachments before concluding anything is missing.
216
+
217
+ **If a genuinely required source cannot be reached** — no credentials, a 403, an attachment that will not download — say exactly which one and stop. That is a blocked run. "The project has no tasks" is not, until attachments have been checked too.
218
+
219
+ **Tracker status is unreliable — never carry it through as truth.** On the proven run *"3 of the 6 tasks still show open, but their comments say implemented in PR #4386 with named commits."* Every status is re-decided against the code in Step 5a; a tracker status only ever becomes a flag that the tracker disagrees with reality.
220
+
221
+ ## Step 3b: REPAIR the graph before you rely on it
222
+
223
+ The judgment in Step 5a is only as good as the index it queries.
224
+
225
+ 1. `gsd-t graph status`.
226
+ 2. **Missing → build it**: `gsd-t graph index` (allow up to 900s on a large repo). An absent index is repairable, never a reason to stop.
227
+ 3. **Stale → re-index** the touched set.
228
+ 4. **Broken → repair, then re-verify anything already judged against it.** The proven run found its own index producing *"unresolved call edges"* and had to re-check the Partial/Implemented calls that hinge on whether code is actually wired in.
229
+ 5. **Cannot build it → HALT.** Do not answer structural questions by grep; grep matches text, and the question is about relationships.
230
+
231
+ Report which of these happened. A silent "the graph was fine" claim is not acceptable — say whether it was built, re-indexed, repaired, or already current.
232
+
203
233
  ## Step 4a: Strip everything that isn't buildable — HUMAN-CONFIRMED
204
234
 
205
235
  **This step removes most of the input, and getting it wrong poisons every step after it.**
@@ -252,7 +282,11 @@ Write the verdict to **column M**, and to **column N** what works today versus w
252
282
  ## Step 5b: References and impacting debt
253
283
 
254
284
  - **Column O** — where each claim came from: `Requirements doc (6 reqs) · Asana task · PR #4386`. Short clickable names, each token its own link. Never a wall of file paths.
255
- - **Column P** — open Extreme/Critical findings from `.gsd-t/techdebt.md` that would hit this feature. **Judge by the code each finding cites, not by keyword match.**
285
+ - **Column P** — open Extreme/Critical findings that would hit this feature. **Judge by the code each finding cites, not by keyword match.**
286
+
287
+ **Where the findings come from, and why the tracker alone is not enough:** pull the hardening project's open items at **subtask level** — the parent tasks are rollups. Then **match each subtask back to `.gsd-t/techdebt.md`** for its real file citations. On the proven run the tracker notes were too thin to judge from, and 152 of 154 subtasks had to be resolved against the local register to get the file paths that make the mapping decidable. Of 154 open subtasks, 28 genuinely touched the feature set.
288
+
289
+ A feature with no findings is a real answer, not a miss — usually an unbuilt feature with no shipped code for a defect to land on. Say so rather than leaving the cell ambiguous.
256
290
 
257
291
  ## Step 6a: RED TEAM the sheet — NOT a review
258
292
 
@@ -276,6 +310,8 @@ Verdict per checker: `FAIL` (defects listed) or `GRUDGING-PASS` (searched, found
276
310
 
277
311
  **Widening rule:** if **3 or more** of a batch of 20 are wrong, that column goes to every-claim. The batch proved the column is unreliable; sampling further only hides the rest.
278
312
 
313
+ **A red-team finding can overturn the analysis, not just its wording.** On the proven run a checker reversed a substantive verdict: *"My reconciliation claimed aircraft ranking didn't exist. The code does build a real ordered list."* When a checker contradicts a status call, the checker's evidence wins unless you can cite code that refutes it — the checker read the code fresh, the original judgment did not.
314
+
279
315
  **One checker does nothing but hunt cross-column contradictions** — a row whose column C asserts a capability in present tense while column M lists that same capability as the row's defining gap. No single-column checker can see this; it is the defect class that reached the client sheet in the proven run.
280
316
 
281
317
  **All checkers returning clean is a FAILED check, not a clean sheet.** The proven run had one clean column out of six. An all-clean result means the framing was too gentle: re-run with sharper prompts. Do NOT report a clean sheet on the first all-pass.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tekyzinc/gsd-t",
3
- "version": "5.14.10",
3
+ "version": "5.14.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",