You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
The >50-deleted-lines do-not-auto-merge heuristic misfires on extraction refactors, test migrations, and generated artifacts #124
Phase 8's scope gate treats a large deletion count as a signal that a human should look at the change. The heuristic is sound for its intended target (a PR quietly removing behaviour) but it has no exemption for the common cases where a large deletion count is structurally meaningless:
Extraction refactors — lines move out of one file into a new module. The deletion count is large; the net behaviour change is zero.
Test migrations — a suite is ported to a new runner or fixture style. Deletions are large and entirely mechanical.
Generated artifacts — regenerating a lockfile, a vendored bundle, or a generated doc can delete hundreds of lines that no human should be reading line by line.
The result is that instances doing legitimate cleanup work stall on a human gate that carries no information, which trains the operator to wave the gate through — weakening it for the case it actually exists to catch.
Keep the ceiling, but make it measure net removal rather than raw deletions, and name the exemptions:
The deletion ceiling applies to net removed lines. A diff whose deletions are matched by additions elsewhere in the same PR (an extraction refactor, a file rename, a test migration) does not trip the gate. Paths that are generated rather than authored — lockfiles, vendored trees, generated documentation — are excluded from the count entirely; list them in the instance's generated-paths set at generation time.
Requiring the instance to record its own generated-paths set during Step 2 keeps the exemption honest, rather than letting a cycle decide case by case that its own deletions do not count.
Activity