@opengsd/gsd-core 1.6.0-rc.1 → 1.6.0-rc.2

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.
Files changed (48) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/agents/gsd-roadmapper.md +6 -0
  3. package/bin/install.js +92 -332
  4. package/commands/gsd/capture.md +5 -1
  5. package/gemini-extension.json +1 -1
  6. package/gsd-core/bin/gsd-tools.cjs +18 -3
  7. package/gsd-core/bin/lib/adr-parser.cjs +21 -6
  8. package/gsd-core/bin/lib/capability-registry.cjs +48 -48
  9. package/gsd-core/bin/lib/commands.cjs +247 -0
  10. package/gsd-core/bin/lib/config-loader.cjs +6 -0
  11. package/gsd-core/bin/lib/config.cjs +6 -0
  12. package/gsd-core/bin/lib/frontmatter.cjs +7 -3
  13. package/gsd-core/bin/lib/phase-id.cjs +25 -11
  14. package/gsd-core/bin/lib/phase.cjs +4 -4
  15. package/gsd-core/bin/lib/probe-core.cjs +7 -0
  16. package/gsd-core/bin/lib/prohibition-enforcement.cjs +59 -26
  17. package/gsd-core/bin/lib/roadmap-command-router.cjs +16 -3
  18. package/gsd-core/bin/lib/roadmap-parser.cjs +29 -8
  19. package/gsd-core/bin/lib/roadmap-upgrade.cjs +47 -17
  20. package/gsd-core/bin/lib/roadmap.cjs +5 -2
  21. package/gsd-core/bin/lib/runtime-artifact-conversion.cjs +423 -3
  22. package/gsd-core/bin/lib/runtime-artifact-install-plan.cjs +77 -0
  23. package/gsd-core/bin/lib/runtime-artifact-layout.cjs +1 -28
  24. package/gsd-core/bin/lib/runtime-name-policy.cjs +44 -0
  25. package/gsd-core/bin/lib/shell-command-projection.cjs +55 -1
  26. package/gsd-core/bin/lib/surface.cjs +12 -19
  27. package/gsd-core/bin/lib/validate.cjs +5 -2
  28. package/gsd-core/bin/lib/verify.cjs +11 -2
  29. package/gsd-core/bin/lib/worktree-safety.cjs +202 -0
  30. package/gsd-core/bin/shared/config-defaults.manifest.json +2 -1
  31. package/gsd-core/bin/shared/config-schema.manifest.json +1 -0
  32. package/gsd-core/references/context-budget.md +8 -8
  33. package/gsd-core/references/execute-phase-context-guard.md +16 -0
  34. package/gsd-core/references/planning-config.md +1 -0
  35. package/gsd-core/references/prohibition-probe.md +15 -9
  36. package/gsd-core/workflows/autonomous.md +33 -33
  37. package/gsd-core/workflows/diagnose-issues.md +6 -1
  38. package/gsd-core/workflows/execute-phase.md +8 -6
  39. package/gsd-core/workflows/help/modes/full.md +10 -0
  40. package/gsd-core/workflows/list-seeds.md +63 -0
  41. package/gsd-core/workflows/manager.md +37 -37
  42. package/gsd-core/workflows/pr-branch.md +156 -0
  43. package/gsd-core/workflows/quick.md +6 -1
  44. package/gsd-core/workflows/review.md +10 -2
  45. package/gsd-core/workflows/spec-phase.md +8 -3
  46. package/gsd-core/workflows/verify-phase.md +2 -2
  47. package/package.json +4 -1
  48. package/scripts/prompt-injection-scan.sh +1 -0
@@ -25,6 +25,7 @@
25
25
  * generate-slug <text> Convert text to URL-safe slug
26
26
  * current-timestamp [format] Get timestamp (full|date|filename)
27
27
  * list-todos [area] Count and enumerate pending todos
28
+ * list-seeds [status] List captured seeds (optional status filter)
28
29
  * verify-path-exists <path> Check file/directory existence
29
30
  * config-ensure-section Initialize .planning/config.json
30
31
  * history-digest Aggregate all SUMMARY.md data
