fix(gsd): use isClosedStatus() in dispatch guard instead of raw complete check

Replaces `r.status === "complete"` with `isClosedStatus(r.status)` in
dispatch-guard.ts so slices completed via the reconciliation replay path
(which writes "done") or skipped slices are correctly recognized as
closed. This was causing auto-mode to block on dependencies that were
actually complete.

Fixes #3601

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Tibsfox 2026-04-06 17:50:02 -07:00
parent b4c6229360
commit e1801f967f

View file

@ -5,6 +5,7 @@ import { findMilestoneIds } from "./guided-flow.js";
import { parseUnitId } from "./unit-id.js";
import { isDbAvailable, getMilestoneSlices } from "./gsd-db.js";
import { parseRoadmap } from "./parsers-legacy.js";
import { isClosedStatus } from "./status-guards.js";
import { readFileSync } from "node:fs";
const SLICE_DISPATCH_TYPES = new Set([
@ -57,7 +58,7 @@ export function getPriorSliceCompletionBlocker(
if (rows.length > 0) {
slices = rows.map((r) => ({
id: r.id,
done: r.status === "complete",
done: isClosedStatus(r.status),
depends: r.depends ?? [],
}));
}