Repository navigation
fix(fork): folds list squash-landed fixups as members - #1591
Merged
Merged
Conversation
A `fixup! <owner> (#N)` landed by pull request now folds into its owner with its link kept, instead of refusing for lack of a repair line. Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no
donjor
added a commit
that referenced
this pull request
Oct 3, 2026
## Problem `fork:fold apply` refuses any `fixup!` member without a repair line under `Squashes:`, so it cannot fold the 48 `fixup! <owner> (#N)` commits the #1493 pay-down squash-landed on `hyprws`. The sync's own fold places them as `fixup`, which discards each message, so it drops all 48 pull request links; `fork:fold prove` reports `link guard → 48 finding(s)` on that tip. ## Change `memberLine` treats a `fixup!` subject that carries a squash ` (#N)` marker as a landing of its own: it renders as an ordinary member line, so the fold lists its sha and keeps its link. A `fixup!` with neither a repair line nor a squash marker still refuses. ## Scope and approval Part of the authorized #1493 pay-down; keeps the #1491 rule that no fold drops a pull request link. ## Verification | Check | Result | | --- | --- | | `vp test run scripts/fork-fold.test.ts` | 34 passed, including a new squash-landed fixup case | | `fork:fold apply` of a plan joining each fixup to its owner, on `cf2b4926cba` | 200 commits → 152 | | `fork:fold prove origin/hyprws <fold>` | member guard 0, link guard 0, tree-equal, delta and scan exit 0 | | `vp run fork:ci` | exit 0 | Claude Opus 5.5 in Claude Code. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
This was referenced Oct 3, 2026
donjor
added a commit
that referenced
this pull request
Oct 3, 2026
…ds in (#N) (#1598) ## Problem `fork:fold` tells a split piece from a squash-landed fixup by the trailing ` (#N)` on its subject. A piece repeats its owner's subject, so an owner such as `fix(server): provider spawns drop another harness identity (#108)` makes its piece look landed. The fold then lists the throwaway piece sha instead of the mover, and `fork:fold prove` refuses the member guard. ## Change `memberLine` checks the repair line under `Squashes:` first: | Fixup member | Renders as | | --- | --- | | carries a repair line | that repair line | | no repair line, ` (#N)` marker | a landed member with its link | | neither | refused, as before | ## Scope and approval Found while splitting movers for #1493, batch B8; the #1591 change introduced the marker test. ## Verification | Check | Result | | --- | --- | | `vp test run scripts/fork-fold.test.ts` | exit 0, 35 tests | | new case without the fix | fails | | `vp lint`, `vp fmt --check` on both files | exit 0, exit 0 | | `vp run fork:ci` | exit 0 | Claude Opus 5.5, Claude Code. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
pushed a commit
that referenced
this pull request
Oct 3, 2026
## Problem `fork:fold apply` refuses any `fixup!` member without a repair line under `Squashes:`, so it cannot fold the 48 `fixup! <owner> (#N)` commits the #1493 pay-down squash-landed on `hyprws`. The sync's own fold places them as `fixup`, which discards each message, so it drops all 48 pull request links; `fork:fold prove` reports `link guard → 48 finding(s)` on that tip. ## Change `memberLine` treats a `fixup!` subject that carries a squash ` (#N)` marker as a landing of its own: it renders as an ordinary member line, so the fold lists its sha and keeps its link. A `fixup!` with neither a repair line nor a squash marker still refuses. ## Scope and approval Part of the authorized #1493 pay-down; keeps the #1491 rule that no fold drops a pull request link. ## Verification | Check | Result | | --- | --- | | `vp test run scripts/fork-fold.test.ts` | 34 passed, including a new squash-landed fixup case | | `fork:fold apply` of a plan joining each fixup to its owner, on `cf2b4926cba` | 200 commits → 152 | | `fork:fold prove origin/hyprws <fold>` | member guard 0, link guard 0, tree-equal, delta and scan exit 0 | | `vp run fork:ci` | exit 0 | Claude Opus 5.5 in Claude Code. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 3, 2026
…ds in (#N) (#1598) ## Problem `fork:fold` tells a split piece from a squash-landed fixup by the trailing ` (#N)` on its subject. A piece repeats its owner's subject, so an owner such as `fix(server): provider spawns drop another harness identity (#108)` makes its piece look landed. The fold then lists the throwaway piece sha instead of the mover, and `fork:fold prove` refuses the member guard. ## Change `memberLine` checks the repair line under `Squashes:` first: | Fixup member | Renders as | | --- | --- | | carries a repair line | that repair line | | no repair line, ` (#N)` marker | a landed member with its link | | neither | refused, as before | ## Scope and approval Found while splitting movers for #1493, batch B8; the #1591 change introduced the marker test. ## Verification | Check | Result | | --- | --- | | `vp test run scripts/fork-fold.test.ts` | exit 0, 35 tests | | new case without the fix | fails | | `vp lint`, `vp fmt --check` on both files | exit 0, exit 0 | | `vp run fork:ci` | exit 0 | Claude Opus 5.5, Claude Code. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
pushed a commit
that referenced
this pull request
Oct 3, 2026
## Problem `fork:fold apply` refuses any `fixup!` member without a repair line under `Squashes:`, so it cannot fold the 48 `fixup! <owner> (#N)` commits the #1493 pay-down squash-landed on `hyprws`. The sync's own fold places them as `fixup`, which discards each message, so it drops all 48 pull request links; `fork:fold prove` reports `link guard → 48 finding(s)` on that tip. ## Change `memberLine` treats a `fixup!` subject that carries a squash ` (#N)` marker as a landing of its own: it renders as an ordinary member line, so the fold lists its sha and keeps its link. A `fixup!` with neither a repair line nor a squash marker still refuses. ## Scope and approval Part of the authorized #1493 pay-down; keeps the #1491 rule that no fold drops a pull request link. ## Verification | Check | Result | | --- | --- | | `vp test run scripts/fork-fold.test.ts` | 34 passed, including a new squash-landed fixup case | | `fork:fold apply` of a plan joining each fixup to its owner, on `cf2b4926cba` | 200 commits → 152 | | `fork:fold prove origin/hyprws <fold>` | member guard 0, link guard 0, tree-equal, delta and scan exit 0 | | `vp run fork:ci` | exit 0 | Claude Opus 5.5 in Claude Code. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 3, 2026
…ds in (#N) (#1598) ## Problem `fork:fold` tells a split piece from a squash-landed fixup by the trailing ` (#N)` on its subject. A piece repeats its owner's subject, so an owner such as `fix(server): provider spawns drop another harness identity (#108)` makes its piece look landed. The fold then lists the throwaway piece sha instead of the mover, and `fork:fold prove` refuses the member guard. ## Change `memberLine` checks the repair line under `Squashes:` first: | Fixup member | Renders as | | --- | --- | | carries a repair line | that repair line | | no repair line, ` (#N)` marker | a landed member with its link | | neither | refused, as before | ## Scope and approval Found while splitting movers for #1493, batch B8; the #1591 change introduced the marker test. ## Verification | Check | Result | | --- | --- | | `vp test run scripts/fork-fold.test.ts` | exit 0, 35 tests | | new case without the fix | fails | | `vp lint`, `vp fmt --check` on both files | exit 0, exit 0 | | `vp run fork:ci` | exit 0 | Claude Opus 5.5, Claude Code. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
pushed a commit
that referenced
this pull request
Oct 4, 2026
## Problem `fork:fold apply` refuses any `fixup!` member without a repair line under `Squashes:`, so it cannot fold the 48 `fixup! <owner> (#N)` commits the #1493 pay-down squash-landed on `hyprws`. The sync's own fold places them as `fixup`, which discards each message, so it drops all 48 pull request links; `fork:fold prove` reports `link guard → 48 finding(s)` on that tip. ## Change `memberLine` treats a `fixup!` subject that carries a squash ` (#N)` marker as a landing of its own: it renders as an ordinary member line, so the fold lists its sha and keeps its link. A `fixup!` with neither a repair line nor a squash marker still refuses. ## Scope and approval Part of the authorized #1493 pay-down; keeps the #1491 rule that no fold drops a pull request link. ## Verification | Check | Result | | --- | --- | | `vp test run scripts/fork-fold.test.ts` | 34 passed, including a new squash-landed fixup case | | `fork:fold apply` of a plan joining each fixup to its owner, on `cf2b4926cba` | 200 commits → 152 | | `fork:fold prove origin/hyprws <fold>` | member guard 0, link guard 0, tree-equal, delta and scan exit 0 | | `vp run fork:ci` | exit 0 | Claude Opus 5.5 in Claude Code. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 4, 2026
…ds in (#N) (#1598) ## Problem `fork:fold` tells a split piece from a squash-landed fixup by the trailing ` (#N)` on its subject. A piece repeats its owner's subject, so an owner such as `fix(server): provider spawns drop another harness identity (#108)` makes its piece look landed. The fold then lists the throwaway piece sha instead of the mover, and `fork:fold prove` refuses the member guard. ## Change `memberLine` checks the repair line under `Squashes:` first: | Fixup member | Renders as | | --- | --- | | carries a repair line | that repair line | | no repair line, ` (#N)` marker | a landed member with its link | | neither | refused, as before | ## Scope and approval Found while splitting movers for #1493, batch B8; the #1591 change introduced the marker test. ## Verification | Check | Result | | --- | --- | | `vp test run scripts/fork-fold.test.ts` | exit 0, 35 tests | | new case without the fix | fails | | `vp lint`, `vp fmt --check` on both files | exit 0, exit 0 | | `vp run fork:ci` | exit 0 | Claude Opus 5.5, Claude Code. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
pushed a commit
that referenced
this pull request
Oct 4, 2026
## Problem `fork:fold apply` refuses any `fixup!` member without a repair line under `Squashes:`, so it cannot fold the 48 `fixup! <owner> (#N)` commits the #1493 pay-down squash-landed on `hyprws`. The sync's own fold places them as `fixup`, which discards each message, so it drops all 48 pull request links; `fork:fold prove` reports `link guard → 48 finding(s)` on that tip. ## Change `memberLine` treats a `fixup!` subject that carries a squash ` (#N)` marker as a landing of its own: it renders as an ordinary member line, so the fold lists its sha and keeps its link. A `fixup!` with neither a repair line nor a squash marker still refuses. ## Scope and approval Part of the authorized #1493 pay-down; keeps the #1491 rule that no fold drops a pull request link. ## Verification | Check | Result | | --- | --- | | `vp test run scripts/fork-fold.test.ts` | 34 passed, including a new squash-landed fixup case | | `fork:fold apply` of a plan joining each fixup to its owner, on `cf2b4926cba` | 200 commits → 152 | | `fork:fold prove origin/hyprws <fold>` | member guard 0, link guard 0, tree-equal, delta and scan exit 0 | | `vp run fork:ci` | exit 0 | Claude Opus 5.5 in Claude Code. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 4, 2026
…ds in (#N) (#1598) ## Problem `fork:fold` tells a split piece from a squash-landed fixup by the trailing ` (#N)` on its subject. A piece repeats its owner's subject, so an owner such as `fix(server): provider spawns drop another harness identity (#108)` makes its piece look landed. The fold then lists the throwaway piece sha instead of the mover, and `fork:fold prove` refuses the member guard. ## Change `memberLine` checks the repair line under `Squashes:` first: | Fixup member | Renders as | | --- | --- | | carries a repair line | that repair line | | no repair line, ` (#N)` marker | a landed member with its link | | neither | refused, as before | ## Scope and approval Found while splitting movers for #1493, batch B8; the #1591 change introduced the marker test. ## Verification | Check | Result | | --- | --- | | `vp test run scripts/fork-fold.test.ts` | exit 0, 35 tests | | new case without the fix | fails | | `vp lint`, `vp fmt --check` on both files | exit 0, exit 0 | | `vp run fork:ci` | exit 0 | Claude Opus 5.5, Claude Code. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
pushed a commit
that referenced
this pull request
Oct 4, 2026
## Problem `fork:fold apply` refuses any `fixup!` member without a repair line under `Squashes:`, so it cannot fold the 48 `fixup! <owner> (#N)` commits the #1493 pay-down squash-landed on `hyprws`. The sync's own fold places them as `fixup`, which discards each message, so it drops all 48 pull request links; `fork:fold prove` reports `link guard → 48 finding(s)` on that tip. ## Change `memberLine` treats a `fixup!` subject that carries a squash ` (#N)` marker as a landing of its own: it renders as an ordinary member line, so the fold lists its sha and keeps its link. A `fixup!` with neither a repair line nor a squash marker still refuses. ## Scope and approval Part of the authorized #1493 pay-down; keeps the #1491 rule that no fold drops a pull request link. ## Verification | Check | Result | | --- | --- | | `vp test run scripts/fork-fold.test.ts` | 34 passed, including a new squash-landed fixup case | | `fork:fold apply` of a plan joining each fixup to its owner, on `cf2b4926cba` | 200 commits → 152 | | `fork:fold prove origin/hyprws <fold>` | member guard 0, link guard 0, tree-equal, delta and scan exit 0 | | `vp run fork:ci` | exit 0 | Claude Opus 5.5 in Claude Code. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 4, 2026
…ds in (#N) (#1598) ## Problem `fork:fold` tells a split piece from a squash-landed fixup by the trailing ` (#N)` on its subject. A piece repeats its owner's subject, so an owner such as `fix(server): provider spawns drop another harness identity (#108)` makes its piece look landed. The fold then lists the throwaway piece sha instead of the mover, and `fork:fold prove` refuses the member guard. ## Change `memberLine` checks the repair line under `Squashes:` first: | Fixup member | Renders as | | --- | --- | | carries a repair line | that repair line | | no repair line, ` (#N)` marker | a landed member with its link | | neither | refused, as before | ## Scope and approval Found while splitting movers for #1493, batch B8; the #1591 change introduced the marker test. ## Verification | Check | Result | | --- | --- | | `vp test run scripts/fork-fold.test.ts` | exit 0, 35 tests | | new case without the fix | fails | | `vp lint`, `vp fmt --check` on both files | exit 0, exit 0 | | `vp run fork:ci` | exit 0 | Claude Opus 5.5, Claude Code. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
pushed a commit
that referenced
this pull request
Oct 4, 2026
## Problem `fork:fold apply` refuses any `fixup!` member without a repair line under `Squashes:`, so it cannot fold the 48 `fixup! <owner> (#N)` commits the #1493 pay-down squash-landed on `hyprws`. The sync's own fold places them as `fixup`, which discards each message, so it drops all 48 pull request links; `fork:fold prove` reports `link guard → 48 finding(s)` on that tip. ## Change `memberLine` treats a `fixup!` subject that carries a squash ` (#N)` marker as a landing of its own: it renders as an ordinary member line, so the fold lists its sha and keeps its link. A `fixup!` with neither a repair line nor a squash marker still refuses. ## Scope and approval Part of the authorized #1493 pay-down; keeps the #1491 rule that no fold drops a pull request link. ## Verification | Check | Result | | --- | --- | | `vp test run scripts/fork-fold.test.ts` | 34 passed, including a new squash-landed fixup case | | `fork:fold apply` of a plan joining each fixup to its owner, on `cf2b4926cba` | 200 commits → 152 | | `fork:fold prove origin/hyprws <fold>` | member guard 0, link guard 0, tree-equal, delta and scan exit 0 | | `vp run fork:ci` | exit 0 | Claude Opus 5.5 in Claude Code. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 4, 2026
…ds in (#N) (#1598) ## Problem `fork:fold` tells a split piece from a squash-landed fixup by the trailing ` (#N)` on its subject. A piece repeats its owner's subject, so an owner such as `fix(server): provider spawns drop another harness identity (#108)` makes its piece look landed. The fold then lists the throwaway piece sha instead of the mover, and `fork:fold prove` refuses the member guard. ## Change `memberLine` checks the repair line under `Squashes:` first: | Fixup member | Renders as | | --- | --- | | carries a repair line | that repair line | | no repair line, ` (#N)` marker | a landed member with its link | | neither | refused, as before | ## Scope and approval Found while splitting movers for #1493, batch B8; the #1591 change introduced the marker test. ## Verification | Check | Result | | --- | --- | | `vp test run scripts/fork-fold.test.ts` | exit 0, 35 tests | | new case without the fix | fails | | `vp lint`, `vp fmt --check` on both files | exit 0, exit 0 | | `vp run fork:ci` | exit 0 | Claude Opus 5.5, Claude Code. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 4, 2026
## Problem `fork:fold apply` refuses any `fixup!` member without a repair line under `Squashes:`, so it cannot fold the 48 `fixup! <owner> (#N)` commits the #1493 pay-down squash-landed on `hyprws`. The sync's own fold places them as `fixup`, which discards each message, so it drops all 48 pull request links; `fork:fold prove` reports `link guard → 48 finding(s)` on that tip. ## Change `memberLine` treats a `fixup!` subject that carries a squash ` (#N)` marker as a landing of its own: it renders as an ordinary member line, so the fold lists its sha and keeps its link. A `fixup!` with neither a repair line nor a squash marker still refuses. ## Scope and approval Part of the authorized #1493 pay-down; keeps the #1491 rule that no fold drops a pull request link. ## Verification | Check | Result | | --- | --- | | `vp test run scripts/fork-fold.test.ts` | 34 passed, including a new squash-landed fixup case | | `fork:fold apply` of a plan joining each fixup to its owner, on `cf2b4926cba` | 200 commits → 152 | | `fork:fold prove origin/hyprws <fold>` | member guard 0, link guard 0, tree-equal, delta and scan exit 0 | | `vp run fork:ci` | exit 0 | Claude Opus 5.5 in Claude Code. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 4, 2026
…ds in (#N) (#1598) ## Problem `fork:fold` tells a split piece from a squash-landed fixup by the trailing ` (#N)` on its subject. A piece repeats its owner's subject, so an owner such as `fix(server): provider spawns drop another harness identity (#108)` makes its piece look landed. The fold then lists the throwaway piece sha instead of the mover, and `fork:fold prove` refuses the member guard. ## Change `memberLine` checks the repair line under `Squashes:` first: | Fixup member | Renders as | | --- | --- | | carries a repair line | that repair line | | no repair line, ` (#N)` marker | a landed member with its link | | neither | refused, as before | ## Scope and approval Found while splitting movers for #1493, batch B8; the #1591 change introduced the marker test. ## Verification | Check | Result | | --- | --- | | `vp test run scripts/fork-fold.test.ts` | exit 0, 35 tests | | new case without the fix | fails | | `vp lint`, `vp fmt --check` on both files | exit 0, exit 0 | | `vp run fork:ci` | exit 0 | Claude Opus 5.5, Claude Code. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 6, 2026
## Problem `fork:fold apply` refuses any `fixup!` member without a repair line under `Squashes:`, so it cannot fold the 48 `fixup! <owner> (#N)` commits the #1493 pay-down squash-landed on `hyprws`. The sync's own fold places them as `fixup`, which discards each message, so it drops all 48 pull request links; `fork:fold prove` reports `link guard → 48 finding(s)` on that tip. ## Change `memberLine` treats a `fixup!` subject that carries a squash ` (#N)` marker as a landing of its own: it renders as an ordinary member line, so the fold lists its sha and keeps its link. A `fixup!` with neither a repair line nor a squash marker still refuses. ## Scope and approval Part of the authorized #1493 pay-down; keeps the #1491 rule that no fold drops a pull request link. ## Verification | Check | Result | | --- | --- | | `vp test run scripts/fork-fold.test.ts` | 34 passed, including a new squash-landed fixup case | | `fork:fold apply` of a plan joining each fixup to its owner, on `cf2b4926cba` | 200 commits → 152 | | `fork:fold prove origin/hyprws <fold>` | member guard 0, link guard 0, tree-equal, delta and scan exit 0 | | `vp run fork:ci` | exit 0 | Claude Opus 5.5 in Claude Code. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 6, 2026
…ds in (#N) (#1598) ## Problem `fork:fold` tells a split piece from a squash-landed fixup by the trailing ` (#N)` on its subject. A piece repeats its owner's subject, so an owner such as `fix(server): provider spawns drop another harness identity (#108)` makes its piece look landed. The fold then lists the throwaway piece sha instead of the mover, and `fork:fold prove` refuses the member guard. ## Change `memberLine` checks the repair line under `Squashes:` first: | Fixup member | Renders as | | --- | --- | | carries a repair line | that repair line | | no repair line, ` (#N)` marker | a landed member with its link | | neither | refused, as before | ## Scope and approval Found while splitting movers for #1493, batch B8; the #1591 change introduced the marker test. ## Verification | Check | Result | | --- | --- | | `vp test run scripts/fork-fold.test.ts` | exit 0, 35 tests | | new case without the fix | fails | | `vp lint`, `vp fmt --check` on both files | exit 0, exit 0 | | `vp run fork:ci` | exit 0 | Claude Opus 5.5, Claude Code. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 6, 2026
## Problem `fork:fold apply` refuses any `fixup!` member without a repair line under `Squashes:`, so it cannot fold the 48 `fixup! <owner> (#N)` commits the #1493 pay-down squash-landed on `hyprws`. The sync's own fold places them as `fixup`, which discards each message, so it drops all 48 pull request links; `fork:fold prove` reports `link guard → 48 finding(s)` on that tip. ## Change `memberLine` treats a `fixup!` subject that carries a squash ` (#N)` marker as a landing of its own: it renders as an ordinary member line, so the fold lists its sha and keeps its link. A `fixup!` with neither a repair line nor a squash marker still refuses. ## Scope and approval Part of the authorized #1493 pay-down; keeps the #1491 rule that no fold drops a pull request link. ## Verification | Check | Result | | --- | --- | | `vp test run scripts/fork-fold.test.ts` | 34 passed, including a new squash-landed fixup case | | `fork:fold apply` of a plan joining each fixup to its owner, on `cf2b4926cba` | 200 commits → 152 | | `fork:fold prove origin/hyprws <fold>` | member guard 0, link guard 0, tree-equal, delta and scan exit 0 | | `vp run fork:ci` | exit 0 | Claude Opus 5.5 in Claude Code. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 6, 2026
…ds in (#N) (#1598) ## Problem `fork:fold` tells a split piece from a squash-landed fixup by the trailing ` (#N)` on its subject. A piece repeats its owner's subject, so an owner such as `fix(server): provider spawns drop another harness identity (#108)` makes its piece look landed. The fold then lists the throwaway piece sha instead of the mover, and `fork:fold prove` refuses the member guard. ## Change `memberLine` checks the repair line under `Squashes:` first: | Fixup member | Renders as | | --- | --- | | carries a repair line | that repair line | | no repair line, ` (#N)` marker | a landed member with its link | | neither | refused, as before | ## Scope and approval Found while splitting movers for #1493, batch B8; the #1591 change introduced the marker test. ## Verification | Check | Result | | --- | --- | | `vp test run scripts/fork-fold.test.ts` | exit 0, 35 tests | | new case without the fix | fails | | `vp lint`, `vp fmt --check` on both files | exit 0, exit 0 | | `vp run fork:ci` | exit 0 | Claude Opus 5.5, Claude Code. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 8, 2026
## Problem `fork:fold apply` refuses any `fixup!` member without a repair line under `Squashes:`, so it cannot fold the 48 `fixup! <owner> (#N)` commits the #1493 pay-down squash-landed on `hyprws`. The sync's own fold places them as `fixup`, which discards each message, so it drops all 48 pull request links; `fork:fold prove` reports `link guard → 48 finding(s)` on that tip. ## Change `memberLine` treats a `fixup!` subject that carries a squash ` (#N)` marker as a landing of its own: it renders as an ordinary member line, so the fold lists its sha and keeps its link. A `fixup!` with neither a repair line nor a squash marker still refuses. ## Scope and approval Part of the authorized #1493 pay-down; keeps the #1491 rule that no fold drops a pull request link. ## Verification | Check | Result | | --- | --- | | `vp test run scripts/fork-fold.test.ts` | 34 passed, including a new squash-landed fixup case | | `fork:fold apply` of a plan joining each fixup to its owner, on `cf2b4926cba` | 200 commits → 152 | | `fork:fold prove origin/hyprws <fold>` | member guard 0, link guard 0, tree-equal, delta and scan exit 0 | | `vp run fork:ci` | exit 0 | Claude Opus 5.5 in Claude Code. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 8, 2026
…ds in (#N) (#1598) ## Problem `fork:fold` tells a split piece from a squash-landed fixup by the trailing ` (#N)` on its subject. A piece repeats its owner's subject, so an owner such as `fix(server): provider spawns drop another harness identity (#108)` makes its piece look landed. The fold then lists the throwaway piece sha instead of the mover, and `fork:fold prove` refuses the member guard. ## Change `memberLine` checks the repair line under `Squashes:` first: | Fixup member | Renders as | | --- | --- | | carries a repair line | that repair line | | no repair line, ` (#N)` marker | a landed member with its link | | neither | refused, as before | ## Scope and approval Found while splitting movers for #1493, batch B8; the #1591 change introduced the marker test. ## Verification | Check | Result | | --- | --- | | `vp test run scripts/fork-fold.test.ts` | exit 0, 35 tests | | new case without the fix | fails | | `vp lint`, `vp fmt --check` on both files | exit 0, exit 0 | | `vp run fork:ci` | exit 0 | Claude Opus 5.5, Claude Code. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 12, 2026
…ds in (#N) (#1598) ## Problem `fork:fold` tells a split piece from a squash-landed fixup by the trailing ` (#N)` on its subject. A piece repeats its owner's subject, so an owner such as `fix(server): provider spawns drop another harness identity (#108)` makes its piece look landed. The fold then lists the throwaway piece sha instead of the mover, and `fork:fold prove` refuses the member guard. ## Change `memberLine` checks the repair line under `Squashes:` first: | Fixup member | Renders as | | --- | --- | | carries a repair line | that repair line | | no repair line, ` (#N)` marker | a landed member with its link | | neither | refused, as before | ## Scope and approval Found while splitting movers for #1493, batch B8; the #1591 change introduced the marker test. ## Verification | Check | Result | | --- | --- | | `vp test run scripts/fork-fold.test.ts` | exit 0, 35 tests | | new case without the fix | fails | | `vp lint`, `vp fmt --check` on both files | exit 0, exit 0 | | `vp run fork:ci` | exit 0 | Claude Opus 5.5, Claude Code. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 13, 2026
## Problem `fork:fold apply` refuses any `fixup!` member without a repair line under `Squashes:`, so it cannot fold the 48 `fixup! <owner> (#N)` commits the #1493 pay-down squash-landed on `hyprws`. The sync's own fold places them as `fixup`, which discards each message, so it drops all 48 pull request links; `fork:fold prove` reports `link guard → 48 finding(s)` on that tip. ## Change `memberLine` treats a `fixup!` subject that carries a squash ` (#N)` marker as a landing of its own: it renders as an ordinary member line, so the fold lists its sha and keeps its link. A `fixup!` with neither a repair line nor a squash marker still refuses. ## Scope and approval Part of the authorized #1493 pay-down; keeps the #1491 rule that no fold drops a pull request link. ## Verification | Check | Result | | --- | --- | | `vp test run scripts/fork-fold.test.ts` | 34 passed, including a new squash-landed fixup case | | `fork:fold apply` of a plan joining each fixup to its owner, on `cf2b4926cba` | 200 commits → 152 | | `fork:fold prove origin/hyprws <fold>` | member guard 0, link guard 0, tree-equal, delta and scan exit 0 | | `vp run fork:ci` | exit 0 | Claude Opus 5.5 in Claude Code. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 13, 2026
…ds in (#N) (#1598) ## Problem `fork:fold` tells a split piece from a squash-landed fixup by the trailing ` (#N)` on its subject. A piece repeats its owner's subject, so an owner such as `fix(server): provider spawns drop another harness identity (#108)` makes its piece look landed. The fold then lists the throwaway piece sha instead of the mover, and `fork:fold prove` refuses the member guard. ## Change `memberLine` checks the repair line under `Squashes:` first: | Fixup member | Renders as | | --- | --- | | carries a repair line | that repair line | | no repair line, ` (#N)` marker | a landed member with its link | | neither | refused, as before | ## Scope and approval Found while splitting movers for #1493, batch B8; the #1591 change introduced the marker test. ## Verification | Check | Result | | --- | --- | | `vp test run scripts/fork-fold.test.ts` | exit 0, 35 tests | | new case without the fix | fails | | `vp lint`, `vp fmt --check` on both files | exit 0, exit 0 | | `vp run fork:ci` | exit 0 | Claude Opus 5.5, Claude Code. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 15, 2026
## Problem `fork:fold apply` refuses any `fixup!` member without a repair line under `Squashes:`, so it cannot fold the 48 `fixup! <owner> (#N)` commits the #1493 pay-down squash-landed on `hyprws`. The sync's own fold places them as `fixup`, which discards each message, so it drops all 48 pull request links; `fork:fold prove` reports `link guard → 48 finding(s)` on that tip. ## Change `memberLine` treats a `fixup!` subject that carries a squash ` (#N)` marker as a landing of its own: it renders as an ordinary member line, so the fold lists its sha and keeps its link. A `fixup!` with neither a repair line nor a squash marker still refuses. ## Scope and approval Part of the authorized #1493 pay-down; keeps the #1491 rule that no fold drops a pull request link. ## Verification | Check | Result | | --- | --- | | `vp test run scripts/fork-fold.test.ts` | 34 passed, including a new squash-landed fixup case | | `fork:fold apply` of a plan joining each fixup to its owner, on `cf2b4926cba` | 200 commits → 152 | | `fork:fold prove origin/hyprws <fold>` | member guard 0, link guard 0, tree-equal, delta and scan exit 0 | | `vp run fork:ci` | exit 0 | Claude Opus 5.5 in Claude Code. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 15, 2026
…ds in (#N) (#1598) ## Problem `fork:fold` tells a split piece from a squash-landed fixup by the trailing ` (#N)` on its subject. A piece repeats its owner's subject, so an owner such as `fix(server): provider spawns drop another harness identity (#108)` makes its piece look landed. The fold then lists the throwaway piece sha instead of the mover, and `fork:fold prove` refuses the member guard. ## Change `memberLine` checks the repair line under `Squashes:` first: | Fixup member | Renders as | | --- | --- | | carries a repair line | that repair line | | no repair line, ` (#N)` marker | a landed member with its link | | neither | refused, as before | ## Scope and approval Found while splitting movers for #1493, batch B8; the #1591 change introduced the marker test. ## Verification | Check | Result | | --- | --- | | `vp test run scripts/fork-fold.test.ts` | exit 0, 35 tests | | new case without the fix | fails | | `vp lint`, `vp fmt --check` on both files | exit 0, exit 0 | | `vp run fork:ci` | exit 0 | Claude Opus 5.5, Claude Code. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 15, 2026
## Problem `fork:fold apply` refuses any `fixup!` member without a repair line under `Squashes:`, so it cannot fold the 48 `fixup! <owner> (#N)` commits the #1493 pay-down squash-landed on `hyprws`. The sync's own fold places them as `fixup`, which discards each message, so it drops all 48 pull request links; `fork:fold prove` reports `link guard → 48 finding(s)` on that tip. ## Change `memberLine` treats a `fixup!` subject that carries a squash ` (#N)` marker as a landing of its own: it renders as an ordinary member line, so the fold lists its sha and keeps its link. A `fixup!` with neither a repair line nor a squash marker still refuses. ## Scope and approval Part of the authorized #1493 pay-down; keeps the #1491 rule that no fold drops a pull request link. ## Verification | Check | Result | | --- | --- | | `vp test run scripts/fork-fold.test.ts` | 34 passed, including a new squash-landed fixup case | | `fork:fold apply` of a plan joining each fixup to its owner, on `cf2b4926cba` | 200 commits → 152 | | `fork:fold prove origin/hyprws <fold>` | member guard 0, link guard 0, tree-equal, delta and scan exit 0 | | `vp run fork:ci` | exit 0 | Claude Opus 5.5 in Claude Code. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 15, 2026
…ds in (#N) (#1598) ## Problem `fork:fold` tells a split piece from a squash-landed fixup by the trailing ` (#N)` on its subject. A piece repeats its owner's subject, so an owner such as `fix(server): provider spawns drop another harness identity (#108)` makes its piece look landed. The fold then lists the throwaway piece sha instead of the mover, and `fork:fold prove` refuses the member guard. ## Change `memberLine` checks the repair line under `Squashes:` first: | Fixup member | Renders as | | --- | --- | | carries a repair line | that repair line | | no repair line, ` (#N)` marker | a landed member with its link | | neither | refused, as before | ## Scope and approval Found while splitting movers for #1493, batch B8; the #1591 change introduced the marker test. ## Verification | Check | Result | | --- | --- | | `vp test run scripts/fork-fold.test.ts` | exit 0, 35 tests | | new case without the fix | fails | | `vp lint`, `vp fmt --check` on both files | exit 0, exit 0 | | `vp run fork:ci` | exit 0 | Claude Opus 5.5, Claude Code. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 16, 2026
## Problem `fork:fold apply` refuses any `fixup!` member without a repair line under `Squashes:`, so it cannot fold the 48 `fixup! <owner> (#N)` commits the #1493 pay-down squash-landed on `hyprws`. The sync's own fold places them as `fixup`, which discards each message, so it drops all 48 pull request links; `fork:fold prove` reports `link guard → 48 finding(s)` on that tip. ## Change `memberLine` treats a `fixup!` subject that carries a squash ` (#N)` marker as a landing of its own: it renders as an ordinary member line, so the fold lists its sha and keeps its link. A `fixup!` with neither a repair line nor a squash marker still refuses. ## Scope and approval Part of the authorized #1493 pay-down; keeps the #1491 rule that no fold drops a pull request link. ## Verification | Check | Result | | --- | --- | | `vp test run scripts/fork-fold.test.ts` | 34 passed, including a new squash-landed fixup case | | `fork:fold apply` of a plan joining each fixup to its owner, on `cf2b4926cba` | 200 commits → 152 | | `fork:fold prove origin/hyprws <fold>` | member guard 0, link guard 0, tree-equal, delta and scan exit 0 | | `vp run fork:ci` | exit 0 | Claude Opus 5.5 in Claude Code. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 16, 2026
…ds in (#N) (#1598) ## Problem `fork:fold` tells a split piece from a squash-landed fixup by the trailing ` (#N)` on its subject. A piece repeats its owner's subject, so an owner such as `fix(server): provider spawns drop another harness identity (#108)` makes its piece look landed. The fold then lists the throwaway piece sha instead of the mover, and `fork:fold prove` refuses the member guard. ## Change `memberLine` checks the repair line under `Squashes:` first: | Fixup member | Renders as | | --- | --- | | carries a repair line | that repair line | | no repair line, ` (#N)` marker | a landed member with its link | | neither | refused, as before | ## Scope and approval Found while splitting movers for #1493, batch B8; the #1591 change introduced the marker test. ## Verification | Check | Result | | --- | --- | | `vp test run scripts/fork-fold.test.ts` | exit 0, 35 tests | | new case without the fix | fails | | `vp lint`, `vp fmt --check` on both files | exit 0, exit 0 | | `vp run fork:ci` | exit 0 | Claude Opus 5.5, Claude Code. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 16, 2026
## Problem `fork:fold apply` refuses any `fixup!` member without a repair line under `Squashes:`, so it cannot fold the 48 `fixup! <owner> (#N)` commits the #1493 pay-down squash-landed on `hyprws`. The sync's own fold places them as `fixup`, which discards each message, so it drops all 48 pull request links; `fork:fold prove` reports `link guard → 48 finding(s)` on that tip. ## Change `memberLine` treats a `fixup!` subject that carries a squash ` (#N)` marker as a landing of its own: it renders as an ordinary member line, so the fold lists its sha and keeps its link. A `fixup!` with neither a repair line nor a squash marker still refuses. ## Scope and approval Part of the authorized #1493 pay-down; keeps the #1491 rule that no fold drops a pull request link. ## Verification | Check | Result | | --- | --- | | `vp test run scripts/fork-fold.test.ts` | 34 passed, including a new squash-landed fixup case | | `fork:fold apply` of a plan joining each fixup to its owner, on `cf2b4926cba` | 200 commits → 152 | | `fork:fold prove origin/hyprws <fold>` | member guard 0, link guard 0, tree-equal, delta and scan exit 0 | | `vp run fork:ci` | exit 0 | Claude Opus 5.5 in Claude Code. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 16, 2026
…ds in (#N) (#1598) ## Problem `fork:fold` tells a split piece from a squash-landed fixup by the trailing ` (#N)` on its subject. A piece repeats its owner's subject, so an owner such as `fix(server): provider spawns drop another harness identity (#108)` makes its piece look landed. The fold then lists the throwaway piece sha instead of the mover, and `fork:fold prove` refuses the member guard. ## Change `memberLine` checks the repair line under `Squashes:` first: | Fixup member | Renders as | | --- | --- | | carries a repair line | that repair line | | no repair line, ` (#N)` marker | a landed member with its link | | neither | refused, as before | ## Scope and approval Found while splitting movers for #1493, batch B8; the #1591 change introduced the marker test. ## Verification | Check | Result | | --- | --- | | `vp test run scripts/fork-fold.test.ts` | exit 0, 35 tests | | new case without the fix | fails | | `vp lint`, `vp fmt --check` on both files | exit 0, exit 0 | | `vp run fork:ci` | exit 0 | Claude Opus 5.5, Claude Code. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 18, 2026
## Problem `fork:fold apply` refuses any `fixup!` member without a repair line under `Squashes:`, so it cannot fold the 48 `fixup! <owner> (#N)` commits the #1493 pay-down squash-landed on `hyprws`. The sync's own fold places them as `fixup`, which discards each message, so it drops all 48 pull request links; `fork:fold prove` reports `link guard → 48 finding(s)` on that tip. ## Change `memberLine` treats a `fixup!` subject that carries a squash ` (#N)` marker as a landing of its own: it renders as an ordinary member line, so the fold lists its sha and keeps its link. A `fixup!` with neither a repair line nor a squash marker still refuses. ## Scope and approval Part of the authorized #1493 pay-down; keeps the #1491 rule that no fold drops a pull request link. ## Verification | Check | Result | | --- | --- | | `vp test run scripts/fork-fold.test.ts` | 34 passed, including a new squash-landed fixup case | | `fork:fold apply` of a plan joining each fixup to its owner, on `cf2b4926cba` | 200 commits → 152 | | `fork:fold prove origin/hyprws <fold>` | member guard 0, link guard 0, tree-equal, delta and scan exit 0 | | `vp run fork:ci` | exit 0 | Claude Opus 5.5 in Claude Code. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 18, 2026
…ds in (#N) (#1598) ## Problem `fork:fold` tells a split piece from a squash-landed fixup by the trailing ` (#N)` on its subject. A piece repeats its owner's subject, so an owner such as `fix(server): provider spawns drop another harness identity (#108)` makes its piece look landed. The fold then lists the throwaway piece sha instead of the mover, and `fork:fold prove` refuses the member guard. ## Change `memberLine` checks the repair line under `Squashes:` first: | Fixup member | Renders as | | --- | --- | | carries a repair line | that repair line | | no repair line, ` (#N)` marker | a landed member with its link | | neither | refused, as before | ## Scope and approval Found while splitting movers for #1493, batch B8; the #1591 change introduced the marker test. ## Verification | Check | Result | | --- | --- | | `vp test run scripts/fork-fold.test.ts` | exit 0, 35 tests | | new case without the fix | fails | | `vp lint`, `vp fmt --check` on both files | exit 0, exit 0 | | `vp run fork:ci` | exit 0 | Claude Opus 5.5, Claude Code. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 18, 2026
## Problem `fork:fold apply` refuses any `fixup!` member without a repair line under `Squashes:`, so it cannot fold the 48 `fixup! <owner> (#N)` commits the #1493 pay-down squash-landed on `hyprws`. The sync's own fold places them as `fixup`, which discards each message, so it drops all 48 pull request links; `fork:fold prove` reports `link guard → 48 finding(s)` on that tip. ## Change `memberLine` treats a `fixup!` subject that carries a squash ` (#N)` marker as a landing of its own: it renders as an ordinary member line, so the fold lists its sha and keeps its link. A `fixup!` with neither a repair line nor a squash marker still refuses. ## Scope and approval Part of the authorized #1493 pay-down; keeps the #1491 rule that no fold drops a pull request link. ## Verification | Check | Result | | --- | --- | | `vp test run scripts/fork-fold.test.ts` | 34 passed, including a new squash-landed fixup case | | `fork:fold apply` of a plan joining each fixup to its owner, on `cf2b4926cba` | 200 commits → 152 | | `fork:fold prove origin/hyprws <fold>` | member guard 0, link guard 0, tree-equal, delta and scan exit 0 | | `vp run fork:ci` | exit 0 | Claude Opus 5.5 in Claude Code. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 18, 2026
…ds in (#N) (#1598) ## Problem `fork:fold` tells a split piece from a squash-landed fixup by the trailing ` (#N)` on its subject. A piece repeats its owner's subject, so an owner such as `fix(server): provider spawns drop another harness identity (#108)` makes its piece look landed. The fold then lists the throwaway piece sha instead of the mover, and `fork:fold prove` refuses the member guard. ## Change `memberLine` checks the repair line under `Squashes:` first: | Fixup member | Renders as | | --- | --- | | carries a repair line | that repair line | | no repair line, ` (#N)` marker | a landed member with its link | | neither | refused, as before | ## Scope and approval Found while splitting movers for #1493, batch B8; the #1591 change introduced the marker test. ## Verification | Check | Result | | --- | --- | | `vp test run scripts/fork-fold.test.ts` | exit 0, 35 tests | | new case without the fix | fails | | `vp lint`, `vp fmt --check` on both files | exit 0, exit 0 | | `vp run fork:ci` | exit 0 | Claude Opus 5.5, Claude Code. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 18, 2026
## Problem `fork:fold apply` refuses any `fixup!` member without a repair line under `Squashes:`, so it cannot fold the 48 `fixup! <owner> (#N)` commits the #1493 pay-down squash-landed on `hyprws`. The sync's own fold places them as `fixup`, which discards each message, so it drops all 48 pull request links; `fork:fold prove` reports `link guard → 48 finding(s)` on that tip. ## Change `memberLine` treats a `fixup!` subject that carries a squash ` (#N)` marker as a landing of its own: it renders as an ordinary member line, so the fold lists its sha and keeps its link. A `fixup!` with neither a repair line nor a squash marker still refuses. ## Scope and approval Part of the authorized #1493 pay-down; keeps the #1491 rule that no fold drops a pull request link. ## Verification | Check | Result | | --- | --- | | `vp test run scripts/fork-fold.test.ts` | 34 passed, including a new squash-landed fixup case | | `fork:fold apply` of a plan joining each fixup to its owner, on `cf2b4926cba` | 200 commits → 152 | | `fork:fold prove origin/hyprws <fold>` | member guard 0, link guard 0, tree-equal, delta and scan exit 0 | | `vp run fork:ci` | exit 0 | Claude Opus 5.5 in Claude Code. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 18, 2026
…ds in (#N) (#1598) ## Problem `fork:fold` tells a split piece from a squash-landed fixup by the trailing ` (#N)` on its subject. A piece repeats its owner's subject, so an owner such as `fix(server): provider spawns drop another harness identity (#108)` makes its piece look landed. The fold then lists the throwaway piece sha instead of the mover, and `fork:fold prove` refuses the member guard. ## Change `memberLine` checks the repair line under `Squashes:` first: | Fixup member | Renders as | | --- | --- | | carries a repair line | that repair line | | no repair line, ` (#N)` marker | a landed member with its link | | neither | refused, as before | ## Scope and approval Found while splitting movers for #1493, batch B8; the #1591 change introduced the marker test. ## Verification | Check | Result | | --- | --- | | `vp test run scripts/fork-fold.test.ts` | exit 0, 35 tests | | new case without the fix | fails | | `vp lint`, `vp fmt --check` on both files | exit 0, exit 0 | | `vp run fork:ci` | exit 0 | Claude Opus 5.5, Claude Code. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 19, 2026
## Problem `fork:fold apply` refuses any `fixup!` member without a repair line under `Squashes:`, so it cannot fold the 48 `fixup! <owner> (#N)` commits the #1493 pay-down squash-landed on `hyprws`. The sync's own fold places them as `fixup`, which discards each message, so it drops all 48 pull request links; `fork:fold prove` reports `link guard → 48 finding(s)` on that tip. ## Change `memberLine` treats a `fixup!` subject that carries a squash ` (#N)` marker as a landing of its own: it renders as an ordinary member line, so the fold lists its sha and keeps its link. A `fixup!` with neither a repair line nor a squash marker still refuses. ## Scope and approval Part of the authorized #1493 pay-down; keeps the #1491 rule that no fold drops a pull request link. ## Verification | Check | Result | | --- | --- | | `vp test run scripts/fork-fold.test.ts` | 34 passed, including a new squash-landed fixup case | | `fork:fold apply` of a plan joining each fixup to its owner, on `cf2b4926cba` | 200 commits → 152 | | `fork:fold prove origin/hyprws <fold>` | member guard 0, link guard 0, tree-equal, delta and scan exit 0 | | `vp run fork:ci` | exit 0 | Claude Opus 5.5 in Claude Code. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 19, 2026
…ds in (#N) (#1598) ## Problem `fork:fold` tells a split piece from a squash-landed fixup by the trailing ` (#N)` on its subject. A piece repeats its owner's subject, so an owner such as `fix(server): provider spawns drop another harness identity (#108)` makes its piece look landed. The fold then lists the throwaway piece sha instead of the mover, and `fork:fold prove` refuses the member guard. ## Change `memberLine` checks the repair line under `Squashes:` first: | Fixup member | Renders as | | --- | --- | | carries a repair line | that repair line | | no repair line, ` (#N)` marker | a landed member with its link | | neither | refused, as before | ## Scope and approval Found while splitting movers for #1493, batch B8; the #1591 change introduced the marker test. ## Verification | Check | Result | | --- | --- | | `vp test run scripts/fork-fold.test.ts` | exit 0, 35 tests | | new case without the fix | fails | | `vp lint`, `vp fmt --check` on both files | exit 0, exit 0 | | `vp run fork:ci` | exit 0 | Claude Opus 5.5, Claude Code. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 19, 2026
## Problem `fork:fold apply` refuses any `fixup!` member without a repair line under `Squashes:`, so it cannot fold the 48 `fixup! <owner> (#N)` commits the #1493 pay-down squash-landed on `hyprws`. The sync's own fold places them as `fixup`, which discards each message, so it drops all 48 pull request links; `fork:fold prove` reports `link guard → 48 finding(s)` on that tip. ## Change `memberLine` treats a `fixup!` subject that carries a squash ` (#N)` marker as a landing of its own: it renders as an ordinary member line, so the fold lists its sha and keeps its link. A `fixup!` with neither a repair line nor a squash marker still refuses. ## Scope and approval Part of the authorized #1493 pay-down; keeps the #1491 rule that no fold drops a pull request link. ## Verification | Check | Result | | --- | --- | | `vp test run scripts/fork-fold.test.ts` | 34 passed, including a new squash-landed fixup case | | `fork:fold apply` of a plan joining each fixup to its owner, on `cf2b4926cba` | 200 commits → 152 | | `fork:fold prove origin/hyprws <fold>` | member guard 0, link guard 0, tree-equal, delta and scan exit 0 | | `vp run fork:ci` | exit 0 | Claude Opus 5.5 in Claude Code. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 19, 2026
…ds in (#N) (#1598) ## Problem `fork:fold` tells a split piece from a squash-landed fixup by the trailing ` (#N)` on its subject. A piece repeats its owner's subject, so an owner such as `fix(server): provider spawns drop another harness identity (#108)` makes its piece look landed. The fold then lists the throwaway piece sha instead of the mover, and `fork:fold prove` refuses the member guard. ## Change `memberLine` checks the repair line under `Squashes:` first: | Fixup member | Renders as | | --- | --- | | carries a repair line | that repair line | | no repair line, ` (#N)` marker | a landed member with its link | | neither | refused, as before | ## Scope and approval Found while splitting movers for #1493, batch B8; the #1591 change introduced the marker test. ## Verification | Check | Result | | --- | --- | | `vp test run scripts/fork-fold.test.ts` | exit 0, 35 tests | | new case without the fix | fails | | `vp lint`, `vp fmt --check` on both files | exit 0, exit 0 | | `vp run fork:ci` | exit 0 | Claude Opus 5.5, Claude Code. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 19, 2026
## Problem `fork:fold apply` refuses any `fixup!` member without a repair line under `Squashes:`, so it cannot fold the 48 `fixup! <owner> (#N)` commits the #1493 pay-down squash-landed on `hyprws`. The sync's own fold places them as `fixup`, which discards each message, so it drops all 48 pull request links; `fork:fold prove` reports `link guard → 48 finding(s)` on that tip. ## Change `memberLine` treats a `fixup!` subject that carries a squash ` (#N)` marker as a landing of its own: it renders as an ordinary member line, so the fold lists its sha and keeps its link. A `fixup!` with neither a repair line nor a squash marker still refuses. ## Scope and approval Part of the authorized #1493 pay-down; keeps the #1491 rule that no fold drops a pull request link. ## Verification | Check | Result | | --- | --- | | `vp test run scripts/fork-fold.test.ts` | 34 passed, including a new squash-landed fixup case | | `fork:fold apply` of a plan joining each fixup to its owner, on `cf2b4926cba` | 200 commits → 152 | | `fork:fold prove origin/hyprws <fold>` | member guard 0, link guard 0, tree-equal, delta and scan exit 0 | | `vp run fork:ci` | exit 0 | Claude Opus 5.5 in Claude Code. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 19, 2026
…ds in (#N) (#1598) ## Problem `fork:fold` tells a split piece from a squash-landed fixup by the trailing ` (#N)` on its subject. A piece repeats its owner's subject, so an owner such as `fix(server): provider spawns drop another harness identity (#108)` makes its piece look landed. The fold then lists the throwaway piece sha instead of the mover, and `fork:fold prove` refuses the member guard. ## Change `memberLine` checks the repair line under `Squashes:` first: | Fixup member | Renders as | | --- | --- | | carries a repair line | that repair line | | no repair line, ` (#N)` marker | a landed member with its link | | neither | refused, as before | ## Scope and approval Found while splitting movers for #1493, batch B8; the #1591 change introduced the marker test. ## Verification | Check | Result | | --- | --- | | `vp test run scripts/fork-fold.test.ts` | exit 0, 35 tests | | new case without the fix | fails | | `vp lint`, `vp fmt --check` on both files | exit 0, exit 0 | | `vp run fork:ci` | exit 0 | Claude Opus 5.5, Claude Code. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 20, 2026
## Problem `fork:fold apply` refuses any `fixup!` member without a repair line under `Squashes:`, so it cannot fold the 48 `fixup! <owner> (#N)` commits the #1493 pay-down squash-landed on `hyprws`. The sync's own fold places them as `fixup`, which discards each message, so it drops all 48 pull request links; `fork:fold prove` reports `link guard → 48 finding(s)` on that tip. ## Change `memberLine` treats a `fixup!` subject that carries a squash ` (#N)` marker as a landing of its own: it renders as an ordinary member line, so the fold lists its sha and keeps its link. A `fixup!` with neither a repair line nor a squash marker still refuses. ## Scope and approval Part of the authorized #1493 pay-down; keeps the #1491 rule that no fold drops a pull request link. ## Verification | Check | Result | | --- | --- | | `vp test run scripts/fork-fold.test.ts` | 34 passed, including a new squash-landed fixup case | | `fork:fold apply` of a plan joining each fixup to its owner, on `cf2b4926cba` | 200 commits → 152 | | `fork:fold prove origin/hyprws <fold>` | member guard 0, link guard 0, tree-equal, delta and scan exit 0 | | `vp run fork:ci` | exit 0 | Claude Opus 5.5 in Claude Code. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 20, 2026
…ds in (#N) (#1598) ## Problem `fork:fold` tells a split piece from a squash-landed fixup by the trailing ` (#N)` on its subject. A piece repeats its owner's subject, so an owner such as `fix(server): provider spawns drop another harness identity (#108)` makes its piece look landed. The fold then lists the throwaway piece sha instead of the mover, and `fork:fold prove` refuses the member guard. ## Change `memberLine` checks the repair line under `Squashes:` first: | Fixup member | Renders as | | --- | --- | | carries a repair line | that repair line | | no repair line, ` (#N)` marker | a landed member with its link | | neither | refused, as before | ## Scope and approval Found while splitting movers for #1493, batch B8; the #1591 change introduced the marker test. ## Verification | Check | Result | | --- | --- | | `vp test run scripts/fork-fold.test.ts` | exit 0, 35 tests | | new case without the fix | fails | | `vp lint`, `vp fmt --check` on both files | exit 0, exit 0 | | `vp run fork:ci` | exit 0 | Claude Opus 5.5, Claude Code. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 20, 2026
## Problem `fork:fold apply` refuses any `fixup!` member without a repair line under `Squashes:`, so it cannot fold the 48 `fixup! <owner> (#N)` commits the #1493 pay-down squash-landed on `hyprws`. The sync's own fold places them as `fixup`, which discards each message, so it drops all 48 pull request links; `fork:fold prove` reports `link guard → 48 finding(s)` on that tip. ## Change `memberLine` treats a `fixup!` subject that carries a squash ` (#N)` marker as a landing of its own: it renders as an ordinary member line, so the fold lists its sha and keeps its link. A `fixup!` with neither a repair line nor a squash marker still refuses. ## Scope and approval Part of the authorized #1493 pay-down; keeps the #1491 rule that no fold drops a pull request link. ## Verification | Check | Result | | --- | --- | | `vp test run scripts/fork-fold.test.ts` | 34 passed, including a new squash-landed fixup case | | `fork:fold apply` of a plan joining each fixup to its owner, on `cf2b4926cba` | 200 commits → 152 | | `fork:fold prove origin/hyprws <fold>` | member guard 0, link guard 0, tree-equal, delta and scan exit 0 | | `vp run fork:ci` | exit 0 | Claude Opus 5.5 in Claude Code. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 20, 2026
…ds in (#N) (#1598) ## Problem `fork:fold` tells a split piece from a squash-landed fixup by the trailing ` (#N)` on its subject. A piece repeats its owner's subject, so an owner such as `fix(server): provider spawns drop another harness identity (#108)` makes its piece look landed. The fold then lists the throwaway piece sha instead of the mover, and `fork:fold prove` refuses the member guard. ## Change `memberLine` checks the repair line under `Squashes:` first: | Fixup member | Renders as | | --- | --- | | carries a repair line | that repair line | | no repair line, ` (#N)` marker | a landed member with its link | | neither | refused, as before | ## Scope and approval Found while splitting movers for #1493, batch B8; the #1591 change introduced the marker test. ## Verification | Check | Result | | --- | --- | | `vp test run scripts/fork-fold.test.ts` | exit 0, 35 tests | | new case without the fix | fails | | `vp lint`, `vp fmt --check` on both files | exit 0, exit 0 | | `vp run fork:ci` | exit 0 | Claude Opus 5.5, Claude Code. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 20, 2026
## Problem `fork:fold apply` refuses any `fixup!` member without a repair line under `Squashes:`, so it cannot fold the 48 `fixup! <owner> (#N)` commits the #1493 pay-down squash-landed on `hyprws`. The sync's own fold places them as `fixup`, which discards each message, so it drops all 48 pull request links; `fork:fold prove` reports `link guard → 48 finding(s)` on that tip. ## Change `memberLine` treats a `fixup!` subject that carries a squash ` (#N)` marker as a landing of its own: it renders as an ordinary member line, so the fold lists its sha and keeps its link. A `fixup!` with neither a repair line nor a squash marker still refuses. ## Scope and approval Part of the authorized #1493 pay-down; keeps the #1491 rule that no fold drops a pull request link. ## Verification | Check | Result | | --- | --- | | `vp test run scripts/fork-fold.test.ts` | 34 passed, including a new squash-landed fixup case | | `fork:fold apply` of a plan joining each fixup to its owner, on `cf2b4926cba` | 200 commits → 152 | | `fork:fold prove origin/hyprws <fold>` | member guard 0, link guard 0, tree-equal, delta and scan exit 0 | | `vp run fork:ci` | exit 0 | Claude Opus 5.5 in Claude Code. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 20, 2026
…ds in (#N) (#1598) ## Problem `fork:fold` tells a split piece from a squash-landed fixup by the trailing ` (#N)` on its subject. A piece repeats its owner's subject, so an owner such as `fix(server): provider spawns drop another harness identity (#108)` makes its piece look landed. The fold then lists the throwaway piece sha instead of the mover, and `fork:fold prove` refuses the member guard. ## Change `memberLine` checks the repair line under `Squashes:` first: | Fixup member | Renders as | | --- | --- | | carries a repair line | that repair line | | no repair line, ` (#N)` marker | a landed member with its link | | neither | refused, as before | ## Scope and approval Found while splitting movers for #1493, batch B8; the #1591 change introduced the marker test. ## Verification | Check | Result | | --- | --- | | `vp test run scripts/fork-fold.test.ts` | exit 0, 35 tests | | new case without the fix | fails | | `vp lint`, `vp fmt --check` on both files | exit 0, exit 0 | | `vp run fork:ci` | exit 0 | Claude Opus 5.5, Claude Code. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 20, 2026
## Problem `fork:fold apply` refuses any `fixup!` member without a repair line under `Squashes:`, so it cannot fold the 48 `fixup! <owner> (#N)` commits the #1493 pay-down squash-landed on `hyprws`. The sync's own fold places them as `fixup`, which discards each message, so it drops all 48 pull request links; `fork:fold prove` reports `link guard → 48 finding(s)` on that tip. ## Change `memberLine` treats a `fixup!` subject that carries a squash ` (#N)` marker as a landing of its own: it renders as an ordinary member line, so the fold lists its sha and keeps its link. A `fixup!` with neither a repair line nor a squash marker still refuses. ## Scope and approval Part of the authorized #1493 pay-down; keeps the #1491 rule that no fold drops a pull request link. ## Verification | Check | Result | | --- | --- | | `vp test run scripts/fork-fold.test.ts` | 34 passed, including a new squash-landed fixup case | | `fork:fold apply` of a plan joining each fixup to its owner, on `cf2b4926cba` | 200 commits → 152 | | `fork:fold prove origin/hyprws <fold>` | member guard 0, link guard 0, tree-equal, delta and scan exit 0 | | `vp run fork:ci` | exit 0 | Claude Opus 5.5 in Claude Code. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
fork:fold applyrefuses anyfixup!member without a repair line underSquashes:, so it cannot fold the 48fixup! <owner> (#N)commits the #1493 pay-down squash-landed onhyprws.The sync's own fold places them as
fixup, which discards each message, so it drops all 48 pull request links;fork:fold provereportslink guard → 48 finding(s)on that tip.Change
memberLinetreats afixup!subject that carries a squash(#N)marker as a landing of its own: it renders as an ordinary member line, so the fold lists its sha and keeps its link.A
fixup!with neither a repair line nor a squash marker still refuses.Scope and approval
Part of the authorized #1493 pay-down; keeps the #1491 rule that no fold drops a pull request link.
Verification
vp test run scripts/fork-fold.test.tsfork:fold applyof a plan joining each fixup to its owner, oncf2b4926cbafork:fold prove origin/hyprws <fold>vp run fork:ciClaude Opus 5.5 in Claude Code.
Fork trailers
Fork-Domain: fork-meta
Fork-Tier: core
Fork-Upstreamable: no