@@ -631,12 +632,12 @@ async function main() {
631
632
  // discovery; previously it was a partial subset that didn't include
632
633
  // phase / roadmap / milestone / progress / etc.
633
634
  const TOP_LEVEL_USAGE = 'Usage: gsd-tools <command> [args] [--raw] [--pick <field>] [--cwd <path>] [--ws <name>] [--json-errors]\n' +
634
- 'Commands: agent, agent-skills, audit-open, audit-uat, check, check-commit, commit, commit-to-subrepo, ' +
635
+ 'Commands: agent, agent-skills, audit-open, audit-uat, check, check-commit, commit, commit-to-subrepo, pr-subrepo, ' +
635
636
  'config-ensure-section, config-get, config-new-project, config-path, config-set, migrate-config, ' +
636
637
  'current-timestamp, detect-custom-files, docs-init, drift-guard, effort, extract-messages, find-phase, ' +
637
638
  'from-gsd2, frontmatter, gap-analysis, generate-claude-md, generate-claude-profile, ' +
638
639
  'generate-dev-preferences, generate-slug, graphify, history-digest, init, intel, ' +
639
- 'capability, classify-confidence, git, learnings, list-todos, loop, milestone, package-legitimacy, phase, phase-plan-index, phases, profile-questionnaire, ' +
640
+ 'capability, classify-confidence, git, learnings, list-seeds, list-todos, loop, milestone, package-legitimacy, phase, phase-plan-index, phases, profile-questionnaire, ' +
640
641
  'profile-sample, progress, prompt-budget, requirements, research-plan, research-store, resolve-granularity, resolve-model, roadmap, scaffold, state, ' +
641
642
  'task, template, user-story, validate, verify, verify-path-exists, verify-summary, workstream, worktree\n\n' +
642
643
  'Global flags:\n' +
@@ -959,6 +960,13 @@ async function runCommand(command, args, cwd, raw, defaultValue, originalCommand
959
960
  break;
960
961
  }
961
962
 
963
+ case 'pr-subrepo': {
964
+ const message = args[1];
965
+ const { repo, branch } = parseNamedArgs(args, ['repo', 'branch']);
966
+ commands.cmdPrSubrepo(cwd, repo, branch, message, raw);
967
+ break;
968
+ }
969
+
962
970
  case 'verify-summary': {
963
971
  const summaryPath = args[1];
964
972
  const countIndex = args.indexOf('--check-count');
@@ -1100,6 +1108,11 @@ async function runCommand(command, args, cwd, raw, defaultValue, originalCommand
1100
1108
  break;
1101
1109
  }
1102
1110
 
1111
+ case 'list-seeds': {
1112
+ commands.cmdListSeeds(cwd, args[1], raw);
1113
+ break;
1114
+ }
1115
+
1103
1116
  case 'verify-path-exists': {
1104
1117
  commands.cmdVerifyPathExists(cwd, args[1], raw);
1105
1118
  break;
@@ -2128,6 +2141,8 @@ async function runCommand(command, args, cwd, raw, defaultValue, originalCommand
2128
2141
  const worktreeSafety = require('./lib/worktree-safety.cjs');
2129
2142
  if (subcommand === 'cleanup-wave') {
2130
2143
  worktreeSafety.cmdWorktreeCleanupWave(cwd, args.slice(2));
2144
+ } else if (subcommand === 'record-agent') {
2145
+ worktreeSafety.cmdWorktreeRecordAgent(cwd, args.slice(2));
2131
2146
  } else if (subcommand === 'reap-orphans') {
2132
2147
  worktreeSafety.cmdWorktreeReapOrphans(cwd);
2133
2148
  } else if (subcommand === 'base-check') {
@@ -2135,7 +2150,7 @@ async function runCommand(command, args, cwd, raw, defaultValue, originalCommand
2135
2150
  } else if (subcommand === 'set-baseref') {
2136
2151
  require('./lib/worktree-base-ref.cjs').cmdWorktreeSetBaseRef(cwd, args.slice(2));
2137
2152
  } else {
2138
- error('Unknown worktree subcommand. Available: cleanup-wave, reap-orphans, base-check, set-baseref', ERROR_REASON.SDK_UNKNOWN_COMMAND);
2153
+ error('Unknown worktree subcommand. Available: cleanup-wave, record-agent, reap-orphans, base-check, set-baseref', ERROR_REASON.SDK_UNKNOWN_COMMAND);
2139
2154
  }
2140
2155
  break;
2141
2156
  }
@@ -58,7 +58,6 @@ const CANONICAL_HEADERS = {
58
58
  'candidates',
59
59
  'approaches considered',
60
60
  'variants',
61
- 'trade-offs',
62
61
  'pros and cons of the options',
63
62
  'discussion',
64
63
  ],
@@ -190,15 +189,31 @@ function normalizeAdrHeader(raw) {
190
189
  .replace(/[^\w\s]/g, '')
191
190
  .trim();
192
191
  }
193
- function classifyHeader(normalizedHeader) {
192
+ // Normalized synonym index (audit M7). classifyHeader receives an ALREADY-normalized
193
+ // header (via normalizeAdrHeader), but historically compared it against the RAW synonym
194
+ // strings. Because normalizeAdrHeader collapses [\s:._-]+ to a space and strips [^\w\s],
195
+ // any synonym carrying a hyphen/apostrophe/etc. ('trade-offs', "won't do", 'post-grilling')
196
+ // could never match a normalized header — it was silently dead, and its ADR section went
197
+ // unmapped. Normalizing BOTH sides closes that abstraction asymmetry once, so every synonym
198
+ // (current and future) is reachable regardless of punctuation. Precomputed at module load to
199
+ // avoid re-normalizing the whole table per call; insertion order is preserved so first-match-
200
+ // wins and the exact-then-prefix precedence stay identical to the prior raw-compare loop.
201
+ const _NORMALIZED_SYNONYM_INDEX = (() => {
202
+ const index = [];
194
203
  for (const [canonical, synonyms] of Object.entries(CANONICAL_HEADERS)) {
195
204
  for (const synonym of synonyms) {
196
- if (normalizedHeader === synonym)
197
- return canonical;
198
- if (normalizedHeader.startsWith(`${synonym} `))
199
- return canonical;
205
+ index.push([normalizeAdrHeader(synonym), canonical]);
200
206
  }
201
207
  }
208
+ return index;
209
+ })();
210
+ function classifyHeader(normalizedHeader) {
211
+ for (const [synonym, canonical] of _NORMALIZED_SYNONYM_INDEX) {
212
+ if (normalizedHeader === synonym)
213
+ return canonical;
214
+ if (normalizedHeader.startsWith(`${synonym} `))
215
+ return canonical;
216
+ }
202
217
  return null;
203
218
  }
204
219
  function splitEntries(blockText) {
@@ -10,7 +10,7 @@ const capabilities = {
10
10
  "ai-integration": {
11
11
  "id": "ai-integration",
12
12
  "role": "feature",
13
- "version": "1.6.0-rc.1",
13
+ "version": "1.6.0-rc.2",
14
14
  "title": "AI design contract",
15
15
  "description": "AI-SPEC design contract workflow for phases that build AI systems; owns the AI integration command, agents, and workflow.ai_integration_phase activation key.",
16
16
  "tier": "full",
@@ -63,7 +63,7 @@ const capabilities = {
63
63
  "antigravity": {
64
64
  "id": "antigravity",
65
65
  "role": "runtime",
66
- "version": "1.6.0-rc.1",
66
+ "version": "1.6.0-rc.2",
67
67
  "title": "Antigravity",
68
68
  "description": "Google Antigravity IDE — nested under ~/.gemini/antigravity; probed across 1.x and 2.x layouts; Gemini hook event dialect; nested skill layout; tier-1 support.",
69
69
  "tier": "core",
@@ -123,7 +123,7 @@ const capabilities = {
123
123
  "audit": {
124
124
  "id": "audit",
125
125
  "role": "feature",
126
- "version": "1.6.0-rc.1",
126
+ "version": "1.6.0-rc.2",
127
127
  "title": "Audit",
128
128
  "description": "Open-artifact audit and UAT-gap audit for milestone close gates; exposes `gsd-tools audit-uat` (cross-phase UAT outstanding items) and `gsd-tools audit-open` (structured open-artifact scan across debug, tasks, threads, todos, seeds, UAT, verification, context-questions).",
129
129
  "tier": "full",
@@ -160,7 +160,7 @@ const capabilities = {
160
160
  "augment": {
161
161
  "id": "augment",
162
162
  "role": "runtime",
163
- "version": "1.6.0-rc.1",
163
+ "version": "1.6.0-rc.2",
164
164
  "title": "Augment Code",
165
165
  "description": "Augment Code CLI — commands + nested-skill artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.",
166
166
  "tier": "core",
@@ -229,7 +229,7 @@ const capabilities = {
229
229
  "claude": {
230
230
  "id": "claude",
231
231
  "role": "runtime",
232
- "version": "1.6.0-rc.1",
232
+ "version": "1.6.0-rc.2",
233
233
  "title": "Claude Code",
234
234
  "description": "Anthropic Claude Code — primary development runtime; tier-1 support with full hook surface and skills-based global install.",
235
235
  "tier": "core",
@@ -295,7 +295,7 @@ const capabilities = {
295
295
  "cline": {
296
296
  "id": "cline",
297
297
  "role": "runtime",
298
- "version": "1.6.0-rc.1",
298
+ "version": "1.6.0-rc.2",
299
299
  "title": "Cline",
300
300
  "description": "Cline (VS Code extension) — global-only nested-skill layout; cline-rules hook surface (.clinerules); no hook events emitted; tier-2 support.",
301
301
  "tier": "core",
@@ -338,7 +338,7 @@ const capabilities = {
338
338
  "code-review": {
339
339
  "id": "code-review",
340
340
  "role": "feature",
341
- "version": "1.6.0-rc.1",
341
+ "version": "1.6.0-rc.2",
342
342
  "title": "Code review",
343
343
  "description": "Source-file code review and review-fix workflow support for completed execution work.",
344
344
  "tier": "full",
@@ -399,7 +399,7 @@ const capabilities = {
399
399
  "codebuddy": {
400
400
  "id": "codebuddy",
401
401
  "role": "runtime",
402
- "version": "1.6.0-rc.1",
402
+ "version": "1.6.0-rc.2",
403
403
  "title": "CodeBuddy",
404
404
  "description": "CodeBuddy (Tencent) — converted commands + skills artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.",
405
405
  "tier": "core",
@@ -468,7 +468,7 @@ const capabilities = {
468
468
  "codex": {
469
469
  "id": "codex",
470
470
  "role": "runtime",
471
- "version": "1.6.0-rc.1",
471
+ "version": "1.6.0-rc.2",
472
472
  "title": "OpenAI Codex CLI",
473
473
  "description": "OpenAI Codex CLI — shell-var command style; per-agent sandbox tiers; config.toml + hooks.json hook surface; tier-1 support.",
474
474
  "tier": "core",
@@ -521,7 +521,7 @@ const capabilities = {
521
521
  "copilot": {
522
522
  "id": "copilot",
523
523
  "role": "runtime",
524
- "version": "1.6.0-rc.1",
524
+ "version": "1.6.0-rc.2",
525
525
  "title": "GitHub Copilot",
526
526
  "description": "GitHub Copilot (VS Code) — markdown config format; copilot-inline hook surface; no hook events emitted; flat skill nesting (unconfirmed recursive loader); tier-2 support.",
527
527
  "tier": "core",
@@ -574,7 +574,7 @@ const capabilities = {
574
574
  "cursor": {
575
575
  "id": "cursor",
576
576
  "role": "runtime",
577
- "version": "1.6.0-rc.1",
577
+ "version": "1.6.0-rc.2",
578
578
  "title": "Cursor",
579
579
  "description": "Cursor IDE — skills + converted commands artifact layout; hooks.json surface; Claude hook event dialect; recursive skill loader (flat nesting); tier-2 support.",
580
580
  "tier": "core",
@@ -643,7 +643,7 @@ const capabilities = {
643
643
  "drift": {
644
644
  "id": "drift",
645
645
  "role": "feature",
646
- "version": "1.6.0-rc.1",
646
+ "version": "1.6.0-rc.2",
647
647
  "title": "Drift detection gates",
648
648
  "description": "Post-execution drift detection gates that run after each wave completes. Provides two gates at execute:wave:post: a blocking schema drift gate (detects schema files changed without a database push) and a non-blocking codebase drift gate (detects structural additions not reflected in STRUCTURE.md).",
649
649
  "tier": "full",
@@ -707,7 +707,7 @@ const capabilities = {
707
707
  "gap-analysis": {
708
708
  "id": "gap-analysis",
709
709
  "role": "feature",
710
- "version": "1.6.0-rc.1",
710
+ "version": "1.6.0-rc.2",
711
711
  "title": "Post-planning gap analysis",
712
712
  "description": "Proactive, non-blocking post-planning coverage report. After all PLAN.md files are generated, cross-references every REQ-ID and D-ID from REQUIREMENTS.md and CONTEXT.md against plan bodies. Emits a Source | Item | Status table. Does not block phase advancement.",
713
713
  "tier": "standard",
@@ -748,7 +748,7 @@ const capabilities = {
748
748
  "gemini": {
749
749
  "id": "gemini",
750
750
  "role": "runtime",
751
- "version": "1.6.0-rc.1",
751
+ "version": "1.6.0-rc.2",
752
752
  "title": "Gemini CLI",
753
753
  "description": "Google Gemini CLI — commands-only artifact layout (TOML); Gemini hook event dialect; settings-json hook surface; tier-2 support.",
754
754
  "tier": "core",
@@ -805,7 +805,7 @@ const capabilities = {
805
805
  "graphify": {
806
806
  "id": "graphify",
807
807
  "role": "feature",
808
- "version": "1.6.0-rc.1",
808
+ "version": "1.6.0-rc.2",
809
809
  "title": "Knowledge graph",
810
810
  "description": "Build, query, and inspect the project knowledge graph in `.planning/graphs/`; exposes graphify CLI subcommands (build, query, status, diff) and the /gsd-graphify skill.",
811
811
  "tier": "full",
@@ -846,7 +846,7 @@ const capabilities = {
846
846
  "hermes": {
847
847
  "id": "hermes",
848
848
  "role": "runtime",
849
- "version": "1.6.0-rc.1",
849
+ "version": "1.6.0-rc.2",
850
850
  "title": "Hermes Agent",
851
851
  "description": "Hermes Agent (NousResearch) — skills nest under skills/gsd/ category bucket; nested skill layout; settings-json hook surface; Claude hook event dialect; tier-2 support.",
852
852
  "tier": "core",
@@ -899,7 +899,7 @@ const capabilities = {
899
899
  "intel": {
900
900
  "id": "intel",
901
901
  "role": "feature",
902
- "version": "1.6.0-rc.1",
902
+ "version": "1.6.0-rc.2",
903
903
  "title": "Codebase intelligence",
904
904
  "description": "Code-intelligence store for codebase querying, diff, snapshot, and API-surface extraction; exposes `gsd-tools intel` subcommands (query, status, update, diff, snapshot, patch-meta, validate, extract-exports, api-surface) and backs `/gsd-map-codebase` and `gsd-intel-updater`.",
905
905
  "tier": "full",
@@ -951,7 +951,7 @@ const capabilities = {
951
951
  "kilo": {
952
952
  "id": "kilo",
953
953
  "role": "runtime",
954
- "version": "1.6.0-rc.1",
954
+ "version": "1.6.0-rc.2",
955
955
  "title": "Kilo Code",
956
956
  "description": "Kilo Code — XDG-based config dir; global skills at ~/.kilo/skills (separate from XDG config); flat command/ + skills artifact layout; no lifecycle hook registration; tier-2 support.",
957
957
  "tier": "core",
@@ -1026,7 +1026,7 @@ const capabilities = {
1026
1026
  "kimi": {
1027
1027
  "id": "kimi",
1028
1028
  "role": "runtime",
1029
- "version": "1.6.0-rc.1",
1029
+ "version": "1.6.0-rc.2",
1030
1030
  "title": "Kimi CLI",
1031
1031
  "description": "Kimi CLI (Moonshot AI) — generic agents root at ~/.config/agents; skills + kimi-agents artifact layout; no hook surface; no hook events; tier-2 support.",
1032
1032
  "tier": "core",
@@ -1082,7 +1082,7 @@ const capabilities = {
1082
1082
  "mempalace": {
1083
1083
  "id": "mempalace",
1084
1084
  "role": "feature",
1085
- "version": "1.6.0-rc.1",
1085
+ "version": "1.6.0-rc.2",
1086
1086
  "title": "MemPalace memory",
1087
1087
  "description": "Cross-session, cross-project memory: deliberate recall before discuss/plan and verbatim capture + temporal-KG sync at phase boundaries, via the MemPalace MCP server and CLI.",
1088
1088
  "tier": "full",
@@ -1256,7 +1256,7 @@ const capabilities = {
1256
1256
  "nyquist": {
1257
1257
  "id": "nyquist",
1258
1258
  "role": "feature",
1259
- "version": "1.6.0-rc.1",
1259
+ "version": "1.6.0-rc.2",
1260
1260
  "title": "Nyquist validation",
1261
1261
  "description": "Validation coverage audit that maps executed work back to tests and manual-only evidence.",
1262
1262
  "tier": "full",
@@ -1306,7 +1306,7 @@ const capabilities = {
1306
1306
  "opencode": {
1307
1307
  "id": "opencode",
1308
1308
  "role": "runtime",
1309
- "version": "1.6.0-rc.1",
1309
+ "version": "1.6.0-rc.2",
1310
1310
  "title": "OpenCode",
1311
1311
  "description": "OpenCode — XDG-based config dir; flat command/ + skills artifact layout; settings-json config format; no lifecycle hook registration; tier-2 support.",
1312
1312
  "tier": "core",
@@ -1376,7 +1376,7 @@ const capabilities = {
1376
1376
  "pattern-mapper": {
1377
1377
  "id": "pattern-mapper",
1378
1378
  "role": "feature",
1379
- "version": "1.6.0-rc.1",
1379
+ "version": "1.6.0-rc.2",
1380
1380
  "title": "Pattern mapping",
1381
1381
  "description": "Optional codebase-pattern mapping before planning; owns the pattern mapper agent and workflow.pattern_mapper activation key.",
1382
1382
  "tier": "full",
@@ -1430,7 +1430,7 @@ const capabilities = {
1430
1430
  "profile-pipeline": {
1431
1431
  "id": "profile-pipeline",
1432
1432
  "role": "feature",
1433
- "version": "1.6.0-rc.1",
1433
+ "version": "1.6.0-rc.2",
1434
1434
  "title": "Developer profiling pipeline",
1435
1435
  "description": "Developer behavioral profiling from Claude Code session history; scans session JSONL files, extracts and samples user messages, and generates profile artifacts (USER-PROFILE.md, dev-preferences.md, CLAUDE.md sections). Exposes eight `gsd-tools` commands: scan-sessions, extract-messages, profile-sample (pipeline phase) and write-profile, profile-questionnaire, generate-dev-preferences, generate-claude-profile, generate-claude-md (output phase). Backs the /gsd-profile-user skill and gsd-user-profiler agent.",
1436
1436
  "tier": "full",
@@ -1507,7 +1507,7 @@ const capabilities = {
1507
1507
  "qwen": {
1508
1508
  "id": "qwen",
1509
1509
  "role": "runtime",
1510
- "version": "1.6.0-rc.1",
1510
+ "version": "1.6.0-rc.2",
1511
1511
  "title": "Qwen Code",
1512
1512
  "description": "Qwen Code (Alibaba) — nested-skill artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.",
1513
1513
  "tier": "core",
@@ -1564,7 +1564,7 @@ const capabilities = {
1564
1564
  "research": {
1565
1565
  "id": "research",
1566
1566
  "role": "feature",
1567
- "version": "1.6.0-rc.1",
1567
+ "version": "1.6.0-rc.2",
1568
1568
  "title": "Phase research",
1569
1569
  "description": "Optional phase research before planning; owns the phase researcher agent and workflow.research activation key.",
1570
1570
  "tier": "standard",
@@ -1616,7 +1616,7 @@ const capabilities = {
1616
1616
  "schema-gate": {
1617
1617
  "id": "schema-gate",
1618
1618
  "role": "feature",
1619
- "version": "1.6.0-rc.1",
1619
+ "version": "1.6.0-rc.2",
1620
1620
  "title": "Schema push detection gate",
1621
1621
  "description": "Detects ORM schema-relevant files in the phase scope during planning and injects a mandatory [BLOCKING] schema push task into the plan. Prevents false-positive verification where build/types pass because TypeScript types come from config, not the live database.",
1622
1622
  "tier": "full",
@@ -1662,7 +1662,7 @@ const capabilities = {
1662
1662
  "security": {
1663
1663
  "id": "security",
1664
1664
  "role": "feature",
1665
- "version": "1.6.0-rc.1",
1665
+ "version": "1.6.0-rc.2",
1666
1666
  "title": "Security enforcement",
1667
1667
  "description": "Threat mitigation verification and ship-time security blocking for phases with security enforcement enabled.",
1668
1668
  "tier": "full",
@@ -1761,7 +1761,7 @@ const capabilities = {
1761
1761
  "tdd": {
1762
1762
  "id": "tdd",
1763
1763
  "role": "feature",
1764
- "version": "1.6.0-rc.1",
1764
+ "version": "1.6.0-rc.2",
1765
1765
  "title": "Test-driven development",
1766
1766
  "description": "Injects TDD heuristics into the planner and enforces RED/GREEN gate compliance on type:tdd plans after execution. Owns workflow.tdd_mode; the --tdd CLI flag is the ephemeral override.",
1767
1767
  "tier": "full",
@@ -1814,7 +1814,7 @@ const capabilities = {
1814
1814
  "trae": {
1815
1815
  "id": "trae",
1816
1816
  "role": "runtime",
1817
- "version": "1.6.0-rc.1",
1817
+ "version": "1.6.0-rc.2",
1818
1818
  "title": "Trae IDE",
1819
1819
  "description": "Trae IDE — nested-skill artifact layout; no hook surface (profile-marker-only config); tier-2 support.",
1820
1820
  "tier": "core",
@@ -1866,7 +1866,7 @@ const capabilities = {
1866
1866
  "ui": {
1867
1867
  "id": "ui",
1868
1868
  "role": "feature",
1869
- "version": "1.6.0-rc.1",
1869
+ "version": "1.6.0-rc.2",
1870
1870
  "title": "UI design contracts",
1871
1871
  "description": "UI-SPEC design contract + retrospective UI audit for frontend phases.",
1872
1872
  "tier": "full",
@@ -1961,7 +1961,7 @@ const capabilities = {
1961
1961
  "windsurf": {
1962
1962
  "id": "windsurf",
1963
1963
  "role": "runtime",
1964
- "version": "1.6.0-rc.1",
1964
+ "version": "1.6.0-rc.2",
1965
1965
  "title": "Windsurf",
1966
1966
  "description": "Windsurf (Codeium) — nested under ~/.codeium/windsurf; skills-only artifact layout; no hook surface; no hook events; tier-2 support.",
1967
1967
  "tier": "core",
@@ -2721,7 +2721,7 @@ const runtimes = {
2721
2721
  "antigravity": {
2722
2722
  "id": "antigravity",
2723
2723
  "role": "runtime",
2724
- "version": "1.6.0-rc.1",
2724
+ "version": "1.6.0-rc.2",
2725
2725
  "title": "Antigravity",
2726
2726
  "description": "Google Antigravity IDE — nested under ~/.gemini/antigravity; probed across 1.x and 2.x layouts; Gemini hook event dialect; nested skill layout; tier-1 support.",
2727
2727
  "tier": "core",
@@ -2781,7 +2781,7 @@ const runtimes = {
2781
2781
  "augment": {
2782
2782
  "id": "augment",
2783
2783
  "role": "runtime",
2784
- "version": "1.6.0-rc.1",
2784
+ "version": "1.6.0-rc.2",
2785
2785
  "title": "Augment Code",
2786
2786
  "description": "Augment Code CLI — commands + nested-skill artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.",
2787
2787
  "tier": "core",
@@ -2850,7 +2850,7 @@ const runtimes = {
2850
2850
  "claude": {
2851
2851
  "id": "claude",
2852
2852
  "role": "runtime",
2853
- "version": "1.6.0-rc.1",
2853
+ "version": "1.6.0-rc.2",
2854
2854
  "title": "Claude Code",
2855
2855
  "description": "Anthropic Claude Code — primary development runtime; tier-1 support with full hook surface and skills-based global install.",
2856
2856
  "tier": "core",
@@ -2916,7 +2916,7 @@ const runtimes = {
2916
2916
  "cline": {
2917
2917
  "id": "cline",
2918
2918
  "role": "runtime",
2919
- "version": "1.6.0-rc.1",
2919
+ "version": "1.6.0-rc.2",
2920
2920
  "title": "Cline",
2921
2921
  "description": "Cline (VS Code extension) — global-only nested-skill layout; cline-rules hook surface (.clinerules); no hook events emitted; tier-2 support.",
2922
2922
  "tier": "core",
@@ -2959,7 +2959,7 @@ const runtimes = {
2959
2959
  "codebuddy": {
2960
2960
  "id": "codebuddy",
2961
2961
  "role": "runtime",
2962
- "version": "1.6.0-rc.1",
2962
+ "version": "1.6.0-rc.2",
2963
2963
  "title": "CodeBuddy",
2964
2964
  "description": "CodeBuddy (Tencent) — converted commands + skills artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.",
2965
2965
  "tier": "core",
@@ -3028,7 +3028,7 @@ const runtimes = {
3028
3028
  "codex": {
3029
3029
  "id": "codex",
3030
3030
  "role": "runtime",
3031
- "version": "1.6.0-rc.1",
3031
+ "version": "1.6.0-rc.2",
3032
3032
  "title": "OpenAI Codex CLI",
3033
3033
  "description": "OpenAI Codex CLI — shell-var command style; per-agent sandbox tiers; config.toml + hooks.json hook surface; tier-1 support.",
3034
3034
  "tier": "core",
@@ -3081,7 +3081,7 @@ const runtimes = {
3081
3081
  "copilot": {
3082
3082
  "id": "copilot",
3083
3083
  "role": "runtime",
3084
- "version": "1.6.0-rc.1",
3084
+ "version": "1.6.0-rc.2",
3085
3085
  "title": "GitHub Copilot",
3086
3086
  "description": "GitHub Copilot (VS Code) — markdown config format; copilot-inline hook surface; no hook events emitted; flat skill nesting (unconfirmed recursive loader); tier-2 support.",
3087
3087
  "tier": "core",
@@ -3134,7 +3134,7 @@ const runtimes = {
3134
3134
  "cursor": {
3135
3135
  "id": "cursor",
3136
3136
  "role": "runtime",
3137
- "version": "1.6.0-rc.1",
3137
+ "version": "1.6.0-rc.2",
3138
3138
  "title": "Cursor",
3139
3139
  "description": "Cursor IDE — skills + converted commands artifact layout; hooks.json surface; Claude hook event dialect; recursive skill loader (flat nesting); tier-2 support.",
3140
3140
  "tier": "core",
@@ -3203,7 +3203,7 @@ const runtimes = {
3203
3203
  "gemini": {
3204
3204
  "id": "gemini",
3205
3205
  "role": "runtime",
3206
- "version": "1.6.0-rc.1",
3206
+ "version": "1.6.0-rc.2",
3207
3207
  "title": "Gemini CLI",
3208
3208
  "description": "Google Gemini CLI — commands-only artifact layout (TOML); Gemini hook event dialect; settings-json hook surface; tier-2 support.",
3209
3209
  "tier": "core",
@@ -3260,7 +3260,7 @@ const runtimes = {
3260
3260
  "hermes": {
3261
3261
  "id": "hermes",
3262
3262
  "role": "runtime",
3263
- "version": "1.6.0-rc.1",
3263
+ "version": "1.6.0-rc.2",
3264
3264
  "title": "Hermes Agent",
3265
3265
  "description": "Hermes Agent (NousResearch) — skills nest under skills/gsd/ category bucket; nested skill layout; settings-json hook surface; Claude hook event dialect; tier-2 support.",
3266
3266
  "tier": "core",
@@ -3313,7 +3313,7 @@ const runtimes = {
3313
3313
  "kilo": {
3314
3314
  "id": "kilo",
3315
3315
  "role": "runtime",
3316
- "version": "1.6.0-rc.1",
3316
+ "version": "1.6.0-rc.2",
3317
3317
  "title": "Kilo Code",
3318
3318
  "description": "Kilo Code — XDG-based config dir; global skills at ~/.kilo/skills (separate from XDG config); flat command/ + skills artifact layout; no lifecycle hook registration; tier-2 support.",
3319
3319
  "tier": "core",
@@ -3388,7 +3388,7 @@ const runtimes = {
3388
3388
  "kimi": {
3389
3389
  "id": "kimi",
3390
3390
  "role": "runtime",
3391
- "version": "1.6.0-rc.1",
3391
+ "version": "1.6.0-rc.2",
3392
3392
  "title": "Kimi CLI",
3393
3393
  "description": "Kimi CLI (Moonshot AI) — generic agents root at ~/.config/agents; skills + kimi-agents artifact layout; no hook surface; no hook events; tier-2 support.",
3394
3394
  "tier": "core",
@@ -3444,7 +3444,7 @@ const runtimes = {
3444
3444
  "opencode": {
3445
3445
  "id": "opencode",
3446
3446
  "role": "runtime",
3447
- "version": "1.6.0-rc.1",
3447
+ "version": "1.6.0-rc.2",
3448
3448
  "title": "OpenCode",
3449
3449
  "description": "OpenCode — XDG-based config dir; flat command/ + skills artifact layout; settings-json config format; no lifecycle hook registration; tier-2 support.",
3450
3450
  "tier": "core",
@@ -3514,7 +3514,7 @@ const runtimes = {
3514
3514
  "qwen": {
3515
3515
  "id": "qwen",
3516
3516
  "role": "runtime",
3517
- "version": "1.6.0-rc.1",
3517
+ "version": "1.6.0-rc.2",
3518
3518
  "title": "Qwen Code",
3519
3519
  "description": "Qwen Code (Alibaba) — nested-skill artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.",
3520
3520
  "tier": "core",
@@ -3571,7 +3571,7 @@ const runtimes = {
3571
3571
  "trae": {
3572
3572
  "id": "trae",
3573
3573
  "role": "runtime",
3574
- "version": "1.6.0-rc.1",
3574
+ "version": "1.6.0-rc.2",
3575
3575
  "title": "Trae IDE",
3576
3576
  "description": "Trae IDE — nested-skill artifact layout; no hook surface (profile-marker-only config); tier-2 support.",
3577
3577
  "tier": "core",
@@ -3623,7 +3623,7 @@ const runtimes = {
3623
3623
  "windsurf": {
3624
3624
  "id": "windsurf",
3625
3625
  "role": "runtime",
3626
- "version": "1.6.0-rc.1",
3626
+ "version": "1.6.0-rc.2",
3627
3627
  "title": "Windsurf",
3628
3628
  "description": "Windsurf (Codeium) — nested under ~/.codeium/windsurf; skills-only artifact layout; no hook surface; no hook events; tier-2 support.",
3629
3629
  "tier": "core",