Skip to content

Commit 6919c7d

Browse files
recuu-pfegclaude
andcommitted
fix: use preMergeHash for accurate agent diff in Reviewer
Previously Reviewer used HEAD~1 which could include unrelated commits. Now git_merge records the HEAD hash before merging, and spawn_reviewer uses preMergeHash..HEAD to diff only the agent's changes. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 5e93701 commit 6919c7d

1 file changed

Lines changed: 6 additions & 1 deletion

File tree

src/agent-templates.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -335,6 +335,8 @@ export interface ActionContext {
335335
agentBranch?: string;
336336
/** Review verdict from LLM review (set by review_changes action) */
337337
reviewVerdict?: "APPROVE" | "NEEDS_CHANGES";
338+
/** Hash of HEAD before merge (set by git_merge, used by reviewer for accurate diff) */
339+
preMergeHash?: string;
338340
/** Merge function (injected from runner) */
339341
onMerge?: () => boolean;
340342
/** Retro submit function (injected from runner) */
@@ -474,6 +476,8 @@ export async function executeActions(
474476
}
475477

476478
ui.info(`[${phase}] ${label}: ${agentCommits.split("\n").length} commit(s), ${meaningfulFiles.length} file(s)`);
479+
// Record pre-merge hash for accurate diff in reviewer
480+
try { ctx.preMergeHash = gitExec("git rev-parse HEAD", { cwd: repoDir, stdio: "pipe" }).toString().trim(); } catch { /* non-fatal */ }
477481
gitExec(`git checkout "${baseBranch}"`, { cwd: repoDir, stdio: "pipe" });
478482
gitExec(`git merge --no-ff "${worktreeBranch}" -m "merge: ${worktreeBranch}"`, { cwd: repoDir, stdio: "pipe" });
479483
ui.info( `[${phase}] ${label}: merged ${worktreeBranch}`);
@@ -574,8 +578,9 @@ export async function executeActions(
574578
return ctx.config.workingDir;
575579
})();
576580

577-
// Get diff ref for the reviewer prompt
581+
// Get diff ref for the reviewer prompt — use preMergeHash for accurate agent-only diff
578582
const diffRef = (() => {
583+
if (ctx.preMergeHash) return `${ctx.preMergeHash}..HEAD`;
579584
try {
580585
const parents = revExec2("git cat-file -p HEAD", { cwd: reviewRepoDir, stdio: "pipe" }).toString();
581586
const parentCount = (parents.match(/^parent /gm) || []).length;

0 commit comments

Comments
 (0)