From 5cfc8650405aa9b6b895f4a93d460bef65faaa08 Mon Sep 17 00:00:00 2001 From: Jeremy Date: Tue, 7 Apr 2026 15:34:46 -0500 Subject: [PATCH] fix(gsd): revert unknown artifact check to warn-and-proceed MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Blocking on "unknown" from hasImplementationArtifacts broke real-world auto-mode in projects without clean git merge-bases (single-branch, fresh repos, detached HEAD). The auto-loop silently stopped at completing-milestone with no visible error. Reverted to warn-and-proceed for "unknown" — only "absent" (confirmed no implementation files) blocks completion. This matches the original fail-open behavior for inconclusive git checks. --- src/resources/extensions/gsd/auto-dispatch.ts | 6 +----- src/resources/extensions/gsd/auto-recovery.ts | 3 +-- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/src/resources/extensions/gsd/auto-dispatch.ts b/src/resources/extensions/gsd/auto-dispatch.ts index d09fccebb..2e27f77d8 100644 --- a/src/resources/extensions/gsd/auto-dispatch.ts +++ b/src/resources/extensions/gsd/auto-dispatch.ts @@ -776,11 +776,7 @@ export const DISPATCH_RULES: DispatchRule[] = [ }; } if (artifactCheck === "unknown") { - return { - action: "stop", - reason: `Cannot verify implementation artifacts for milestone ${mid}: git check was inconclusive. Resolve git issues and retry.`, - level: "error", - }; + logWarning("dispatch", `Implementation artifact check inconclusive for ${mid} — proceeding (git context unavailable)`); } // Verification class compliance: if operational verification was planned, diff --git a/src/resources/extensions/gsd/auto-recovery.ts b/src/resources/extensions/gsd/auto-recovery.ts index d5cf6f040..eec761bf0 100644 --- a/src/resources/extensions/gsd/auto-recovery.ts +++ b/src/resources/extensions/gsd/auto-recovery.ts @@ -393,8 +393,7 @@ export function verifyExpectedArtifact( // A milestone with only .gsd/ plan files and zero implementation code is // not genuinely complete — the LLM wrote plan files but skipped actual work. if (unitType === "complete-milestone") { - const artifactResult = hasImplementationArtifacts(base); - if (artifactResult === "absent" || artifactResult === "unknown") return false; + if (hasImplementationArtifacts(base) === "absent") return false; } return true;