feat(FN-4072): add diff volume gate to merger

Added a diff volume gate to the merger that blocks or warns on large diffs before merge completes. The feature includes a new `merger-diff-volume-gate` module wired into the merger, configurable via project settings, with tests covering all gate paths. Also updated docs and the changeset for the `@r

Fusion-Task-Id: FN-4072
This commit is contained in:
Fusion
2026-05-12 18:23:13 -07:00
committed by gsxdsm
parent e7fc3a9d17
commit 8fa3e8bfd1
8 changed files with 660 additions and 6 deletions

View File

@@ -211,6 +211,9 @@ export const DEFAULT_PROJECT_SETTINGS = {
worktreeRebaseRemote: "",
worktreeRebaseLocalBase: true,
mergeConflictStrategy: "smart-prefer-main",
mergeDiffVolumeMinLines: undefined,
mergeDiffVolumeThreshold: undefined,
mergeDiffVolumeAllowlist: undefined,
mergeStrategyOverlapBehavior: "flip-to-prefer-branch",
workflowStepTimeoutMs: 360_000,
workflowRevisionForkOnScopeMismatch: true,

View File

@@ -2203,6 +2203,12 @@ export interface ProjectSettings {
/** Strategy used when a merge conflict can't be resolved by AI. See
* {@link MergeConflictStrategy}. Default: "smart". */
mergeConflictStrategy?: MergeConflictStrategy;
/** Minimum branch net line volume before the pre-commit diff-volume gate evaluates a file. Default applied at read site: 20. */
mergeDiffVolumeMinLines?: number;
/** Minimum staged/branch-net ratio required by the pre-commit diff-volume gate. Default applied at read site: 0.2. */
mergeDiffVolumeThreshold?: number;
/** Additional file globs allowlisted by the pre-commit diff-volume gate on top of generated/lockfile patterns. Default applied at read site: []. */
mergeDiffVolumeAllowlist?: string[];
/** Controls overlap protection when `mergeConflictStrategy="smart-prefer-main"`
* reaches its Attempt 3 fallback. Default: "flip-to-prefer-branch". */
mergeStrategyOverlapBehavior?: MergeStrategyOverlapBehavior;