diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index 26dad411a..5d4acf5b8 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "gsd-core", "displayName": "GSD Core", - "version": "1.6.0", + "version": "1.7.0-rc.1", "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 4e7405ba3..e7833931f 100644 --- a/capabilities/ai-integration/capability.json +++ b/capabilities/ai-integration/capability.json @@ -1,7 +1,7 @@ { "id": "ai-integration", "role": "feature", - "version": "1.6.0", + "version": "1.7.0-rc.1", "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 ef7680f2f..8e3b28240 100644 --- a/capabilities/antigravity/capability.json +++ b/capabilities/antigravity/capability.json @@ -1,7 +1,7 @@ { "id": "antigravity", "role": "runtime", - "version": "1.6.0", + "version": "1.7.0-rc.1", "title": "Antigravity", "description": "Google Antigravity IDE — nested under ~/.gemini/antigravity; probed across 1.x and 2.x layouts; Gemini hook event dialect; flat skill layout; tier-1 support.", "tier": "core", @@ -60,7 +60,14 @@ "hostIntegration": { "embeddingMode": "declarative", "commandSurface": "slash-file", - "dispatch": { "namedDispatch": "undocumented", "nested": "undocumented", "maxDepth": "undocumented", "background": true, "subagentToolkit": "undocumented", "backgroundDispatch": "undocumented" }, + "dispatch": { + "namedDispatch": "undocumented", + "nested": "undocumented", + "maxDepth": "undocumented", + "background": true, + "subagentToolkit": "undocumented", + "backgroundDispatch": "undocumented" + }, "modelMode": "passive", "hookBus": "host", "stateIO": "filesystem", diff --git a/capabilities/assumption-delta/capability.json b/capabilities/assumption-delta/capability.json index 889e01e53..593ec9e1c 100644 --- a/capabilities/assumption-delta/capability.json +++ b/capabilities/assumption-delta/capability.json @@ -1,7 +1,7 @@ { "id": "assumption-delta", "role": "feature", - "version": "1.6.0", + "version": "1.7.0-rc.1", "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 293381326..f6a54a478 100644 --- a/capabilities/audit/capability.json +++ b/capabilities/audit/capability.json @@ -1,7 +1,7 @@ { "id": "audit", "role": "feature", - "version": "1.6.0", + "version": "1.7.0-rc.1", "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 27f211790..ff8048021 100644 --- a/capabilities/augment/capability.json +++ b/capabilities/augment/capability.json @@ -1,7 +1,7 @@ { "id": "augment", "role": "runtime", - "version": "1.6.0", + "version": "1.7.0-rc.1", "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", @@ -85,7 +85,14 @@ "hostIntegration": { "embeddingMode": "declarative", "commandSurface": "slash-file", - "dispatch": { "namedDispatch": true, "nested": "undocumented", "maxDepth": "undocumented", "background": true, "subagentToolkit": "full", "backgroundDispatch": "undocumented" }, + "dispatch": { + "namedDispatch": true, + "nested": "undocumented", + "maxDepth": "undocumented", + "background": true, + "subagentToolkit": "full", + "backgroundDispatch": "undocumented" + }, "modelMode": "passive", "hookBus": "host", "stateIO": "filesystem", diff --git a/capabilities/claude/capability.json b/capabilities/claude/capability.json index 712b332f1..9d4f26821 100644 --- a/capabilities/claude/capability.json +++ b/capabilities/claude/capability.json @@ -1,7 +1,7 @@ { "id": "claude", "role": "runtime", - "version": "1.6.0", + "version": "1.7.0-rc.1", "title": "Claude Code", "description": "Anthropic Claude Code — primary development runtime; tier-1 support with full hook surface and skills-based global install.", "tier": "core", @@ -66,7 +66,14 @@ "hostIntegration": { "embeddingMode": "imperative", "commandSurface": "slash-file", - "dispatch": { "namedDispatch": true, "nested": true, "maxDepth": 5, "background": true, "subagentToolkit": "full", "backgroundDispatch": false }, + "dispatch": { + "namedDispatch": true, + "nested": true, + "maxDepth": 5, + "background": true, + "subagentToolkit": "full", + "backgroundDispatch": false + }, "modelMode": "passive", "hookBus": "host", "stateIO": "filesystem", diff --git a/capabilities/cline/capability.json b/capabilities/cline/capability.json index 119269871..13a937394 100644 --- a/capabilities/cline/capability.json +++ b/capabilities/cline/capability.json @@ -1,7 +1,7 @@ { "id": "cline", "role": "runtime", - "version": "1.6.0", + "version": "1.7.0-rc.1", "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", @@ -43,7 +43,14 @@ "hostIntegration": { "embeddingMode": "imperative", "commandSurface": "slash-file", - "dispatch": { "namedDispatch": true, "nested": false, "maxDepth": 1, "background": true, "subagentToolkit": "read-only", "backgroundDispatch": false }, + "dispatch": { + "namedDispatch": true, + "nested": false, + "maxDepth": 1, + "background": true, + "subagentToolkit": "read-only", + "backgroundDispatch": false + }, "modelMode": "active", "hookBus": "host", "stateIO": "filesystem", diff --git a/capabilities/code-review/capability.json b/capabilities/code-review/capability.json index 153f433ff..75a92ed61 100644 --- a/capabilities/code-review/capability.json +++ b/capabilities/code-review/capability.json @@ -1,7 +1,7 @@ { "id": "code-review", "role": "feature", - "version": "1.6.0", + "version": "1.7.0-rc.1", "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 f2de29607..e0fe0b85e 100644 --- a/capabilities/codebuddy/capability.json +++ b/capabilities/codebuddy/capability.json @@ -1,7 +1,7 @@ { "id": "codebuddy", "role": "runtime", - "version": "1.6.0", + "version": "1.7.0-rc.1", "title": "CodeBuddy", "description": "CodeBuddy (Tencent) — converted commands + skills artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.", "tier": "core", @@ -85,7 +85,14 @@ "hostIntegration": { "embeddingMode": "declarative", "commandSurface": "slash-file", - "dispatch": { "namedDispatch": true, "nested": false, "maxDepth": 1, "background": true, "subagentToolkit": "full", "backgroundDispatch": false }, + "dispatch": { + "namedDispatch": true, + "nested": false, + "maxDepth": 1, + "background": true, + "subagentToolkit": "full", + "backgroundDispatch": false + }, "modelMode": "passive", "hookBus": "host", "stateIO": "filesystem", diff --git a/capabilities/codex/capability.json b/capabilities/codex/capability.json index a1ddc49b7..8c19a9634 100644 --- a/capabilities/codex/capability.json +++ b/capabilities/codex/capability.json @@ -1,7 +1,7 @@ { "id": "codex", "role": "runtime", - "version": "1.6.0", + "version": "1.7.0-rc.1", "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", @@ -53,7 +53,14 @@ "hostIntegration": { "embeddingMode": "declarative", "commandSurface": "slash-file", - "dispatch": { "namedDispatch": true, "nested": true, "maxDepth": 1, "background": true, "subagentToolkit": "full", "backgroundDispatch": true }, + "dispatch": { + "namedDispatch": true, + "nested": true, + "maxDepth": 1, + "background": true, + "subagentToolkit": "full", + "backgroundDispatch": true + }, "modelMode": "passive", "hookBus": "host", "stateIO": "filesystem", diff --git a/capabilities/copilot/capability.json b/capabilities/copilot/capability.json index be769009b..7ba39fd2a 100644 --- a/capabilities/copilot/capability.json +++ b/capabilities/copilot/capability.json @@ -1,7 +1,7 @@ { "id": "copilot", "role": "runtime", - "version": "1.6.0", + "version": "1.7.0-rc.1", "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", @@ -53,7 +53,14 @@ "hostIntegration": { "embeddingMode": "declarative", "commandSurface": "slash-file", - "dispatch": { "namedDispatch": true, "nested": false, "maxDepth": 1, "background": true, "subagentToolkit": "full", "backgroundDispatch": false }, + "dispatch": { + "namedDispatch": true, + "nested": false, + "maxDepth": 1, + "background": true, + "subagentToolkit": "full", + "backgroundDispatch": false + }, "modelMode": "passive", "hookBus": "host", "stateIO": "filesystem", diff --git a/capabilities/cursor/capability.json b/capabilities/cursor/capability.json index 247674009..bc36c490d 100644 --- a/capabilities/cursor/capability.json +++ b/capabilities/cursor/capability.json @@ -1,7 +1,7 @@ { "id": "cursor", "role": "runtime", - "version": "1.6.0", + "version": "1.7.0-rc.1", "title": "Cursor", "description": "Cursor IDE — skills + converted commands artifact layout; hooks.json surface; Claude hook event dialect; recursive skill loader (flat nesting); tier-2 support.", "tier": "core", @@ -85,7 +85,14 @@ "hostIntegration": { "embeddingMode": "imperative", "commandSurface": "slash-file", - "dispatch": { "namedDispatch": true, "nested": true, "maxDepth": 2, "background": true, "subagentToolkit": "full", "backgroundDispatch": true }, + "dispatch": { + "namedDispatch": true, + "nested": true, + "maxDepth": 2, + "background": true, + "subagentToolkit": "full", + "backgroundDispatch": true + }, "modelMode": "passive", "hookBus": "host", "stateIO": "filesystem", diff --git a/capabilities/drift/capability.json b/capabilities/drift/capability.json index c69ad521a..8e6ba8d14 100644 --- a/capabilities/drift/capability.json +++ b/capabilities/drift/capability.json @@ -1,7 +1,7 @@ { "id": "drift", "role": "feature", - "version": "1.6.0", + "version": "1.7.0-rc.1", "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/gap-analysis/capability.json b/capabilities/gap-analysis/capability.json index e4926ef85..167ed71b9 100644 --- a/capabilities/gap-analysis/capability.json +++ b/capabilities/gap-analysis/capability.json @@ -1,7 +1,7 @@ { "id": "gap-analysis", "role": "feature", - "version": "1.6.0", + "version": "1.7.0-rc.1", "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 ccc67a8d1..7be2000f5 100644 --- a/capabilities/gemini/capability.json +++ b/capabilities/gemini/capability.json @@ -1,7 +1,7 @@ { "id": "gemini", "role": "runtime", - "version": "1.6.0", + "version": "1.7.0-rc.1", "title": "Gemini CLI", "description": "Google Gemini CLI — commands-only artifact layout (TOML); Gemini hook event dialect; settings-json hook surface; tier-2 support.", "tier": "core", @@ -57,7 +57,14 @@ "hostIntegration": { "embeddingMode": "declarative", "commandSurface": "slash-toml", - "dispatch": { "namedDispatch": true, "nested": false, "maxDepth": 1, "background": "undocumented", "subagentToolkit": "undocumented", "backgroundDispatch": false }, + "dispatch": { + "namedDispatch": true, + "nested": false, + "maxDepth": 1, + "background": "undocumented", + "subagentToolkit": "undocumented", + "backgroundDispatch": false + }, "modelMode": "passive", "hookBus": "host", "stateIO": "filesystem", diff --git a/capabilities/graphify/capability.json b/capabilities/graphify/capability.json index cff231e46..8bb1ed0ce 100644 --- a/capabilities/graphify/capability.json +++ b/capabilities/graphify/capability.json @@ -1,7 +1,7 @@ { "id": "graphify", "role": "feature", - "version": "1.6.0", + "version": "1.7.0-rc.1", "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 5dd4e4b05..36c1e39de 100644 --- a/capabilities/hermes/capability.json +++ b/capabilities/hermes/capability.json @@ -1,7 +1,7 @@ { "id": "hermes", "role": "runtime", - "version": "1.6.0", + "version": "1.7.0-rc.1", "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", @@ -53,7 +53,14 @@ "hostIntegration": { "embeddingMode": "imperative", "commandSurface": "slash-programmatic", - "dispatch": { "namedDispatch": false, "nested": true, "maxDepth": 1, "background": true, "subagentToolkit": "read-only", "backgroundDispatch": false }, + "dispatch": { + "namedDispatch": false, + "nested": true, + "maxDepth": 1, + "background": true, + "subagentToolkit": "read-only", + "backgroundDispatch": false + }, "modelMode": "active", "hookBus": "host", "stateIO": "filesystem", diff --git a/capabilities/intel/capability.json b/capabilities/intel/capability.json index 69c14bcc7..285826192 100644 --- a/capabilities/intel/capability.json +++ b/capabilities/intel/capability.json @@ -1,7 +1,7 @@ { "id": "intel", "role": "feature", - "version": "1.6.0", + "version": "1.7.0-rc.1", "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 032f9be2e..e0ba7e046 100644 --- a/capabilities/kilo/capability.json +++ b/capabilities/kilo/capability.json @@ -1,7 +1,7 @@ { "id": "kilo", "role": "runtime", - "version": "1.6.0", + "version": "1.7.0-rc.1", "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", @@ -75,7 +75,14 @@ "hostIntegration": { "embeddingMode": "imperative", "commandSurface": "slash-file", - "dispatch": { "namedDispatch": true, "nested": true, "maxDepth": -1, "background": true, "subagentToolkit": "undocumented", "backgroundDispatch": false }, + "dispatch": { + "namedDispatch": true, + "nested": true, + "maxDepth": -1, + "background": true, + "subagentToolkit": "undocumented", + "backgroundDispatch": false + }, "modelMode": "active", "hookBus": "host", "stateIO": "filesystem", diff --git a/capabilities/kimi/capability.json b/capabilities/kimi/capability.json index d9bf8da7d..ebba52ffb 100644 --- a/capabilities/kimi/capability.json +++ b/capabilities/kimi/capability.json @@ -1,7 +1,7 @@ { "id": "kimi", "role": "runtime", - "version": "1.6.0", + "version": "1.7.0-rc.1", "title": "Kimi CLI", "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.", "tier": "core", @@ -56,7 +56,14 @@ "hostIntegration": { "embeddingMode": "imperative", "commandSurface": "slash-file", - "dispatch": { "namedDispatch": true, "nested": false, "maxDepth": 1, "background": true, "subagentToolkit": "undocumented", "backgroundDispatch": false }, + "dispatch": { + "namedDispatch": true, + "nested": false, + "maxDepth": 1, + "background": true, + "subagentToolkit": "undocumented", + "backgroundDispatch": false + }, "modelMode": "passive", "hookBus": "host", "stateIO": "filesystem", diff --git a/capabilities/mempalace/capability.json b/capabilities/mempalace/capability.json index a2e80c04a..e8cf8a5c8 100644 --- a/capabilities/mempalace/capability.json +++ b/capabilities/mempalace/capability.json @@ -1,7 +1,7 @@ { "id": "mempalace", "role": "feature", - "version": "1.6.0", + "version": "1.7.0-rc.1", "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 589402fa3..aa0bbf729 100644 --- a/capabilities/nyquist/capability.json +++ b/capabilities/nyquist/capability.json @@ -1,7 +1,7 @@ { "id": "nyquist", "role": "feature", - "version": "1.6.0", + "version": "1.7.0-rc.1", "title": "Nyquist validation", "description": "Validation coverage audit that maps executed work back to tests and manual-only evidence.", "tier": "full", diff --git a/capabilities/opencode/capability.json b/capabilities/opencode/capability.json index 21987141b..0c13617f6 100644 --- a/capabilities/opencode/capability.json +++ b/capabilities/opencode/capability.json @@ -1,7 +1,7 @@ { "id": "opencode", "role": "runtime", - "version": "1.6.0", + "version": "1.7.0-rc.1", "title": "OpenCode", "description": "OpenCode — XDG-based config dir; flat command/ + skills artifact layout; settings-json config format; no lifecycle hook registration; tier-2 support.", "tier": "core", @@ -70,7 +70,14 @@ "hostIntegration": { "embeddingMode": "imperative", "commandSurface": "slash-file", - "dispatch": { "namedDispatch": true, "nested": "undocumented", "maxDepth": "undocumented", "background": false, "subagentToolkit": "full", "backgroundDispatch": "undocumented" }, + "dispatch": { + "namedDispatch": true, + "nested": "undocumented", + "maxDepth": "undocumented", + "background": false, + "subagentToolkit": "full", + "backgroundDispatch": "undocumented" + }, "modelMode": "active", "hookBus": "host", "stateIO": "filesystem", diff --git a/capabilities/pattern-mapper/capability.json b/capabilities/pattern-mapper/capability.json index 259f48d84..cfade997d 100644 --- a/capabilities/pattern-mapper/capability.json +++ b/capabilities/pattern-mapper/capability.json @@ -1,7 +1,7 @@ { "id": "pattern-mapper", "role": "feature", - "version": "1.6.0", + "version": "1.7.0-rc.1", "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/profile-pipeline/capability.json b/capabilities/profile-pipeline/capability.json index cc0b58c34..06028a46c 100644 --- a/capabilities/profile-pipeline/capability.json +++ b/capabilities/profile-pipeline/capability.json @@ -1,7 +1,7 @@ { "id": "profile-pipeline", "role": "feature", - "version": "1.6.0", + "version": "1.7.0-rc.1", "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 2199c8a5e..6170f063d 100644 --- a/capabilities/qwen/capability.json +++ b/capabilities/qwen/capability.json @@ -1,7 +1,7 @@ { "id": "qwen", "role": "runtime", - "version": "1.6.0", + "version": "1.7.0-rc.1", "title": "Qwen Code", "description": "Qwen Code (Alibaba) — nested-skill artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.", "tier": "core", @@ -57,7 +57,14 @@ "hostIntegration": { "embeddingMode": "imperative", "commandSurface": "slash-file", - "dispatch": { "namedDispatch": true, "nested": false, "maxDepth": 1, "background": true, "subagentToolkit": "full", "backgroundDispatch": false }, + "dispatch": { + "namedDispatch": true, + "nested": false, + "maxDepth": 1, + "background": true, + "subagentToolkit": "full", + "backgroundDispatch": false + }, "modelMode": "passive", "hookBus": "host", "stateIO": "filesystem", diff --git a/capabilities/research/capability.json b/capabilities/research/capability.json index 63ecab84d..18022a7ef 100644 --- a/capabilities/research/capability.json +++ b/capabilities/research/capability.json @@ -1,7 +1,7 @@ { "id": "research", "role": "feature", - "version": "1.6.0", + "version": "1.7.0-rc.1", "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 254a160cf..1b76feb2f 100644 --- a/capabilities/schema-gate/capability.json +++ b/capabilities/schema-gate/capability.json @@ -1,7 +1,7 @@ { "id": "schema-gate", "role": "feature", - "version": "1.6.0", + "version": "1.7.0-rc.1", "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 e9599ed0e..c1bf02438 100644 --- a/capabilities/security/capability.json +++ b/capabilities/security/capability.json @@ -1,7 +1,7 @@ { "id": "security", "role": "feature", - "version": "1.6.0", + "version": "1.7.0-rc.1", "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 c2f99c57b..ea805b60d 100644 --- a/capabilities/tdd/capability.json +++ b/capabilities/tdd/capability.json @@ -1,7 +1,7 @@ { "id": "tdd", "role": "feature", - "version": "1.6.0", + "version": "1.7.0-rc.1", "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 87dc2f5cd..945e464fd 100644 --- a/capabilities/trae/capability.json +++ b/capabilities/trae/capability.json @@ -1,7 +1,7 @@ { "id": "trae", "role": "runtime", - "version": "1.6.0", + "version": "1.7.0-rc.1", "title": "Trae IDE", "description": "Trae IDE — nested-skill artifact layout; no hook surface (profile-marker-only config); tier-2 support.", "tier": "core", @@ -68,7 +68,14 @@ "hostIntegration": { "embeddingMode": "imperative", "commandSurface": "slash-file", - "dispatch": { "namedDispatch": true, "nested": "undocumented", "maxDepth": "undocumented", "background": true, "subagentToolkit": "undocumented", "backgroundDispatch": "undocumented" }, + "dispatch": { + "namedDispatch": true, + "nested": "undocumented", + "maxDepth": "undocumented", + "background": true, + "subagentToolkit": "undocumented", + "backgroundDispatch": "undocumented" + }, "modelMode": "passive", "hookBus": "engine", "stateIO": "filesystem", diff --git a/capabilities/ui/capability.json b/capabilities/ui/capability.json index 903477c89..5d5d0ac62 100644 --- a/capabilities/ui/capability.json +++ b/capabilities/ui/capability.json @@ -1,7 +1,7 @@ { "id": "ui", "role": "feature", - "version": "1.6.0", + "version": "1.7.0-rc.1", "title": "UI design contracts", "description": "UI-SPEC design contract + retrospective UI audit for frontend phases.", "tier": "full", diff --git a/capabilities/windsurf/capability.json b/capabilities/windsurf/capability.json index 98933d374..ba30c2529 100644 --- a/capabilities/windsurf/capability.json +++ b/capabilities/windsurf/capability.json @@ -1,7 +1,7 @@ { "id": "windsurf", "role": "runtime", - "version": "1.6.0", + "version": "1.7.0-rc.1", "title": "Windsurf", "description": "Windsurf (Codeium) — workspace workflow artifact layout for slash commands; no hook surface; no hook events; tier-2 support.", "tier": "core", @@ -61,7 +61,14 @@ "hostIntegration": { "embeddingMode": "declarative", "commandSurface": "slash-file", - "dispatch": { "namedDispatch": "undocumented", "nested": "undocumented", "maxDepth": "undocumented", "background": "undocumented", "subagentToolkit": "undocumented", "backgroundDispatch": "undocumented" }, + "dispatch": { + "namedDispatch": "undocumented", + "nested": "undocumented", + "maxDepth": "undocumented", + "background": "undocumented", + "subagentToolkit": "undocumented", + "backgroundDispatch": "undocumented" + }, "modelMode": "passive", "hookBus": "host", "stateIO": "filesystem", diff --git a/gemini-extension.json b/gemini-extension.json index a93e82557..64d99be4a 100644 --- a/gemini-extension.json +++ b/gemini-extension.json @@ -1,6 +1,6 @@ { "name": "gsd-core", - "version": "1.6.0", + "version": "1.7.0-rc.1", "description": "GSD Core — a meta-prompting, context engineering, and spec-driven development system for AI coding agents. Loads gsd's operating context into every Gemini CLI session.", "contextFileName": "GEMINI.md" } diff --git a/gsd-core/bin/lib/capability-registry.cjs b/gsd-core/bin/lib/capability-registry.cjs index 6bd774ffa..7715e6075 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.6.0", + "version": "1.7.0-rc.1", "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", @@ -63,7 +63,7 @@ const capabilities = { "antigravity": { "id": "antigravity", "role": "runtime", - "version": "1.6.0", + "version": "1.7.0-rc.1", "title": "Antigravity", "description": "Google Antigravity IDE — nested under ~/.gemini/antigravity; probed across 1.x and 2.x layouts; Gemini hook event dialect; flat skill layout; tier-1 support.", "tier": "core", @@ -141,7 +141,7 @@ const capabilities = { "assumption-delta": { "id": "assumption-delta", "role": "feature", - "version": "1.6.0", + "version": "1.7.0-rc.1", "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", @@ -187,7 +187,7 @@ const capabilities = { "audit": { "id": "audit", "role": "feature", - "version": "1.6.0", + "version": "1.7.0-rc.1", "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", @@ -224,7 +224,7 @@ const capabilities = { "augment": { "id": "augment", "role": "runtime", - "version": "1.6.0", + "version": "1.7.0-rc.1", "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", @@ -327,7 +327,7 @@ const capabilities = { "claude": { "id": "claude", "role": "runtime", - "version": "1.6.0", + "version": "1.7.0-rc.1", "title": "Claude Code", "description": "Anthropic Claude Code — primary development runtime; tier-1 support with full hook surface and skills-based global install.", "tier": "core", @@ -411,7 +411,7 @@ const capabilities = { "cline": { "id": "cline", "role": "runtime", - "version": "1.6.0", + "version": "1.7.0-rc.1", "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", @@ -472,7 +472,7 @@ const capabilities = { "code-review": { "id": "code-review", "role": "feature", - "version": "1.6.0", + "version": "1.7.0-rc.1", "title": "Code review", "description": "Source-file code review and review-fix workflow support for completed execution work.", "tier": "full", @@ -533,7 +533,7 @@ const capabilities = { "codebuddy": { "id": "codebuddy", "role": "runtime", - "version": "1.6.0", + "version": "1.7.0-rc.1", "title": "CodeBuddy", "description": "CodeBuddy (Tencent) — converted commands + skills artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.", "tier": "core", @@ -636,7 +636,7 @@ const capabilities = { "codex": { "id": "codex", "role": "runtime", - "version": "1.6.0", + "version": "1.7.0-rc.1", "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", @@ -707,7 +707,7 @@ const capabilities = { "copilot": { "id": "copilot", "role": "runtime", - "version": "1.6.0", + "version": "1.7.0-rc.1", "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", @@ -778,7 +778,7 @@ const capabilities = { "cursor": { "id": "cursor", "role": "runtime", - "version": "1.6.0", + "version": "1.7.0-rc.1", "title": "Cursor", "description": "Cursor IDE — skills + converted commands artifact layout; hooks.json surface; Claude hook event dialect; recursive skill loader (flat nesting); tier-2 support.", "tier": "core", @@ -881,7 +881,7 @@ const capabilities = { "drift": { "id": "drift", "role": "feature", - "version": "1.6.0", + "version": "1.7.0-rc.1", "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", @@ -959,7 +959,7 @@ const capabilities = { "gap-analysis": { "id": "gap-analysis", "role": "feature", - "version": "1.6.0", + "version": "1.7.0-rc.1", "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", @@ -1000,7 +1000,7 @@ const capabilities = { "gemini": { "id": "gemini", "role": "runtime", - "version": "1.6.0", + "version": "1.7.0-rc.1", "title": "Gemini CLI", "description": "Google Gemini CLI — commands-only artifact layout (TOML); Gemini hook event dialect; settings-json hook surface; tier-2 support.", "tier": "core", @@ -1075,7 +1075,7 @@ const capabilities = { "graphify": { "id": "graphify", "role": "feature", - "version": "1.6.0", + "version": "1.7.0-rc.1", "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", @@ -1116,7 +1116,7 @@ const capabilities = { "hermes": { "id": "hermes", "role": "runtime", - "version": "1.6.0", + "version": "1.7.0-rc.1", "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", @@ -1187,7 +1187,7 @@ const capabilities = { "intel": { "id": "intel", "role": "feature", - "version": "1.6.0", + "version": "1.7.0-rc.1", "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", @@ -1239,7 +1239,7 @@ const capabilities = { "kilo": { "id": "kilo", "role": "runtime", - "version": "1.6.0", + "version": "1.7.0-rc.1", "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", @@ -1332,7 +1332,7 @@ const capabilities = { "kimi": { "id": "kimi", "role": "runtime", - "version": "1.6.0", + "version": "1.7.0-rc.1", "title": "Kimi CLI", "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.", "tier": "core", @@ -1406,7 +1406,7 @@ const capabilities = { "mempalace": { "id": "mempalace", "role": "feature", - "version": "1.6.0", + "version": "1.7.0-rc.1", "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", @@ -1580,7 +1580,7 @@ const capabilities = { "nyquist": { "id": "nyquist", "role": "feature", - "version": "1.6.0", + "version": "1.7.0-rc.1", "title": "Nyquist validation", "description": "Validation coverage audit that maps executed work back to tests and manual-only evidence.", "tier": "full", @@ -1630,7 +1630,7 @@ const capabilities = { "opencode": { "id": "opencode", "role": "runtime", - "version": "1.6.0", + "version": "1.7.0-rc.1", "title": "OpenCode", "description": "OpenCode — XDG-based config dir; flat command/ + skills artifact layout; settings-json config format; no lifecycle hook registration; tier-2 support.", "tier": "core", @@ -1718,7 +1718,7 @@ const capabilities = { "pattern-mapper": { "id": "pattern-mapper", "role": "feature", - "version": "1.6.0", + "version": "1.7.0-rc.1", "title": "Pattern mapping", "description": "Optional codebase-pattern mapping before planning; owns the pattern mapper agent and workflow.pattern_mapper activation key.", "tier": "full", @@ -1772,7 +1772,7 @@ const capabilities = { "profile-pipeline": { "id": "profile-pipeline", "role": "feature", - "version": "1.6.0", + "version": "1.7.0-rc.1", "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", @@ -1849,7 +1849,7 @@ const capabilities = { "qwen": { "id": "qwen", "role": "runtime", - "version": "1.6.0", + "version": "1.7.0-rc.1", "title": "Qwen Code", "description": "Qwen Code (Alibaba) — nested-skill artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.", "tier": "core", @@ -1924,7 +1924,7 @@ const capabilities = { "research": { "id": "research", "role": "feature", - "version": "1.6.0", + "version": "1.7.0-rc.1", "title": "Phase research", "description": "Optional phase research before planning; owns the phase researcher agent and workflow.research activation key.", "tier": "standard", @@ -1976,7 +1976,7 @@ const capabilities = { "schema-gate": { "id": "schema-gate", "role": "feature", - "version": "1.6.0", + "version": "1.7.0-rc.1", "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", @@ -2022,7 +2022,7 @@ const capabilities = { "security": { "id": "security", "role": "feature", - "version": "1.6.0", + "version": "1.7.0-rc.1", "title": "Security enforcement", "description": "Threat mitigation verification and ship-time security blocking for phases with security enforcement enabled.", "tier": "full", @@ -2121,7 +2121,7 @@ const capabilities = { "tdd": { "id": "tdd", "role": "feature", - "version": "1.6.0", + "version": "1.7.0-rc.1", "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", @@ -2174,7 +2174,7 @@ const capabilities = { "trae": { "id": "trae", "role": "runtime", - "version": "1.6.0", + "version": "1.7.0-rc.1", "title": "Trae IDE", "description": "Trae IDE — nested-skill artifact layout; no hook surface (profile-marker-only config); tier-2 support.", "tier": "core", @@ -2260,7 +2260,7 @@ const capabilities = { "ui": { "id": "ui", "role": "feature", - "version": "1.6.0", + "version": "1.7.0-rc.1", "title": "UI design contracts", "description": "UI-SPEC design contract + retrospective UI audit for frontend phases.", "tier": "full", @@ -2355,7 +2355,7 @@ const capabilities = { "windsurf": { "id": "windsurf", "role": "runtime", - "version": "1.6.0", + "version": "1.7.0-rc.1", "title": "Windsurf", "description": "Windsurf (Codeium) — workspace workflow artifact layout for slash commands; no hook surface; no hook events; tier-2 support.", "tier": "core", @@ -3180,7 +3180,7 @@ const runtimes = { "antigravity": { "id": "antigravity", "role": "runtime", - "version": "1.6.0", + "version": "1.7.0-rc.1", "title": "Antigravity", "description": "Google Antigravity IDE — nested under ~/.gemini/antigravity; probed across 1.x and 2.x layouts; Gemini hook event dialect; flat skill layout; tier-1 support.", "tier": "core", @@ -3258,7 +3258,7 @@ const runtimes = { "augment": { "id": "augment", "role": "runtime", - "version": "1.6.0", + "version": "1.7.0-rc.1", "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", @@ -3361,7 +3361,7 @@ const runtimes = { "claude": { "id": "claude", "role": "runtime", - "version": "1.6.0", + "version": "1.7.0-rc.1", "title": "Claude Code", "description": "Anthropic Claude Code — primary development runtime; tier-1 support with full hook surface and skills-based global install.", "tier": "core", @@ -3445,7 +3445,7 @@ const runtimes = { "cline": { "id": "cline", "role": "runtime", - "version": "1.6.0", + "version": "1.7.0-rc.1", "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", @@ -3506,7 +3506,7 @@ const runtimes = { "codebuddy": { "id": "codebuddy", "role": "runtime", - "version": "1.6.0", + "version": "1.7.0-rc.1", "title": "CodeBuddy", "description": "CodeBuddy (Tencent) — converted commands + skills artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.", "tier": "core", @@ -3609,7 +3609,7 @@ const runtimes = { "codex": { "id": "codex", "role": "runtime", - "version": "1.6.0", + "version": "1.7.0-rc.1", "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", @@ -3680,7 +3680,7 @@ const runtimes = { "copilot": { "id": "copilot", "role": "runtime", - "version": "1.6.0", + "version": "1.7.0-rc.1", "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", @@ -3751,7 +3751,7 @@ const runtimes = { "cursor": { "id": "cursor", "role": "runtime", - "version": "1.6.0", + "version": "1.7.0-rc.1", "title": "Cursor", "description": "Cursor IDE — skills + converted commands artifact layout; hooks.json surface; Claude hook event dialect; recursive skill loader (flat nesting); tier-2 support.", "tier": "core", @@ -3854,7 +3854,7 @@ const runtimes = { "gemini": { "id": "gemini", "role": "runtime", - "version": "1.6.0", + "version": "1.7.0-rc.1", "title": "Gemini CLI", "description": "Google Gemini CLI — commands-only artifact layout (TOML); Gemini hook event dialect; settings-json hook surface; tier-2 support.", "tier": "core", @@ -3929,7 +3929,7 @@ const runtimes = { "hermes": { "id": "hermes", "role": "runtime", - "version": "1.6.0", + "version": "1.7.0-rc.1", "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", @@ -4000,7 +4000,7 @@ const runtimes = { "kilo": { "id": "kilo", "role": "runtime", - "version": "1.6.0", + "version": "1.7.0-rc.1", "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", @@ -4093,7 +4093,7 @@ const runtimes = { "kimi": { "id": "kimi", "role": "runtime", - "version": "1.6.0", + "version": "1.7.0-rc.1", "title": "Kimi CLI", "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.", "tier": "core", @@ -4167,7 +4167,7 @@ const runtimes = { "opencode": { "id": "opencode", "role": "runtime", - "version": "1.6.0", + "version": "1.7.0-rc.1", "title": "OpenCode", "description": "OpenCode — XDG-based config dir; flat command/ + skills artifact layout; settings-json config format; no lifecycle hook registration; tier-2 support.", "tier": "core", @@ -4255,7 +4255,7 @@ const runtimes = { "qwen": { "id": "qwen", "role": "runtime", - "version": "1.6.0", + "version": "1.7.0-rc.1", "title": "Qwen Code", "description": "Qwen Code (Alibaba) — nested-skill artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.", "tier": "core", @@ -4330,7 +4330,7 @@ const runtimes = { "trae": { "id": "trae", "role": "runtime", - "version": "1.6.0", + "version": "1.7.0-rc.1", "title": "Trae IDE", "description": "Trae IDE — nested-skill artifact layout; no hook surface (profile-marker-only config); tier-2 support.", "tier": "core", @@ -4416,7 +4416,7 @@ const runtimes = { "windsurf": { "id": "windsurf", "role": "runtime", - "version": "1.6.0", + "version": "1.7.0-rc.1", "title": "Windsurf", "description": "Windsurf (Codeium) — workspace workflow artifact layout for slash commands; no hook surface; no hook events; tier-2 support.", "tier": "core", diff --git a/gsd-core/bin/lib/state-transition.cjs b/gsd-core/bin/lib/state-transition.cjs index 75c555868..3104b9121 100644 --- a/gsd-core/bin/lib/state-transition.cjs +++ b/gsd-core/bin/lib/state-transition.cjs @@ -1292,8 +1292,9 @@ function reconcileCurrentPosition(content, timestamp, log) { // by other transitions (beginPhase / completePhase) and reconstructed from // total-phase counts; rebuild reconciles only the `**Current Phase:**` body // field that frontmatter is the canonical source for. - if (fm.current_phase !== undefined && fm.current_phase !== null) { - const canonicalPhase = String(fm.current_phase); + const fmPhase = fm.current_phase; + if (typeof fmPhase === 'string' || typeof fmPhase === 'number') { + const canonicalPhase = String(fmPhase); const existing = (0, state_document_cjs_1.stateExtractField)(modified, 'Current Phase'); if (existing !== null && existing !== canonicalPhase) { const replaced = (0, state_document_cjs_1.stateReplaceField)(modified, 'Current Phase', canonicalPhase); @@ -1311,8 +1312,9 @@ function reconcileCurrentPosition(content, timestamp, log) { } } // Phase name prose. - if (fm.current_phase_name !== undefined && fm.current_phase_name !== null) { - const canonicalName = String(fm.current_phase_name); + const fmPhaseName = fm.current_phase_name; + if (typeof fmPhaseName === 'string' || typeof fmPhaseName === 'number') { + const canonicalName = String(fmPhaseName); const existing = (0, state_document_cjs_1.stateExtractField)(modified, 'Current Phase Name'); if (existing !== null && existing !== canonicalName) { const replaced = (0, state_document_cjs_1.stateReplaceField)(modified, 'Current Phase Name', canonicalName); @@ -1441,7 +1443,6 @@ function stripTemplatePlaceholders(content, timestamp, log) { const fieldName = m[1]; const value = m[2]; if (TEMPLATE_PLACEHOLDER_VALUE.test(value)) { - const placeholder = value.trim(); const cleared = `**${fieldName}:** (pending)`; replacements.push({ lineIdx: i, before: line, after: cleared, fieldName }); } @@ -1491,7 +1492,6 @@ function deduplicateSessionArchive(content, timestamp, log) { break; } } - const sectionContent = content.slice(sectionStart, sectionEnd); // Count `### Session — …` H3 sub-headings inside the section. const archiveHeadings = hs.filter((h) => h.level === 3 && h.offset >= sectionStart && h.offset < sectionEnd && SESSION_ARCHIVE_H3.test(h.text)); if (archiveHeadings.length <= DEFAULT_MAX_SESSION_ARCHIVES) diff --git a/package-lock.json b/package-lock.json index 8e8f15205..024614b4d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@opengsd/gsd-core", - "version": "1.6.0", + "version": "1.7.0-rc.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@opengsd/gsd-core", - "version": "1.6.0", + "version": "1.7.0-rc.1", "license": "MIT", "dependencies": { "@anthropic-ai/claude-agent-sdk": "^0.2.84", diff --git a/package.json b/package.json index 8c91d6607..3aea61b19 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@opengsd/gsd-core", - "version": "1.6.0", + "version": "1.7.0-rc.1", "description": "GSD Core is a meta-prompting, context engineering, and spec-driven development system for AI coding agents.", "bin": { "gsd-core": "bin/install.js",