When the in-merge fix agent makes no changes AND all failing test files are outside the branch's diff, the merger now throws OutOfScopeVerificationError and marks the task status: "failed" with a clear error message: "Merge verification failed in files outside branch scope — likely pre-existing flake on main. Fix the base-branch test breakage separately and retry." This prevents the task from entering the completion-handoff-limbo recovery cycle (which would retry the merge endlessly) when the verification failure is caused by pre-existing flakiness in an unrelated package (e.g. engine reliability-interaction tests failing while only dashboard was changed). Failing file paths are parsed from vitest/jest output (FAIL lines and ❯ summary lines). If parsing yields no file list, the existing retry behavior is preserved. The OutOfScopeVerificationError propagates through the catch block so it does not count toward completionHandoffLimboRecoveryCount. New exports: OutOfScopeVerificationError, parseFailingFilesFromOutput, getBranchChangedFiles. Tests added: parseFailingFilesFromOutput (4), getBranchChangedFiles (3), OutOfScopeVerificationError constructor (1). All 58 merger-verification tests pass. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
737 B
737 B
@fusion/engine
| @fusion/engine |
|---|
| minor |
feat(merger): scope pnpm verification to changed packages and short-circuit out-of-scope fix loop
In a pnpm workspace, inferDefaultTestCommand now derives the set of packages touched by the branch diff and emits pnpm --filter "<pkg>...^" test instead of pnpm test. This prevents flakes in unrelated packages from blocking merges. When git context is unavailable or changes are root-only, the command falls back to the unscoped pnpm test.
When the in-merge fix agent makes no changes and all failing test files are outside the branch's diff, the merger now marks the task status: "failed" immediately with a clear "out-of-scope flake" message rather than retrying into the limbo-recovery cycle.