Skip to content

v0.2.1 — multi-spec & dry-run fixes

Choose a tag to compare

@ashbrener ashbrener released this 11 Jun 11:16
· 12 commits to main since this release

PATCH bug-fix release over v0.2.0. No new features — both fixes landed on main after the v0.2.0 tag, so the cataloged v0.2.0 still carried the multi-spec collision bug. The GitHub source ZIP at this tag is the install artifact.

Fixed

  • #10 — spec-scoped phase Subtask identity (fixes cross-spec collision on multi-spec repos). The feature-003 unified level loop matched a phase Subtask by its task-phase:N identity label alone; task-phase:N is a phase number (unique only within a spec), so across a multi-spec repo every spec's "Phase N" matched the same Subtask — specs 2..N updated spec 1's Subtask instead of creating their own. The phase find is now parent-scoped (parent = <story> AND labels = task-phase:N), restoring 001 behaviour. No label-scheme change; single-spec boards are unaffected; a plain reconcile.sh --all self-heals a mis-scoped board.
    • Empty taskList → HTTP 400 INVALID_INPUT guard: a ## Phase with zero task lines no longer renders a childless ADF taskList (which Jira rejects) — a paragraph placeholder is emitted, and every taskItem carries non-empty content.
    • Field-level error detail: a non-2xx write now surfaces the Jira response body (errorMessages / errors) in the failure line.
  • #9 — dry-run of an unmirrored spec no longer spuriously exits 3: a --dry-run create synthesizes the DRY-0 placeholder key; the post-create reconciles read against it, which 404s on a live Jira → fail-closed rc 3 → the whole dry-run exited 3 even though the board was fully readable. The existence-check read is now skipped for the DRY-0 placeholder (scoped to DRY-0 only — a real key still fails closed).

Install: specify extension add jira-sync --from https://github.com/ashbrener/spec-kit-jira-sync/archive/refs/tags/v0.2.1.zip