Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions devlog/_fin/260904_repo_hygiene_campaign/000_plan.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,10 @@ Every branch was scored on four independent axes rather than by name:
1. `git merge-base --is-ancestor <br> origin/dev` — plain ancestry.
2. `git cherry origin/dev <br>` — patch-equivalence, which catches rebases.
3. Content landing — the files the branch touches
(`git diff --name-only origin/dev...<br>`) are compared two-dot against
`origin/dev` restricted to exactly those paths. Zero remaining difference
means the branch's content is already on `dev` even though a squash merge
destroyed its commit identity.
(`git diff --no-renames --name-only origin/dev...<br>`) are compared two-dot
against `origin/dev` restricted to exactly those paths. Zero remaining
difference means the branch's content is already on `dev` even though a
squash merge destroyed its commit identity.
4. Exact reference matching against live GitHub state: open-PR head refs,
worktree-backing refs, and the PR number a scratch branch was cut for.

Expand Down
15 changes: 13 additions & 2 deletions devlog/_fin/260904_repo_hygiene_campaign/010_method.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ A local branch is deletable when at least one holds, and no guard fires.
```
T1 ancestry git merge-base --is-ancestor <br> origin/dev
T2 patch-equiv git cherry origin/dev <br> -> no '+' lines
T3 content paths = git diff --name-only origin/dev...<br>
git diff --name-only origin/dev <br> -- <paths> -> empty
T3 content paths = git diff --no-renames --name-only origin/dev...<br>
git diff --no-renames --name-only origin/dev <br> -- <paths> -> empty
T4 scratch branch name encodes a PR number whose state is MERGED or CLOSED
AND the name matches the scratch prefix set
AND the number is a WHOLE numeric token of the branch name
Expand All @@ -22,6 +22,17 @@ report "unmerged" for work that is fully shipped. T3 asks the only question that
is actually load-bearing — is there any difference left in the files this branch
claims to change.

Correction, 2026-09-21: the 71 deletions recorded below ran the listing command
without `--no-renames`. Rename detection must be disabled while collecting that
path set, and any rerun after this date should use the form shown above.
Otherwise a rename contributes only its destination: if `dev` independently
contains the same destination but retains the source, the restricted second
diff is empty even though the complete tip trees differ. `--no-renames` emits
both the deleted source and added destination, so the source-side difference
prevents a false LANDED verdict. No wrongly-LANDED branch has been identified
from the earlier run; this is a preventive correction for the next sweep, not a
measured incident.

T4 is deliberately narrow. It fires only for throwaway prefixes
(`pr*`, `rb-`, `jrb-`, `mtp/`, `big-`, `cf-`, `ocx-`, `wip/`, `backup/`,
`candidate`, `cursor-`, `midstream`) created by earlier review and rebase runs,
Expand Down
7 changes: 4 additions & 3 deletions devlog/_fin/260904_repo_hygiene_campaign/100_pr_verdicts.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,10 @@

Full classification of the 53 pull requests open when the campaign started.
Method: fetch each PR head, take the files it touches
(`git diff --name-only origin/dev...<head>`), then compare those exact paths
two-dot against `origin/dev`. Remaining differences mean the work has not
landed.
(`git diff --no-renames --name-only origin/dev...<head>`), then compare those
exact paths two-dot against `origin/dev`. Remaining differences mean the work
has not landed. (2026-09-21: `--no-renames` added so a rename cannot hide the
deleted source side from the path set; see 010_method.md.)

## Closed

Expand Down
Loading