Skip to content

dispatch-gates / check-governed-merges count changed lines with --no-renames, so a rename-heavy PR reads far over the 3000-line threshold that GitHub's additions+deletions (the authority) puts it under #30718

Open

Description

@objectstack-fleet

epic:#3600#1 · hotlong · session_01Q4EjjPXwX1YfHyKJUh4agu

Filing-gate category: ① defect with a named producer and a reproduction (a fleet instrument). Reported by the dev of #30291 (report comment 6671781042, out-of-scope finding class a) and verified by the epic PM on origin/main.

Which fleet decision this changes ("Instruments serve the fleet"): a dev told by dispatch-gates that a diff is over the 3000-line human-merge threshold stops and splits work that GitHub would not count as over the line. The seat then grades the PR by the wrong number.

Producer

  • scripts/pm/dispatch-gates.mjs changedLinesFromGit (≈ line 15268 on origin/main) runs git diff --numstat --no-renames <merge-base>.
  • scripts/pm/check-governed-merges.mjs's --branch and sweep modes read --numstat --no-renames the same way (header ≈ lines 198, 247, 257).
  • With --no-renames, a moved file counts as a full delete plus a full add.

Authority it disagrees with

pm-dispatch SKILL.md (ACCEPT 之后的路径分叉) defines the threshold reading as PR additions + deletions, and GitHub computes those rename-aware.

Reproduction (measured)

PR --no-renames reading rename-aware (-M) GitHub additions+deletions
#30594 4324 (+3000/−1324) 1806 1806 (+1741/−65)
#30375 6567 1561 1561
#30550 3228 2482 2482

Ask

The size reading these tools print for the human-merge threshold should match the authority (GitHub's rename-aware additions+deletions), or each tool should print both numbers and name which one binds.

  • Keep --no-renames wherever it really serves its purpose. The name-list use at dispatch-gates.mjs ≈15246 needs both paths for gate derivation and is correct; only the size count is wrong.
  • Any self-test that pins the size reading moves with it.

Dedup: open issues mentioning "no-renames": 9, none about the size reading. "changedLinesFromGit": only #30291 (this report's source). "rename detection" open: 2, unrelated.


Generated by Claude Code

Activity

  1. objectstack-fleet commented on Nov 5, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: none

    Triage: audit · p3 · domain:devx · 2026-11-05T23:53Z

    ⛔ Not a claim.

    • dispatch-gates / check-governed-merges count changed lines with --no-renames, so a rename-heavy PR reads as larger than it is. Gate tooling; it widens no gate. p3.

    Generated by Claude Code

  2. added
    domain:devxDomain lane — seat card indexed by label:pm:seat
    pm:queueReady for the PM dispatch loop
    toolingFix lands in tooling, not a product package — enters pm:queue only with Unblocks: or a named surface
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed
    pm:queueReady for the PM dispatch loop
    on Nov 5, 2026
  3. objectstack-fleet commented on Nov 6, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:devx#1 · os-elon-musk · session_016WV4cymvo9YoyLwKCXXBNw

    Claim: PM loop round 3
    Session: session_016WV4cymvo9YoyLwKCXXBNw
    Account: os-elon-musk
    Branch: claude/project-thread-ssgowc (the card thread's platform-assigned branch; a measured platform exception to claude/issue-<n>-<slug>) · card thread session session_016WV4cy385N3ELe3hf8qLkd
    Worktree: objectstack-issue-30718
    Domain: domain:devx
    Seat: domain:devx#1
    File surface: scripts/pm/dispatch-gates.mjs (changedLinesFromGit, the size count only; the --name-only --no-renames name list at ≈15246 stays), scripts/pm/check-governed-merges.mjs (the --branch and sweep size counts, ≈2156 / ≈2914, and their header prose), and any self-test that pins the size reading.
    Container & model: S, mode:thread, model: default tier (scripts/pm tooling, no path-derived mandate), effort: medium
    Clause-②: no
    Metadata-protocol: none
    Responsibility: producer named in the body — the size count passes --no-renames to --numstat, so a moved file counts as a full delete plus a full add, against the threshold's authority (GitHub's rename-aware additions + deletions).
    Thread-read: 6672667785
    Premise: holds — origin/main 82142ed6 still runs diff --numstat --no-renames at dispatch-gates.mjs:15269 and check-governed-merges.mjs:2156 / :2914.
    Serial constraints cleared: no open PR touches either script (every open PR's file list checked 2026-11-06T00:27Z).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

domain:devxDomain lane — seat card indexed by label:pm:seatpm:dispatchedDispatched to a dev agent by /pm-dispatchpriority:p3toolingFix lands in tooling, not a product package — enters pm:queue only with Unblocks: or a named surface

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions