fix: remove snapshot copy from prepareReviewerWorkspaceForExecution
This was the second code path that still called refreshReviewerSnapshotForPairedTask (file copy). Now returns owner workspace directly like markPairedTaskReviewReady does.
This commit is contained in:
@@ -579,77 +579,23 @@ export function prepareReviewerWorkspaceForExecution(
|
|||||||
blockMessage: REVIEWER_SNAPSHOT_NOT_READY_BLOCK_MESSAGE,
|
blockMessage: REVIEWER_SNAPSHOT_NOT_READY_BLOCK_MESSAGE,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Container mode: reviewer mounts owner workspace directly as read-only.
|
||||||
|
// No snapshot copy needed — just return the owner workspace as reviewer workspace.
|
||||||
const reviewerWorkspace = getPairedWorkspace(task.id, 'reviewer') ?? null;
|
const reviewerWorkspace = getPairedWorkspace(task.id, 'reviewer') ?? null;
|
||||||
const allowedTrackedFiles = listAllowedTrackedFiles(
|
if (reviewerWorkspace) {
|
||||||
ownerWorkspace.workspace_dir,
|
return { workspace: reviewerWorkspace, autoRefreshed: false };
|
||||||
);
|
|
||||||
const deletedTrackedFiles = listDeletedTrackedFiles(
|
|
||||||
ownerWorkspace.workspace_dir,
|
|
||||||
);
|
|
||||||
const allowedUntrackedFiles = listAllowedUntrackedFiles(
|
|
||||||
ownerWorkspace.workspace_dir,
|
|
||||||
);
|
|
||||||
const currentFingerprint = buildReviewerSnapshotFingerprint({
|
|
||||||
sourceDir: ownerWorkspace.workspace_dir,
|
|
||||||
allowedTrackedFiles,
|
|
||||||
deletedTrackedFiles,
|
|
||||||
allowedUntrackedFiles,
|
|
||||||
});
|
|
||||||
const snapshotMissing =
|
|
||||||
!reviewerWorkspace?.snapshot_refreshed_at || !reviewerWorkspace;
|
|
||||||
const snapshotStale =
|
|
||||||
!!reviewerWorkspace &&
|
|
||||||
(reviewerWorkspace.status === 'stale' ||
|
|
||||||
reviewerWorkspace.snapshot_ref !== currentFingerprint);
|
|
||||||
const now = new Date().toISOString();
|
|
||||||
|
|
||||||
if (snapshotMissing || snapshotStale) {
|
|
||||||
if (task.status === 'review_ready') {
|
|
||||||
const refreshedWorkspace = refreshReviewerSnapshotForPairedTask(task.id);
|
|
||||||
updatePairedTask(task.id, {
|
|
||||||
status: 'review_ready',
|
|
||||||
updated_at: now,
|
|
||||||
});
|
|
||||||
return {
|
|
||||||
workspace: refreshedWorkspace,
|
|
||||||
autoRefreshed: true,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
if (snapshotMissing) {
|
|
||||||
return {
|
|
||||||
workspace: null,
|
|
||||||
autoRefreshed: false,
|
|
||||||
blockMessage: REVIEWER_SNAPSHOT_NOT_READY_BLOCK_MESSAGE,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
if (reviewerWorkspace) {
|
|
||||||
upsertPairedWorkspace(
|
|
||||||
makeWorkspaceRecord({
|
|
||||||
taskId: task.id,
|
|
||||||
role: 'reviewer',
|
|
||||||
workspaceDir: reviewerWorkspace.workspace_dir,
|
|
||||||
snapshotSourceDir: reviewerWorkspace.snapshot_source_dir,
|
|
||||||
snapshotSourceFingerprint: reviewerWorkspace.snapshot_ref,
|
|
||||||
snapshotRefreshedAt: reviewerWorkspace.snapshot_refreshed_at,
|
|
||||||
status: 'stale',
|
|
||||||
createdAt: reviewerWorkspace.created_at,
|
|
||||||
}),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
updatePairedTask(task.id, {
|
|
||||||
updated_at: now,
|
|
||||||
});
|
|
||||||
return {
|
|
||||||
workspace: null,
|
|
||||||
autoRefreshed: false,
|
|
||||||
blockMessage: REVIEWER_SNAPSHOT_STALE_BLOCK_MESSAGE,
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
// No reviewer workspace registered yet — register owner dir
|
||||||
workspace: reviewerWorkspace,
|
const now = new Date().toISOString();
|
||||||
autoRefreshed: false,
|
const newReviewerWorkspace = makeWorkspaceRecord({
|
||||||
};
|
taskId: task.id,
|
||||||
|
role: 'reviewer',
|
||||||
|
workspaceDir: ownerWorkspace.workspace_dir,
|
||||||
|
snapshotSourceDir: ownerWorkspace.workspace_dir,
|
||||||
|
snapshotRefreshedAt: now,
|
||||||
|
});
|
||||||
|
upsertPairedWorkspace(newReviewerWorkspace);
|
||||||
|
return { workspace: newReviewerWorkspace, autoRefreshed: false };
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user