From 4b402b0325d73ac297088b8bc1b282c24b876d4e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 13 Sep 2026 23:16:53 +0000 Subject: [PATCH 1/2] chore: bump version to 1.14.0 for release --- .claude-plugin/marketplace.json | 2 +- .claude-plugin/plugin.json | 2 +- capabilities/ai-integration/capability.json | 2 +- capabilities/antigravity/capability.json | 2 +- capabilities/assumption-delta/capability.json | 2 +- capabilities/audit/capability.json | 2 +- capabilities/augment/capability.json | 2 +- capabilities/broken-windows/capability.json | 2 +- .../claude-orchestration/capability.json | 2 +- capabilities/claude/capability.json | 2 +- capabilities/cline/capability.json | 2 +- capabilities/code-review/capability.json | 2 +- capabilities/codebuddy/capability.json | 2 +- capabilities/coderabbit/capability.json | 2 +- capabilities/codex/capability.json | 2 +- capabilities/copilot/capability.json | 2 +- capabilities/cursor/capability.json | 2 +- capabilities/drift/capability.json | 2 +- capabilities/external-job/capability.json | 2 +- capabilities/gap-analysis/capability.json | 2 +- capabilities/gemini/capability.json | 2 +- capabilities/graphify/capability.json | 2 +- capabilities/hermes/capability.json | 2 +- capabilities/intel/capability.json | 2 +- capabilities/kilo/capability.json | 2 +- capabilities/kimi-code/capability.json | 2 +- capabilities/kimi/capability.json | 2 +- capabilities/live-dom-uat/capability.json | 2 +- capabilities/llama-cpp/capability.json | 2 +- capabilities/lm-studio/capability.json | 2 +- capabilities/mempalace/capability.json | 2 +- capabilities/nyquist/capability.json | 2 +- capabilities/ollama/capability.json | 2 +- capabilities/opencode/capability.json | 2 +- capabilities/pattern-mapper/capability.json | 2 +- capabilities/pi/capability.json | 2 +- capabilities/profile-pipeline/capability.json | 2 +- capabilities/qwen/capability.json | 2 +- capabilities/refactor-trigger/capability.json | 2 +- capabilities/research/capability.json | 2 +- capabilities/schema-gate/capability.json | 2 +- capabilities/security/capability.json | 2 +- capabilities/tdd/capability.json | 2 +- capabilities/trae/capability.json | 2 +- capabilities/ui/capability.json | 2 +- capabilities/vscode/capability.json | 2 +- capabilities/windsurf/capability.json | 2 +- capabilities/zcode/capability.json | 2 +- gsd-core/bin/lib/capability-registry.cjs | 130 +++++++++--------- package-lock.json | 4 +- package.json | 2 +- vscode/package.json | 2 +- 52 files changed, 117 insertions(+), 117 deletions(-) diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index 5dda4c795..28c3ced18 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -9,7 +9,7 @@ { "name": "gsd-core", "description": "GSD Core is a meta-prompting, context engineering, and spec-driven development system for AI coding agents.", - "version": "1.13.0", + "version": "1.14.0", "source": "./", "author": { "name": "open-gsd", diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index a6ecbf90e..2d2a04443 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "gsd-core", "displayName": "GSD Core", - "version": "1.13.0", + "version": "1.14.0", "description": "GSD Core is a meta-prompting, context engineering, and spec-driven development system for AI coding agents.", "author": { "name": "open-gsd", diff --git a/capabilities/ai-integration/capability.json b/capabilities/ai-integration/capability.json index 086bab607..63ba9aee5 100644 --- a/capabilities/ai-integration/capability.json +++ b/capabilities/ai-integration/capability.json @@ -1,7 +1,7 @@ { "id": "ai-integration", "role": "feature", - "version": "1.13.0", + "version": "1.14.0", "title": "AI design contract", "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.", "tier": "full", diff --git a/capabilities/antigravity/capability.json b/capabilities/antigravity/capability.json index 2b685fe93..19cfc01ef 100644 --- a/capabilities/antigravity/capability.json +++ b/capabilities/antigravity/capability.json @@ -1,7 +1,7 @@ { "id": "antigravity", "role": "runtime", - "version": "1.13.0", + "version": "1.14.0", "title": "Antigravity", "description": "Google Antigravity IDE — config/settings home nested under ~/.gemini/antigravity (probed across 1.x and 2.x layouts); global skills/agents install under ~/.gemini/config, the dir AGY scans for global discovery (#3738); Gemini hook event dialect; flat skill layout; tier-1 support.", "tier": "core", diff --git a/capabilities/assumption-delta/capability.json b/capabilities/assumption-delta/capability.json index b21f54670..706fabfa7 100644 --- a/capabilities/assumption-delta/capability.json +++ b/capabilities/assumption-delta/capability.json @@ -1,7 +1,7 @@ { "id": "assumption-delta", "role": "feature", - "version": "1.13.0", + "version": "1.14.0", "title": "Assumption-delta architecture checkpoint", "description": "Rarely-firing advisory checkpoint that triggers when a phase makes something plural, optional, or chosen that used to be singular, required, or derived. Surfaces one identity-model question (promote the new general representation to primary, or add it alongside?) so a silent primary-key drift does not accumulate into a later user-facing bug. Non-blocking; fires only on a detected signal.", "tier": "full", diff --git a/capabilities/audit/capability.json b/capabilities/audit/capability.json index 010dd4324..43cbef4a6 100644 --- a/capabilities/audit/capability.json +++ b/capabilities/audit/capability.json @@ -1,7 +1,7 @@ { "id": "audit", "role": "feature", - "version": "1.13.0", + "version": "1.14.0", "title": "Audit", "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).", "tier": "full", diff --git a/capabilities/augment/capability.json b/capabilities/augment/capability.json index 061e742fe..de7bc8b10 100644 --- a/capabilities/augment/capability.json +++ b/capabilities/augment/capability.json @@ -1,7 +1,7 @@ { "id": "augment", "role": "runtime", - "version": "1.13.0", + "version": "1.14.0", "title": "Augment Code", "description": "Augment Code CLI — commands + nested-skill artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.", "tier": "core", diff --git a/capabilities/broken-windows/capability.json b/capabilities/broken-windows/capability.json index 3b4508cb0..5b6ab6902 100644 --- a/capabilities/broken-windows/capability.json +++ b/capabilities/broken-windows/capability.json @@ -1,7 +1,7 @@ { "id": "broken-windows", "role": "feature", - "version": "1.13.0", + "version": "1.14.0", "title": "Broken-windows ledger", "description": "Cross-phase defect register accumulating stubs, TODOs, skipped tests, unrun verifies, and unmet truths into .planning/WINDOWS.md. When enforcement is enabled, it blocks /gsd-ship while any window is open unless explicitly waived with a recorded reason. Operationalizes GSD's no-defer discipline as a tracked artifact (issue #1950).", "tier": "full", diff --git a/capabilities/claude-orchestration/capability.json b/capabilities/claude-orchestration/capability.json index 059019b31..116783048 100644 --- a/capabilities/claude-orchestration/capability.json +++ b/capabilities/claude-orchestration/capability.json @@ -1,7 +1,7 @@ { "id": "claude-orchestration", "role": "feature", - "version": "1.13.0", + "version": "1.14.0", "title": "Claude orchestration (Workflow backend)", "description": "Default-off, BETA, claude-only capability that adopts Claude Code's Workflow tool (the engine behind /effort ultracode) as an optional parallel-execution backend for the GSD loop. When the runtime exposes the Workflow tool and claude_orchestration.execution_backend resolves to 'workflow', execute-phase emits a generated Workflow script (waves -> parallel() barriers, plans -> agent({ agentType: 'gsd-executor', isolation: 'worktree' }), files_modified overlap -> separate sequential stages, resumeFromRunId wired to the phase run id, shared token budget) that composes the SAME gsd-executor agent and worktree isolation the inline path uses, restoring the wave parallelism the #853 backgrounded-agent nesting limitation forces inline on Claude Code. (The plan-checker and verifier remain inline until separately wired — this capability delivers the parallel-execution backend, not those gates.) Also folds the ultraplan plan-offload under one runtime gate (plan:* surface). On any runtime lacking the Workflow tool, or when the capability is disabled, behaviour is byte-identical to today (inline/manual dispatch). Detection + emission live in gsd-core/bin/lib/claude-orchestration.cjs (pure, fail-closed). Mirrors the existing gsd-ultraplan-phase BETA-isolation posture.", "tier": "full", diff --git a/capabilities/claude/capability.json b/capabilities/claude/capability.json index 8b6d6d947..700df88c5 100644 --- a/capabilities/claude/capability.json +++ b/capabilities/claude/capability.json @@ -1,7 +1,7 @@ { "id": "claude", "role": "runtime", - "version": "1.13.0", + "version": "1.14.0", "title": "Claude Code", "description": "Anthropic Claude Code — primary development runtime; tier-1 support with full hook surface and skills-based global install.", "tier": "core", diff --git a/capabilities/cline/capability.json b/capabilities/cline/capability.json index 6e1e4bef9..ffe2e570c 100644 --- a/capabilities/cline/capability.json +++ b/capabilities/cline/capability.json @@ -1,7 +1,7 @@ { "id": "cline", "role": "runtime", - "version": "1.13.0", + "version": "1.14.0", "title": "Cline", "description": "Cline (VS Code extension) — global-only nested-skill layout; cline-rules hook surface (.clinerules); no hook events emitted; tier-2 support.", "tier": "core", diff --git a/capabilities/code-review/capability.json b/capabilities/code-review/capability.json index 965750675..20a587155 100644 --- a/capabilities/code-review/capability.json +++ b/capabilities/code-review/capability.json @@ -1,7 +1,7 @@ { "id": "code-review", "role": "feature", - "version": "1.13.0", + "version": "1.14.0", "title": "Code review", "description": "Source-file code review and review-fix workflow support for completed execution work.", "tier": "full", diff --git a/capabilities/codebuddy/capability.json b/capabilities/codebuddy/capability.json index c37ed61fb..8442c0ed9 100644 --- a/capabilities/codebuddy/capability.json +++ b/capabilities/codebuddy/capability.json @@ -1,7 +1,7 @@ { "id": "codebuddy", "role": "runtime", - "version": "1.13.0", + "version": "1.14.0", "title": "CodeBuddy", "description": "CodeBuddy (Tencent) — converted commands + skills artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.", "tier": "core", diff --git a/capabilities/coderabbit/capability.json b/capabilities/coderabbit/capability.json index c1b3801d8..4e5b65856 100644 --- a/capabilities/coderabbit/capability.json +++ b/capabilities/coderabbit/capability.json @@ -1,7 +1,7 @@ { "id": "coderabbit", "role": "reviewer", - "version": "1.13.0", + "version": "1.14.0", "title": "CodeRabbit", "description": "CodeRabbit CLI — cross-AI /gsd:review reviewer lane only; not a GSD install target (no runtime body, no artifacts). Reviews the working-tree diff (`coderabbit review --prompt-only`), not the source tree, and accepts neither a prompt nor a model flag; findings are down-weighted in consensus (evidenceClass: diff-only).", "tier": "full", diff --git a/capabilities/codex/capability.json b/capabilities/codex/capability.json index 56dad8197..fd3899828 100644 --- a/capabilities/codex/capability.json +++ b/capabilities/codex/capability.json @@ -1,7 +1,7 @@ { "id": "codex", "role": "runtime", - "version": "1.13.0", + "version": "1.14.0", "title": "OpenAI Codex CLI", "description": "OpenAI Codex CLI — shell-var command style; per-agent sandbox tiers; config.toml + hooks.json hook surface; tier-1 support.", "tier": "core", diff --git a/capabilities/copilot/capability.json b/capabilities/copilot/capability.json index e4fd59a81..afcaefc24 100644 --- a/capabilities/copilot/capability.json +++ b/capabilities/copilot/capability.json @@ -1,7 +1,7 @@ { "id": "copilot", "role": "runtime", - "version": "1.13.0", + "version": "1.14.0", "title": "GitHub Copilot", "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.", "tier": "core", diff --git a/capabilities/cursor/capability.json b/capabilities/cursor/capability.json index 23f1a92f3..1be303463 100644 --- a/capabilities/cursor/capability.json +++ b/capabilities/cursor/capability.json @@ -1,7 +1,7 @@ { "id": "cursor", "role": "runtime", - "version": "1.13.0", + "version": "1.14.0", "title": "Cursor", "description": "Cursor IDE — skills-only workflow surface; hooks.json surface; Claude hook event dialect; recursive skill loader (flat nesting); tier-2 support.", "tier": "core", diff --git a/capabilities/drift/capability.json b/capabilities/drift/capability.json index 49432f59c..f9453b404 100644 --- a/capabilities/drift/capability.json +++ b/capabilities/drift/capability.json @@ -1,7 +1,7 @@ { "id": "drift", "role": "feature", - "version": "1.13.0", + "version": "1.14.0", "title": "Drift detection gates", "description": "Drift detection gates for the planning loop. 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). At plan:pre: a non-blocking, warn-only codebase drift gate (gated on workflow.plan_drift_precheck) that flags a stale codebase map before planning, so plans are authored against a fresh STRUCTURE.md instead of discovering drift mid-execution.", "tier": "full", diff --git a/capabilities/external-job/capability.json b/capabilities/external-job/capability.json index 8e5529a54..94990015a 100644 --- a/capabilities/external-job/capability.json +++ b/capabilities/external-job/capability.json @@ -1,7 +1,7 @@ { "id": "external-job", "role": "feature", - "version": "1.13.0", + "version": "1.14.0", "title": "Async external-job scheduler adapter", "description": "Default-off producer of the async external-job manifest (#1164). At execute:wave:post an executor can externalize long-running compute (SLURM first, scheduler-pluggable), commit a .planning/async-jobs/.json manifest, defer SUMMARY.md, and return external_job_waiting. The core loop (#1165) consumes the manifest; this capability is the only thing that writes it. NOTE on contribution point: #1164 specifies classification at execute:wave:pre and recording at execute:wave:post. This capability still contributes executor guidance at wave:post; execute-phase now renders wave:pre entries and dispatches generic step hooks there independently. Moving external-job classification to wave:pre is a separate capability change, not part of #4148. The adapter (scripts/slurm-adapter.cjs) reads external_job.submit_timeout_ms / poll_timeout_ms / artifact_dir through the canonical capability-config seam (env override > config > registry default).", "tier": "full", diff --git a/capabilities/gap-analysis/capability.json b/capabilities/gap-analysis/capability.json index 62279c644..3975cd89f 100644 --- a/capabilities/gap-analysis/capability.json +++ b/capabilities/gap-analysis/capability.json @@ -1,7 +1,7 @@ { "id": "gap-analysis", "role": "feature", - "version": "1.13.0", + "version": "1.14.0", "title": "Post-planning gap analysis", "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.", "tier": "standard", diff --git a/capabilities/gemini/capability.json b/capabilities/gemini/capability.json index 869a6b4ca..08af70c05 100644 --- a/capabilities/gemini/capability.json +++ b/capabilities/gemini/capability.json @@ -1,7 +1,7 @@ { "id": "gemini", "role": "reviewer", - "version": "1.13.0", + "version": "1.14.0", "title": "Gemini CLI", "description": "Google Gemini CLI — cross-AI /gsd:review reviewer lane only; not a GSD install target (no runtime body, no artifacts). Spawned as `gemini -p - -m ` with the plan piped on stdin.", "tier": "full", diff --git a/capabilities/graphify/capability.json b/capabilities/graphify/capability.json index 512354376..9ea567ca9 100644 --- a/capabilities/graphify/capability.json +++ b/capabilities/graphify/capability.json @@ -1,7 +1,7 @@ { "id": "graphify", "role": "feature", - "version": "1.13.0", + "version": "1.14.0", "title": "Knowledge graph", "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.", "tier": "full", diff --git a/capabilities/hermes/capability.json b/capabilities/hermes/capability.json index 890e12998..cfdae7d33 100644 --- a/capabilities/hermes/capability.json +++ b/capabilities/hermes/capability.json @@ -1,7 +1,7 @@ { "id": "hermes", "role": "runtime", - "version": "1.13.0", + "version": "1.14.0", "title": "Hermes Agent", "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.", "tier": "core", diff --git a/capabilities/intel/capability.json b/capabilities/intel/capability.json index 9ea4743a3..65c32b26f 100644 --- a/capabilities/intel/capability.json +++ b/capabilities/intel/capability.json @@ -1,7 +1,7 @@ { "id": "intel", "role": "feature", - "version": "1.13.0", + "version": "1.14.0", "title": "Codebase intelligence", "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`.", "tier": "full", diff --git a/capabilities/kilo/capability.json b/capabilities/kilo/capability.json index 7d0a65abe..8e15434f9 100644 --- a/capabilities/kilo/capability.json +++ b/capabilities/kilo/capability.json @@ -1,7 +1,7 @@ { "id": "kilo", "role": "runtime", - "version": "1.13.0", + "version": "1.14.0", "title": "Kilo Code", "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.", "tier": "core", diff --git a/capabilities/kimi-code/capability.json b/capabilities/kimi-code/capability.json index 55f610552..793f7c8f9 100644 --- a/capabilities/kimi-code/capability.json +++ b/capabilities/kimi-code/capability.json @@ -1,7 +1,7 @@ { "id": "kimi-code", "role": "runtime", - "version": "1.13.0", + "version": "1.14.0", "title": "Kimi Code CLI", "description": "Kimi Code CLI (Moonshot AI, Node) — Agent Skills auto-discovered at ~/.kimi-code/skills; global AGENTS.md at ~/.kimi-code/AGENTS.md; native config.toml + [[hooks]] bus; three built-in subagents (coder/explore/plan), NO custom named subagents; background dispatch; tier-2 support. Distinct from Python kimi-cli (the 'kimi' capability) per ADR-1239 EoS — Kimi Code cannot dispatch named subagents so the kimi-agents YAML layout does NOT apply; persona injection rides the existing ${AGENT_SKILLS_*} workflow fallback. Install-layout, agent-install-check, and install-time decision (kimi vs kimi-code) land in follow-up PRs; this descriptor is the EoS foundation.", "tier": "core", diff --git a/capabilities/kimi/capability.json b/capabilities/kimi/capability.json index c19387e89..3f17678b7 100644 --- a/capabilities/kimi/capability.json +++ b/capabilities/kimi/capability.json @@ -1,7 +1,7 @@ { "id": "kimi", "role": "runtime", - "version": "1.13.0", + "version": "1.14.0", "title": "Kimi CLI", "description": "Kimi CLI (Moonshot AI) — generic agents root at ~/.config/agents; skills + kimi-agents artifact layout; native config.toml [[hooks]] bus at ~/.kimi/config.toml; background dispatch; tier-2 support.", "tier": "core", diff --git a/capabilities/live-dom-uat/capability.json b/capabilities/live-dom-uat/capability.json index 5332493a4..31186d728 100644 --- a/capabilities/live-dom-uat/capability.json +++ b/capabilities/live-dom-uat/capability.json @@ -1,7 +1,7 @@ { "id": "live-dom-uat", "role": "feature", - "version": "1.13.0", + "version": "1.14.0", "title": "Live-DOM UAT", "description": "Default-off live-DOM verification (#2856). Confines browser MCP reach to one purpose-built agent (gsd-dom-verifier) that carries the browser globs in its own tools: line, registered as an additive step hook at execute:wave:post. agents/gsd-executor.md is deliberately NOT widened: for a first-party agent the static tool list is the only control that exists, no capability can grant tools to one (ADR-1244 D2), no hook kind grants tool permissions (ADR-857 D4), and there is no per-dispatch tool override. Gated by activationKey workflow.live_dom_uat (default false), so with the key off the capability resolves inactive and the hook does not render at all. NOTE on the browser profile lock: chrome-devtools-mcp holds an exclusive lock on $HOME/.cache/chrome-devtools-mcp/chrome-profile, and --isolated is a flag on the user's own MCP-server registration that GSD cannot pass. Concurrent execution waves sharing one profile will therefore collide; the step tolerates and reports that (onError: skip, never blocking) rather than pretending to coordinate a resource it does not own.", "tier": "full", diff --git a/capabilities/llama-cpp/capability.json b/capabilities/llama-cpp/capability.json index 419b901bb..f0c7f411a 100644 --- a/capabilities/llama-cpp/capability.json +++ b/capabilities/llama-cpp/capability.json @@ -1,7 +1,7 @@ { "id": "llama-cpp", "role": "reviewer", - "version": "1.13.0", + "version": "1.14.0", "title": "llama.cpp", "description": "llama.cpp server — cross-AI /gsd:review reviewer lane only; not a GSD install target (no runtime body, no artifacts). OpenAI-compatible HTTP transport against a user-configured `review.llama_cpp_host` (POST /v1/chat/completions); model discovered via GET /v1/models piped through jq. Capability id/folder are kebab (`llama-cpp`, required by KEBAB_RE); `reviewer.slug` stays snake (`llama_cpp`) to match the shipped roster and the `review.llama_cpp_host` config key (ADR-2782's three-namespace trap).", "tier": "full", diff --git a/capabilities/lm-studio/capability.json b/capabilities/lm-studio/capability.json index fe43cfb67..3cce76ac8 100644 --- a/capabilities/lm-studio/capability.json +++ b/capabilities/lm-studio/capability.json @@ -1,7 +1,7 @@ { "id": "lm-studio", "role": "reviewer", - "version": "1.13.0", + "version": "1.14.0", "title": "LM Studio", "description": "LM Studio local model server — cross-AI /gsd:review reviewer lane only; not a GSD install target (no runtime body, no artifacts). OpenAI-compatible HTTP transport against a user-configured `review.lm_studio_host` (POST /v1/chat/completions); model discovered via GET /v1/models piped through jq. Capability id/folder are kebab (`lm-studio`, required by KEBAB_RE); `reviewer.slug` stays snake (`lm_studio`) to match the shipped roster and the `review.lm_studio_host` config key (ADR-2782's three-namespace trap).", "tier": "full", diff --git a/capabilities/mempalace/capability.json b/capabilities/mempalace/capability.json index 9741939cc..ad30b27bd 100644 --- a/capabilities/mempalace/capability.json +++ b/capabilities/mempalace/capability.json @@ -1,7 +1,7 @@ { "id": "mempalace", "role": "feature", - "version": "1.13.0", + "version": "1.14.0", "title": "MemPalace memory", "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.", "tier": "full", diff --git a/capabilities/nyquist/capability.json b/capabilities/nyquist/capability.json index 0fdc80f60..1e2c36a30 100644 --- a/capabilities/nyquist/capability.json +++ b/capabilities/nyquist/capability.json @@ -1,7 +1,7 @@ { "id": "nyquist", "role": "feature", - "version": "1.13.0", + "version": "1.14.0", "title": "Nyquist validation", "description": "Validation coverage audit that maps executed work back to tests and manual-only evidence.", "tier": "full", diff --git a/capabilities/ollama/capability.json b/capabilities/ollama/capability.json index 8444f2ea2..2ebbf92a9 100644 --- a/capabilities/ollama/capability.json +++ b/capabilities/ollama/capability.json @@ -1,7 +1,7 @@ { "id": "ollama", "role": "reviewer", - "version": "1.13.0", + "version": "1.14.0", "title": "Ollama", "description": "Ollama local model server — cross-AI /gsd:review reviewer lane only; not a GSD install target (no runtime body, no artifacts). OpenAI-compatible HTTP transport against a user-configured `review.ollama_host` (POST /v1/chat/completions); model discovered via GET /v1/models piped through jq.", "tier": "full", diff --git a/capabilities/opencode/capability.json b/capabilities/opencode/capability.json index 3930324de..c4502e428 100644 --- a/capabilities/opencode/capability.json +++ b/capabilities/opencode/capability.json @@ -1,7 +1,7 @@ { "id": "opencode", "role": "runtime", - "version": "1.13.0", + "version": "1.14.0", "title": "OpenCode", "description": "OpenCode — XDG-based config dir; flat commands/ + skills artifact layout; settings-json config format; no lifecycle hook registration; tier-2 support.", "tier": "core", diff --git a/capabilities/pattern-mapper/capability.json b/capabilities/pattern-mapper/capability.json index 670797b69..4252ff56d 100644 --- a/capabilities/pattern-mapper/capability.json +++ b/capabilities/pattern-mapper/capability.json @@ -1,7 +1,7 @@ { "id": "pattern-mapper", "role": "feature", - "version": "1.13.0", + "version": "1.14.0", "title": "Pattern mapping", "description": "Optional codebase-pattern mapping before planning; owns the pattern mapper agent and workflow.pattern_mapper activation key.", "tier": "full", diff --git a/capabilities/pi/capability.json b/capabilities/pi/capability.json index 543129846..01437cd45 100644 --- a/capabilities/pi/capability.json +++ b/capabilities/pi/capability.json @@ -1,7 +1,7 @@ { "id": "pi", "role": "runtime", - "version": "1.13.0", + "version": "1.14.0", "title": "pi", "description": "pi (pi.dev) — bun-runtime programmatic-CLI; TS ExtensionAPI (registerCommand/registerTool/registerProvider/pi.on); single native-extension file at ~/.pi/agent/extensions/gsd.js (.js, not .cjs — pi's extension auto-discovery accepts only .ts/.js, #2470); no shared-settings hook surface; tier-2 support.", "tier": "core", diff --git a/capabilities/profile-pipeline/capability.json b/capabilities/profile-pipeline/capability.json index 55d5a796f..fac6245d3 100644 --- a/capabilities/profile-pipeline/capability.json +++ b/capabilities/profile-pipeline/capability.json @@ -1,7 +1,7 @@ { "id": "profile-pipeline", "role": "feature", - "version": "1.13.0", + "version": "1.14.0", "title": "Developer profiling pipeline", "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.", "tier": "full", diff --git a/capabilities/qwen/capability.json b/capabilities/qwen/capability.json index 75eb5fd52..233528a30 100644 --- a/capabilities/qwen/capability.json +++ b/capabilities/qwen/capability.json @@ -1,7 +1,7 @@ { "id": "qwen", "role": "runtime", - "version": "1.13.0", + "version": "1.14.0", "title": "Qwen Code", "description": "Qwen Code (Alibaba) — nested-skill artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.", "tier": "core", diff --git a/capabilities/refactor-trigger/capability.json b/capabilities/refactor-trigger/capability.json index 3422cbabe..690ed6173 100644 --- a/capabilities/refactor-trigger/capability.json +++ b/capabilities/refactor-trigger/capability.json @@ -1,7 +1,7 @@ { "id": "refactor-trigger", "role": "feature", - "version": "1.13.0", + "version": "1.14.0", "title": "Complexity-triggered refactor", "description": "Measures the complexity of the code a phase touched and, when a function crosses a configured threshold or jumps past its recorded anchor, surfaces a scoped refactor proposal at .planning/phases//-REFACTOR.md. Advisory by default — it never edits code and never blocks. Opt-in strict mode blocks /gsd-ship while a proposal is untriaged; a declined proposal is recorded in the broken-windows ledger when that capability is present. Operationalizes 'refactor early, refactor often' as continuous pressure instead of a thing you have to remember (issue #1953).", "tier": "full", diff --git a/capabilities/research/capability.json b/capabilities/research/capability.json index 9162e9331..9970b1187 100644 --- a/capabilities/research/capability.json +++ b/capabilities/research/capability.json @@ -1,7 +1,7 @@ { "id": "research", "role": "feature", - "version": "1.13.0", + "version": "1.14.0", "title": "Phase research", "description": "Optional phase research before planning; owns the phase researcher agent and workflow.research activation key.", "tier": "standard", diff --git a/capabilities/schema-gate/capability.json b/capabilities/schema-gate/capability.json index c6ea90908..346bbd191 100644 --- a/capabilities/schema-gate/capability.json +++ b/capabilities/schema-gate/capability.json @@ -1,7 +1,7 @@ { "id": "schema-gate", "role": "feature", - "version": "1.13.0", + "version": "1.14.0", "title": "Schema push detection gate", "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.", "tier": "full", diff --git a/capabilities/security/capability.json b/capabilities/security/capability.json index a79560dce..84d3a69ea 100644 --- a/capabilities/security/capability.json +++ b/capabilities/security/capability.json @@ -1,7 +1,7 @@ { "id": "security", "role": "feature", - "version": "1.13.0", + "version": "1.14.0", "title": "Security enforcement", "description": "Threat mitigation verification and ship-time security blocking for phases with security enforcement enabled.", "tier": "full", diff --git a/capabilities/tdd/capability.json b/capabilities/tdd/capability.json index 6296508dc..9e52fae34 100644 --- a/capabilities/tdd/capability.json +++ b/capabilities/tdd/capability.json @@ -1,7 +1,7 @@ { "id": "tdd", "role": "feature", - "version": "1.13.0", + "version": "1.14.0", "title": "Test-driven development", "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.", "tier": "full", diff --git a/capabilities/trae/capability.json b/capabilities/trae/capability.json index 1aa36ba33..ff308c538 100644 --- a/capabilities/trae/capability.json +++ b/capabilities/trae/capability.json @@ -1,7 +1,7 @@ { "id": "trae", "role": "runtime", - "version": "1.13.0", + "version": "1.14.0", "title": "Trae IDE", "description": "Trae IDE — nested-skill artifact layout; no hook surface (profile-marker-only config); tier-2 support.", "tier": "core", diff --git a/capabilities/ui/capability.json b/capabilities/ui/capability.json index c84639e9a..84c3a5d8b 100644 --- a/capabilities/ui/capability.json +++ b/capabilities/ui/capability.json @@ -1,7 +1,7 @@ { "id": "ui", "role": "feature", - "version": "1.13.0", + "version": "1.14.0", "title": "UI design contracts", "description": "UI-SPEC design contract + retrospective UI audit for frontend phases.", "tier": "full", diff --git a/capabilities/vscode/capability.json b/capabilities/vscode/capability.json index 1197fa4d5..4bc994ce0 100644 --- a/capabilities/vscode/capability.json +++ b/capabilities/vscode/capability.json @@ -1,7 +1,7 @@ { "id": "vscode", "role": "runtime", - "version": "1.13.0", + "version": "1.14.0", "title": "VS Code", "description": "VS Code — Marketplace/VSIX extension; no file-projected config directory; IDE-profile reference host (active vscode.lm model, engine-owned hook bus, sandboxed globalState/workspaceState stateIO).", "tier": "core", diff --git a/capabilities/windsurf/capability.json b/capabilities/windsurf/capability.json index de376d8da..027552ef8 100644 --- a/capabilities/windsurf/capability.json +++ b/capabilities/windsurf/capability.json @@ -1,7 +1,7 @@ { "id": "windsurf", "role": "runtime", - "version": "1.13.0", + "version": "1.14.0", "title": "Windsurf", "description": "Windsurf (Codeium) — workspace workflow artifact layout for slash commands; Cascade native hooks.json blocking hook bus (pre_write_code, pre_run_command); tier-2 support.", "tier": "core", diff --git a/capabilities/zcode/capability.json b/capabilities/zcode/capability.json index 32514694e..04ecc6fcd 100644 --- a/capabilities/zcode/capability.json +++ b/capabilities/zcode/capability.json @@ -1,7 +1,7 @@ { "id": "zcode", "role": "runtime", - "version": "1.13.0", + "version": "1.14.0", "title": "ZCode", "description": "ZCode (Z.ai) — desktop Agentic Development Environment for GLM-5.2; Claude-shaped nested skills at ~/.zcode/skills//SKILL.md, slash commands, named subagents, native MCP; declarative plugin surface; profile-marker install; tier-2 community support.", "tier": "core", diff --git a/gsd-core/bin/lib/capability-registry.cjs b/gsd-core/bin/lib/capability-registry.cjs index c8619b50f..562120cfc 100644 --- a/gsd-core/bin/lib/capability-registry.cjs +++ b/gsd-core/bin/lib/capability-registry.cjs @@ -10,7 +10,7 @@ const capabilities = { "ai-integration": { "id": "ai-integration", "role": "feature", - "version": "1.13.0", + "version": "1.14.0", "title": "AI design contract", "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.", "tier": "full", @@ -95,7 +95,7 @@ const capabilities = { "antigravity": { "id": "antigravity", "role": "runtime", - "version": "1.13.0", + "version": "1.14.0", "title": "Antigravity", "description": "Google Antigravity IDE — config/settings home nested under ~/.gemini/antigravity (probed across 1.x and 2.x layouts); global skills/agents install under ~/.gemini/config, the dir AGY scans for global discovery (#3738); Gemini hook event dialect; flat skill layout; tier-1 support.", "tier": "core", @@ -258,7 +258,7 @@ const capabilities = { "assumption-delta": { "id": "assumption-delta", "role": "feature", - "version": "1.13.0", + "version": "1.14.0", "title": "Assumption-delta architecture checkpoint", "description": "Rarely-firing advisory checkpoint that triggers when a phase makes something plural, optional, or chosen that used to be singular, required, or derived. Surfaces one identity-model question (promote the new general representation to primary, or add it alongside?) so a silent primary-key drift does not accumulate into a later user-facing bug. Non-blocking; fires only on a detected signal.", "tier": "full", @@ -304,7 +304,7 @@ const capabilities = { "audit": { "id": "audit", "role": "feature", - "version": "1.13.0", + "version": "1.14.0", "title": "Audit", "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).", "tier": "full", @@ -341,7 +341,7 @@ const capabilities = { "augment": { "id": "augment", "role": "runtime", - "version": "1.13.0", + "version": "1.14.0", "title": "Augment Code", "description": "Augment Code CLI — commands + nested-skill artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.", "tier": "core", @@ -455,7 +455,7 @@ const capabilities = { "broken-windows": { "id": "broken-windows", "role": "feature", - "version": "1.13.0", + "version": "1.14.0", "title": "Broken-windows ledger", "description": "Cross-phase defect register accumulating stubs, TODOs, skipped tests, unrun verifies, and unmet truths into .planning/WINDOWS.md. When enforcement is enabled, it blocks /gsd-ship while any window is open unless explicitly waived with a recorded reason. Operationalizes GSD's no-defer discipline as a tracked artifact (issue #1950).", "tier": "full", @@ -501,7 +501,7 @@ const capabilities = { "claude": { "id": "claude", "role": "runtime", - "version": "1.13.0", + "version": "1.14.0", "title": "Claude Code", "description": "Anthropic Claude Code — primary development runtime; tier-1 support with full hook surface and skills-based global install.", "tier": "core", @@ -682,7 +682,7 @@ const capabilities = { "claude-orchestration": { "id": "claude-orchestration", "role": "feature", - "version": "1.13.0", + "version": "1.14.0", "title": "Claude orchestration (Workflow backend)", "description": "Default-off, BETA, claude-only capability that adopts Claude Code's Workflow tool (the engine behind /effort ultracode) as an optional parallel-execution backend for the GSD loop. When the runtime exposes the Workflow tool and claude_orchestration.execution_backend resolves to 'workflow', execute-phase emits a generated Workflow script (waves -> parallel() barriers, plans -> agent({ agentType: 'gsd-executor', isolation: 'worktree' }), files_modified overlap -> separate sequential stages, resumeFromRunId wired to the phase run id, shared token budget) that composes the SAME gsd-executor agent and worktree isolation the inline path uses, restoring the wave parallelism the #853 backgrounded-agent nesting limitation forces inline on Claude Code. (The plan-checker and verifier remain inline until separately wired — this capability delivers the parallel-execution backend, not those gates.) Also folds the ultraplan plan-offload under one runtime gate (plan:* surface). On any runtime lacking the Workflow tool, or when the capability is disabled, behaviour is byte-identical to today (inline/manual dispatch). Detection + emission live in gsd-core/bin/lib/claude-orchestration.cjs (pure, fail-closed). Mirrors the existing gsd-ultraplan-phase BETA-isolation posture.", "tier": "full", @@ -770,7 +770,7 @@ const capabilities = { "cline": { "id": "cline", "role": "runtime", - "version": "1.13.0", + "version": "1.14.0", "title": "Cline", "description": "Cline (VS Code extension) — global-only nested-skill layout; cline-rules hook surface (.clinerules); no hook events emitted; tier-2 support.", "tier": "core", @@ -863,7 +863,7 @@ const capabilities = { "code-review": { "id": "code-review", "role": "feature", - "version": "1.13.0", + "version": "1.14.0", "title": "Code review", "description": "Source-file code review and review-fix workflow support for completed execution work.", "tier": "full", @@ -949,7 +949,7 @@ const capabilities = { "codebuddy": { "id": "codebuddy", "role": "runtime", - "version": "1.13.0", + "version": "1.14.0", "title": "CodeBuddy", "description": "CodeBuddy (Tencent) — converted commands + skills artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.", "tier": "core", @@ -1067,7 +1067,7 @@ const capabilities = { "coderabbit": { "id": "coderabbit", "role": "reviewer", - "version": "1.13.0", + "version": "1.14.0", "title": "CodeRabbit", "description": "CodeRabbit CLI — cross-AI /gsd:review reviewer lane only; not a GSD install target (no runtime body, no artifacts). Reviews the working-tree diff (`coderabbit review --prompt-only`), not the source tree, and accepts neither a prompt nor a model flag; findings are down-weighted in consensus (evidenceClass: diff-only).", "tier": "full", @@ -1119,7 +1119,7 @@ const capabilities = { "codex": { "id": "codex", "role": "runtime", - "version": "1.13.0", + "version": "1.14.0", "title": "OpenAI Codex CLI", "description": "OpenAI Codex CLI — shell-var command style; per-agent sandbox tiers; config.toml + hooks.json hook surface; tier-1 support.", "tier": "core", @@ -1299,7 +1299,7 @@ const capabilities = { "copilot": { "id": "copilot", "role": "runtime", - "version": "1.13.0", + "version": "1.14.0", "title": "GitHub Copilot", "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.", "tier": "core", @@ -1399,7 +1399,7 @@ const capabilities = { "cursor": { "id": "cursor", "role": "runtime", - "version": "1.13.0", + "version": "1.14.0", "title": "Cursor", "description": "Cursor IDE — skills-only workflow surface; hooks.json surface; Claude hook event dialect; recursive skill loader (flat nesting); tier-2 support.", "tier": "core", @@ -1568,7 +1568,7 @@ const capabilities = { "drift": { "id": "drift", "role": "feature", - "version": "1.13.0", + "version": "1.14.0", "title": "Drift detection gates", "description": "Drift detection gates for the planning loop. 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). At plan:pre: a non-blocking, warn-only codebase drift gate (gated on workflow.plan_drift_precheck) that flags a stale codebase map before planning, so plans are authored against a fresh STRUCTURE.md instead of discovering drift mid-execution.", "tier": "full", @@ -1669,7 +1669,7 @@ const capabilities = { "external-job": { "id": "external-job", "role": "feature", - "version": "1.13.0", + "version": "1.14.0", "title": "Async external-job scheduler adapter", "description": "Default-off producer of the async external-job manifest (#1164). At execute:wave:post an executor can externalize long-running compute (SLURM first, scheduler-pluggable), commit a .planning/async-jobs/.json manifest, defer SUMMARY.md, and return external_job_waiting. The core loop (#1165) consumes the manifest; this capability is the only thing that writes it. NOTE on contribution point: #1164 specifies classification at execute:wave:pre and recording at execute:wave:post. This capability still contributes executor guidance at wave:post; execute-phase now renders wave:pre entries and dispatches generic step hooks there independently. Moving external-job classification to wave:pre is a separate capability change, not part of #4148. The adapter (scripts/slurm-adapter.cjs) reads external_job.submit_timeout_ms / poll_timeout_ms / artifact_dir through the canonical capability-config seam (env override > config > registry default).", "tier": "full", @@ -1752,7 +1752,7 @@ const capabilities = { "gap-analysis": { "id": "gap-analysis", "role": "feature", - "version": "1.13.0", + "version": "1.14.0", "title": "Post-planning gap analysis", "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.", "tier": "standard", @@ -1793,7 +1793,7 @@ const capabilities = { "gemini": { "id": "gemini", "role": "reviewer", - "version": "1.13.0", + "version": "1.14.0", "title": "Gemini CLI", "description": "Google Gemini CLI — cross-AI /gsd:review reviewer lane only; not a GSD install target (no runtime body, no artifacts). Spawned as `gemini -p - -m ` with the plan piped on stdin.", "tier": "full", @@ -1856,7 +1856,7 @@ const capabilities = { "graphify": { "id": "graphify", "role": "feature", - "version": "1.13.0", + "version": "1.14.0", "title": "Knowledge graph", "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.", "tier": "full", @@ -1897,7 +1897,7 @@ const capabilities = { "hermes": { "id": "hermes", "role": "runtime", - "version": "1.13.0", + "version": "1.14.0", "title": "Hermes Agent", "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.", "tier": "core", @@ -2009,7 +2009,7 @@ const capabilities = { "intel": { "id": "intel", "role": "feature", - "version": "1.13.0", + "version": "1.14.0", "title": "Codebase intelligence", "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`.", "tier": "full", @@ -2061,7 +2061,7 @@ const capabilities = { "kilo": { "id": "kilo", "role": "runtime", - "version": "1.13.0", + "version": "1.14.0", "title": "Kilo Code", "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.", "tier": "core", @@ -2191,7 +2191,7 @@ const capabilities = { "kimi": { "id": "kimi", "role": "runtime", - "version": "1.13.0", + "version": "1.14.0", "title": "Kimi CLI", "description": "Kimi CLI (Moonshot AI) — generic agents root at ~/.config/agents; skills + kimi-agents artifact layout; native config.toml [[hooks]] bus at ~/.kimi/config.toml; background dispatch; tier-2 support.", "tier": "core", @@ -2295,7 +2295,7 @@ const capabilities = { "kimi-code": { "id": "kimi-code", "role": "runtime", - "version": "1.13.0", + "version": "1.14.0", "title": "Kimi Code CLI", "description": "Kimi Code CLI (Moonshot AI, Node) — Agent Skills auto-discovered at ~/.kimi-code/skills; global AGENTS.md at ~/.kimi-code/AGENTS.md; native config.toml + [[hooks]] bus; three built-in subagents (coder/explore/plan), NO custom named subagents; background dispatch; tier-2 support. Distinct from Python kimi-cli (the 'kimi' capability) per ADR-1239 EoS — Kimi Code cannot dispatch named subagents so the kimi-agents YAML layout does NOT apply; persona injection rides the existing ${AGENT_SKILLS_*} workflow fallback. Install-layout, agent-install-check, and install-time decision (kimi vs kimi-code) land in follow-up PRs; this descriptor is the EoS foundation.", "tier": "core", @@ -2462,7 +2462,7 @@ const capabilities = { "live-dom-uat": { "id": "live-dom-uat", "role": "feature", - "version": "1.13.0", + "version": "1.14.0", "title": "Live-DOM UAT", "description": "Default-off live-DOM verification (#2856). Confines browser MCP reach to one purpose-built agent (gsd-dom-verifier) that carries the browser globs in its own tools: line, registered as an additive step hook at execute:wave:post. agents/gsd-executor.md is deliberately NOT widened: for a first-party agent the static tool list is the only control that exists, no capability can grant tools to one (ADR-1244 D2), no hook kind grants tool permissions (ADR-857 D4), and there is no per-dispatch tool override. Gated by activationKey workflow.live_dom_uat (default false), so with the key off the capability resolves inactive and the hook does not render at all. NOTE on the browser profile lock: chrome-devtools-mcp holds an exclusive lock on $HOME/.cache/chrome-devtools-mcp/chrome-profile, and --isolated is a flag on the user's own MCP-server registration that GSD cannot pass. Concurrent execution waves sharing one profile will therefore collide; the step tolerates and reports that (onError: skip, never blocking) rather than pretending to coordinate a resource it does not own.", "tier": "full", @@ -2515,7 +2515,7 @@ const capabilities = { "llama-cpp": { "id": "llama-cpp", "role": "reviewer", - "version": "1.13.0", + "version": "1.14.0", "title": "llama.cpp", "description": "llama.cpp server — cross-AI /gsd:review reviewer lane only; not a GSD install target (no runtime body, no artifacts). OpenAI-compatible HTTP transport against a user-configured `review.llama_cpp_host` (POST /v1/chat/completions); model discovered via GET /v1/models piped through jq. Capability id/folder are kebab (`llama-cpp`, required by KEBAB_RE); `reviewer.slug` stays snake (`llama_cpp`) to match the shipped roster and the `review.llama_cpp_host` config key (ADR-2782's three-namespace trap).", "tier": "full", @@ -2581,7 +2581,7 @@ const capabilities = { "lm-studio": { "id": "lm-studio", "role": "reviewer", - "version": "1.13.0", + "version": "1.14.0", "title": "LM Studio", "description": "LM Studio local model server — cross-AI /gsd:review reviewer lane only; not a GSD install target (no runtime body, no artifacts). OpenAI-compatible HTTP transport against a user-configured `review.lm_studio_host` (POST /v1/chat/completions); model discovered via GET /v1/models piped through jq. Capability id/folder are kebab (`lm-studio`, required by KEBAB_RE); `reviewer.slug` stays snake (`lm_studio`) to match the shipped roster and the `review.lm_studio_host` config key (ADR-2782's three-namespace trap).", "tier": "full", @@ -2647,7 +2647,7 @@ const capabilities = { "mempalace": { "id": "mempalace", "role": "feature", - "version": "1.13.0", + "version": "1.14.0", "title": "MemPalace memory", "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.", "tier": "full", @@ -2821,7 +2821,7 @@ const capabilities = { "nyquist": { "id": "nyquist", "role": "feature", - "version": "1.13.0", + "version": "1.14.0", "title": "Nyquist validation", "description": "Validation coverage audit that maps executed work back to tests and manual-only evidence.", "tier": "full", @@ -2871,7 +2871,7 @@ const capabilities = { "ollama": { "id": "ollama", "role": "reviewer", - "version": "1.13.0", + "version": "1.14.0", "title": "Ollama", "description": "Ollama local model server — cross-AI /gsd:review reviewer lane only; not a GSD install target (no runtime body, no artifacts). OpenAI-compatible HTTP transport against a user-configured `review.ollama_host` (POST /v1/chat/completions); model discovered via GET /v1/models piped through jq.", "tier": "full", @@ -2937,7 +2937,7 @@ const capabilities = { "opencode": { "id": "opencode", "role": "runtime", - "version": "1.13.0", + "version": "1.14.0", "title": "OpenCode", "description": "OpenCode — XDG-based config dir; flat commands/ + skills artifact layout; settings-json config format; no lifecycle hook registration; tier-2 support.", "tier": "core", @@ -3132,7 +3132,7 @@ const capabilities = { "pattern-mapper": { "id": "pattern-mapper", "role": "feature", - "version": "1.13.0", + "version": "1.14.0", "title": "Pattern mapping", "description": "Optional codebase-pattern mapping before planning; owns the pattern mapper agent and workflow.pattern_mapper activation key.", "tier": "full", @@ -3186,7 +3186,7 @@ const capabilities = { "pi": { "id": "pi", "role": "runtime", - "version": "1.13.0", + "version": "1.14.0", "title": "pi", "description": "pi (pi.dev) — bun-runtime programmatic-CLI; TS ExtensionAPI (registerCommand/registerTool/registerProvider/pi.on); single native-extension file at ~/.pi/agent/extensions/gsd.js (.js, not .cjs — pi's extension auto-discovery accepts only .ts/.js, #2470); no shared-settings hook surface; tier-2 support.", "tier": "core", @@ -3256,7 +3256,7 @@ const capabilities = { "profile-pipeline": { "id": "profile-pipeline", "role": "feature", - "version": "1.13.0", + "version": "1.14.0", "title": "Developer profiling pipeline", "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.", "tier": "full", @@ -3333,7 +3333,7 @@ const capabilities = { "qwen": { "id": "qwen", "role": "runtime", - "version": "1.13.0", + "version": "1.14.0", "title": "Qwen Code", "description": "Qwen Code (Alibaba) — nested-skill artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.", "tier": "core", @@ -3483,7 +3483,7 @@ const capabilities = { "refactor-trigger": { "id": "refactor-trigger", "role": "feature", - "version": "1.13.0", + "version": "1.14.0", "title": "Complexity-triggered refactor", "description": "Measures the complexity of the code a phase touched and, when a function crosses a configured threshold or jumps past its recorded anchor, surfaces a scoped refactor proposal at .planning/phases//-REFACTOR.md. Advisory by default — it never edits code and never blocks. Opt-in strict mode blocks /gsd-ship while a proposal is untriaged; a declined proposal is recorded in the broken-windows ledger when that capability is present. Operationalizes 'refactor early, refactor often' as continuous pressure instead of a thing you have to remember (issue #1953).", "tier": "full", @@ -3550,7 +3550,7 @@ const capabilities = { "research": { "id": "research", "role": "feature", - "version": "1.13.0", + "version": "1.14.0", "title": "Phase research", "description": "Optional phase research before planning; owns the phase researcher agent and workflow.research activation key.", "tier": "standard", @@ -3602,7 +3602,7 @@ const capabilities = { "schema-gate": { "id": "schema-gate", "role": "feature", - "version": "1.13.0", + "version": "1.14.0", "title": "Schema push detection gate", "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.", "tier": "full", @@ -3648,7 +3648,7 @@ const capabilities = { "security": { "id": "security", "role": "feature", - "version": "1.13.0", + "version": "1.14.0", "title": "Security enforcement", "description": "Threat mitigation verification and ship-time security blocking for phases with security enforcement enabled.", "tier": "full", @@ -3747,7 +3747,7 @@ const capabilities = { "tdd": { "id": "tdd", "role": "feature", - "version": "1.13.0", + "version": "1.14.0", "title": "Test-driven development", "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.", "tier": "full", @@ -3800,7 +3800,7 @@ const capabilities = { "trae": { "id": "trae", "role": "runtime", - "version": "1.13.0", + "version": "1.14.0", "title": "Trae IDE", "description": "Trae IDE — nested-skill artifact layout; no hook surface (profile-marker-only config); tier-2 support.", "tier": "core", @@ -3898,7 +3898,7 @@ const capabilities = { "ui": { "id": "ui", "role": "feature", - "version": "1.13.0", + "version": "1.14.0", "title": "UI design contracts", "description": "UI-SPEC design contract + retrospective UI audit for frontend phases.", "tier": "full", @@ -3993,7 +3993,7 @@ const capabilities = { "vscode": { "id": "vscode", "role": "runtime", - "version": "1.13.0", + "version": "1.14.0", "title": "VS Code", "description": "VS Code — Marketplace/VSIX extension; no file-projected config directory; IDE-profile reference host (active vscode.lm model, engine-owned hook bus, sandboxed globalState/workspaceState stateIO).", "tier": "core", @@ -4051,7 +4051,7 @@ const capabilities = { "windsurf": { "id": "windsurf", "role": "runtime", - "version": "1.13.0", + "version": "1.14.0", "title": "Windsurf", "description": "Windsurf (Codeium) — workspace workflow artifact layout for slash commands; Cascade native hooks.json blocking hook bus (pre_write_code, pre_run_command); tier-2 support.", "tier": "core", @@ -4143,7 +4143,7 @@ const capabilities = { "zcode": { "id": "zcode", "role": "runtime", - "version": "1.13.0", + "version": "1.14.0", "title": "ZCode", "description": "ZCode (Z.ai) — desktop Agentic Development Environment for GLM-5.2; Claude-shaped nested skills at ~/.zcode/skills//SKILL.md, slash commands, named subagents, native MCP; declarative plugin surface; profile-marker install; tier-2 community support.", "tier": "core", @@ -5568,7 +5568,7 @@ const runtimes = { "antigravity": { "id": "antigravity", "role": "runtime", - "version": "1.13.0", + "version": "1.14.0", "title": "Antigravity", "description": "Google Antigravity IDE — config/settings home nested under ~/.gemini/antigravity (probed across 1.x and 2.x layouts); global skills/agents install under ~/.gemini/config, the dir AGY scans for global discovery (#3738); Gemini hook event dialect; flat skill layout; tier-1 support.", "tier": "core", @@ -5731,7 +5731,7 @@ const runtimes = { "augment": { "id": "augment", "role": "runtime", - "version": "1.13.0", + "version": "1.14.0", "title": "Augment Code", "description": "Augment Code CLI — commands + nested-skill artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.", "tier": "core", @@ -5845,7 +5845,7 @@ const runtimes = { "claude": { "id": "claude", "role": "runtime", - "version": "1.13.0", + "version": "1.14.0", "title": "Claude Code", "description": "Anthropic Claude Code — primary development runtime; tier-1 support with full hook surface and skills-based global install.", "tier": "core", @@ -6026,7 +6026,7 @@ const runtimes = { "cline": { "id": "cline", "role": "runtime", - "version": "1.13.0", + "version": "1.14.0", "title": "Cline", "description": "Cline (VS Code extension) — global-only nested-skill layout; cline-rules hook surface (.clinerules); no hook events emitted; tier-2 support.", "tier": "core", @@ -6119,7 +6119,7 @@ const runtimes = { "codebuddy": { "id": "codebuddy", "role": "runtime", - "version": "1.13.0", + "version": "1.14.0", "title": "CodeBuddy", "description": "CodeBuddy (Tencent) — converted commands + skills artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.", "tier": "core", @@ -6237,7 +6237,7 @@ const runtimes = { "codex": { "id": "codex", "role": "runtime", - "version": "1.13.0", + "version": "1.14.0", "title": "OpenAI Codex CLI", "description": "OpenAI Codex CLI — shell-var command style; per-agent sandbox tiers; config.toml + hooks.json hook surface; tier-1 support.", "tier": "core", @@ -6417,7 +6417,7 @@ const runtimes = { "copilot": { "id": "copilot", "role": "runtime", - "version": "1.13.0", + "version": "1.14.0", "title": "GitHub Copilot", "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.", "tier": "core", @@ -6517,7 +6517,7 @@ const runtimes = { "cursor": { "id": "cursor", "role": "runtime", - "version": "1.13.0", + "version": "1.14.0", "title": "Cursor", "description": "Cursor IDE — skills-only workflow surface; hooks.json surface; Claude hook event dialect; recursive skill loader (flat nesting); tier-2 support.", "tier": "core", @@ -6686,7 +6686,7 @@ const runtimes = { "hermes": { "id": "hermes", "role": "runtime", - "version": "1.13.0", + "version": "1.14.0", "title": "Hermes Agent", "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.", "tier": "core", @@ -6798,7 +6798,7 @@ const runtimes = { "kilo": { "id": "kilo", "role": "runtime", - "version": "1.13.0", + "version": "1.14.0", "title": "Kilo Code", "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.", "tier": "core", @@ -6928,7 +6928,7 @@ const runtimes = { "kimi": { "id": "kimi", "role": "runtime", - "version": "1.13.0", + "version": "1.14.0", "title": "Kimi CLI", "description": "Kimi CLI (Moonshot AI) — generic agents root at ~/.config/agents; skills + kimi-agents artifact layout; native config.toml [[hooks]] bus at ~/.kimi/config.toml; background dispatch; tier-2 support.", "tier": "core", @@ -7032,7 +7032,7 @@ const runtimes = { "kimi-code": { "id": "kimi-code", "role": "runtime", - "version": "1.13.0", + "version": "1.14.0", "title": "Kimi Code CLI", "description": "Kimi Code CLI (Moonshot AI, Node) — Agent Skills auto-discovered at ~/.kimi-code/skills; global AGENTS.md at ~/.kimi-code/AGENTS.md; native config.toml + [[hooks]] bus; three built-in subagents (coder/explore/plan), NO custom named subagents; background dispatch; tier-2 support. Distinct from Python kimi-cli (the 'kimi' capability) per ADR-1239 EoS — Kimi Code cannot dispatch named subagents so the kimi-agents YAML layout does NOT apply; persona injection rides the existing ${AGENT_SKILLS_*} workflow fallback. Install-layout, agent-install-check, and install-time decision (kimi vs kimi-code) land in follow-up PRs; this descriptor is the EoS foundation.", "tier": "core", @@ -7199,7 +7199,7 @@ const runtimes = { "opencode": { "id": "opencode", "role": "runtime", - "version": "1.13.0", + "version": "1.14.0", "title": "OpenCode", "description": "OpenCode — XDG-based config dir; flat commands/ + skills artifact layout; settings-json config format; no lifecycle hook registration; tier-2 support.", "tier": "core", @@ -7394,7 +7394,7 @@ const runtimes = { "pi": { "id": "pi", "role": "runtime", - "version": "1.13.0", + "version": "1.14.0", "title": "pi", "description": "pi (pi.dev) — bun-runtime programmatic-CLI; TS ExtensionAPI (registerCommand/registerTool/registerProvider/pi.on); single native-extension file at ~/.pi/agent/extensions/gsd.js (.js, not .cjs — pi's extension auto-discovery accepts only .ts/.js, #2470); no shared-settings hook surface; tier-2 support.", "tier": "core", @@ -7464,7 +7464,7 @@ const runtimes = { "qwen": { "id": "qwen", "role": "runtime", - "version": "1.13.0", + "version": "1.14.0", "title": "Qwen Code", "description": "Qwen Code (Alibaba) — nested-skill artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.", "tier": "core", @@ -7614,7 +7614,7 @@ const runtimes = { "trae": { "id": "trae", "role": "runtime", - "version": "1.13.0", + "version": "1.14.0", "title": "Trae IDE", "description": "Trae IDE — nested-skill artifact layout; no hook surface (profile-marker-only config); tier-2 support.", "tier": "core", @@ -7712,7 +7712,7 @@ const runtimes = { "vscode": { "id": "vscode", "role": "runtime", - "version": "1.13.0", + "version": "1.14.0", "title": "VS Code", "description": "VS Code — Marketplace/VSIX extension; no file-projected config directory; IDE-profile reference host (active vscode.lm model, engine-owned hook bus, sandboxed globalState/workspaceState stateIO).", "tier": "core", @@ -7770,7 +7770,7 @@ const runtimes = { "windsurf": { "id": "windsurf", "role": "runtime", - "version": "1.13.0", + "version": "1.14.0", "title": "Windsurf", "description": "Windsurf (Codeium) — workspace workflow artifact layout for slash commands; Cascade native hooks.json blocking hook bus (pre_write_code, pre_run_command); tier-2 support.", "tier": "core", @@ -7862,7 +7862,7 @@ const runtimes = { "zcode": { "id": "zcode", "role": "runtime", - "version": "1.13.0", + "version": "1.14.0", "title": "ZCode", "description": "ZCode (Z.ai) — desktop Agentic Development Environment for GLM-5.2; Claude-shaped nested skills at ~/.zcode/skills//SKILL.md, slash commands, named subagents, native MCP; declarative plugin surface; profile-marker install; tier-2 community support.", "tier": "core", diff --git a/package-lock.json b/package-lock.json index 15a2f74e9..1cd68bcf7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@opengsd/gsd-core", - "version": "1.13.0", + "version": "1.14.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@opengsd/gsd-core", - "version": "1.13.0", + "version": "1.14.0", "license": "MIT", "dependencies": { "@anthropic-ai/claude-agent-sdk": "^0.2.84", diff --git a/package.json b/package.json index 95d65080e..92966ad7c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@opengsd/gsd-core", - "version": "1.13.0", + "version": "1.14.0", "description": "GSD Core is a meta-prompting, context engineering, and spec-driven development system for AI coding agents.", "main": ".opencode/plugins/gsd-core.js", "bin": { diff --git a/vscode/package.json b/vscode/package.json index bf4de8f4d..56280de34 100644 --- a/vscode/package.json +++ b/vscode/package.json @@ -2,7 +2,7 @@ "name": "gsd-core-vscode", "displayName": "GSD Core", "description": "GSD orchestration engine embedded in VS Code (ADR-1239 IDE profile).", - "version": "1.13.0", + "version": "1.14.0", "publisher": "opengsd", "engines": { "vscode": "^1.105.0" From f8542fef67c1f978ffa70912cb6f2aaab76464c6 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 14 Sep 2026 00:01:08 +0000 Subject: [PATCH 2/2] chore: promote CHANGELOG for v1.14.0 --- .changeset/3644-completion-seam.md | 7 -- .changeset/4089-minimum-solution.md | 5 - .changeset/agile-badgers-roar.md | 5 - .changeset/agile-wasps-chatter.md | 5 - .changeset/bold-cranes-rest.md | 5 - .changeset/bold-ibex-chatter.md | 5 - .changeset/bold-jaguars-parade.md | 5 - .changeset/brave-elks-glide.md | 5 - .changeset/brave-finches-zip.md | 5 - .changeset/brave-geese-sing.md | 5 - .changeset/calm-goats-bark.md | 5 - .changeset/calm-quails-snooze.md | 6 -- .changeset/clever-badgers-gather.md | 5 - .changeset/clever-rams-hop.md | 5 - .changeset/curious-dogs-dart.md | 5 - .changeset/curious-tigers-tumble.md | 5 - .changeset/daring-hawks-zip.md | 5 - .changeset/eager-badgers-bark.md | 5 - .changeset/eager-deer-hop.md | 5 - .changeset/eager-tigers-wander.md | 5 - .changeset/eager-tunas-hum.md | 5 - .changeset/fierce-elks-leap.md | 5 - .changeset/fierce-foxes-run.md | 5 - .changeset/fierce-koalas-climb.md | 5 - .changeset/fierce-pumas-dance.md | 5 - .changeset/fierce-quails-leap.md | 5 - .changeset/gallant-hawks-tumble.md | 5 - .changeset/gallant-wolves-romp.md | 5 - .changeset/gentle-dogs-climb.md | 5 - .changeset/gentle-jays-wave.md | 5 - .changeset/graceful-cats-hop.md | 5 - .changeset/graceful-dogs-bark.md | 5 - .changeset/graceful-mice-chatter.md | 5 - .changeset/happy-herons-tumble.md | 5 - .changeset/happy-sloths-rest.md | 5 - .changeset/humble-koalas-swim.md | 5 - .changeset/jolly-badgers-wake.md | 5 - .changeset/jolly-lynx-sprint.md | 5 - .changeset/jolly-moles-snooze.md | 5 - .changeset/jolly-otters-click.md | 5 - .changeset/kind-sloths-swim.md | 5 - .changeset/lively-quails-forage.md | 5 - .changeset/mellow-foxes-tumble.md | 5 - .changeset/mellow-koalas-caper.md | 5 - .changeset/mellow-koalas-frolic.md | 5 - .changeset/merry-cranes-frolic.md | 5 - .changeset/merry-otters-wave.md | 5 - .changeset/nimble-geese-zip.md | 5 - .changeset/nimble-hawks-frolic.md | 5 - .changeset/nimble-lemurs-wander.md | 5 - .changeset/noble-deer-zip.md | 5 - .changeset/noble-geese-climb.md | 5 - .changeset/noble-tunas-travel.md | 5 - .changeset/patient-moles-click.md | 5 - .changeset/patient-quails-greet.md | 5 - .changeset/patient-tunas-howl.md | 5 - .changeset/plucky-jays-travel.md | 5 - .changeset/plucky-newts-squeak.md | 5 - .changeset/proud-goats-romp.md | 5 - .changeset/proud-koalas-jump.md | 5 - .changeset/quick-bears-tumble.md | 5 - .changeset/quick-panthers-cross.md | 5 - .changeset/quick-tunas-wander.md | 5 - .changeset/quiet-lynxes-filter.md | 5 - .changeset/rapid-finches-roar.md | 5 - .changeset/rapid-pumas-parade.md | 5 - .changeset/reviewer-lane-source-review.md | 5 - .changeset/serene-foxes-hum.md | 5 - .changeset/sharp-bears-roar.md | 5 - .changeset/sharp-deer-hop.md | 5 - .changeset/sharp-tigers-sing.md | 5 - .changeset/silly-lemurs-munch.md | 5 - .changeset/silly-lynx-click.md | 5 - .changeset/silly-voles-climb.md | 5 - .changeset/silly-zebras-roar.md | 5 - .changeset/steady-elks-parade.md | 5 - .changeset/steady-moles-guard.md | 5 - .changeset/steady-sloths-parade.md | 5 - .changeset/steady-tunas-tumble.md | 5 - .changeset/sturdy-jays-cheer.md | 5 - .changeset/sunny-wasps-cheer.md | 5 - .changeset/tame-hens-jump.md | 5 - .changeset/tidy-bears-jump.md | 5 - .changeset/tidy-pandas-dart.md | 5 - .changeset/vivid-newts-march.md | 5 - .changeset/vivid-quails-roam.md | 5 - .changeset/wise-foxes-march.md | 5 - .changeset/wise-hawks-howl.md | 5 - .changeset/witty-orcas-jump.md | 5 - .changeset/witty-ravens-fly.md | 5 - .changeset/witty-wasps-romp.md | 5 - .changeset/zesty-seals-click.md | 5 - .changeset/zesty-tunas-bark.md | 5 - CHANGELOG.md | 112 ++++++++++++++++++++++ 94 files changed, 112 insertions(+), 468 deletions(-) delete mode 100644 .changeset/3644-completion-seam.md delete mode 100644 .changeset/4089-minimum-solution.md delete mode 100644 .changeset/agile-badgers-roar.md delete mode 100644 .changeset/agile-wasps-chatter.md delete mode 100644 .changeset/bold-cranes-rest.md delete mode 100644 .changeset/bold-ibex-chatter.md delete mode 100644 .changeset/bold-jaguars-parade.md delete mode 100644 .changeset/brave-elks-glide.md delete mode 100644 .changeset/brave-finches-zip.md delete mode 100644 .changeset/brave-geese-sing.md delete mode 100644 .changeset/calm-goats-bark.md delete mode 100644 .changeset/calm-quails-snooze.md delete mode 100644 .changeset/clever-badgers-gather.md delete mode 100644 .changeset/clever-rams-hop.md delete mode 100644 .changeset/curious-dogs-dart.md delete mode 100644 .changeset/curious-tigers-tumble.md delete mode 100644 .changeset/daring-hawks-zip.md delete mode 100644 .changeset/eager-badgers-bark.md delete mode 100644 .changeset/eager-deer-hop.md delete mode 100644 .changeset/eager-tigers-wander.md delete mode 100644 .changeset/eager-tunas-hum.md delete mode 100644 .changeset/fierce-elks-leap.md delete mode 100644 .changeset/fierce-foxes-run.md delete mode 100644 .changeset/fierce-koalas-climb.md delete mode 100644 .changeset/fierce-pumas-dance.md delete mode 100644 .changeset/fierce-quails-leap.md delete mode 100644 .changeset/gallant-hawks-tumble.md delete mode 100644 .changeset/gallant-wolves-romp.md delete mode 100644 .changeset/gentle-dogs-climb.md delete mode 100644 .changeset/gentle-jays-wave.md delete mode 100644 .changeset/graceful-cats-hop.md delete mode 100644 .changeset/graceful-dogs-bark.md delete mode 100644 .changeset/graceful-mice-chatter.md delete mode 100644 .changeset/happy-herons-tumble.md delete mode 100644 .changeset/happy-sloths-rest.md delete mode 100644 .changeset/humble-koalas-swim.md delete mode 100644 .changeset/jolly-badgers-wake.md delete mode 100644 .changeset/jolly-lynx-sprint.md delete mode 100644 .changeset/jolly-moles-snooze.md delete mode 100644 .changeset/jolly-otters-click.md delete mode 100644 .changeset/kind-sloths-swim.md delete mode 100644 .changeset/lively-quails-forage.md delete mode 100644 .changeset/mellow-foxes-tumble.md delete mode 100644 .changeset/mellow-koalas-caper.md delete mode 100644 .changeset/mellow-koalas-frolic.md delete mode 100644 .changeset/merry-cranes-frolic.md delete mode 100644 .changeset/merry-otters-wave.md delete mode 100644 .changeset/nimble-geese-zip.md delete mode 100644 .changeset/nimble-hawks-frolic.md delete mode 100644 .changeset/nimble-lemurs-wander.md delete mode 100644 .changeset/noble-deer-zip.md delete mode 100644 .changeset/noble-geese-climb.md delete mode 100644 .changeset/noble-tunas-travel.md delete mode 100644 .changeset/patient-moles-click.md delete mode 100644 .changeset/patient-quails-greet.md delete mode 100644 .changeset/patient-tunas-howl.md delete mode 100644 .changeset/plucky-jays-travel.md delete mode 100644 .changeset/plucky-newts-squeak.md delete mode 100644 .changeset/proud-goats-romp.md delete mode 100644 .changeset/proud-koalas-jump.md delete mode 100644 .changeset/quick-bears-tumble.md delete mode 100644 .changeset/quick-panthers-cross.md delete mode 100644 .changeset/quick-tunas-wander.md delete mode 100644 .changeset/quiet-lynxes-filter.md delete mode 100644 .changeset/rapid-finches-roar.md delete mode 100644 .changeset/rapid-pumas-parade.md delete mode 100644 .changeset/reviewer-lane-source-review.md delete mode 100644 .changeset/serene-foxes-hum.md delete mode 100644 .changeset/sharp-bears-roar.md delete mode 100644 .changeset/sharp-deer-hop.md delete mode 100644 .changeset/sharp-tigers-sing.md delete mode 100644 .changeset/silly-lemurs-munch.md delete mode 100644 .changeset/silly-lynx-click.md delete mode 100644 .changeset/silly-voles-climb.md delete mode 100644 .changeset/silly-zebras-roar.md delete mode 100644 .changeset/steady-elks-parade.md delete mode 100644 .changeset/steady-moles-guard.md delete mode 100644 .changeset/steady-sloths-parade.md delete mode 100644 .changeset/steady-tunas-tumble.md delete mode 100644 .changeset/sturdy-jays-cheer.md delete mode 100644 .changeset/sunny-wasps-cheer.md delete mode 100644 .changeset/tame-hens-jump.md delete mode 100644 .changeset/tidy-bears-jump.md delete mode 100644 .changeset/tidy-pandas-dart.md delete mode 100644 .changeset/vivid-newts-march.md delete mode 100644 .changeset/vivid-quails-roam.md delete mode 100644 .changeset/wise-foxes-march.md delete mode 100644 .changeset/wise-hawks-howl.md delete mode 100644 .changeset/witty-orcas-jump.md delete mode 100644 .changeset/witty-ravens-fly.md delete mode 100644 .changeset/witty-wasps-romp.md delete mode 100644 .changeset/zesty-seals-click.md delete mode 100644 .changeset/zesty-tunas-bark.md diff --git a/.changeset/3644-completion-seam.md b/.changeset/3644-completion-seam.md deleted file mode 100644 index fd63b25de..000000000 --- a/.changeset/3644-completion-seam.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -type: Added -pr: 3644 ---- -**The phase-directory membership seam threads the phase ID convention through the completion chain** — the #3511 seam (`isPhaseArtifact` / `scopeToPhase`) now takes the same optional convention every other read-path helper does, and the completion chain threads it: `state json` / `state sync`'s completed-phase counting, the planning snapshot, roadmap analysis, `state validate`'s drift scan, the verification-report resolver, and `phase complete`'s actual completion gate. A bracket directory therefore scopes its listing by its real phase token instead of the include-everything ambiguity fail-safe, so a cross-phase stray (`01-VERIFICATION.md` misfiled into phase 03's directory) can no longer supply the pass/fail verdict for a bracket phase — the same protection #3511 already gives legacy directories, **on the call sites this PR threads**. - -Call sites that do not yet resolve a convention keep the documented include-everything fail-safe on bracket directories, and this PR changes nothing for them: the aggregate scans (`uat`, `audit`, `init`'s projections, `gap-checker`, `phase-locator`); **`phase complete`'s advisory pre-scan** (`cmdPhaseComplete`, `src/phase.cts`), whose UAT and VERIFICATION warning sweeps still call the seam convention-lessly and can therefore surface a spurious warning for a cross-phase stray, although that scan cannot pass or block completion; and **the workstream inventory's per-phase completion projection** (`src/workstream-inventory.cts`), which calls the now-convention-aware `isPhaseComplete` without resolving a convention to pass it and can therefore still project a bracket phase complete or incomplete from a cross-phase stray. Threading those readers is follow-up-slice work alongside the epic's other convention-less readers. A project on any convention other than `"bracket"` is unaffected. (#4142) diff --git a/.changeset/4089-minimum-solution.md b/.changeset/4089-minimum-solution.md deleted file mode 100644 index 7acd3ff9b..000000000 --- a/.changeset/4089-minimum-solution.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -type: Changed -pr: 4118 ---- -**Planning guidance now prefers the first sufficient implementation option** — existing project behavior, standard-library or native platform capability, installed dependencies, and only then minimum new implementation, without reducing required scope or verification. diff --git a/.changeset/agile-badgers-roar.md b/.changeset/agile-badgers-roar.md deleted file mode 100644 index 7cc52c6da..000000000 --- a/.changeset/agile-badgers-roar.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -type: Fixed -pr: 4380 ---- -**`gsd-tools state begin-phase` without `--phase` now exits non-zero and writes nothing** — previously a missing, empty, or flag-shaped phase argument was silently accepted and wrote a null-phase STATE.md (removing `current_phase`/`current_phase_name` from frontmatter and serialising the literal `Phase null` into three body locations), and took a milestone claim for the phase "null". (#4138) diff --git a/.changeset/agile-wasps-chatter.md b/.changeset/agile-wasps-chatter.md deleted file mode 100644 index f8e383d9f..000000000 --- a/.changeset/agile-wasps-chatter.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -type: Fixed -pr: 4373 ---- -**`/gsd-update --reapply` no longer re-grafts customizations that upstream already adopted** — the documented `Incorporated` per-file status is now computed by a deterministic pre-flight classifier (hash-validated pristine baseline + every significant user-added line already present verbatim in the new version), so superseded patches are reported as already upstream instead of being silently re-applied on every future update cycle. (#4136) diff --git a/.changeset/bold-cranes-rest.md b/.changeset/bold-cranes-rest.md deleted file mode 100644 index 647ccfcf2..000000000 --- a/.changeset/bold-cranes-rest.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -type: Fixed -pr: 4357 ---- -**The decision-coverage gate now reads phase-prefixed decision IDs** — a CONTEXT.md whose decisions use D4-01-style IDs (a digit-run phase prefix) no longer reports could-not-parse for the whole file; its decisions are counted and coverage-checked like any other, and a typo'd prefix (D4x-01) still fails loud. (#4130) diff --git a/.changeset/bold-ibex-chatter.md b/.changeset/bold-ibex-chatter.md deleted file mode 100644 index 254951d2a..000000000 --- a/.changeset/bold-ibex-chatter.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -type: Security -pr: 4659 ---- -**The secret-read guard no longer lets a trailing dot or space alias past it** — Windows strips trailing dots and spaces from every path component, so `.env.`, `.env ` and `.secrets.` all resolve to the protected file while the guard treated them as unrelated names and allowed the read. Names are now normalized before classification, and the Read, Grep and Bash arms share one path-segmentation rule instead of two that disagreed on backslash paths. (#4651) diff --git a/.changeset/bold-jaguars-parade.md b/.changeset/bold-jaguars-parade.md deleted file mode 100644 index ca1bc696f..000000000 --- a/.changeset/bold-jaguars-parade.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -type: Fixed -pr: 4413 ---- -**`/gsd:update` no longer misreports a global install as LOCAL when the shell sits in $HOME** — running the update from a home-directory shell drove the installer's --local arm (settings.local.json + the #338 relocation) against a global install; the preferred-config-dir fast path now applies the same same-path dedup the rest of the detection cascade always has. (#4197) diff --git a/.changeset/brave-elks-glide.md b/.changeset/brave-elks-glide.md deleted file mode 100644 index 31003f20f..000000000 --- a/.changeset/brave-elks-glide.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -type: Fixed -pr: 4473 ---- -**A progress bar is full only at 100%** — every bar-drawing surface (`progress` in table and bar format, `stats`, `state update-progress`, the STATE.md progress line written by `state sync`, and the gsd2 import writer) now draws through one render kernel, `renderProgressBar`, beside the completion-ratio kernel in `phase-lifecycle`. The six inline copies of `Math.round((percent / 100) * width)` each rounded to a full bar before the percent reached 100: at the 10-cell width every percent from 95 up drew `[██████████]`, at the 20-cell width every percent from 98 up, so a project at 19/20 plans was visually indistinguishable from a shipped one beside a number that said otherwise. Below 100 the fill is now held one cell short; only those percents move (95-99 at width 10, 98-99 at width 20), every other value in 0-100 renders exactly as before. A null or non-finite percent still renders an empty bar, and an out-of-range percent is clamped instead of throwing `RangeError` from `'░'.repeat` as the inline form did at 120%. diff --git a/.changeset/brave-finches-zip.md b/.changeset/brave-finches-zip.md deleted file mode 100644 index bcbc31548..000000000 --- a/.changeset/brave-finches-zip.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -type: Fixed -pr: 4468 ---- -**`roadmap update-plan-progress` no longer false-greens on checklist-form ROADMAPs** — a phase whose entry is a `- [ ] **Phase N: …**` checklist bullet with no writable Progress-table row or detail section now declines with `updated: false` and a typed `missing_phase_details` reason, leaving ROADMAP.md byte-identical, instead of reporting success off an unrelated checkbox mark while the phase row stayed untouched and blank lines were injected mid-sentence in other phases' entries. (#4247) diff --git a/.changeset/brave-geese-sing.md b/.changeset/brave-geese-sing.md deleted file mode 100644 index bd16c3fef..000000000 --- a/.changeset/brave-geese-sing.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -type: Fixed -pr: 4618 ---- -**`validate.health` no longer flags `.planning/PATTERNS.md` as an unrecognized file.** The graduation workflow (`/gsd-extract-learnings`) writes this file on gsd-core's own instruction, but the artifact registry was never updated to recognize it -- every repo that had run the graduation scan sat permanently at `status: degraded`. (#4282) diff --git a/.changeset/calm-goats-bark.md b/.changeset/calm-goats-bark.md deleted file mode 100644 index fa9021cbf..000000000 --- a/.changeset/calm-goats-bark.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -type: Fixed -pr: 4453 ---- -**`state begin-phase` no longer rewrites prose that merely quotes a bold field label** — a `**Status:**` (or any served field label) quoted mid-sentence inside prose captured the field rewrite and silently destroyed the rest of its line; the bold form is now anchored to line start, so only the real field updates. Frontmatter round-trip through begin-phase (custom keys, progress subkeys, milestone identity without a ROADMAP) is pinned with regression tests. (#4243) diff --git a/.changeset/calm-quails-snooze.md b/.changeset/calm-quails-snooze.md deleted file mode 100644 index c0962c607..000000000 --- a/.changeset/calm-quails-snooze.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -type: Changed -pr: 4397 ---- - -**21 GSD skills now declare `Grep` in `allowed-tools`** — cleanup, complete-milestone, config, debug, graphify, health, mempalace-capture, mempalace-recall, new-milestone, new-project, next, pause-work, phase, pr-branch, resume-work, review-backlog, settings, stats, thread, workspace, and workstreams can now use the dedicated structured-search tool instead of shelling out through Bash grep. diff --git a/.changeset/clever-badgers-gather.md b/.changeset/clever-badgers-gather.md deleted file mode 100644 index f5b79edcd..000000000 --- a/.changeset/clever-badgers-gather.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -type: Fixed -pr: 4376 ---- -**The reapply verifier now headlines its baseline coverage instead of reading as fully verified when most files were skipped** — after a multi-version update, /gsd-update --reapply reports 'Baseline coverage: N of M file(s)' in the verifier summary, the reapply output, and the installer's update log; on git-managed config dirs the verifier additionally recovers pristine baselines from history by recorded hash, so files upstream heavily changed are diff-verified instead of skipped; an opt-in --min-baseline-coverage <0..1> flag lets cautious operators fail the gate (exit 3) below a coverage threshold. (#4135) diff --git a/.changeset/clever-rams-hop.md b/.changeset/clever-rams-hop.md deleted file mode 100644 index f5fa9d336..000000000 --- a/.changeset/clever-rams-hop.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -type: Fixed -pr: 4537 ---- -**`/gsd-pr-branch` no longer silently drops a planning-only commit that mixes a structural `.planning/` path (STATE.md, ROADMAP.md, etc.) with a transient or other planning path** — such a commit matched none of the classification's four arms and was excluded, which could break `STATE.md`'s per-commit revision chain in default mode. A fifth arm now covers this shape and includes it, same as a mixed code+planning commit. (#4447) diff --git a/.changeset/curious-dogs-dart.md b/.changeset/curious-dogs-dart.md deleted file mode 100644 index a63e7ca6d..000000000 --- a/.changeset/curious-dogs-dart.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -type: Added -pr: 4471 ---- -**`workflow.compact_content` now actually does something: `plan-phase` is the first workflow split into a spine + detail file.** With the key off (default), nothing changes — the spine reads the deferred elaboration back in before continuing, so the instruction set is identical to today. With it on, that read is skipped and the orchestrator runs on the terser spine alone, which is complete enough to plan a phase correctly on its own. The check and the resolution rule live in one shared reference (`gsd-core/references/compact-content-gate.md`) that future splits reference instead of restating. (#4402) diff --git a/.changeset/curious-tigers-tumble.md b/.changeset/curious-tigers-tumble.md deleted file mode 100644 index a5b861193..000000000 --- a/.changeset/curious-tigers-tumble.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -type: Changed -pr: 4366 ---- -**Context-monitor WARNING/CRITICAL fire-points are now readable from `.planning/config.json`** — `hooks.context_warning_threshold` (default 35) and `hooks.context_critical_threshold` (default 25) move the two rungs per project, so a tuned fire-point survives an update instead of being re-staged away with the managed hook file. Absent keys resolve to today's 35/25, so existing projects are unchanged. An unusable value falls back per key; both revert to their defaults only when the resolved pair violates `critical < warning`. The keys are root-project settings — the hook reads `/.planning/config.json` only, and they are read by that hook and nothing else, so on a runtime where it is not installed (Codex, per #2586) both keys are stored and validated but inert. `config-set` refuses the two endpoints that can never take effect — a warning of 0 and a critical of 100 — because `critical < warning` has no legal partner for either, and an absent key now reports the shipped default (35/25) instead of "Key not found". (#4285) diff --git a/.changeset/daring-hawks-zip.md b/.changeset/daring-hawks-zip.md deleted file mode 100644 index ba3a47243..000000000 --- a/.changeset/daring-hawks-zip.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -type: Fixed -pr: 4358 ---- -**`milestone_name` no longer corrupts to ")" for a first-milestone ROADMAP whose H1 puts the version after the name** — a punctuation-only heading remainder (e.g. the closing paren of `# Roadmap: Project — Name (v1.13)`) is refused as a name, so `init.*` output reports `null` instead of garbage, and the roadmapper agent now templates the canonical version-free H1. (#4134) diff --git a/.changeset/eager-badgers-bark.md b/.changeset/eager-badgers-bark.md deleted file mode 100644 index ab8071b6a..000000000 --- a/.changeset/eager-badgers-bark.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -type: Changed -pr: 4672 ---- -**The path-containment predicate is now a single exported seam** — `security.cjs` no longer exports `validatePath`. Containment is decided in exactly one place and resolved two ways: `assertWithinRoot` (throws) and `tryWithinRoot` (returns null) resolve symlinks, while `assertWithinRootLexical` and `tryWithinRootLexical` use string resolution alone and never touch the filesystem, for the few callers that must preserve a symlink rather than resolve it or that validate a destination before it exists. `requireSafePath` is preserved as an alias of the throwing form. All of them return a branded `ContainedPath` so a validated path cannot be silently swapped for an unvalidated one. The per-call-site `{ allowAbsolute: true }` flag is replaced by the named `PathAcceptance` policy, which states what it actually permits: an absolute path outside the root was always rejected and still is. The traversal rejection text `Path escapes allowed directory: is outside ` is preserved verbatim, and no command changes what it accepts or rejects. Three rejection MESSAGES are reworded, none of which now reveals a host path it previously hid: `state.cts`'s `