Skip to content

Releases: Wave-Engineering/mcp-server-sdlc

v2.0.1

14 May 03:57
d5a705b

Choose a tag to compare

Fixes

  • fix(routing): getAdapter uses repo slug depth to infer platform — 3+ segment slugs route to GitLab regardless of server cwd (#426)
  • fix(gitlab-api): treat empty stdout from glab list endpoints as empty collection, not error — fixes intermittent ibm() failure during precheck (#428)
  • fix(pr_comment): add target: "issue" | "mr" param to disambiguate GitLab issue vs MR commenting (#430)

v2.0.0

27 Apr 23:11
1639948

Choose a tag to compare

What's Changed

  • chore(phase-3): close retrofit — MV-05 verified, MV-06 partial, VRTM populated (#325) by @bakeb7j0 in #369
  • feat(wave_init)!: accept kahuna: { plan_id, slug }; remove legacy epic_id by @bakeb7j0 in #370
  • feat(wave_finalize)!: accept plan_id; title pattern plan(#N) by @bakeb7j0 in #371
  • docs(wave-finalize): correct stale epic_id comment by @bakeb7j0 in #372
  • chore(changelog): aggregate P2W2 entries by @bakeb7j0 in #373
  • feat(wave-reconcile): Prime(post-wave) reconciliation handler + Category B drift-halt by @bakeb7j0 in #374
  • feat(devspec-finalize): require depends_on field on every Story by @bakeb7j0 in #375
  • chore(changelog): aggregate P2W3 entries by @bakeb7j0 in #376

Full Changelog: v1.8.1...v2.0.0

v1.8.1 — Platform Adapter Retrofit (Phase 2 + Phase 3)

27 Apr 02:37
5b2be29

Choose a tag to compare

Platform Adapter Retrofit — Phase 2 + Phase 3 complete

Internal refactor. All 25 platform-aware handlers are now migrated to the PlatformAdapter pair (GitHubAdapter, GitLabAdapter). Gate-greps enforce the adapter boundary across the full handler tree; lib/glab.ts has been removed.

Version note: v1.8.0 shipped the Phase-1-close milestone earlier today (2026-04-26 AM). v1.8.1 completes the retrofit (Phase 2 + Phase 3) as a single coherent follow-on release. The bump is non-destructive to the v1.8.0 pinning already in the wild.

What users see

No behavioral changes. Every MCP tool call emits the same I/O contract as v1.8.0. lib/glab.ts is no longer exported (internal-only change).

What changed internally

  • MIGRATED_METHODS: 10/25 → 26/26
  • scripts/ci/migration-allowlist.txt: 31 entries → 0 (empty — gate-greps now enforce against ALL handlers)
  • lib/glab.ts: deleted (all helpers migrated to adapters)
  • Test suite: 1466 → final count (green on every migration PR)
  • Bugs closed en route: #280, #281, #282, #283

Links

Install / upgrade

SDLC_VERSION=v1.8.1 ./install-remote.sh

Binaries attached below (sdlc-server-linux-x64, sdlc-server-darwin-arm64, sdlc-server-darwin-x64) per DM-07.

v1.8.0

26 Apr 08:55
127d3a3

Choose a tag to compare

What's Changed

  • chore(handlers): sweep Bun.spawnSync from remaining 4 handlers by @bakeb7j0 in #264
  • feat(adapters): scaffold lib/adapters/ + extract lib/shared/ + gate-greps by @bakeb7j0 in #265
  • feat(adapters): migrate pr_create to PlatformAdapter pair by @bakeb7j0 in #266
  • feat(adapter): migrate pr_diff to platform adapter pattern (#241) by @bakeb7j0 in #267
  • feat(adapter): migrate pr_files to platform adapter pattern (#242) by @bakeb7j0 in #268
  • feat(adapter): migrate pr_list to platform adapter pattern (#243) by @bakeb7j0 in #269
  • feat(adapter): migrate pr_status to platform adapter pattern (#244) by @bakeb7j0 in #270
  • feat(adapter): migrate pr_comment to platform adapter pattern (#245) by @bakeb7j0 in #271
  • feat(adapter): migrate pr_wait_ci snapshot to platform adapter pattern (#246) by @bakeb7j0 in #274
  • bug(commutativity_verify): lock single-log-emit contract + stop test log pollution by @bakeb7j0 in #272
  • fix(ci_wait_run): add expected_sha to anchor wait to a specific commit by @bakeb7j0 in #273

Full Changelog: v1.7.1...v1.8.0

v1.7.1

26 Apr 03:24
e7b2fb1

Choose a tag to compare

What's Changed

  • chore: track CLAUDE.md and gitignore env-local artifacts by @bakeb7j0 in #232
  • docs(devspec): formalize platform adapter retrofit Dev Spec by @bakeb7j0 in #234
  • docs(devspec): enumerate canary story 1.3-1.11 details for /upshift parser by @bakeb7j0 in #236
  • chore(pr_create): normalize Bun.spawnSync to execSync by @bakeb7j0 in #254
  • fix(pr_merge): honest merged-state reporting + working merge-queue detection by @bakeb7j0 in #263

Full Changelog: v1.7.0...v1.7.1

v1.7.0

25 Apr 19:54
215d192

Choose a tag to compare

Highlights

  • 🆕 New pr_merge_wait tool — blocks until the commit lands on main (or timeout). Same input as pr_merge plus timeout_sec (default 600). Detect-and-skip if PR already merged.
  • 🔄 pr_merge now returns the AGGREGATE state{enrolled, merged, merge_method, queue:{enabled,position,enforced}, pr_state, warnings}. Eager but honest: queue-enrolled PRs report merged:false, pr_state:"OPEN" instead of the old optimistic merged:true lie. Caller decides what "merged" means.
  • 🤝 skip_train graceful degrade (folds #224) — on a merge-queue-enforced repo, the flag is silently dropped with a warnings[] entry instead of hard-erroring. Same behavior when use_merge_queue:true + skip_train:true are combined.
  • 🐛 wave_previous_merged filters accepted deferrals — accepted-deferral issues are part of the wave's completion contract, no longer counted as open. Pending deferrals still count as open. New deferred_issues[] response field surfaces what was filtered.

⚠️ Behaviorally breaking

pr_merge's merged field semantics changed. Pre-v1.7.0 callers expected merged:true after queue enrollment (eager-but-misleading). The new shape returns merged:false until the commit is on main. Migration: switch to pr_merge_wait if you need "block until on main" semantics. The tool descriptions in both handlers explain when to use which.


What's Changed

  • fix(wave_previous_merged): filter accepted-deferred issues from open_issues by @bakeb7j0 in #228
  • feat(pr_merge): aggregate response + new pr_merge_wait tool by @bakeb7j0 in #229

Full Changelog: v1.6.0...v1.7.0

v1.6.0

25 Apr 17:14
dcafaa8

Choose a tag to compare

Highlights

  • 🆕 3 new handlers: wave_finalize (kahuna→main MR assembly), label_list, label_create (idempotent, cross-platform)
  • 🚀 KAHUNA Phase 1 plumbing: wave-state schema gains kahuna_branch/kahuna_branches/gate-action labels; wave_init optional kahuna-branch creation; commutativity_verify single-target safety-gate mode + timeout_sec
  • 🤝 Cross-repo support across pr_*, ci_*, wave_*, and epic_sub_issues — handlers accept explicit repo and resolve bare #N refs against the originating repo
  • 🔍 commutativity_verify install + degradation: install-remote.sh now bundles [email protected] (with SDLC_PROBE_REF override and --skip-probe flag); handler returns the new PROBE_UNAVAILABLE verdict when the binary is missing instead of opaque {ok:false}
  • 📝 pr_create auto-resolves default branch when base is omitted; spec_validate_structure accepts **Dependencies:** bold-label fallback for parity with spec_dependencies
  • 🐛 pr_wait_ci reliability: works on gh < 2.50 (Ubuntu LTS) by switching to gh pr view --json statusCheckRollup; decide no longer deadlocks when every check is SKIPPED

Backward-compatible: commutativity_verify keeps group_verdict/pairs aliases for /nextwave and other pre-§5.1.2 consumers.


What's Changed

  • chore(ci): replace setup-bun with npm install by @bakeb7j0 in #180
  • fix(parsers): align spec handler grammar with ecosystem templates by @bakeb7j0 in #182
  • fix(wave_previous_merged): verify PR-merged closure via GraphQL by @bakeb7j0 in #184
  • fix(wave_compute): story-self fallback for single-story /prepwaves input by @bakeb7j0 in #191
  • fix(wave_init): collision guard + rich success payload in extend mode by @bakeb7j0 in #192
  • fix(ci_wait_run): merge-queue-only CI fallback via event field by @bakeb7j0 in #193
  • fix(wave_next_pending): populate topology via computeWaves fallback by @bakeb7j0 in #194
  • fix(cross-repo): epic_sub_issues resolves bare #N refs against epic's repo by @bakeb7j0 in #200
  • fix(cross-repo): pr_* tools accept explicit repo param by @bakeb7j0 in #201
  • fix(cross-repo): ci_* tools accept explicit repo param by @bakeb7j0 in #202
  • fix(cross-repo): wave state handlers thread new repo + issue_ref inputs to CLI by @bakeb7j0 in #203
  • feat(wave-state): kahuna_branch field + kahuna_branches history + gate actions by @bakeb7j0 in #210
  • feat(commutativity_verify): single-target mode + timeout_sec input by @bakeb7j0 in #211
  • feat(wave_finalize): new handler for kahuna→main MR assembly by @bakeb7j0 in #212
  • feat(wave_init): optional kahuna branch creation and recording by @bakeb7j0 in #213
  • fix(wave_compute): accept same section-name aliases as epic_sub_issues by @bakeb7j0 in #214
  • feat(spec_validate_structure): accept Dependencies: label fallback for parity with spec_dependencies by @bakeb7j0 in #215
  • feat(pr_create): auto-resolve default branch when base is omitted by @bakeb7j0 in #216
  • feat(labels): add label_list and label_create tools — idempotent, cross-platform by @bakeb7j0 in #217
  • feat(commutativity_verify): install probe + PROBE_UNAVAILABLE verdict by @bakeb7j0 in #219
  • fix(pr_wait_ci): use gh pr view --json statusCheckRollup (gh < 2.50 compat) by @bakeb7j0 in #222
  • fix(pr_wait_ci): all-skipped checks no longer deadlock decide() by @bakeb7j0 in #226

Full Changelog: v1.5.0...v1.6.0

v1.5.0 — Commutativity-aware flight partitioning

13 Apr 08:59
05223e4

Choose a tag to compare

Features

  • commutativity_verify — merge-time changeset commutativity analysis via commutativity-probe (#165)
  • commutativity_predict — planning-time manifest-based commutativity prediction (#179)
  • pr_merge skip_train — bypass merge queue when commutativity is proven safe (#165)
  • flight_partition manifest discount — discount DEPENDENCY_MANIFEST overlaps (Cargo.toml, package.json, go.mod, etc.) to reduce over-serialization of parallel flights (#176)
  • wave_reconcile_mrs — backfill mr_urls when a wavemachine worker resumes after a crash (#178)
  • MCP logging standard — structured JSON logging across all handlers (#168)

Fixes

  • pr_wait_ci heartbeat — MCP-side state updates during CI polling; wave_show() no longer reports stale timestamps during long CI waits (#177)
  • pr_create idempotent — returns existing PR/MR on duplicate instead of erroring (#162)
  • Platform detection — consolidated detection logic, fixed misrouting and inverted logic (#161)

Stats

  • 69 handlers registered
  • 1056 tests passing
  • 2520 expect() calls

Epic

Closes #175 — Commutativity-Aware Partitioning + Wave State Reliability

v1.4.0

09 Apr 04:58
1f7c6c8

Choose a tag to compare

v1.4.0 — GitLab adapter migration + nested group path fix

Features:

  • lib/glab.ts adapter with typed API wrappers for all GitLab operations (#149)
  • Migrated wave handlers to lib/glab.ts (#150)
  • Migrated all 18 non-wave handlers to lib/glab adapter (#154)
  • Topology overloading with reason field (#153)

Fixes:

  • Nested GitLab group paths (e.g., org/sub/group/repo) now parse correctly (#156)

Chores:

  • Per-tool name assertions in smoke.sh (#151)
  • Audit fs mock surfaces (#152)

v1.3.0

08 Apr 17:08
f12fc0d

Choose a tag to compare

What's Changed

Full Changelog: v1.2.0...v1.3.0