From a7d83dc2347b4761f9c75dd9cab7724909dda226 Mon Sep 17 00:00:00 2001 From: Tom Boucher Date: Sun, 19 Jul 2026 07:53:04 -0400 Subject: [PATCH] fix(#2390): warn on goal-shaped phase.add titles, correct auto-detect docs (#2425) * fix(#2390): phase.add title warning + auto-detect doc fix phase.add now returns a `warning` field when a description reads as goal-shaped (>80 chars and/or multi-sentence) rather than title-shaped, instead of silently writing the whole paragraph verbatim as the `### Phase N:` header. The CLI still creates the phase as-is (the strict two-layer slash-vs-CLI interface is unchanged); the warning just surfaces the gap. Also clarifies six doc sites (command argument hints, workflow detection steps, and how-to/reference docs) that described the phase-number argument as "auto-detecting" the next unplanned phase -- that detection is an orchestrating-workflow/LLM step reading ROADMAP.md (concretely: `query roadmap.analyze`'s `next_phase` field), not a `gsd-tools.cjs` CLI feature. Co-Authored-By: Claude Opus 4.8 * chore(#2390): regenerate fixtures + lint gate-prep * fix(#2390): repair failing tests after gate verification * chore(#2390): add changeset (#2425) --------- Co-authored-by: Claude Opus 4.8 --- .changeset/2390-phase-add-autodetect.md | 5 + commands/gsd/ai-integration-phase.md | 2 +- commands/gsd/plan-phase.md | 2 +- docs/COMMANDS.md | 2 +- docs/how-to/plan-a-phase.md | 2 +- gsd-core/workflows/add-phase.md | 2 + gsd-core/workflows/ai-integration-phase.md | 2 +- gsd-core/workflows/plan-phase.md | 2 +- skills/gsd-ai-integration-phase/SKILL.md | 2 +- skills/gsd-plan-phase/SKILL.md | 2 +- src/phase.cts | 33 ++++++- .../golden-install-parity/antigravity.json | 10 +- .../golden-install-parity/augment.json | 14 +-- .../golden-install-parity/claude-local.json | 10 +- .../golden-install-parity/claude.json | 10 +- .../fixtures/golden-install-parity/cline.json | 10 +- .../golden-install-parity/codebuddy.json | 14 +-- .../fixtures/golden-install-parity/codex.json | 10 +- .../golden-install-parity/copilot.json | 10 +- .../golden-install-parity/cursor.json | 14 +-- .../golden-install-parity/hermes.json | 10 +- .../fixtures/golden-install-parity/kilo.json | 14 +-- .../fixtures/golden-install-parity/kimi.json | 10 +- .../golden-install-parity/opencode.json | 14 +-- tests/fixtures/golden-install-parity/pi.json | 6 +- .../fixtures/golden-install-parity/qwen.json | 10 +- .../fixtures/golden-install-parity/trae.json | 10 +- .../golden-install-parity/windsurf.json | 6 +- .../fixtures/golden-install-parity/zcode.json | 14 +-- tests/phase.test.cjs | 98 +++++++++++++++++++ tests/workflow-size-baseline.json | 6 +- 31 files changed, 245 insertions(+), 111 deletions(-) create mode 100644 .changeset/2390-phase-add-autodetect.md diff --git a/.changeset/2390-phase-add-autodetect.md b/.changeset/2390-phase-add-autodetect.md new file mode 100644 index 000000000..6a7d520f4 --- /dev/null +++ b/.changeset/2390-phase-add-autodetect.md @@ -0,0 +1,5 @@ +--- +type: Fixed +pr: 2425 +--- +**`phase.add` no longer silently mistakes a goal-shaped description for a phase title** — a long or multi-sentence description used to land verbatim in the `### Phase N:` header with no signal anything was off; `phase.add` now returns a `warning` field when the description looks goal-shaped, and the phase-number auto-detect docs now correctly point callers at the orchestrating workflow instead of implying `gsd-tools.cjs` resolves it itself. (#2390) diff --git a/commands/gsd/ai-integration-phase.md b/commands/gsd/ai-integration-phase.md index af46f259d..d4af60608 100644 --- a/commands/gsd/ai-integration-phase.md +++ b/commands/gsd/ai-integration-phase.md @@ -28,7 +28,7 @@ Flow: Select Framework → Research Docs → Research Domain → Design Eval Str -Phase number: $ARGUMENTS — optional, auto-detects next unplanned phase if omitted. +Phase number: $ARGUMENTS — optional; when omitted, the orchestrating workflow reads ROADMAP.md and selects the next unplanned phase. This is not a `gsd-tools.cjs` CLI feature — the CLI's phase-lookup primitives require an explicit phase number. diff --git a/commands/gsd/plan-phase.md b/commands/gsd/plan-phase.md index bf7ef82db..6e06880ea 100644 --- a/commands/gsd/plan-phase.md +++ b/commands/gsd/plan-phase.md @@ -40,7 +40,7 @@ Create executable phase prompts (PLAN.md files) for a roadmap phase with integra -Phase number: $ARGUMENTS (optional — auto-detects next unplanned phase if omitted) +Phase number: $ARGUMENTS (optional — when omitted, the orchestrating workflow reads ROADMAP.md and selects the next unplanned phase; `gsd-tools.cjs` itself has no auto-detect feature and requires an explicit phase number) **Flags:** - `--research` — Force re-research even if RESEARCH.md exists diff --git a/docs/COMMANDS.md b/docs/COMMANDS.md index 65b2761ef..e4728281b 100644 --- a/docs/COMMANDS.md +++ b/docs/COMMANDS.md @@ -193,7 +193,7 @@ Research, plan, and verify a phase. | Argument | Required | Description | |----------|----------|-------------| -| `N` | No | Phase number (defaults to next unplanned phase) | +| `N` | No | Phase number (if omitted, the orchestrating workflow reads ROADMAP.md and targets the next unplanned phase — not a `gsd-tools.cjs` CLI feature) | | Flag | Description | |------|-------------| diff --git a/docs/how-to/plan-a-phase.md b/docs/how-to/plan-a-phase.md index 94b60d908..124adbbba 100644 --- a/docs/how-to/plan-a-phase.md +++ b/docs/how-to/plan-a-phase.md @@ -18,7 +18,7 @@ This runs three stages in sequence: 2. **Plan** — A `gsd-planner` subagent reads context, research, and requirements, then writes one or more `{phase}-{N}-PLAN.md` files. 3. **Verify** — A `gsd-plan-checker` subagent validates plan quality across eight dimensions and triggers a revision loop (up to three iterations) until quality gates pass. -If no phase number is given, GSD Core targets the next unplanned phase from the roadmap. +If no phase number is given, the `/gsd-plan-phase` orchestrating workflow reads `ROADMAP.md` and targets the next unplanned phase. This detection happens in the workflow/LLM layer, not in the `gsd-tools.cjs` CLI — its phase-lookup commands require an explicit phase number. --- diff --git a/gsd-core/workflows/add-phase.md b/gsd-core/workflows/add-phase.md index 71106777c..419cda316 100644 --- a/gsd-core/workflows/add-phase.md +++ b/gsd-core/workflows/add-phase.md @@ -57,6 +57,8 @@ The CLI handles: - Inserting the phase entry into ROADMAP.md with Goal, Depends on, and Plans sections Extract from result: `phase_number`, `padded`, `name`, `slug`, `directory`. + +**If result includes a `warning` field:** the description read as goal-shaped (long and/or multi-sentence) rather than title-shaped, and was written verbatim as the `### Phase N:` header. The phase was still created — surface the warning to the user and suggest a short title with the detail moved to `**Goal:**` in ROADMAP.md. diff --git a/gsd-core/workflows/ai-integration-phase.md b/gsd-core/workflows/ai-integration-phase.md index 2955e604c..746025efc 100644 --- a/gsd-core/workflows/ai-integration-phase.md +++ b/gsd-core/workflows/ai-integration-phase.md @@ -52,7 +52,7 @@ Exit workflow. ## 2. Parse and Validate Phase -Extract phase number from $ARGUMENTS. If not provided, detect next unplanned phase. +Extract phase number from $ARGUMENTS. If not provided, this orchestrator (not `gsd-tools.cjs`) detects the next unplanned phase: run `gsd_run query roadmap.analyze` and read its `next_phase` field (the first phase whose `disk_status` is `no_directory`, `empty`, `discussed`, or `researched` — i.e. not yet planned). `query roadmap.get-phase` below hard-requires an explicit `${PHASE}` and does not auto-detect. ```bash PHASE_INFO=$(gsd_run query roadmap.get-phase "${PHASE}") diff --git a/gsd-core/workflows/plan-phase.md b/gsd-core/workflows/plan-phase.md index 626d89803..1bd7a5e4c 100644 --- a/gsd-core/workflows/plan-phase.md +++ b/gsd-core/workflows/plan-phase.md @@ -158,7 +158,7 @@ Extract express-path args from $ARGUMENTS: `PRD_FILE` (`--prd `), `ING `--prd` and `--ingest` are mutually exclusive. If both are present, error and exit: `Invalid arguments: cannot combine \`--prd\` with \`--ingest\`.` -**If no phase number:** Detect next unplanned phase from roadmap. +**If no phase number:** Auto-detect it — `query init.plan-phase` and `query roadmap.get-phase` require an explicit number, so this is an orchestrator step. Run `gsd_run query roadmap.analyze` and read `next_phase` (first phase with `disk_status` of `no_directory`, `empty`, `discussed`, or `researched`). If `next_phase` is `null`, read ROADMAP.md's `### Phase N:` headers and ask the user which phase to plan. Set `PHASE` to the result before step 1's `query init.plan-phase "$PHASE"` call. **If `phase_found` is false:** Validate phase exists in ROADMAP.md. If valid, create the directory using `expected_phase_dir` from init (includes `project_code` prefix when set): ```bash diff --git a/skills/gsd-ai-integration-phase/SKILL.md b/skills/gsd-ai-integration-phase/SKILL.md index 4a020dee4..cb31560dd 100644 --- a/skills/gsd-ai-integration-phase/SKILL.md +++ b/skills/gsd-ai-integration-phase/SKILL.md @@ -28,7 +28,7 @@ Flow: Select Framework → Research Docs → Research Domain → Design Eval Str -Phase number: $ARGUMENTS — optional, auto-detects next unplanned phase if omitted. +Phase number: $ARGUMENTS — optional; when omitted, the orchestrating workflow reads ROADMAP.md and selects the next unplanned phase. This is not a `gsd-tools.cjs` CLI feature — the CLI's phase-lookup primitives require an explicit phase number. diff --git a/skills/gsd-plan-phase/SKILL.md b/skills/gsd-plan-phase/SKILL.md index 4d911579d..e6548952b 100644 --- a/skills/gsd-plan-phase/SKILL.md +++ b/skills/gsd-plan-phase/SKILL.md @@ -40,7 +40,7 @@ Create executable phase prompts (PLAN.md files) for a roadmap phase with integra -Phase number: $ARGUMENTS (optional — auto-detects next unplanned phase if omitted) +Phase number: $ARGUMENTS (optional — when omitted, the orchestrating workflow reads ROADMAP.md and selects the next unplanned phase; `gsd-tools.cjs` itself has no auto-detect feature and requires an explicit phase number) **Flags:** - `--research` — Force re-research even if RESEARCH.md exists diff --git a/src/phase.cts b/src/phase.cts index e7e60d6dc..08dacdbaa 100644 --- a/src/phase.cts +++ b/src/phase.cts @@ -759,6 +759,32 @@ function cmdPhasePlanIndex(cwd: string, phase: string, raw: boolean): void { output(result, raw); } +// #2390 — phase.add title-shape heuristic. A description at or under this many +// characters, and with no sentence-ending punctuation followed by more text, +// reads as a short Title. Anything longer or multi-sentence reads as a Goal, +// not a Title. phase.add still writes the phase verbatim (it never mangles +// ROADMAP.md), but when the description looks goal-shaped the JSON result +// gains a `warning` key naming the gap, so the caller — or the orchestrating +// add-phase workflow — can split title vs. goal instead of the whole paragraph +// landing silently in the `### Phase N:` header. +const PHASE_ADD_TITLE_MAX_LEN = 80; +const PHASE_ADD_MULTI_SENTENCE_RE = /[.!?]['")\]]?\s+\S/; + +function describeGoalShapedTitle(description: string): string | null { + const trimmed = description.trim(); + const tooLong = trimmed.length > PHASE_ADD_TITLE_MAX_LEN; + const multiSentence = PHASE_ADD_MULTI_SENTENCE_RE.test(trimmed); + if (!tooLong && !multiSentence) return null; + const reasons = [ + tooLong ? `${trimmed.length} chars (over the ${PHASE_ADD_TITLE_MAX_LEN}-char title threshold)` : null, + multiSentence ? 'multiple sentences' : null, + ].filter(Boolean).join(', '); + return ( + `description looks goal-shaped, not title-shaped (${reasons}). It was written verbatim ` + + `as the phase title; consider a short title with the detail moved to **Goal:**.` + ); +} + function cmdPhaseAdd(cwd: string, description: string, raw: boolean, customId?: string): void { if (!description) { error('description required for phase add'); @@ -858,7 +884,9 @@ function cmdPhaseAdd(cwd: string, description: string, raw: boolean, customId?: return { newPhaseId: _newPhaseId, dirName: _dirName }; }); - const result = { + const titleWarning = describeGoalShapedTitle(description); + + const result: Record = { phase_number: typeof newPhaseId === 'number' ? newPhaseId : String(newPhaseId), padded: typeof newPhaseId === 'number' ? String(newPhaseId).padStart(2, '0') : String(newPhaseId), @@ -869,8 +897,9 @@ function cmdPhaseAdd(cwd: string, description: string, raw: boolean, customId?: ), naming_mode: config.phase_naming, }; + if (titleWarning) result['warning'] = titleWarning; - output(result, raw, result.padded); + output(result, raw, result['padded']); } function cmdPhaseAddBatch(cwd: string, descriptions: string[], raw: boolean): void { diff --git a/tests/fixtures/golden-install-parity/antigravity.json b/tests/fixtures/golden-install-parity/antigravity.json index 8097d04ea..143b63472 100644 --- a/tests/fixtures/golden-install-parity/antigravity.json +++ b/tests/fixtures/golden-install-parity/antigravity.json @@ -207,10 +207,10 @@ "gsd-core/templates/verification-report.md": "78ab9264ce63ed7e", "gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335", "gsd-core/workflows/add-backlog.md": "8cc2e884a021b79b", - "gsd-core/workflows/add-phase.md": "f82afa2f93be19fa", + "gsd-core/workflows/add-phase.md": "820572da6367308c", "gsd-core/workflows/add-tests.md": "ad6d49634e04ca7c", "gsd-core/workflows/add-todo.md": "e410a72c168e43c0", - "gsd-core/workflows/ai-integration-phase.md": "22f5466085c47c00", + "gsd-core/workflows/ai-integration-phase.md": "ea5a229a9cad3b4d", "gsd-core/workflows/analyze-dependencies.md": "77aff48f97fa6f1c", "gsd-core/workflows/audit-fix.md": "582e9a31df15dd8b", "gsd-core/workflows/audit-milestone.md": "280cd85908dd45cb", @@ -281,7 +281,7 @@ "gsd-core/workflows/onboard.md": "69d871aa53a1a859", "gsd-core/workflows/pause-work.md": "564de32981a24337", "gsd-core/workflows/plan-milestone-gaps.md": "dd6a4b3a8b05ab6e", - "gsd-core/workflows/plan-phase.md": "c8d8e646fccd4bd3", + "gsd-core/workflows/plan-phase.md": "5f7f231a249dc23f", "gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "4099ef6d0868de60", "gsd-core/workflows/plan-phase/steps/prd-express-path.md": "ab0b22244c3389aa", "gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "e9de7a96bbfff261", @@ -364,7 +364,7 @@ "scripts/lib/allowlist-ratchet.cjs": "ffaceaac3efc2660", "scripts/lib/cli-exit.cjs": "612d0c372c75b7e7", "skills/gsd-add-tests/SKILL.md": "95cd3eb1698fc79b", - "skills/gsd-ai-integration-phase/SKILL.md": "0dc87ce16bc31884", + "skills/gsd-ai-integration-phase/SKILL.md": "df6dad8e87226f35", "skills/gsd-audit-fix/SKILL.md": "e5e30c307bca6c89", "skills/gsd-audit-milestone/SKILL.md": "f701c229ac380077", "skills/gsd-audit-uat/SKILL.md": "8b304b54e1c587d1", @@ -407,7 +407,7 @@ "skills/gsd-onboard/SKILL.md": "1447665c64c8ade8", "skills/gsd-pause-work/SKILL.md": "9d3cc6bd70b03df1", "skills/gsd-phase/SKILL.md": "00676bbea61410bf", - "skills/gsd-plan-phase/SKILL.md": "8439b569426ff621", + "skills/gsd-plan-phase/SKILL.md": "03a8f71d4385a50d", "skills/gsd-plan-review-convergence/SKILL.md": "e4d52b4473c6234b", "skills/gsd-pr-branch/SKILL.md": "5e050db73988f9a8", "skills/gsd-profile-user/SKILL.md": "10f2ff4be2e7d55f", diff --git a/tests/fixtures/golden-install-parity/augment.json b/tests/fixtures/golden-install-parity/augment.json index 364625d6f..26ab4c360 100644 --- a/tests/fixtures/golden-install-parity/augment.json +++ b/tests/fixtures/golden-install-parity/augment.json @@ -36,7 +36,7 @@ "agents/gsd-user-profiler.md": "622220df0654b6bf", "agents/gsd-verifier.md": "f5c00a9b08fc1a7e", "commands/gsd-add-tests.md": "3608d0cf4b515103", - "commands/gsd-ai-integration-phase.md": "70843d4904743f7e", + "commands/gsd-ai-integration-phase.md": "cbc59ad7a5064b26", "commands/gsd-audit-fix.md": "1b805946362c4f19", "commands/gsd-audit-milestone.md": "046573a643714178", "commands/gsd-audit-uat.md": "d3de44d1c3e59b57", @@ -79,7 +79,7 @@ "commands/gsd-onboard.md": "1e8acf7be31834be", "commands/gsd-pause-work.md": "4fb032f72238fe33", "commands/gsd-phase.md": "4920d15d779329eb", - "commands/gsd-plan-phase.md": "d467c713ea161e9e", + "commands/gsd-plan-phase.md": "6b05898d574f3666", "commands/gsd-plan-review-convergence.md": "87def0355116452a", "commands/gsd-pr-branch.md": "e168fcd545d72d0d", "commands/gsd-profile-user.md": "ffd9c2feb4c69f11", @@ -278,10 +278,10 @@ "gsd-core/templates/verification-report.md": "dd5faa6254183731", "gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335", "gsd-core/workflows/add-backlog.md": "1bc7377b105194fc", - "gsd-core/workflows/add-phase.md": "46e0551ffdd8ce1a", + "gsd-core/workflows/add-phase.md": "ac43883e2d8e34d8", "gsd-core/workflows/add-tests.md": "24b0d8157a9ccb8b", "gsd-core/workflows/add-todo.md": "953314cdfef56bc4", - "gsd-core/workflows/ai-integration-phase.md": "40c217869a06981f", + "gsd-core/workflows/ai-integration-phase.md": "45c727e49de71636", "gsd-core/workflows/analyze-dependencies.md": "52942af10f140717", "gsd-core/workflows/audit-fix.md": "ca751f6538c8f496", "gsd-core/workflows/audit-milestone.md": "3835762c3147a927", @@ -352,7 +352,7 @@ "gsd-core/workflows/onboard.md": "6f9e6c0b484271a9", "gsd-core/workflows/pause-work.md": "f2b33bba5593d422", "gsd-core/workflows/plan-milestone-gaps.md": "852f6d7c0c4299dc", - "gsd-core/workflows/plan-phase.md": "3fd22c43ad1fcc90", + "gsd-core/workflows/plan-phase.md": "9f1c7dfc3ccac616", "gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "b36f77ac7344a072", "gsd-core/workflows/plan-phase/steps/prd-express-path.md": "197c0590326371b2", "gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "49f58c3f75be3eb5", @@ -490,7 +490,7 @@ "skills/gsd-ns-review/skills/validate-phase/SKILL.md": "8972b413eb712cae", "skills/gsd-ns-workflow/SKILL.md": "9c03c167c9af062a", "skills/gsd-ns-workflow/skills/add-tests/SKILL.md": "851084b695ab8328", - "skills/gsd-ns-workflow/skills/ai-integration-phase/SKILL.md": "34fa7aff585eb78f", + "skills/gsd-ns-workflow/skills/ai-integration-phase/SKILL.md": "125533edf40cb047", "skills/gsd-ns-workflow/skills/autonomous/SKILL.md": "1565a532889d3ea3", "skills/gsd-ns-workflow/skills/discuss-phase/SKILL.md": "94ac4065ceeee80b", "skills/gsd-ns-workflow/skills/execute-phase/SKILL.md": "67c9a6189f045de0", @@ -498,7 +498,7 @@ "skills/gsd-ns-workflow/skills/mvp-phase/SKILL.md": "f259f089a8d07a54", "skills/gsd-ns-workflow/skills/next/SKILL.md": "e7409245f1a0f9de", "skills/gsd-ns-workflow/skills/phase/SKILL.md": "fe5b26417ee466be", - "skills/gsd-ns-workflow/skills/plan-phase/SKILL.md": "99a229cf1b4fb7ee", + "skills/gsd-ns-workflow/skills/plan-phase/SKILL.md": "0dda686ce26d9171", "skills/gsd-ns-workflow/skills/plan-review-convergence/SKILL.md": "8181db9842a79620", "skills/gsd-ns-workflow/skills/progress/SKILL.md": "68bda87136db9fb3", "skills/gsd-ns-workflow/skills/quick/SKILL.md": "014dec52d85dcb0e", diff --git a/tests/fixtures/golden-install-parity/claude-local.json b/tests/fixtures/golden-install-parity/claude-local.json index 311b0e65c..c10fd98a8 100644 --- a/tests/fixtures/golden-install-parity/claude-local.json +++ b/tests/fixtures/golden-install-parity/claude-local.json @@ -35,7 +35,7 @@ "agents/gsd-user-profiler.md": "d40584599906f3b7", "agents/gsd-verifier.md": "628ef3a944a7a6eb", "commands/gsd-add-tests.md": "057e3e440989e681", - "commands/gsd-ai-integration-phase.md": "998dc23188e131fb", + "commands/gsd-ai-integration-phase.md": "e1f1e0bd6c50506d", "commands/gsd-audit-fix.md": "ebdcc267a2bebaab", "commands/gsd-audit-milestone.md": "319caced85c69ff3", "commands/gsd-audit-uat.md": "99c9af1b2a2c600a", @@ -78,7 +78,7 @@ "commands/gsd-onboard.md": "d0d9405bc73899bd", "commands/gsd-pause-work.md": "01dbaebfefacd252", "commands/gsd-phase.md": "e8c226d2694692a5", - "commands/gsd-plan-phase.md": "ae70b58d4d8550c8", + "commands/gsd-plan-phase.md": "7d14158eb377a248", "commands/gsd-plan-review-convergence.md": "c24bc978d9d743dc", "commands/gsd-pr-branch.md": "382c23a6a644c0e4", "commands/gsd-profile-user.md": "adbc5b025b30e836", @@ -277,10 +277,10 @@ "gsd-core/templates/verification-report.md": "dd5faa6254183731", "gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335", "gsd-core/workflows/add-backlog.md": "8d05775f367d1e48", - "gsd-core/workflows/add-phase.md": "7285e6e8894a41c5", + "gsd-core/workflows/add-phase.md": "b3c61dc9b4d799ed", "gsd-core/workflows/add-tests.md": "ffbaf55a25f455a2", "gsd-core/workflows/add-todo.md": "0a0f4d718ea50bea", - "gsd-core/workflows/ai-integration-phase.md": "3503f52a7356caf0", + "gsd-core/workflows/ai-integration-phase.md": "462b75ae916e2793", "gsd-core/workflows/analyze-dependencies.md": "77aff48f97fa6f1c", "gsd-core/workflows/audit-fix.md": "b441993d57cf83bc", "gsd-core/workflows/audit-milestone.md": "ae8605b4ecc37c0b", @@ -351,7 +351,7 @@ "gsd-core/workflows/onboard.md": "b86d78eef6c77e5b", "gsd-core/workflows/pause-work.md": "da902807d2213204", "gsd-core/workflows/plan-milestone-gaps.md": "7679fac068d1009d", - "gsd-core/workflows/plan-phase.md": "4b20c2d821e2df8a", + "gsd-core/workflows/plan-phase.md": "06970687f439918b", "gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "4099ef6d0868de60", "gsd-core/workflows/plan-phase/steps/prd-express-path.md": "b810f9f2374e23a5", "gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "e9de7a96bbfff261", diff --git a/tests/fixtures/golden-install-parity/claude.json b/tests/fixtures/golden-install-parity/claude.json index 5f7be45b6..147a1f90d 100644 --- a/tests/fixtures/golden-install-parity/claude.json +++ b/tests/fixtures/golden-install-parity/claude.json @@ -206,10 +206,10 @@ "gsd-core/templates/verification-report.md": "dd5faa6254183731", "gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335", "gsd-core/workflows/add-backlog.md": "485c4b6673ddf832", - "gsd-core/workflows/add-phase.md": "0d90083e9c17bec1", + "gsd-core/workflows/add-phase.md": "b2c06b7ed648658c", "gsd-core/workflows/add-tests.md": "c4b133a102d36a27", "gsd-core/workflows/add-todo.md": "2c5176263ad4ae8f", - "gsd-core/workflows/ai-integration-phase.md": "a898d99b8d844215", + "gsd-core/workflows/ai-integration-phase.md": "a280593ad22fc9a3", "gsd-core/workflows/analyze-dependencies.md": "77aff48f97fa6f1c", "gsd-core/workflows/audit-fix.md": "ca751f6538c8f496", "gsd-core/workflows/audit-milestone.md": "9f8ec364e58d5710", @@ -280,7 +280,7 @@ "gsd-core/workflows/onboard.md": "3c50ed1f1fd07619", "gsd-core/workflows/pause-work.md": "5716362557f44ce4", "gsd-core/workflows/plan-milestone-gaps.md": "1b43d12812f7bc1e", - "gsd-core/workflows/plan-phase.md": "7e6899ce19c134e0", + "gsd-core/workflows/plan-phase.md": "b8773ed817e24b37", "gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "4099ef6d0868de60", "gsd-core/workflows/plan-phase/steps/prd-express-path.md": "197c0590326371b2", "gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "e9de7a96bbfff261", @@ -362,7 +362,7 @@ "scripts/lib/allowlist-ratchet.cjs": "ffaceaac3efc2660", "scripts/lib/cli-exit.cjs": "612d0c372c75b7e7", "skills/gsd-add-tests/SKILL.md": "6661195a66f25ae8", - "skills/gsd-ai-integration-phase/SKILL.md": "96c8151779ad510e", + "skills/gsd-ai-integration-phase/SKILL.md": "e58f7e9b779b8cee", "skills/gsd-audit-fix/SKILL.md": "d47c757ad361e503", "skills/gsd-audit-milestone/SKILL.md": "edb6a0cc6305d724", "skills/gsd-audit-uat/SKILL.md": "f3cb11adb6dab54f", @@ -405,7 +405,7 @@ "skills/gsd-onboard/SKILL.md": "46460b479b7524bf", "skills/gsd-pause-work/SKILL.md": "35e8a148e44f5361", "skills/gsd-phase/SKILL.md": "00be96e7ae36c6f0", - "skills/gsd-plan-phase/SKILL.md": "a512ac3d14194133", + "skills/gsd-plan-phase/SKILL.md": "f64953d1af7b0f34", "skills/gsd-plan-review-convergence/SKILL.md": "a42e226d17b69108", "skills/gsd-pr-branch/SKILL.md": "c5e26f2c6dff1355", "skills/gsd-profile-user/SKILL.md": "894eb2850ecd2dde", diff --git a/tests/fixtures/golden-install-parity/cline.json b/tests/fixtures/golden-install-parity/cline.json index 84ac13c4e..a09a3031b 100644 --- a/tests/fixtures/golden-install-parity/cline.json +++ b/tests/fixtures/golden-install-parity/cline.json @@ -210,10 +210,10 @@ "gsd-core/templates/verification-report.md": "dd5faa6254183731", "gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335", "gsd-core/workflows/add-backlog.md": "6c4393113fa9d209", - "gsd-core/workflows/add-phase.md": "cac9b86f66ab26f5", + "gsd-core/workflows/add-phase.md": "2558614a81b9e977", "gsd-core/workflows/add-tests.md": "0354376bffdc0080", "gsd-core/workflows/add-todo.md": "aa89018230c87f13", - "gsd-core/workflows/ai-integration-phase.md": "5159c6bdf102f74b", + "gsd-core/workflows/ai-integration-phase.md": "878d0a2c6eb08c88", "gsd-core/workflows/analyze-dependencies.md": "52942af10f140717", "gsd-core/workflows/audit-fix.md": "d6a41fc6879424f8", "gsd-core/workflows/audit-milestone.md": "202b726748604c93", @@ -284,7 +284,7 @@ "gsd-core/workflows/onboard.md": "6f9e6c0b484271a9", "gsd-core/workflows/pause-work.md": "3530607514b0ac00", "gsd-core/workflows/plan-milestone-gaps.md": "bafdc6945cd2bd87", - "gsd-core/workflows/plan-phase.md": "32c4a6cb4937cce3", + "gsd-core/workflows/plan-phase.md": "a3b27f3832d62470", "gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "b36f77ac7344a072", "gsd-core/workflows/plan-phase/steps/prd-express-path.md": "4b0a2cb0f4f28179", "gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "090c31e22b1508fe", @@ -394,7 +394,7 @@ "skills/gsd-ns-review/skills/validate-phase/SKILL.md": "62dc6ae62bb38c16", "skills/gsd-ns-workflow/SKILL.md": "0cb9c23c065fe448", "skills/gsd-ns-workflow/skills/add-tests/SKILL.md": "addc3a220961a9c7", - "skills/gsd-ns-workflow/skills/ai-integration-phase/SKILL.md": "e74b83a991dc9fc7", + "skills/gsd-ns-workflow/skills/ai-integration-phase/SKILL.md": "0b1553cb7f4c8f7a", "skills/gsd-ns-workflow/skills/autonomous/SKILL.md": "37dc7b78ceb74803", "skills/gsd-ns-workflow/skills/discuss-phase/SKILL.md": "fedb2e2c77ff82ae", "skills/gsd-ns-workflow/skills/execute-phase/SKILL.md": "e249a35959e49e99", @@ -402,7 +402,7 @@ "skills/gsd-ns-workflow/skills/mvp-phase/SKILL.md": "6c2beccceb46fda1", "skills/gsd-ns-workflow/skills/next/SKILL.md": "3856471d0f64bf09", "skills/gsd-ns-workflow/skills/phase/SKILL.md": "4e1363db6013a1e5", - "skills/gsd-ns-workflow/skills/plan-phase/SKILL.md": "643641b45747815e", + "skills/gsd-ns-workflow/skills/plan-phase/SKILL.md": "5796e8744314dcf5", "skills/gsd-ns-workflow/skills/plan-review-convergence/SKILL.md": "d44c5d4d78cbee13", "skills/gsd-ns-workflow/skills/progress/SKILL.md": "493f467c22d55b6b", "skills/gsd-ns-workflow/skills/quick/SKILL.md": "605e596c680cbb1c", diff --git a/tests/fixtures/golden-install-parity/codebuddy.json b/tests/fixtures/golden-install-parity/codebuddy.json index 380fcc5cd..b200f7a7a 100644 --- a/tests/fixtures/golden-install-parity/codebuddy.json +++ b/tests/fixtures/golden-install-parity/codebuddy.json @@ -36,7 +36,7 @@ "agents/gsd-user-profiler.md": "622220df0654b6bf", "agents/gsd-verifier.md": "c8a8c73a277a512f", "commands/gsd-add-tests.md": "aa65032141557fb7", - "commands/gsd-ai-integration-phase.md": "373053d7cd887aa9", + "commands/gsd-ai-integration-phase.md": "6199b7198f928adc", "commands/gsd-audit-fix.md": "c21ef925131fade7", "commands/gsd-audit-milestone.md": "accbb975f85df506", "commands/gsd-audit-uat.md": "f34f9d211780c8e7", @@ -79,7 +79,7 @@ "commands/gsd-onboard.md": "63283b90aa671229", "commands/gsd-pause-work.md": "6caa75a7c2b4dd2d", "commands/gsd-phase.md": "e3ca4958ea20a935", - "commands/gsd-plan-phase.md": "03e08147bee2e446", + "commands/gsd-plan-phase.md": "ad988a271bf20e9c", "commands/gsd-plan-review-convergence.md": "3d8837015534969f", "commands/gsd-pr-branch.md": "f5be514b9f69eaf5", "commands/gsd-profile-user.md": "7a9289910719d828", @@ -278,10 +278,10 @@ "gsd-core/templates/verification-report.md": "dd5faa6254183731", "gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335", "gsd-core/workflows/add-backlog.md": "1bc7377b105194fc", - "gsd-core/workflows/add-phase.md": "46e0551ffdd8ce1a", + "gsd-core/workflows/add-phase.md": "ac43883e2d8e34d8", "gsd-core/workflows/add-tests.md": "24b0d8157a9ccb8b", "gsd-core/workflows/add-todo.md": "953314cdfef56bc4", - "gsd-core/workflows/ai-integration-phase.md": "40c217869a06981f", + "gsd-core/workflows/ai-integration-phase.md": "45c727e49de71636", "gsd-core/workflows/analyze-dependencies.md": "52942af10f140717", "gsd-core/workflows/audit-fix.md": "ca751f6538c8f496", "gsd-core/workflows/audit-milestone.md": "3835762c3147a927", @@ -352,7 +352,7 @@ "gsd-core/workflows/onboard.md": "6f9e6c0b484271a9", "gsd-core/workflows/pause-work.md": "f2b33bba5593d422", "gsd-core/workflows/plan-milestone-gaps.md": "852f6d7c0c4299dc", - "gsd-core/workflows/plan-phase.md": "5124211d53f66feb", + "gsd-core/workflows/plan-phase.md": "1d58b8554e8cc29a", "gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "b36f77ac7344a072", "gsd-core/workflows/plan-phase/steps/prd-express-path.md": "197c0590326371b2", "gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "49f58c3f75be3eb5", @@ -434,7 +434,7 @@ "scripts/lib/allowlist-ratchet.cjs": "ffaceaac3efc2660", "scripts/lib/cli-exit.cjs": "612d0c372c75b7e7", "skills/gsd-add-tests/SKILL.md": "60dd7f9779d5f493", - "skills/gsd-ai-integration-phase/SKILL.md": "686ba35b47442cf4", + "skills/gsd-ai-integration-phase/SKILL.md": "eb9b5d76d91dd2fe", "skills/gsd-audit-fix/SKILL.md": "309dcbc406750fd6", "skills/gsd-audit-milestone/SKILL.md": "1f328f0c7448f27c", "skills/gsd-audit-uat/SKILL.md": "597d4f8cd0fa5240", @@ -477,7 +477,7 @@ "skills/gsd-onboard/SKILL.md": "6ad789a03124cd4f", "skills/gsd-pause-work/SKILL.md": "e2de20b7539e78d4", "skills/gsd-phase/SKILL.md": "f87211f779315ced", - "skills/gsd-plan-phase/SKILL.md": "262e2e7ff694fc09", + "skills/gsd-plan-phase/SKILL.md": "5f00d90224127bd5", "skills/gsd-plan-review-convergence/SKILL.md": "bbad9a21eacdbfcf", "skills/gsd-pr-branch/SKILL.md": "87bb3306488565fb", "skills/gsd-profile-user/SKILL.md": "ee8e8547298006b8", diff --git a/tests/fixtures/golden-install-parity/codex.json b/tests/fixtures/golden-install-parity/codex.json index e4be6d98f..0409958de 100644 --- a/tests/fixtures/golden-install-parity/codex.json +++ b/tests/fixtures/golden-install-parity/codex.json @@ -1,6 +1,6 @@ { ".agents/skills/gsd-add-tests/SKILL.md": "f3c1594a059de3ee", - ".agents/skills/gsd-ai-integration-phase/SKILL.md": "ba4b5f406db6de96", + ".agents/skills/gsd-ai-integration-phase/SKILL.md": "279cc57f38c78756", ".agents/skills/gsd-audit-fix/SKILL.md": "9cea2764b92aa352", ".agents/skills/gsd-audit-milestone/SKILL.md": "0528ef8a5834b5df", ".agents/skills/gsd-audit-uat/SKILL.md": "6c2aa0c2b62c5233", @@ -43,7 +43,7 @@ ".agents/skills/gsd-onboard/SKILL.md": "f42fc2edebeda671", ".agents/skills/gsd-pause-work/SKILL.md": "b379469eed78a196", ".agents/skills/gsd-phase/SKILL.md": "25477edc97a90c91", - ".agents/skills/gsd-plan-phase/SKILL.md": "c6f734135356faac", + ".agents/skills/gsd-plan-phase/SKILL.md": "0a7a22d226bcec30", ".agents/skills/gsd-plan-review-convergence/SKILL.md": "9a7ce3391c33139d", ".agents/skills/gsd-pr-branch/SKILL.md": "6901da15e321913e", ".agents/skills/gsd-profile-user/SKILL.md": "6259fabfb6afe7be", @@ -313,10 +313,10 @@ "gsd-core/templates/verification-report.md": "78ab9264ce63ed7e", "gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335", "gsd-core/workflows/add-backlog.md": "62431b27424ff1ff", - "gsd-core/workflows/add-phase.md": "27f282bf5b8af59d", + "gsd-core/workflows/add-phase.md": "d7a401b48271964f", "gsd-core/workflows/add-tests.md": "5cdb15508c4b6075", "gsd-core/workflows/add-todo.md": "776e554602e3d1b7", - "gsd-core/workflows/ai-integration-phase.md": "1dfa15d8f28c022d", + "gsd-core/workflows/ai-integration-phase.md": "d46f7e1a0b24345a", "gsd-core/workflows/analyze-dependencies.md": "f799abc00907377f", "gsd-core/workflows/audit-fix.md": "ca751f6538c8f496", "gsd-core/workflows/audit-milestone.md": "5f362cead97ceaca", @@ -387,7 +387,7 @@ "gsd-core/workflows/onboard.md": "83c40ba7055b8b24", "gsd-core/workflows/pause-work.md": "a217770ecafcb2e0", "gsd-core/workflows/plan-milestone-gaps.md": "73d46f77c50a0690", - "gsd-core/workflows/plan-phase.md": "395fe273b017b2ff", + "gsd-core/workflows/plan-phase.md": "4b0010d581ccce22", "gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "d838b87563feedf6", "gsd-core/workflows/plan-phase/steps/prd-express-path.md": "f10975692cbd036e", "gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "f5edc589cab52a7b", diff --git a/tests/fixtures/golden-install-parity/copilot.json b/tests/fixtures/golden-install-parity/copilot.json index d0e7cc629..6d65be8ac 100644 --- a/tests/fixtures/golden-install-parity/copilot.json +++ b/tests/fixtures/golden-install-parity/copilot.json @@ -208,10 +208,10 @@ "gsd-core/templates/verification-report.md": "78ab9264ce63ed7e", "gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335", "gsd-core/workflows/add-backlog.md": "98f2dbb7c7cc93c2", - "gsd-core/workflows/add-phase.md": "34e6dd38c25b5b61", + "gsd-core/workflows/add-phase.md": "f4fbfad54be5d46f", "gsd-core/workflows/add-tests.md": "7f5da4d2a9fa8a1a", "gsd-core/workflows/add-todo.md": "f86f4efa25a5d0d6", - "gsd-core/workflows/ai-integration-phase.md": "ef0c2474cee76b00", + "gsd-core/workflows/ai-integration-phase.md": "9dd7f80180f9c8e9", "gsd-core/workflows/analyze-dependencies.md": "77aff48f97fa6f1c", "gsd-core/workflows/audit-fix.md": "646fc39302300887", "gsd-core/workflows/audit-milestone.md": "258e4dfd259ab13f", @@ -282,7 +282,7 @@ "gsd-core/workflows/onboard.md": "a62602c6f3fd538a", "gsd-core/workflows/pause-work.md": "9ce66367be6c40db", "gsd-core/workflows/plan-milestone-gaps.md": "5cf589802d08bdf3", - "gsd-core/workflows/plan-phase.md": "ab96c552cc86d2cc", + "gsd-core/workflows/plan-phase.md": "b72262aa58c82429", "gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "4099ef6d0868de60", "gsd-core/workflows/plan-phase/steps/prd-express-path.md": "bb052483744f0a6d", "gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "e9de7a96bbfff261", @@ -337,7 +337,7 @@ "scripts/lib/allowlist-ratchet.cjs": "ffaceaac3efc2660", "scripts/lib/cli-exit.cjs": "612d0c372c75b7e7", "skills/gsd-add-tests/SKILL.md": "dfe3f8a07f34c438", - "skills/gsd-ai-integration-phase/SKILL.md": "7cdaa253924740b0", + "skills/gsd-ai-integration-phase/SKILL.md": "22593b80a1f3e340", "skills/gsd-audit-fix/SKILL.md": "ac3e209167e2171a", "skills/gsd-audit-milestone/SKILL.md": "faa9473569f5fa4b", "skills/gsd-audit-uat/SKILL.md": "00f0a430a5c43da0", @@ -380,7 +380,7 @@ "skills/gsd-onboard/SKILL.md": "4d325f3033df2d37", "skills/gsd-pause-work/SKILL.md": "4f0caa008a8001ff", "skills/gsd-phase/SKILL.md": "d38c7f9b1d0d2360", - "skills/gsd-plan-phase/SKILL.md": "7761a2f06ac98b30", + "skills/gsd-plan-phase/SKILL.md": "d1ba21e500bf62a8", "skills/gsd-plan-review-convergence/SKILL.md": "d6b850077d62d723", "skills/gsd-pr-branch/SKILL.md": "9cd9740db385d95a", "skills/gsd-profile-user/SKILL.md": "052a8e17ecda40f1", diff --git a/tests/fixtures/golden-install-parity/cursor.json b/tests/fixtures/golden-install-parity/cursor.json index cced95471..01cfbd301 100644 --- a/tests/fixtures/golden-install-parity/cursor.json +++ b/tests/fixtures/golden-install-parity/cursor.json @@ -36,7 +36,7 @@ "agents/gsd-user-profiler.md": "622220df0654b6bf", "agents/gsd-verifier.md": "dea8e61123848fb4", "commands/gsd-add-tests.md": "1f89b16ab2cca426", - "commands/gsd-ai-integration-phase.md": "3ccac39673ffb92c", + "commands/gsd-ai-integration-phase.md": "99f66291ded1899d", "commands/gsd-audit-fix.md": "d88502ffa2151cec", "commands/gsd-audit-milestone.md": "db525e85095d268a", "commands/gsd-audit-uat.md": "70d1d0f175734d8f", @@ -79,7 +79,7 @@ "commands/gsd-onboard.md": "d9e52f558fc2b90f", "commands/gsd-pause-work.md": "59630f05f95fff68", "commands/gsd-phase.md": "9a073dcd0f934f90", - "commands/gsd-plan-phase.md": "462995ee69ba35b4", + "commands/gsd-plan-phase.md": "d9bdd3726e9c3dff", "commands/gsd-plan-review-convergence.md": "04d89318e0e23a1b", "commands/gsd-pr-branch.md": "ef2eedb0ed4295da", "commands/gsd-profile-user.md": "0e99de36619c3b7d", @@ -278,10 +278,10 @@ "gsd-core/templates/verification-report.md": "dd5faa6254183731", "gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335", "gsd-core/workflows/add-backlog.md": "2926457ed07b4500", - "gsd-core/workflows/add-phase.md": "0d90083e9c17bec1", + "gsd-core/workflows/add-phase.md": "b2c06b7ed648658c", "gsd-core/workflows/add-tests.md": "37f031c4b3236a32", "gsd-core/workflows/add-todo.md": "1ee0525664fb062f", - "gsd-core/workflows/ai-integration-phase.md": "b79f320d59a68773", + "gsd-core/workflows/ai-integration-phase.md": "a349e94b18839873", "gsd-core/workflows/analyze-dependencies.md": "77aff48f97fa6f1c", "gsd-core/workflows/audit-fix.md": "ca751f6538c8f496", "gsd-core/workflows/audit-milestone.md": "9f8ec364e58d5710", @@ -352,7 +352,7 @@ "gsd-core/workflows/onboard.md": "20c28136423d40ac", "gsd-core/workflows/pause-work.md": "5716362557f44ce4", "gsd-core/workflows/plan-milestone-gaps.md": "1b43d12812f7bc1e", - "gsd-core/workflows/plan-phase.md": "2aa913f604e21704", + "gsd-core/workflows/plan-phase.md": "abe2eb62620f372f", "gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "e06ccd4d4c0703fb", "gsd-core/workflows/plan-phase/steps/prd-express-path.md": "197c0590326371b2", "gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "3bed01c3c906ac52", @@ -412,7 +412,7 @@ "scripts/lib/allowlist-ratchet.cjs": "ffaceaac3efc2660", "scripts/lib/cli-exit.cjs": "612d0c372c75b7e7", "skills/gsd-add-tests/SKILL.md": "1719810d0f8dd79e", - "skills/gsd-ai-integration-phase/SKILL.md": "9c8242023a8bcc29", + "skills/gsd-ai-integration-phase/SKILL.md": "56ee07ad9596c6f3", "skills/gsd-audit-fix/SKILL.md": "2d2ee3894efbee1c", "skills/gsd-audit-milestone/SKILL.md": "d953bd7170402fc3", "skills/gsd-audit-uat/SKILL.md": "97794348d617f873", @@ -455,7 +455,7 @@ "skills/gsd-onboard/SKILL.md": "c7f216749ba4c09c", "skills/gsd-pause-work/SKILL.md": "7d310e7329b7ae7d", "skills/gsd-phase/SKILL.md": "49fca93e5f2ccc70", - "skills/gsd-plan-phase/SKILL.md": "62dc688c24e59f18", + "skills/gsd-plan-phase/SKILL.md": "c5e1a4ab2ede399a", "skills/gsd-plan-review-convergence/SKILL.md": "c2793cacf3f40d70", "skills/gsd-pr-branch/SKILL.md": "a8f8838a6aa5e1dd", "skills/gsd-profile-user/SKILL.md": "3be8d50399836ef2", diff --git a/tests/fixtures/golden-install-parity/hermes.json b/tests/fixtures/golden-install-parity/hermes.json index 985d27178..b85dec2f3 100644 --- a/tests/fixtures/golden-install-parity/hermes.json +++ b/tests/fixtures/golden-install-parity/hermes.json @@ -207,10 +207,10 @@ "gsd-core/templates/verification-report.md": "dd5faa6254183731", "gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335", "gsd-core/workflows/add-backlog.md": "79a453a2270483fb", - "gsd-core/workflows/add-phase.md": "b4c4b32c111a116a", + "gsd-core/workflows/add-phase.md": "2a6452fc51339b9c", "gsd-core/workflows/add-tests.md": "02f9e11ad2371c00", "gsd-core/workflows/add-todo.md": "8ba173153be63a40", - "gsd-core/workflows/ai-integration-phase.md": "ddab2912d025db65", + "gsd-core/workflows/ai-integration-phase.md": "753a41301e4d2a4c", "gsd-core/workflows/analyze-dependencies.md": "77aff48f97fa6f1c", "gsd-core/workflows/audit-fix.md": "bf84c94d2ccdacbf", "gsd-core/workflows/audit-milestone.md": "b96a78c6bd2e7690", @@ -281,7 +281,7 @@ "gsd-core/workflows/onboard.md": "3c50ed1f1fd07619", "gsd-core/workflows/pause-work.md": "ae2d5789a95f70fe", "gsd-core/workflows/plan-milestone-gaps.md": "c86cdc1964256b98", - "gsd-core/workflows/plan-phase.md": "2f0c5b0b66ebcf1d", + "gsd-core/workflows/plan-phase.md": "c181932975852b0e", "gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "4099ef6d0868de60", "gsd-core/workflows/plan-phase/steps/prd-express-path.md": "9607e6d03e93c1c2", "gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "62f8e4f3b475fe5f", @@ -420,7 +420,7 @@ "skills/gsd/gsd-ns-review/skills/validate-phase/SKILL.md": "f2c31c34fc8e24c4", "skills/gsd/gsd-ns-workflow/SKILL.md": "f54502a2c6bf5495", "skills/gsd/gsd-ns-workflow/skills/add-tests/SKILL.md": "29e5863322ad6f2d", - "skills/gsd/gsd-ns-workflow/skills/ai-integration-phase/SKILL.md": "317912c0488d701b", + "skills/gsd/gsd-ns-workflow/skills/ai-integration-phase/SKILL.md": "97eb01851d368d50", "skills/gsd/gsd-ns-workflow/skills/autonomous/SKILL.md": "3c9bc726e13c4916", "skills/gsd/gsd-ns-workflow/skills/discuss-phase/SKILL.md": "326303209b745eea", "skills/gsd/gsd-ns-workflow/skills/execute-phase/SKILL.md": "a2e4e6211e09b3c0", @@ -428,7 +428,7 @@ "skills/gsd/gsd-ns-workflow/skills/mvp-phase/SKILL.md": "0804dfd4124526ba", "skills/gsd/gsd-ns-workflow/skills/next/SKILL.md": "1d30cf6061d15168", "skills/gsd/gsd-ns-workflow/skills/phase/SKILL.md": "610bd06d71198849", - "skills/gsd/gsd-ns-workflow/skills/plan-phase/SKILL.md": "cb1cf29451588047", + "skills/gsd/gsd-ns-workflow/skills/plan-phase/SKILL.md": "e564bd88707a0e69", "skills/gsd/gsd-ns-workflow/skills/plan-review-convergence/SKILL.md": "87e5f3a0c1f2a6af", "skills/gsd/gsd-ns-workflow/skills/progress/SKILL.md": "6ec0e4715dde7ee2", "skills/gsd/gsd-ns-workflow/skills/quick/SKILL.md": "65e377345e9c49a8", diff --git a/tests/fixtures/golden-install-parity/kilo.json b/tests/fixtures/golden-install-parity/kilo.json index 9583bb9e3..978bf7dd2 100644 --- a/tests/fixtures/golden-install-parity/kilo.json +++ b/tests/fixtures/golden-install-parity/kilo.json @@ -36,7 +36,7 @@ "agents/gsd-user-profiler.md": "b8cb09319c517701", "agents/gsd-verifier.md": "af609b1959cde3f3", "command/gsd-add-tests.md": "c314f9a6be312bfa", - "command/gsd-ai-integration-phase.md": "bbab86a540e00db5", + "command/gsd-ai-integration-phase.md": "9c47e446af993c53", "command/gsd-audit-fix.md": "4106e9dce9b71585", "command/gsd-audit-milestone.md": "0f627d956b5030ed", "command/gsd-audit-uat.md": "119f204ca3cd0cd6", @@ -79,7 +79,7 @@ "command/gsd-onboard.md": "3e87a21c9c04f0d7", "command/gsd-pause-work.md": "04e993b1c9f8322b", "command/gsd-phase.md": "8f0e98dc6c223229", - "command/gsd-plan-phase.md": "5ef48b00031b341c", + "command/gsd-plan-phase.md": "8c39408407b6bf9f", "command/gsd-plan-review-convergence.md": "45060e2c490fcae7", "command/gsd-pr-branch.md": "68e724607de3c480", "command/gsd-profile-user.md": "9704158b2d79cad2", @@ -278,10 +278,10 @@ "gsd-core/templates/verification-report.md": "78ab9264ce63ed7e", "gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335", "gsd-core/workflows/add-backlog.md": "485c4b6673ddf832", - "gsd-core/workflows/add-phase.md": "0d90083e9c17bec1", + "gsd-core/workflows/add-phase.md": "b2c06b7ed648658c", "gsd-core/workflows/add-tests.md": "6e54f3d71a202671", "gsd-core/workflows/add-todo.md": "31bc520d77b14139", - "gsd-core/workflows/ai-integration-phase.md": "c85c6afdc64f0da6", + "gsd-core/workflows/ai-integration-phase.md": "d4400169618e6925", "gsd-core/workflows/analyze-dependencies.md": "77aff48f97fa6f1c", "gsd-core/workflows/audit-fix.md": "ca751f6538c8f496", "gsd-core/workflows/audit-milestone.md": "9f8ec364e58d5710", @@ -352,7 +352,7 @@ "gsd-core/workflows/onboard.md": "78b288089305dc46", "gsd-core/workflows/pause-work.md": "a6e5336c409fdc8b", "gsd-core/workflows/plan-milestone-gaps.md": "1b43d12812f7bc1e", - "gsd-core/workflows/plan-phase.md": "aca787850411c004", + "gsd-core/workflows/plan-phase.md": "5ed4eaa6691f76fd", "gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "4099ef6d0868de60", "gsd-core/workflows/plan-phase/steps/prd-express-path.md": "f10975692cbd036e", "gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "e9de7a96bbfff261", @@ -436,7 +436,7 @@ "scripts/lib/allowlist-ratchet.cjs": "ffaceaac3efc2660", "scripts/lib/cli-exit.cjs": "612d0c372c75b7e7", "skills/gsd-add-tests/SKILL.md": "addc3a220961a9c7", - "skills/gsd-ai-integration-phase/SKILL.md": "e74b83a991dc9fc7", + "skills/gsd-ai-integration-phase/SKILL.md": "0b1553cb7f4c8f7a", "skills/gsd-audit-fix/SKILL.md": "2c1f601f2fb52585", "skills/gsd-audit-milestone/SKILL.md": "739ed755ad84e58e", "skills/gsd-audit-uat/SKILL.md": "2c450432b6fd1c3e", @@ -479,7 +479,7 @@ "skills/gsd-onboard/SKILL.md": "0e3cc902f44b41b8", "skills/gsd-pause-work/SKILL.md": "34366b18a392a717", "skills/gsd-phase/SKILL.md": "64a241d4f8665aa2", - "skills/gsd-plan-phase/SKILL.md": "fd51709d82eb05b6", + "skills/gsd-plan-phase/SKILL.md": "c95d9376440c4725", "skills/gsd-plan-review-convergence/SKILL.md": "fb7355db56f5eaec", "skills/gsd-pr-branch/SKILL.md": "a80da6aa95efc50d", "skills/gsd-profile-user/SKILL.md": "4ac2c5ea45d17a9d", diff --git a/tests/fixtures/golden-install-parity/kimi.json b/tests/fixtures/golden-install-parity/kimi.json index 09e5b64f5..4cfeb42d2 100644 --- a/tests/fixtures/golden-install-parity/kimi.json +++ b/tests/fixtures/golden-install-parity/kimi.json @@ -271,10 +271,10 @@ "gsd-core/templates/verification-report.md": "dd5faa6254183731", "gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335", "gsd-core/workflows/add-backlog.md": "1bc7377b105194fc", - "gsd-core/workflows/add-phase.md": "46e0551ffdd8ce1a", + "gsd-core/workflows/add-phase.md": "ac43883e2d8e34d8", "gsd-core/workflows/add-tests.md": "24b0d8157a9ccb8b", "gsd-core/workflows/add-todo.md": "953314cdfef56bc4", - "gsd-core/workflows/ai-integration-phase.md": "40c217869a06981f", + "gsd-core/workflows/ai-integration-phase.md": "45c727e49de71636", "gsd-core/workflows/analyze-dependencies.md": "52942af10f140717", "gsd-core/workflows/audit-fix.md": "ca751f6538c8f496", "gsd-core/workflows/audit-milestone.md": "3835762c3147a927", @@ -345,7 +345,7 @@ "gsd-core/workflows/onboard.md": "6f9e6c0b484271a9", "gsd-core/workflows/pause-work.md": "f2b33bba5593d422", "gsd-core/workflows/plan-milestone-gaps.md": "852f6d7c0c4299dc", - "gsd-core/workflows/plan-phase.md": "851eb6ba0bc911b9", + "gsd-core/workflows/plan-phase.md": "a0e6a19b0cec72ed", "gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "b36f77ac7344a072", "gsd-core/workflows/plan-phase/steps/prd-express-path.md": "197c0590326371b2", "gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "49f58c3f75be3eb5", @@ -399,7 +399,7 @@ "scripts/lib/allowlist-ratchet.cjs": "ffaceaac3efc2660", "scripts/lib/cli-exit.cjs": "612d0c372c75b7e7", "skills/gsd-add-tests/SKILL.md": "217fc2587d3e7ec2", - "skills/gsd-ai-integration-phase/SKILL.md": "739a1376f6f56094", + "skills/gsd-ai-integration-phase/SKILL.md": "949c29f9a6f4a256", "skills/gsd-audit-fix/SKILL.md": "ed585da70ba6da12", "skills/gsd-audit-milestone/SKILL.md": "ad78e50cef304155", "skills/gsd-audit-uat/SKILL.md": "b8e73cbb993a30e2", @@ -442,7 +442,7 @@ "skills/gsd-onboard/SKILL.md": "fd66b3c5b9c6a871", "skills/gsd-pause-work/SKILL.md": "95017c70ae9dca0d", "skills/gsd-phase/SKILL.md": "31578c329cc2583e", - "skills/gsd-plan-phase/SKILL.md": "4c2c6641f59f6496", + "skills/gsd-plan-phase/SKILL.md": "83362394f648deeb", "skills/gsd-plan-review-convergence/SKILL.md": "ab63cb338105d27f", "skills/gsd-pr-branch/SKILL.md": "67f468db29ff2cf1", "skills/gsd-profile-user/SKILL.md": "19a1d3aba57f6c7c", diff --git a/tests/fixtures/golden-install-parity/opencode.json b/tests/fixtures/golden-install-parity/opencode.json index 996dd209d..b3535d6bb 100644 --- a/tests/fixtures/golden-install-parity/opencode.json +++ b/tests/fixtures/golden-install-parity/opencode.json @@ -36,7 +36,7 @@ "agents/gsd-user-profiler.md": "d825b4c0a6431f8b", "agents/gsd-verifier.md": "b9f2e801f9395a35", "commands/gsd-add-tests.md": "b9cd93ed01945f75", - "commands/gsd-ai-integration-phase.md": "9d4bc4dcce7f1ee0", + "commands/gsd-ai-integration-phase.md": "038709fe91d897e4", "commands/gsd-audit-fix.md": "5615403843d5e491", "commands/gsd-audit-milestone.md": "4c700c081f3918ba", "commands/gsd-audit-uat.md": "47dce58d5823da8d", @@ -79,7 +79,7 @@ "commands/gsd-onboard.md": "3aafaeb5d3941efe", "commands/gsd-pause-work.md": "bb5bf91a2e3e480e", "commands/gsd-phase.md": "6bcda1539f949d5a", - "commands/gsd-plan-phase.md": "2c673275cb9517fe", + "commands/gsd-plan-phase.md": "4e19ddc0ca22fbf6", "commands/gsd-plan-review-convergence.md": "88c4284aa8b3dd7e", "commands/gsd-pr-branch.md": "31fca4f1d6c4ee62", "commands/gsd-profile-user.md": "725c14ae7203b5b6", @@ -278,10 +278,10 @@ "gsd-core/templates/verification-report.md": "78ab9264ce63ed7e", "gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335", "gsd-core/workflows/add-backlog.md": "08289088a88d410f", - "gsd-core/workflows/add-phase.md": "5154a5fb3e0d4370", + "gsd-core/workflows/add-phase.md": "739e34f6122e1e61", "gsd-core/workflows/add-tests.md": "b4deb88c74d491c7", "gsd-core/workflows/add-todo.md": "36b6d7fec9631ec7", - "gsd-core/workflows/ai-integration-phase.md": "90e5f97018715b18", + "gsd-core/workflows/ai-integration-phase.md": "f8288f0434d17c84", "gsd-core/workflows/analyze-dependencies.md": "77aff48f97fa6f1c", "gsd-core/workflows/audit-fix.md": "20d2c2a6c49e750b", "gsd-core/workflows/audit-milestone.md": "8bd0b730de08d1a8", @@ -352,7 +352,7 @@ "gsd-core/workflows/onboard.md": "102556e1715c01b9", "gsd-core/workflows/pause-work.md": "70c72beca55c080a", "gsd-core/workflows/plan-milestone-gaps.md": "0a9dacd422cd9533", - "gsd-core/workflows/plan-phase.md": "b252c6e1427d508e", + "gsd-core/workflows/plan-phase.md": "bb029bf7a3d3c6ef", "gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "4099ef6d0868de60", "gsd-core/workflows/plan-phase/steps/prd-express-path.md": "3a09141de7f3dedb", "gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "e9de7a96bbfff261", @@ -436,7 +436,7 @@ "scripts/lib/allowlist-ratchet.cjs": "ffaceaac3efc2660", "scripts/lib/cli-exit.cjs": "612d0c372c75b7e7", "skills/gsd-add-tests/SKILL.md": "f60794b90b48cbac", - "skills/gsd-ai-integration-phase/SKILL.md": "868ca7c86ef61033", + "skills/gsd-ai-integration-phase/SKILL.md": "d2418122ba6f6330", "skills/gsd-audit-fix/SKILL.md": "740d255df04b6e93", "skills/gsd-audit-milestone/SKILL.md": "68b57f54877f35a9", "skills/gsd-audit-uat/SKILL.md": "d73e6e175a711ed9", @@ -479,7 +479,7 @@ "skills/gsd-onboard/SKILL.md": "ea0b1217e5ecae23", "skills/gsd-pause-work/SKILL.md": "c7e9ba4f242c4648", "skills/gsd-phase/SKILL.md": "ee78c0c56c814d84", - "skills/gsd-plan-phase/SKILL.md": "c9b3b5cb0fbb42a9", + "skills/gsd-plan-phase/SKILL.md": "4b65f0a9d7d42ec7", "skills/gsd-plan-review-convergence/SKILL.md": "78820e21dd05d5d4", "skills/gsd-pr-branch/SKILL.md": "8fa5a8fa217fe913", "skills/gsd-profile-user/SKILL.md": "3e6155a64523d59f", diff --git a/tests/fixtures/golden-install-parity/pi.json b/tests/fixtures/golden-install-parity/pi.json index 30bf878f2..db22f6b1f 100644 --- a/tests/fixtures/golden-install-parity/pi.json +++ b/tests/fixtures/golden-install-parity/pi.json @@ -174,10 +174,10 @@ "gsd-core/templates/verification-report.md": "dd5faa6254183731", "gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335", "gsd-core/workflows/add-backlog.md": "1bc7377b105194fc", - "gsd-core/workflows/add-phase.md": "46e0551ffdd8ce1a", + "gsd-core/workflows/add-phase.md": "ac43883e2d8e34d8", "gsd-core/workflows/add-tests.md": "24b0d8157a9ccb8b", "gsd-core/workflows/add-todo.md": "953314cdfef56bc4", - "gsd-core/workflows/ai-integration-phase.md": "40c217869a06981f", + "gsd-core/workflows/ai-integration-phase.md": "45c727e49de71636", "gsd-core/workflows/analyze-dependencies.md": "52942af10f140717", "gsd-core/workflows/audit-fix.md": "ca751f6538c8f496", "gsd-core/workflows/audit-milestone.md": "3835762c3147a927", @@ -248,7 +248,7 @@ "gsd-core/workflows/onboard.md": "6f9e6c0b484271a9", "gsd-core/workflows/pause-work.md": "f2b33bba5593d422", "gsd-core/workflows/plan-milestone-gaps.md": "852f6d7c0c4299dc", - "gsd-core/workflows/plan-phase.md": "915e5aee921c011f", + "gsd-core/workflows/plan-phase.md": "d04009957f972f33", "gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "b36f77ac7344a072", "gsd-core/workflows/plan-phase/steps/prd-express-path.md": "197c0590326371b2", "gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "49f58c3f75be3eb5", diff --git a/tests/fixtures/golden-install-parity/qwen.json b/tests/fixtures/golden-install-parity/qwen.json index 1514e33cf..2c338a664 100644 --- a/tests/fixtures/golden-install-parity/qwen.json +++ b/tests/fixtures/golden-install-parity/qwen.json @@ -207,10 +207,10 @@ "gsd-core/templates/verification-report.md": "dd5faa6254183731", "gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335", "gsd-core/workflows/add-backlog.md": "cee41d5fc52d4e37", - "gsd-core/workflows/add-phase.md": "cc63a3e108c9a065", + "gsd-core/workflows/add-phase.md": "395fb0f9f0385073", "gsd-core/workflows/add-tests.md": "7cd945118e83246e", "gsd-core/workflows/add-todo.md": "83426131a56b8e77", - "gsd-core/workflows/ai-integration-phase.md": "afdc7c15f03a95fc", + "gsd-core/workflows/ai-integration-phase.md": "dd58ee9044bdf3c2", "gsd-core/workflows/analyze-dependencies.md": "77aff48f97fa6f1c", "gsd-core/workflows/audit-fix.md": "fe2e5a89d158f9eb", "gsd-core/workflows/audit-milestone.md": "78dbc1e8c4499d7d", @@ -281,7 +281,7 @@ "gsd-core/workflows/onboard.md": "3c50ed1f1fd07619", "gsd-core/workflows/pause-work.md": "be33f84dc1d4822f", "gsd-core/workflows/plan-milestone-gaps.md": "d98e98486123eb97", - "gsd-core/workflows/plan-phase.md": "2b0110c2cd8de18a", + "gsd-core/workflows/plan-phase.md": "0e4471f6bff26866", "gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "4099ef6d0868de60", "gsd-core/workflows/plan-phase/steps/prd-express-path.md": "c22ff5ea46de665a", "gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "d050d8d551ed1756", @@ -419,7 +419,7 @@ "skills/gsd-ns-review/skills/validate-phase/SKILL.md": "70375e2381319d2b", "skills/gsd-ns-workflow/SKILL.md": "5a65f9fb93a71cec", "skills/gsd-ns-workflow/skills/add-tests/SKILL.md": "6661195a66f25ae8", - "skills/gsd-ns-workflow/skills/ai-integration-phase/SKILL.md": "96c8151779ad510e", + "skills/gsd-ns-workflow/skills/ai-integration-phase/SKILL.md": "e58f7e9b779b8cee", "skills/gsd-ns-workflow/skills/autonomous/SKILL.md": "fb57d2c08ea9e8bc", "skills/gsd-ns-workflow/skills/discuss-phase/SKILL.md": "ff522155265107d2", "skills/gsd-ns-workflow/skills/execute-phase/SKILL.md": "13518a22e020e1bf", @@ -427,7 +427,7 @@ "skills/gsd-ns-workflow/skills/mvp-phase/SKILL.md": "f9a1348c6c297579", "skills/gsd-ns-workflow/skills/next/SKILL.md": "13e394affe675498", "skills/gsd-ns-workflow/skills/phase/SKILL.md": "1ed640e5f06c7be6", - "skills/gsd-ns-workflow/skills/plan-phase/SKILL.md": "cdfe074359399099", + "skills/gsd-ns-workflow/skills/plan-phase/SKILL.md": "ff46b5450c9c4313", "skills/gsd-ns-workflow/skills/plan-review-convergence/SKILL.md": "a42e226d17b69108", "skills/gsd-ns-workflow/skills/progress/SKILL.md": "943538c4ac6bde19", "skills/gsd-ns-workflow/skills/quick/SKILL.md": "bd5e4cb79bc41611", diff --git a/tests/fixtures/golden-install-parity/trae.json b/tests/fixtures/golden-install-parity/trae.json index 2734968b7..7128f0abe 100644 --- a/tests/fixtures/golden-install-parity/trae.json +++ b/tests/fixtures/golden-install-parity/trae.json @@ -207,10 +207,10 @@ "gsd-core/templates/verification-report.md": "dd5faa6254183731", "gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335", "gsd-core/workflows/add-backlog.md": "1851e97996d445d5", - "gsd-core/workflows/add-phase.md": "09bdebbc62f3310e", + "gsd-core/workflows/add-phase.md": "7403cf0bc93a9699", "gsd-core/workflows/add-tests.md": "8ad08d29415f8f43", "gsd-core/workflows/add-todo.md": "fefa923ed596225f", - "gsd-core/workflows/ai-integration-phase.md": "d469eb120e52de0f", + "gsd-core/workflows/ai-integration-phase.md": "197ebcc6abb0b873", "gsd-core/workflows/analyze-dependencies.md": "77aff48f97fa6f1c", "gsd-core/workflows/audit-fix.md": "2d4d783caf51f781", "gsd-core/workflows/audit-milestone.md": "ebec95af8f68f2ed", @@ -281,7 +281,7 @@ "gsd-core/workflows/onboard.md": "61f111302af0f404", "gsd-core/workflows/pause-work.md": "c20d267e28ce92f0", "gsd-core/workflows/plan-milestone-gaps.md": "26db7b9329b7ddc8", - "gsd-core/workflows/plan-phase.md": "ab5ecd1e6a256c11", + "gsd-core/workflows/plan-phase.md": "8e0485af2536a0e8", "gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "e06ccd4d4c0703fb", "gsd-core/workflows/plan-phase/steps/prd-express-path.md": "778b73a8db6f7c32", "gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "619946c879f33b9d", @@ -391,7 +391,7 @@ "skills/gsd-ns-review/skills/validate-phase/SKILL.md": "536619be8c40ff5e", "skills/gsd-ns-workflow/SKILL.md": "2c85abe6d78c7cf7", "skills/gsd-ns-workflow/skills/add-tests/SKILL.md": "6e10735c8b18de8a", - "skills/gsd-ns-workflow/skills/ai-integration-phase/SKILL.md": "b5cce2e6e801420d", + "skills/gsd-ns-workflow/skills/ai-integration-phase/SKILL.md": "8bbad0f4c9624d4e", "skills/gsd-ns-workflow/skills/autonomous/SKILL.md": "a9d7374b631ae7b3", "skills/gsd-ns-workflow/skills/discuss-phase/SKILL.md": "d2f1554b9faab0a1", "skills/gsd-ns-workflow/skills/execute-phase/SKILL.md": "e05fc375d4b5f7b5", @@ -399,7 +399,7 @@ "skills/gsd-ns-workflow/skills/mvp-phase/SKILL.md": "fef8178c9920c2dd", "skills/gsd-ns-workflow/skills/next/SKILL.md": "faadd9e2817e7324", "skills/gsd-ns-workflow/skills/phase/SKILL.md": "df3efcd61f7cc796", - "skills/gsd-ns-workflow/skills/plan-phase/SKILL.md": "a937c8c42e5eaea3", + "skills/gsd-ns-workflow/skills/plan-phase/SKILL.md": "31962f06bc124c89", "skills/gsd-ns-workflow/skills/plan-review-convergence/SKILL.md": "5c4475320977818f", "skills/gsd-ns-workflow/skills/progress/SKILL.md": "37a37d2cdfba46ea", "skills/gsd-ns-workflow/skills/quick/SKILL.md": "6fd1b96274b23a9f", diff --git a/tests/fixtures/golden-install-parity/windsurf.json b/tests/fixtures/golden-install-parity/windsurf.json index 4aa8487a5..89afadcc5 100644 --- a/tests/fixtures/golden-install-parity/windsurf.json +++ b/tests/fixtures/golden-install-parity/windsurf.json @@ -207,10 +207,10 @@ "gsd-core/templates/verification-report.md": "dd5faa6254183731", "gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335", "gsd-core/workflows/add-backlog.md": "61169973a10b1321", - "gsd-core/workflows/add-phase.md": "f9b1f7cc229b57f8", + "gsd-core/workflows/add-phase.md": "78cca7f86793f7f8", "gsd-core/workflows/add-tests.md": "d51e69bb433535a4", "gsd-core/workflows/add-todo.md": "50d17053c6cfbc31", - "gsd-core/workflows/ai-integration-phase.md": "8948988717506320", + "gsd-core/workflows/ai-integration-phase.md": "e556fe979752c52b", "gsd-core/workflows/analyze-dependencies.md": "77aff48f97fa6f1c", "gsd-core/workflows/audit-fix.md": "fe4d636f2dca6d74", "gsd-core/workflows/audit-milestone.md": "868db5a8f5d55040", @@ -281,7 +281,7 @@ "gsd-core/workflows/onboard.md": "20c28136423d40ac", "gsd-core/workflows/pause-work.md": "93fcc1c845da6396", "gsd-core/workflows/plan-milestone-gaps.md": "7880866ee1caf923", - "gsd-core/workflows/plan-phase.md": "0404dbc786881567", + "gsd-core/workflows/plan-phase.md": "8b1522804296adfd", "gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "e06ccd4d4c0703fb", "gsd-core/workflows/plan-phase/steps/prd-express-path.md": "80b1ba493a9a967f", "gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "3fed4740a91d0443", diff --git a/tests/fixtures/golden-install-parity/zcode.json b/tests/fixtures/golden-install-parity/zcode.json index 5e498dae7..1f87b07e1 100644 --- a/tests/fixtures/golden-install-parity/zcode.json +++ b/tests/fixtures/golden-install-parity/zcode.json @@ -36,7 +36,7 @@ "agents/gsd-user-profiler.md": "ca3bf75581f211a0", "agents/gsd-verifier.md": "8282761ba471c022", "commands/gsd-add-tests.md": "51542808862d4aa7", - "commands/gsd-ai-integration-phase.md": "22b1e98786c2a43e", + "commands/gsd-ai-integration-phase.md": "a693c0ade172bc3d", "commands/gsd-audit-fix.md": "24d7e5478c271584", "commands/gsd-audit-milestone.md": "192c2d4979ef6a5e", "commands/gsd-audit-uat.md": "a7ce7c63bf2db68e", @@ -79,7 +79,7 @@ "commands/gsd-onboard.md": "a35340ce39334fc7", "commands/gsd-pause-work.md": "40a953fcddbedb5d", "commands/gsd-phase.md": "5dd3d40e3461a973", - "commands/gsd-plan-phase.md": "3fd288ea8d4748e2", + "commands/gsd-plan-phase.md": "d6ba79bf0ede5bcd", "commands/gsd-plan-review-convergence.md": "551597f2add981cb", "commands/gsd-pr-branch.md": "ab1fcffe92129061", "commands/gsd-profile-user.md": "37c9ef202669bfd3", @@ -278,10 +278,10 @@ "gsd-core/templates/verification-report.md": "dd5faa6254183731", "gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335", "gsd-core/workflows/add-backlog.md": "1bc7377b105194fc", - "gsd-core/workflows/add-phase.md": "46e0551ffdd8ce1a", + "gsd-core/workflows/add-phase.md": "ac43883e2d8e34d8", "gsd-core/workflows/add-tests.md": "24b0d8157a9ccb8b", "gsd-core/workflows/add-todo.md": "953314cdfef56bc4", - "gsd-core/workflows/ai-integration-phase.md": "40c217869a06981f", + "gsd-core/workflows/ai-integration-phase.md": "45c727e49de71636", "gsd-core/workflows/analyze-dependencies.md": "52942af10f140717", "gsd-core/workflows/audit-fix.md": "ca751f6538c8f496", "gsd-core/workflows/audit-milestone.md": "3835762c3147a927", @@ -352,7 +352,7 @@ "gsd-core/workflows/onboard.md": "6f9e6c0b484271a9", "gsd-core/workflows/pause-work.md": "f2b33bba5593d422", "gsd-core/workflows/plan-milestone-gaps.md": "852f6d7c0c4299dc", - "gsd-core/workflows/plan-phase.md": "d491791075b1aca9", + "gsd-core/workflows/plan-phase.md": "142484d37dfb94ed", "gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "b36f77ac7344a072", "gsd-core/workflows/plan-phase/steps/prd-express-path.md": "197c0590326371b2", "gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "49f58c3f75be3eb5", @@ -462,7 +462,7 @@ "skills/gsd-ns-review/skills/validate-phase/SKILL.md": "9e1c7909c089ee46", "skills/gsd-ns-workflow/SKILL.md": "5a65f9fb93a71cec", "skills/gsd-ns-workflow/skills/add-tests/SKILL.md": "303c01b7dd9c7614", - "skills/gsd-ns-workflow/skills/ai-integration-phase/SKILL.md": "d30c04aeb1d09bb7", + "skills/gsd-ns-workflow/skills/ai-integration-phase/SKILL.md": "f0333bffe02141b7", "skills/gsd-ns-workflow/skills/autonomous/SKILL.md": "f1c614fed8f4d0a5", "skills/gsd-ns-workflow/skills/discuss-phase/SKILL.md": "997ae1063e8c3703", "skills/gsd-ns-workflow/skills/execute-phase/SKILL.md": "b2627b774725a381", @@ -470,7 +470,7 @@ "skills/gsd-ns-workflow/skills/mvp-phase/SKILL.md": "3455ea7562a447a2", "skills/gsd-ns-workflow/skills/next/SKILL.md": "63659cd48a0276f9", "skills/gsd-ns-workflow/skills/phase/SKILL.md": "b377b03d13db8573", - "skills/gsd-ns-workflow/skills/plan-phase/SKILL.md": "c7cfcb8f3606e69c", + "skills/gsd-ns-workflow/skills/plan-phase/SKILL.md": "4564f415845d6c15", "skills/gsd-ns-workflow/skills/plan-review-convergence/SKILL.md": "12d1696eaaf60043", "skills/gsd-ns-workflow/skills/progress/SKILL.md": "fb24eab4a0e5f6a3", "skills/gsd-ns-workflow/skills/quick/SKILL.md": "48629fef2b9ac5b0", diff --git a/tests/phase.test.cjs b/tests/phase.test.cjs index 6bdf34b2e..cb000a1d1 100644 --- a/tests/phase.test.cjs +++ b/tests/phase.test.cjs @@ -1520,6 +1520,104 @@ describe('phase add command', () => { 'directory should be 1001-after-one-thousand' ); }); + + // #2390 — phase.add title/goal split-or-warn regression coverage. + test('phase add with a short, title-shaped description has no warning key', () => { + fs.writeFileSync( + path.join(tmpDir, '.planning', 'ROADMAP.md'), + `# Roadmap v1.0\n\n### Phase 1: Foundation\n**Goal:** Setup\n\n---\n` + ); + + const result = runGsdTools(['phase', 'add', 'Add auth'], tmpDir); + assert.ok(result.success, `Command failed: ${result.error}`); + + const output = JSON.parse(result.output); + assert.strictEqual(output.name, 'Add auth'); + assert.ok(!('warning' in output), 'short title-shaped description should not produce a warning'); + + const roadmap = fs.readFileSync(path.join(tmpDir, '.planning', 'ROADMAP.md'), 'utf-8'); + assert.ok(roadmap.includes('### Phase 2: Add auth'), 'roadmap should include the new phase header'); + }); + + test('phase add with a goal-shaped (long, multi-sentence) description surfaces a warning but still creates the phase (regression #2390)', () => { + fs.writeFileSync( + path.join(tmpDir, '.planning', 'ROADMAP.md'), + `# Roadmap v1.0\n\n### Phase 1: Foundation\n**Goal:** Setup\n\n---\n` + ); + + const goalShaped = + 'Add a comprehensive authentication and authorization system with OAuth2 support. ' + + 'This will also include session management and rate limiting for the public API.'; + + const result = runGsdTools(['phase', 'add', goalShaped], tmpDir); + assert.ok(result.success, `Command failed: ${result.error}`); + + const output = JSON.parse(result.output); + // Negative proof: before the #2390 fix, phase.add emitted no `warning` key + // for ANY description, however goal-shaped -- the paragraph landed silently + // in the phase title with no signal in the JSON result. This assertion + // fails on the pre-fix tree. + assert.ok( + typeof output.warning === 'string' && output.warning.length > 0, + 'goal-shaped description should surface a warning field' + ); + assert.match(output.warning, /goal-shaped/); + + // The phase must still be created -- the warning surfaces the gap, it + // does not block the write or mangle ROADMAP.md (preserves the two-layer + // slash-command vs. raw-CLI interface: the CLI stays a strict primitive). + assert.strictEqual(output.phase_number, 2); + const roadmap = fs.readFileSync(path.join(tmpDir, '.planning', 'ROADMAP.md'), 'utf-8'); + assert.ok( + roadmap.includes(`### Phase 2: ${goalShaped}`), + 'phase should still be created verbatim despite the warning' + ); + assert.ok( + fs.existsSync(path.join(tmpDir, output.directory)), + 'phase directory should still be created' + ); + }); + + test('phase add title-length boundary: 79/80/81 chars (regression #2390)', () => { + fs.writeFileSync( + path.join(tmpDir, '.planning', 'ROADMAP.md'), + `# Roadmap v1.0\n\n### Phase 1: Foundation\n**Goal:** Setup\n\n---\n` + ); + + const underLimit = 'A'.repeat(79); // limit - 1 + const atLimit = 'A'.repeat(80); // limit + const overLimit = 'A'.repeat(81); // limit + 1 + + const underResult = runGsdTools(['phase', 'add', underLimit], tmpDir); + assert.ok(underResult.success, `Command failed: ${underResult.error}`); + assert.ok( + !('warning' in JSON.parse(underResult.output)), + '79 chars (limit-1) should not warn' + ); + + const atResult = runGsdTools(['phase', 'add', atLimit], tmpDir); + assert.ok(atResult.success, `Command failed: ${atResult.error}`); + assert.ok(!('warning' in JSON.parse(atResult.output)), '80 chars (limit) should not warn'); + + const overResult = runGsdTools(['phase', 'add', overLimit], tmpDir); + assert.ok(overResult.success, `Command failed: ${overResult.error}`); + const overOutput = JSON.parse(overResult.output); + assert.ok( + typeof overOutput.warning === 'string' && overOutput.warning.length > 0, + '81 chars (limit+1) should warn' + ); + }); + + test('phase add rejects an empty description (unaffected by the #2390 warning heuristic)', () => { + fs.writeFileSync( + path.join(tmpDir, '.planning', 'ROADMAP.md'), + `# Roadmap v1.0\n\n### Phase 1: Foundation\n**Goal:** Setup\n\n---\n` + ); + + const result = runGsdTools(['phase', 'add', ''], tmpDir); + assert.ok(!result.success, 'empty description should still fail'); + assert.match(result.error, /description required/); + }); }); // ───────────────────────────────────────────────────────────────────────────── diff --git a/tests/workflow-size-baseline.json b/tests/workflow-size-baseline.json index b3f28db3e..93e0e715c 100644 --- a/tests/workflow-size-baseline.json +++ b/tests/workflow-size-baseline.json @@ -1,9 +1,9 @@ { "add-backlog.md": 7176, - "add-phase.md": 7247, + "add-phase.md": 7578, "add-tests.md": 16961, "add-todo.md": 10734, - "ai-integration-phase.md": 14805, + "ai-integration-phase.md": 15134, "analyze-dependencies.md": 3887, "audit-fix.md": 11723, "audit-milestone.md": 18448, @@ -53,7 +53,7 @@ "onboard.md": 8590, "pause-work.md": 14441, "plan-milestone-gaps.md": 11809, - "plan-phase.md": 93959, + "plan-phase.md": 94387, "plan-review-convergence.md": 23713, "plant-seed.md": 11785, "pr-branch.md": 15963,