feat(release): v1.45.0 — Vertical MVP Slice mode (#2826)#3676
Conversation
…LI-TOOLS) The MVP umbrella (#2826) shipped to main via #3206 with zero entries in USER-GUIDE.md, COMMANDS.md, or CLI-TOOLS.md. Users had to read CHANGELOG entries and grep references/ to learn the feature exists. Closes that gap ahead of the v1.45.0 release. USER-GUIDE.md gains an MVP Mode section with when-to-pick guidance, a 5-row diff table vs the standard walkthrough, a worked example, and configuration knob reference. COMMANDS.md gains /gsd-mvp-phase + --mvp flag documentation and the Vertical MVP / Horizontal Layers prompt on /gsd-new-project. CLI-TOOLS.md gains an MVP Commands section documenting phase.mvp-mode, task.is-behavior-adding, and user-story.validate SDK query verbs. Cherry-picked from ee3d930 (#3180), minus the canary.2-specific release-notes file and changeset. Closes #2885 #2875 #2877 #2879 #2882 (release-machinery portion) Refs #2826 Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
Bumps package.json and sdk/package.json from 1.50.0-canary.0 to 1.45.0 (GA release for the MVP umbrella feature #2826). Headline: - Vertical MVP Slice mode end-to-end across plan / execute / verify - /gsd mvp-phase command (#2875) - --mvp flag on /gsd plan-phase (#2885) - MVP+TDD runtime gate in /gsd execute-phase (#2877) - MVP-mode UAT framing in /gsd verify-work (#2879) - Discovery & progress surfaces in new-project / progress / stats / graphify (#2882) The MVP feature code itself was squash-merged via #3206 (under an unrelated PR title); this release surfaces it with a proper CHANGELOG [1.45.0] entry, user-facing docs cherry-picked from #3180, and a RELEASE-v1.45.0.md notes file. Refs #2826 Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
Required by lint:changeset since the PR touches user-facing CHANGELOG.md. The pr: field is a placeholder (0) until the PR number is assigned by GitHub; will be updated in a follow-up amendment. Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
The MVP user-facing docs cherry-picked from #3180 referenced /gsd-add-phase and /gsd-edit-phase, but main consolidated phase CRUD into a single /gsd-phase command with --insert / --remove / --edit flags. The bare /gsd-phase form is the add path. Fixes the docs-parity-live-registry assertion that every slash-command token in docs/*.md must resolve to a live registered command. Three sites updated: - docs/COMMANDS.md:211 — SPIDR splitting offer line - docs/USER-GUIDE.md:300 — mode opt-in/out reference (→ /gsd-phase --edit) - docs/USER-GUIDE.md:367 — SPIDR splitting offer line Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
✅ Files skipped from review due to trivial changes (1)
📝 WalkthroughWalkthroughPublishes v1.45.0 and adds release artifacts and documentation for Vertical MVP Slice mode: changeset and package version bumps, CHANGELOG and release notes, USER-GUIDE MVP section, COMMANDS updates, and new CLI/SDK MVP command reference entries. Changesv1.45.0 Release Documentation
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related PRs
Suggested labels
Suggested reviewers
🚥 Pre-merge checks | ✅ 4✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Updates pr: 0 → pr: 3676 now that GitHub has assigned a number to the release PR. Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
There was a problem hiding this comment.
Actionable comments posted: 4
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@CHANGELOG.md`:
- Line 17: The changelog line uses the spaced command form `/gsd mvp-phase <N>`
which is inconsistent with the canonical slash-command spelling; update the
entry to use `/gsd-mvp-phase <N>` everywhere in that paragraph (including any
references to invoking the command and examples) while leaving other tokens like
`MVP_MODE`, `gsd-planner`, `ROADMAP.md`, `PLAN.md`, and file references
unchanged.
- Line 23: The inline code span used in the CHANGELOG entry for the `/gsd
graphify` output contains a leading space inside the backticks around the label
`(MVP)`, which triggers markdownlint MD038; locate the phrase that describes
"MVP-mode phase nodes with a distinct green fill (`#22c55e`) and a ` (MVP)`
label suffix" and remove the inner leading space inside the inline code span so
the code span is ``(MVP)`` (no leading space) while preserving the green fill
`#22c55e` and the `(MVP)` label text.
In `@docs/RELEASE-v1.45.0.md`:
- Line 19: Replace the spaced slash-command examples with the shipped hyphenated
form so they match the rest of the docs: change occurrences like "/gsd
plan-phase --mvp" and "/gsd mvp-phase" to "/gsd-plan-phase --mvp" and
"/gsd-mvp-phase" respectively (also update the other reported occurrences to use
"/gsd-plan-phase" and "/gsd-mvp-phase"); update the strings in
RELEASE-v1.45.0.md where these command examples appear to ensure consistency and
prevent copy-paste "unknown command" errors.
In `@docs/USER-GUIDE.md`:
- Around line 329-365: Several fenced code blocks (the ones showing the command
"/gsd-new-project", the interactive prompt blocks following it, the
"/gsd-mvp-phase 1" block, and the ROADMAP.md output block) lack language tags
and trigger markdownlint MD040; update each fence to include an appropriate
language identifier (e.g., ```bash for commands like /gsd-new-project and
/gsd-mvp-phase, ```text for prompt/CLI conversational output, and ```json or
```text for ROADMAP.md snippets) so all fenced blocks have explicit language
annotations.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro Plus
Run ID: 10a65c32-81d2-4f8f-8ccf-efc95269304b
⛔ Files ignored due to path filters (2)
package-lock.jsonis excluded by!**/package-lock.jsonsdk/package-lock.jsonis excluded by!**/package-lock.json
📒 Files selected for processing (8)
.changeset/release-mvp-v1-45-0.mdCHANGELOG.mddocs/CLI-TOOLS.mddocs/COMMANDS.mddocs/RELEASE-v1.45.0.mddocs/USER-GUIDE.mdpackage.jsonsdk/package.json
| ``` | ||
| /gsd-new-project | ||
| ``` | ||
|
|
||
| ``` | ||
| > What are you building? | ||
| A webhook signature validator middleware for Express apps. | ||
|
|
||
| [...] | ||
|
|
||
| > Choose project mode: | ||
| > Vertical MVP — each phase delivers an end-to-end user capability (recommended for new products) | ||
| Horizontal Layers — build complete technical layers, assemble at the end | ||
|
|
||
| [Roadmap generated with `**Mode:** mvp` on every initial phase.] | ||
| ``` | ||
|
|
||
| #### 2. Frame the phase as a user story | ||
|
|
||
| ``` | ||
| /gsd-mvp-phase 1 | ||
| ``` | ||
|
|
||
| ``` | ||
| > As a [user role]? | ||
| Backend developer | ||
|
|
||
| > I want to [capability]? | ||
| validate incoming webhook signatures | ||
|
|
||
| > So that [outcome]? | ||
| malicious requests are rejected before reaching my handlers | ||
|
|
||
| [ROADMAP.md updated: | ||
| **Mode:** mvp | ||
| **Goal:** As a backend developer, I want to validate incoming webhook signatures, so that malicious requests are rejected before reaching my handlers.] | ||
| ``` |
There was a problem hiding this comment.
Add fence language tags to the new code blocks (MD040).
Several new fenced blocks in this section are missing a language identifier, and markdownlint flags them (MD040). Please annotate them (e.g., text, bash, json) to keep docs lint green.
Also applies to: 375-379, 396-410
🧰 Tools
🪛 markdownlint-cli2 (0.22.1)
[warning] 329-329: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
[warning] 333-333: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
[warning] 348-348: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
[warning] 352-352: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@docs/USER-GUIDE.md` around lines 329 - 365, Several fenced code blocks (the
ones showing the command "/gsd-new-project", the interactive prompt blocks
following it, the "/gsd-mvp-phase 1" block, and the ROADMAP.md output block)
lack language tags and trigger markdownlint MD040; update each fence to include
an appropriate language identifier (e.g., ```bash for commands like
/gsd-new-project and /gsd-mvp-phase, ```text for prompt/CLI conversational
output, and ```json or ```text for ROADMAP.md snippets) so all fenced blocks
have explicit language annotations.
…ace)
Codex stop-time review flagged 5 instances in CHANGELOG.md and 13 in
docs/RELEASE-v1.45.0.md of the invalid `/gsd <name>` (space) form. Repo
canonical slash-command syntax is `/gsd-<name>` (hyphen) per every
command file in commands/gsd/.
Token-by-token replacement (replace_all):
- /gsd plan-phase → /gsd-plan-phase
- /gsd mvp-phase → /gsd-mvp-phase
- /gsd execute-phase → /gsd-execute-phase
- /gsd verify-work → /gsd-verify-work
- /gsd new-project → /gsd-new-project
- /gsd progress → /gsd-progress
- /gsd stats → /gsd-stats
- /gsd graphify → /gsd-graphify
- /gsd add-phase → /gsd-phase (no add-phase command exists; phase
is the unified CRUD verb)
Verified zero remaining /gsd-space tokens in any PR-touched file.
docs-parity-live-registry test still passes. Full docker test suite
re-run: 11741 passed / 0 failed.
Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@CHANGELOG.md`:
- Line 7: The footer `[Unreleased]` compare URL is inconsistent with the
heading: replace the footer occurrence of "v1.42.1...HEAD" with "v1.45.0...HEAD"
so it matches the heading link `##
[Unreleased](https://github.com/gsd-build/get-shit-done/compare/v1.45.0...HEAD)`
and ensure the only `[Unreleased]` compare target in CHANGELOG.md is
"v1.45.0...HEAD".
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro Plus
Run ID: c03c8671-6e68-4833-82da-61bbf8c08cbd
📒 Files selected for processing (2)
CHANGELOG.mddocs/RELEASE-v1.45.0.md
✅ Files skipped from review due to trivial changes (1)
- docs/RELEASE-v1.45.0.md
BLOCKERS (Codex):
- docs/RELEASE-v1.45.0.md:34 — corrected delegation form. Release notes
said `/gsd-plan-phase --mvp <N>` but the actual mvp-phase workflow at
get-shit-done/workflows/mvp-phase.md:198 delegates `/gsd-plan-phase
${PHASE}` (no flag). MVP_MODE is auto-detected from the `**Mode:** mvp`
line that mvp-phase just wrote to ROADMAP.md.
- docs/README.md — added v1.45.0 release-notes row to the docs index
and updated the "What's new" Quick Link to point at v1.45.0 (latest)
with v1.42.3 as prior hotfix. Established release shape — see
beb7e05 (v1.42.3) for precedent.
WARN (Codex):
- CHANGELOG.md:13 + docs/RELEASE-v1.45.0.md:15 — "four sub-phases" →
"five sub-phases". The five PRs were enumerated correctly; only the
count claim was wrong.
- get-shit-done/bin/lib/installer-migrations/{000,001,002}.cjs —
`introducedIn: '1.50.0'` → `'1.45.0'`. The migrations were authored
when 1.50.0-canary was the planned next stable; the 1.45.0 backport
shifts the actual ship version, so the introducedIn invariant must
match. Regression: tests/installer-migration-authoring.test.cjs +
tests/installer-migrations.test.cjs both green (41 pass, 0 fail) —
the test fixtures use their own inline introducedIn values, not the
on-disk migration constants.
MINOR (Codex):
- docs/RELEASE-v1.45.0.md:54 — `/gsd-stats` output was described as
`MVP phases: N` but the actual workflow at
get-shit-done/workflows/stats.md:67 emits `Phases: ${TOTAL_COUNT}
total | ${MVP_COUNT} MVP | $((TOTAL_COUNT - MVP_COUNT)) standard`.
Aligned release notes to the actual output contract.
Claude code-review (post-/gsd-space cleanup):
- docs/COMMANDS.md:47 — `(v1.50.0+)` → `(v1.45.0+)` (stale from canary
cherry-pick).
- docs/CLI-TOOLS.md:183 — same `(v1.50.0+)` → `(v1.45.0+)`.
- CHANGELOG.md:2771 — `[Unreleased]` footer link still pointed to
`v1.42.1...HEAD`; updated to `v1.45.0...HEAD` and added the
`[1.45.0]: ...v1.42.3...v1.45.0` footer entry.
- CHANGELOG.md:23 — MD038 leading-space inside `` ` (MVP)` `` code span;
removed the space.
ADR:
- docs/adr/2826-vertical-mvp-slice-planning-mode.md — accepted ADR
documenting the single-mode-switched-agent decision (vs parallel
gsd-vertical-planner / executor / verifier), the resolution chain
(CLI → ROADMAP → config → false), MVP+TDD-gate-blocks-by-default,
Walking-Skeleton-lives-in-planner-not-new-project, and the four
rejected alternatives from the PRD Q&A. Added to docs/adr/README.md
index. File named per the `<issue#>-<slug>.md` convention.
Full docker test suite: 11742 passed / 0 failed.
Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
Code reviewNo issues found at HEAD (911682f4). Pre-merge multi-pass audit complete: Claude 5-agent review (CLAUDE.md compliance, shallow bug scan, git history, prior PR comments, code-comment compliance) — surfaced 4 high-confidence issues, all fixed in 911682f4:
Codex adversarial review (second-opinion pass) — surfaced 5 issues, 2 BLOCKERS, all fixed in the same commit:
ADR: docs/adr/2826-vertical-mvp-slice-planning-mode.md records the single-mode-switched-agent decision (vs parallel Full docker test suite: 11742 passed / 0 failed. 🤖 Generated with Claude Code - If this code review was useful, please react with 👍. Otherwise, react with 👎. |
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@CHANGELOG.md`:
- Line 9: The compare baseline for the 1.45.0 release is inconsistent: update
both occurrences of the header link string "##
[1.45.0](https://github.com/gsd-build/get-shit-done/compare/v1.42.3...v1.45.0)"
(the top release header and the duplicate near the end) to use the correct
previous tag so both use the same baseline (e.g., replace v1.42.3 with v1.42.1
if the intended previous release is 1.42.1), ensuring the URL follows the
pattern .../compare/<correct-previous-tag>...v1.45.0.
In `@docs/COMMANDS.md`:
- Line 210: The user-story prompt wording and the documented validator are
inconsistent: change either the prompt example in the AskUserQuestion sequence
("As a [role] / I want to [capability] / so that [outcome]") or the canonical
regex in the gsd-sdk query user-story.validate example so both use the same
casing (preferably lowercase "so that"); update the displayed prompt text and
the regex example (/^As a .+, I want to .+, so that .+\.$/) so they match
exactly to avoid confusion and possible validation mismatches.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro Plus
Run ID: d499e10e-8301-4ecf-87b9-2bf62a718dc2
📒 Files selected for processing (10)
CHANGELOG.mddocs/CLI-TOOLS.mddocs/COMMANDS.mddocs/README.mddocs/RELEASE-v1.45.0.mddocs/adr/2826-vertical-mvp-slice-planning-mode.mddocs/adr/README.mdget-shit-done/bin/lib/installer-migrations/000-first-time-baseline.cjsget-shit-done/bin/lib/installer-migrations/001-legacy-orphan-files.cjsget-shit-done/bin/lib/installer-migrations/002-codex-legacy-hooks-json.cjs
✅ Files skipped from review due to trivial changes (5)
- docs/adr/README.md
- docs/README.md
- docs/adr/2826-vertical-mvp-slice-planning-mode.md
- docs/CLI-TOOLS.md
- docs/RELEASE-v1.45.0.md
| ## [Unreleased](https://github.com/gsd-build/get-shit-done/compare/v1.42.1...HEAD) | ||
| ## [Unreleased](https://github.com/gsd-build/get-shit-done/compare/v1.45.0...HEAD) | ||
|
|
||
| ## [1.45.0](https://github.com/gsd-build/get-shit-done/compare/v1.42.3...v1.45.0) - 2026-05-17 |
There was a problem hiding this comment.
Fix the v1.45.0 compare baseline link.
Line 9 and Line 2772 compare v1.42.3...v1.45.0, but the previous release listed in this changelog is 1.42.1 (Line 29). Please confirm the intended baseline and align both links so the release diff scope is accurate.
Also applies to: 2772-2772
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@CHANGELOG.md` at line 9, The compare baseline for the 1.45.0 release is
inconsistent: update both occurrences of the header link string "##
[1.45.0](https://github.com/gsd-build/get-shit-done/compare/v1.42.3...v1.45.0)"
(the top release header and the duplicate near the end) to use the correct
previous tag so both use the same baseline (e.g., replace v1.42.3 with v1.42.1
if the intended previous release is 1.42.1), ensuring the URL follows the
pattern .../compare/<correct-previous-tag>...v1.45.0.
| | `--force` | Override the status guard. Required when the target phase is `in_progress` or `completed` — converting an active phase to MVP mode invalidates existing plans/summaries. | | ||
|
|
||
| **What it does:** | ||
| 1. **User-story prompts** — three sequential `AskUserQuestion` calls capture an `As a [role] / I want to [capability] / So that [outcome]` story. Validated by `gsd-sdk query user-story.validate` (canonical regex `/^As a .+, I want to .+, so that .+\.$/`); empty fields are re-prompted. |
There was a problem hiding this comment.
Align user-story prompt wording with the documented validator pattern.
This line shows So that in the prompt format but the regex example requires lowercase so that, which can cause avoidable confusion (or false rejections if interpreted literally). Make the prompt and regex docs use the same casing rule.
Suggested doc tweak
-1. **User-story prompts** — three sequential `AskUserQuestion` calls capture an `As a [role] / I want to [capability] / So that [outcome]` story. Validated by `gsd-sdk query user-story.validate` (canonical regex `/^As a .+, I want to .+, so that .+\.$/`); empty fields are re-prompted.
+1. **User-story prompts** — three sequential `AskUserQuestion` calls capture an `As a [role] / I want to [capability] / so that [outcome]` story. Validated by `gsd-sdk query user-story.validate` (canonical regex `/^As a .+, I want to .+, so that .+\.$/`); empty fields are re-prompted.📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| 1. **User-story prompts** — three sequential `AskUserQuestion` calls capture an `As a [role] / I want to [capability] / So that [outcome]` story. Validated by `gsd-sdk query user-story.validate` (canonical regex `/^As a .+, I want to .+, so that .+\.$/`); empty fields are re-prompted. | |
| 1. **User-story prompts** — three sequential `AskUserQuestion` calls capture an `As a [role] / I want to [capability] / so that [outcome]` story. Validated by `gsd-sdk query user-story.validate` (canonical regex `/^As a .+, I want to .+, so that .+\.$/`); empty fields are re-prompted. |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@docs/COMMANDS.md` at line 210, The user-story prompt wording and the
documented validator are inconsistent: change either the prompt example in the
AskUserQuestion sequence ("As a [role] / I want to [capability] / so that
[outcome]") or the canonical regex in the gsd-sdk query user-story.validate
example so both use the same casing (preferably lowercase "so that"); update the
displayed prompt text and the regex example (/^As a .+, I want to .+, so that
.+\.$/) so they match exactly to avoid confusion and possible validation
mismatches.
Adds `dev-tests/` to .gitignore so devs can keep heavy on-demand E2E validation suites (e.g. the v1.45.0 MVP-path validation at dev-tests/mvp-e2e/ — 1285 LOC, 53 tests, ~3s local) outside the CI test surface. These suites live in `dev-tests/` rather than `tests/` because: - They're invoked on demand by developers validating cross-cutting feature work, not on every push. - Some exercise long-running flows that would balloon CI wall time if run on every PR. - Some validate cross-agent integration paths that can't be exercised by the headless tools layer alone — they need to be re-run when the workflow .md files or agent prompts change, not when arbitrary code changes. The convention is set by PR #3676 — see that PR's discussion for context on the MVP path validation suite and its honesty refactor (synthetic surface assertions removed per Codex review). Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
MVP E2E one-off validation runEnd-to-end validation against three example MVP user stories — done as a dev-only validation, not added to CI. Files live under Run outcome
(Docker reports 75 because each suite's "completed" marker is counted separately by the gsd-test event parser; node:test reports 53 unique Three scenarios
Honesty refactor — Codex stop-hook findingInitial helper synthesized What I found while fixing it: neither Refactor: helper now returns raw The helper's Files (local-only)Total: 1299 LOC, 53 tests, ~3 s local / ~1 min docker. Pipeline1 Opus architect (plan in 🤖 Generated with Claude Code |
Feature PR
Linked Issue
Closes #2885
Closes #2875
Closes #2877
Closes #2879
Closes #2882
Refs #2826
Feature summary
Release-cut PR for v1.45.0 — Vertical MVP Slice mode (umbrella PRD #2826). The five implementation sub-phases (#2885, #2875, #2877, #2879, #2882) already landed on
mainvia #3206 — squash-merged under an unrelated PR title ("fix(plan-phase): remove agent: directive"). This PR makes the feature shippable by:[1.45.0]section (main's[Unreleased]was empty despite the code being merged).1.50.0-canary.0to1.45.0across the four version files.USER-GUIDE.md/COMMANDS.md/CLI-TOOLS.mdMVP entries from docs(canary.2): user-facing MVP feature docs + canary.2 release notes #3180. Before this PR, the headline feature had zero mentions in the user-facing docs.docs/RELEASE-v1.45.0.mdso the release has notes (currently only canary.1 has them).No feature-code changes — the implementation is already on
main.What changed
New files
docs/RELEASE-v1.45.0.md.changeset/release-mvp-v1-45-0.mdlint:changesetsince CHANGELOG.md is touched)Modified files
CHANGELOG.md[1.45.0]section with the five MVP sub-phase entries plus the user-facing docs entry;[Unreleased]compare URL re-pointed tov1.45.0...HEADpackage.jsonversion1.50.0-canary.0 → 1.45.0package-lock.jsonsdk/package.jsonversion1.50.0-canary.0 → 1.45.0sdk/package-lock.jsondocs/USER-GUIDE.mddocs/COMMANDS.md/gsd-mvp-phaseentry,--mvpflag on/gsd-plan-phase, Vertical MVP / Horizontal Layers prompt on/gsd-new-projectdocs/CLI-TOOLS.mdImplementation notes
mainvia fix(plan-phase): remove agent: directive that caused OpenCode subagent dispatch (#3156) #3206 (the squash hides 47 sub-commits)..changeset/canary-2-mvp-feature-docs.mdanddocs/RELEASE-v1.50.0-canary.2.md(replaced bydocs/RELEASE-v1.45.0.md).pr:field in.changeset/release-mvp-v1-45-0.mdis0as a placeholder until GitHub assigns this PR a number — will be amended in a follow-up commit before merge.Spec compliance
The umbrella PRD (#2826) lists acceptance criteria for the feature itself. Those are met by the code that's already on
main; this PR only verifies the release contract:[1.45.0]exists inCHANGELOG.mdwith all five sub-phases attributedpackage.jsonversionfield reads1.45.0sdk/package.jsonversionfield reads1.45.0docs/RELEASE-v1.45.0.mdexists with install / upgrade / what's-new sectionsUSER-GUIDE.md,COMMANDS.md,CLI-TOOLS.md) document the headline feature.changeset/*.mdfragment present (lint:changeset gate)Testing
Test coverage
No new product tests — all behavior tests for the MVP feature are already on
main(cherry-pick verified:tests/plan-phase-mvp-flag.test.cjs,tests/mvp-phase-command.test.cjs,tests/execute-mvp-tdd-gate.test.cjs,tests/verifier-mvp-section.test.cjs,tests/graphify-mvp-viz.test.cjs, etc., all present and passing on main).This PR was validated end-to-end with the full
gsd-test-summarydocker run before push.Platforms tested
Runtimes tested
Scope confirmation
Documentation
docs/to reflect this featuredocs/content added in this PR is written in EnglishChecklist
Closes #NNN— fiveCloseslines, plusRefs #2826approved-featurelabel — verified on all five sub-issuesgsd-test-summary).changeset/fragment added with a user-facing descriptionBreaking changes
None. The MVP feature is purely additive — the
--mvpflag,**Mode:** mvproadmap field, and/gsd mvp-phasecommand are opt-in. Existing projects and workflows are unaffected unless they explicitly enable MVP mode.The version bump from
1.50.0-canary.0→1.45.0is a deliberate version-line correction: the canary suffix onmainwas placeholder pending the actual MVP release. Downstream consumers should observe a clean 1.42.3 → 1.45.0 minor-version jump.Discovery context
The premise that led to this PR ("MVP PRs stuck on
dev, need rebasing ontomain") turned out to be incorrect: PR #3206 already squash-merged the entire MVP feature intomainon May 6 under the title "fix(plan-phase): remove agent: directive that caused OpenCode subagent dispatch." The commit contains 62 files across 47 squashed sub-commits, of which most are MVP work; the title only describes one of them. As a result:mainand exercised by tests onmain.CHANGELOG.md([Unreleased]was empty) and in user-facing docs (USER-GUIDE.md/COMMANDS.md/CLI-TOOLS.mdhad zero MVP mentions).devbranch's MVP follow-up commits (PRs docs(mvp): canary-prep concept cleanup — CONTEXT.md, mvp-concepts index, --prd interaction #3176, feat(mvp): centralize MVP-mode resolution + fix SDK roadmap mode-extraction parity #3178, docs(canary.2): user-facing MVP feature docs + canary.2 release notes #3180, fix(canary.2): unblock release gates — help.md /gsd-mvp-phase + XL workflow budget #3183) are mostly in-place on main already; the remaining delta is the user-facing docs from docs(canary.2): user-facing MVP feature docs + canary.2 release notes #3180, which this PR ports.This PR closes the loop by surfacing the feature for users and tagging the release line at v1.45.0.
🤖 Generated with Claude Code
Summary by CodeRabbit
New Features
Documentation
Chores