diff --git a/src/resources/extensions/gsd/auto.ts b/src/resources/extensions/gsd/auto.ts index df94ca7be..78cd61ace 100644 --- a/src/resources/extensions/gsd/auto.ts +++ b/src/resources/extensions/gsd/auto.ts @@ -2891,7 +2891,10 @@ export function resolveExpectedArtifactPath(unitType: string, unitId: string, ba */ function verifyExpectedArtifact(unitType: string, unitId: string, base: string): boolean { const absPath = resolveExpectedArtifactPath(unitType, unitId, base); - if (!absPath) return true; + // Unit types with no verifiable artifact always pass (e.g. replan-slice). + // For all other types, null means the parent directory is missing on disk + // — treat as stale completion state so the key gets evicted (#313). + if (!absPath) return unitType === "replan-slice"; if (!existsSync(absPath)) return false; // execute-task must also have its checkbox marked [x] in the slice plan