land folds a stale base into the candidate, and the title stops describing the commit #323

Open
opened 2026-08-18 11:16:34 +00:00 by PerishFire · 0 comments
Owner

plumb land checks that the branch is clean, sits outside a release line, and differs from origin/main. It does not check that the branch is based on the current origin/main.

Branching from a stale local main therefore produces a candidate covering two commits — the one already landed under a different SHA, and the new one — and land composes the candidate message by joining both. The result is a commit whose title belongs to a change that landed an hour earlier:

fb85956 (PerishLab/actions)
  Retire the one-time self-hosting contract     <- the previous commit's title
  Retire the one-time self-hosting contract
  ...its body...
  Ask the binary which spelling it holds        <- the actual change
  ...its body...

The content was correct — the diff was exactly the new change, because the stale commit's content was already on main — so nothing was broken and nothing was noticed until the log was read.

Why it matters here

A commit title that does not describe its commit is the same defect class this domain keeps closing elsewhere: a claim that reads as true and is not. It survives because the projection is derived rather than written, and derived text is where nobody looks twice.

The ask

Land already fetches. Refuse, or rebase, when the branch is not based on the origin/main it is about to project onto — the operator can see the answer in one merge-base and land can too. Refusing is enough; the fix is one git rebase the operator was going to do anyway.

Found while landing PerishLab/actions#49.

`plumb land` checks that the branch is clean, sits outside a release line, and differs from `origin/main`. It does not check that the branch is *based on* the current `origin/main`. Branching from a stale local `main` therefore produces a candidate covering two commits — the one already landed under a different SHA, and the new one — and land composes the candidate message by joining both. The result is a commit whose title belongs to a change that landed an hour earlier: ``` fb85956 (PerishLab/actions) Retire the one-time self-hosting contract <- the previous commit's title Retire the one-time self-hosting contract ...its body... Ask the binary which spelling it holds <- the actual change ...its body... ``` The content was correct — the diff was exactly the new change, because the stale commit's content was already on `main` — so nothing was broken and nothing was noticed until the log was read. ## Why it matters here A commit title that does not describe its commit is the same defect class this domain keeps closing elsewhere: a claim that reads as true and is not. It survives because the projection is derived rather than written, and derived text is where nobody looks twice. ## The ask Land already fetches. Refuse, or rebase, when the branch is not based on the `origin/main` it is about to project onto — the operator can see the answer in one `merge-base` and land can too. Refusing is enough; the fix is one `git rebase` the operator was going to do anyway. Found while landing PerishLab/actions#49.
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
PerishLab/plumb#323
No description provided.