fix(FN-2091): improve reset-cleanup diagnostics in merger retries

- Add context-rich warning messages for git reset --merge failures in merge-cleanup, build-retry, and merge-retry paths
- Log reset cleanup failures during build-verification rollback in executeMergeAttempt
- Add targeted merger tests covering reset cleanup failures across retry and verification error scenarios
- Update retry-logic assertions to validate the new diagnostic message formats
This commit is contained in:
Fusion
2026-04-18 21:50:31 -07:00
committed by gsxdsm
parent 891c95bf89
commit 76d318ca5e
2 changed files with 242 additions and 8 deletions

View File

@@ -1548,7 +1548,7 @@ export async function aiMergeTask(
await audit.git({ type: "reset:hard", target: branch, metadata: { purpose: "merge-cleanup", attempt: attemptNum } });
} catch (err: unknown) {
const msg = err instanceof Error ? err.message : String(err);
mergerLog.warn(`${taskId}: git reset --merge cleanup failed during attempt ${attemptNum}: ${msg}`);
mergerLog.warn(`${taskId}: git reset --merge cleanup failed (merge-cleanup, attempt ${attemptNum}): ${msg}`);
}
}
@@ -1668,7 +1668,7 @@ export async function aiMergeTask(
await audit.git({ type: "reset:hard", target: branch, metadata: { purpose: "build-retry" } });
} catch (err: unknown) {
const msg = err instanceof Error ? err.message : String(err);
mergerLog.warn(`${taskId}: git reset --merge cleanup failed during build-retry: ${msg}`);
mergerLog.warn(`${taskId}: git reset --merge cleanup failed (build-retry): ${msg}`);
}
return false; // Retry
}
@@ -1684,7 +1684,7 @@ export async function aiMergeTask(
await audit.git({ type: "reset:hard", target: branch, metadata: { purpose: "merge-retry", attempt: attemptNum } });
} catch (err: unknown) {
const msg = err instanceof Error ? err.message : String(err);
mergerLog.warn(`${taskId}: git reset --merge cleanup failed during retry cleanup (attempt ${attemptNum}): ${msg}`);
mergerLog.warn(`${taskId}: git reset --merge cleanup failed (merge-retry, attempt ${attemptNum}): ${msg}`);
}
return false; // Allow retry
}
@@ -2103,10 +2103,11 @@ async function executeMergeAttempt(
// Reset staged changes to abort the merge
try {
execSync("git reset --merge", { cwd: rootDir, stdio: "pipe" });
} catch {
// Ignore reset errors
} catch (err: unknown) {
const msg = err instanceof Error ? err.message : String(err);
mergerLog.warn(`${taskId}: git reset --merge cleanup failed (build-verification reset): ${msg}`);
}
throw new Error(`Build verification failed for ${taskId}: ${errorMessage}`);
}