Repository navigation
fix(fork): a sync fold keeps the squash-landed fixup's PR link - #1620
Merged
Merged
Conversation
The sync rebase folded each fixup! <subject> (#N) with git's fixup action, dropping the link the marker carried. The sequence editor now appends one exec per owner that amends the folded message with the Squashes: rendering fork:fold writes, and the rebase refuses a rebased tip whose link guard finds a dropped link (#1592). Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no
donjor
force-pushed
the
fix/sync-fold-keeps-fixup-link
branch
2 times, most recently
from
October 4, 2026 07:54
9c52168 to
3084858
Compare
donjor
pushed a commit
that referenced
this pull request
Oct 4, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## Problem The sync rebase folds a squash-landed `fixup! <owner subject> (#N)` into its owner as git's `fixup`, which keeps only the owner's message. So `(#N)` is lost, breaking the #1491 rule that every PR link survives every fold. ## Change 1. Sync renders each folded owner's message first 2. Adds the `Squashes:` list `fork:fold` writes 3. Lists each fixup's PR link there 4. Keeps trailers verbatim, `Co-authored-by:` too 5. Sequence editor amends the owner with it 6. Link guard refuses a tip that lost a link A fixup citing no PR still folds as plain git `fixup`, its owner's message untouched. `fork-sync.md` now names this as the sync's only reword. **Guard scope:** it also refuses a sync where git silently drops a linked fork commit. That matches the sync's rule that it never drops a commit. ## Scope and approval Closes #1592. - [ ] **Sync:** a folded `fixup! <subject> (#N)` keeps RSI-Software/t3code-hyprws#N on the owner's message - [ ] **Guard:** the sync refuses a rebased tip that drops a PR link ## Verification | test | result | | --- | --- | | Fold of `fixup! … (#1600)` | link kept as member line, trailers verbatim | | Tip with the link dropped | refused | | Real rebased tip | passes the guard | | command | exit | | --- | --- | | `vp test run`, 3 touched test files, 127 tests | 0 | | scripts `tsc --noEmit` | 0 | | `vp run fork:ci`, scripts 739 tests | 0 | Not run: a real sync with a linked fixup on trunk; the next one proves it. Claude Opus 5.5 in Claude Code, inside T3 Code; implemented by a Pi child agent. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no <!-- gh-bot:attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"fix/sync-fold-keeps-fixup-link@9c52168","build":"252611418","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"da5d3d04239a"}],"ts":"2026-10-04T03:13:16Z"} -->
donjor
pushed a commit
that referenced
this pull request
Oct 4, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## Problem The sync rebase folds a squash-landed `fixup! <owner subject> (#N)` into its owner as git's `fixup`, which keeps only the owner's message. So `(#N)` is lost, breaking the #1491 rule that every PR link survives every fold. ## Change 1. Sync renders each folded owner's message first 2. Adds the `Squashes:` list `fork:fold` writes 3. Lists each fixup's PR link there 4. Keeps trailers verbatim, `Co-authored-by:` too 5. Sequence editor amends the owner with it 6. Link guard refuses a tip that lost a link A fixup citing no PR still folds as plain git `fixup`, its owner's message untouched. `fork-sync.md` now names this as the sync's only reword. **Guard scope:** it also refuses a sync where git silently drops a linked fork commit. That matches the sync's rule that it never drops a commit. ## Scope and approval Closes #1592. - [ ] **Sync:** a folded `fixup! <subject> (#N)` keeps RSI-Software/t3code-hyprws#N on the owner's message - [ ] **Guard:** the sync refuses a rebased tip that drops a PR link ## Verification | test | result | | --- | --- | | Fold of `fixup! … (#1600)` | link kept as member line, trailers verbatim | | Tip with the link dropped | refused | | Real rebased tip | passes the guard | | command | exit | | --- | --- | | `vp test run`, 3 touched test files, 127 tests | 0 | | scripts `tsc --noEmit` | 0 | | `vp run fork:ci`, scripts 739 tests | 0 | Not run: a real sync with a linked fixup on trunk; the next one proves it. Claude Opus 5.5 in Claude Code, inside T3 Code; implemented by a Pi child agent. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no <!-- gh-bot:attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"fix/sync-fold-keeps-fixup-link@9c52168","build":"252611418","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"da5d3d04239a"}],"ts":"2026-10-04T03:13:16Z"} -->
donjor
pushed a commit
that referenced
this pull request
Oct 4, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## Problem The sync rebase folds a squash-landed `fixup! <owner subject> (#N)` into its owner as git's `fixup`, which keeps only the owner's message. So `(#N)` is lost, breaking the #1491 rule that every PR link survives every fold. ## Change 1. Sync renders each folded owner's message first 2. Adds the `Squashes:` list `fork:fold` writes 3. Lists each fixup's PR link there 4. Keeps trailers verbatim, `Co-authored-by:` too 5. Sequence editor amends the owner with it 6. Link guard refuses a tip that lost a link A fixup citing no PR still folds as plain git `fixup`, its owner's message untouched. `fork-sync.md` now names this as the sync's only reword. **Guard scope:** it also refuses a sync where git silently drops a linked fork commit. That matches the sync's rule that it never drops a commit. ## Scope and approval Closes #1592. - [ ] **Sync:** a folded `fixup! <subject> (#N)` keeps RSI-Software/t3code-hyprws#N on the owner's message - [ ] **Guard:** the sync refuses a rebased tip that drops a PR link ## Verification | test | result | | --- | --- | | Fold of `fixup! … (#1600)` | link kept as member line, trailers verbatim | | Tip with the link dropped | refused | | Real rebased tip | passes the guard | | command | exit | | --- | --- | | `vp test run`, 3 touched test files, 127 tests | 0 | | scripts `tsc --noEmit` | 0 | | `vp run fork:ci`, scripts 739 tests | 0 | Not run: a real sync with a linked fixup on trunk; the next one proves it. Claude Opus 5.5 in Claude Code, inside T3 Code; implemented by a Pi child agent. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no <!-- gh-bot:attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"fix/sync-fold-keeps-fixup-link@9c52168","build":"252611418","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"da5d3d04239a"}],"ts":"2026-10-04T03:13:16Z"} -->
donjor
pushed a commit
that referenced
this pull request
Oct 6, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## Problem The sync rebase folds a squash-landed `fixup! <owner subject> (#N)` into its owner as git's `fixup`, which keeps only the owner's message. So `(#N)` is lost, breaking the #1491 rule that every PR link survives every fold. ## Change 1. Sync renders each folded owner's message first 2. Adds the `Squashes:` list `fork:fold` writes 3. Lists each fixup's PR link there 4. Keeps trailers verbatim, `Co-authored-by:` too 5. Sequence editor amends the owner with it 6. Link guard refuses a tip that lost a link A fixup citing no PR still folds as plain git `fixup`, its owner's message untouched. `fork-sync.md` now names this as the sync's only reword. **Guard scope:** it also refuses a sync where git silently drops a linked fork commit. That matches the sync's rule that it never drops a commit. ## Scope and approval Closes #1592. - [ ] **Sync:** a folded `fixup! <subject> (#N)` keeps RSI-Software/t3code-hyprws#N on the owner's message - [ ] **Guard:** the sync refuses a rebased tip that drops a PR link ## Verification | test | result | | --- | --- | | Fold of `fixup! … (#1600)` | link kept as member line, trailers verbatim | | Tip with the link dropped | refused | | Real rebased tip | passes the guard | | command | exit | | --- | --- | | `vp test run`, 3 touched test files, 127 tests | 0 | | scripts `tsc --noEmit` | 0 | | `vp run fork:ci`, scripts 739 tests | 0 | Not run: a real sync with a linked fixup on trunk; the next one proves it. Claude Opus 5.5 in Claude Code, inside T3 Code; implemented by a Pi child agent. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no <!-- gh-bot:attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"fix/sync-fold-keeps-fixup-link@9c52168","build":"252611418","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"da5d3d04239a"}],"ts":"2026-10-04T03:13:16Z"} -->
donjor
pushed a commit
that referenced
this pull request
Oct 6, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## Problem The sync rebase folds a squash-landed `fixup! <owner subject> (#N)` into its owner as git's `fixup`, which keeps only the owner's message. So `(#N)` is lost, breaking the #1491 rule that every PR link survives every fold. ## Change 1. Sync renders each folded owner's message first 2. Adds the `Squashes:` list `fork:fold` writes 3. Lists each fixup's PR link there 4. Keeps trailers verbatim, `Co-authored-by:` too 5. Sequence editor amends the owner with it 6. Link guard refuses a tip that lost a link A fixup citing no PR still folds as plain git `fixup`, its owner's message untouched. `fork-sync.md` now names this as the sync's only reword. **Guard scope:** it also refuses a sync where git silently drops a linked fork commit. That matches the sync's rule that it never drops a commit. ## Scope and approval Closes #1592. - [ ] **Sync:** a folded `fixup! <subject> (#N)` keeps RSI-Software/t3code-hyprws#N on the owner's message - [ ] **Guard:** the sync refuses a rebased tip that drops a PR link ## Verification | test | result | | --- | --- | | Fold of `fixup! … (#1600)` | link kept as member line, trailers verbatim | | Tip with the link dropped | refused | | Real rebased tip | passes the guard | | command | exit | | --- | --- | | `vp test run`, 3 touched test files, 127 tests | 0 | | scripts `tsc --noEmit` | 0 | | `vp run fork:ci`, scripts 739 tests | 0 | Not run: a real sync with a linked fixup on trunk; the next one proves it. Claude Opus 5.5 in Claude Code, inside T3 Code; implemented by a Pi child agent. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no <!-- gh-bot:attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"fix/sync-fold-keeps-fixup-link@9c52168","build":"252611418","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"da5d3d04239a"}],"ts":"2026-10-04T03:13:16Z"} -->
donjor
pushed a commit
that referenced
this pull request
Oct 8, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## Problem The sync rebase folds a squash-landed `fixup! <owner subject> (#N)` into its owner as git's `fixup`, which keeps only the owner's message. So `(#N)` is lost, breaking the #1491 rule that every PR link survives every fold. ## Change 1. Sync renders each folded owner's message first 2. Adds the `Squashes:` list `fork:fold` writes 3. Lists each fixup's PR link there 4. Keeps trailers verbatim, `Co-authored-by:` too 5. Sequence editor amends the owner with it 6. Link guard refuses a tip that lost a link A fixup citing no PR still folds as plain git `fixup`, its owner's message untouched. `fork-sync.md` now names this as the sync's only reword. **Guard scope:** it also refuses a sync where git silently drops a linked fork commit. That matches the sync's rule that it never drops a commit. ## Scope and approval Closes #1592. - [ ] **Sync:** a folded `fixup! <subject> (#N)` keeps RSI-Software/t3code-hyprws#N on the owner's message - [ ] **Guard:** the sync refuses a rebased tip that drops a PR link ## Verification | test | result | | --- | --- | | Fold of `fixup! … (#1600)` | link kept as member line, trailers verbatim | | Tip with the link dropped | refused | | Real rebased tip | passes the guard | | command | exit | | --- | --- | | `vp test run`, 3 touched test files, 127 tests | 0 | | scripts `tsc --noEmit` | 0 | | `vp run fork:ci`, scripts 739 tests | 0 | Not run: a real sync with a linked fixup on trunk; the next one proves it. Claude Opus 5.5 in Claude Code, inside T3 Code; implemented by a Pi child agent. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no <!-- gh-bot:attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"fix/sync-fold-keeps-fixup-link@9c52168","build":"252611418","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"da5d3d04239a"}],"ts":"2026-10-04T03:13:16Z"} -->
donjor
pushed a commit
that referenced
this pull request
Oct 10, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## Problem The sync rebase folds a squash-landed `fixup! <owner subject> (#N)` into its owner as git's `fixup`, which keeps only the owner's message. So `(#N)` is lost, breaking the #1491 rule that every PR link survives every fold. ## Change 1. Sync renders each folded owner's message first 2. Adds the `Squashes:` list `fork:fold` writes 3. Lists each fixup's PR link there 4. Keeps trailers verbatim, `Co-authored-by:` too 5. Sequence editor amends the owner with it 6. Link guard refuses a tip that lost a link A fixup citing no PR still folds as plain git `fixup`, its owner's message untouched. `fork-sync.md` now names this as the sync's only reword. **Guard scope:** it also refuses a sync where git silently drops a linked fork commit. That matches the sync's rule that it never drops a commit. ## Scope and approval Closes #1592. - [ ] **Sync:** a folded `fixup! <subject> (#N)` keeps RSI-Software/t3code-hyprws#N on the owner's message - [ ] **Guard:** the sync refuses a rebased tip that drops a PR link ## Verification | test | result | | --- | --- | | Fold of `fixup! … (#1600)` | link kept as member line, trailers verbatim | | Tip with the link dropped | refused | | Real rebased tip | passes the guard | | command | exit | | --- | --- | | `vp test run`, 3 touched test files, 127 tests | 0 | | scripts `tsc --noEmit` | 0 | | `vp run fork:ci`, scripts 739 tests | 0 | Not run: a real sync with a linked fixup on trunk; the next one proves it. Claude Opus 5.5 in Claude Code, inside T3 Code; implemented by a Pi child agent. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no <!-- gh-bot:attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"fix/sync-fold-keeps-fixup-link@9c52168","build":"252611418","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"da5d3d04239a"}],"ts":"2026-10-04T03:13:16Z"} -->
donjor
pushed a commit
that referenced
this pull request
Oct 10, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## Problem The sync rebase folds a squash-landed `fixup! <owner subject> (#N)` into its owner as git's `fixup`, which keeps only the owner's message. So `(#N)` is lost, breaking the #1491 rule that every PR link survives every fold. ## Change 1. Sync renders each folded owner's message first 2. Adds the `Squashes:` list `fork:fold` writes 3. Lists each fixup's PR link there 4. Keeps trailers verbatim, `Co-authored-by:` too 5. Sequence editor amends the owner with it 6. Link guard refuses a tip that lost a link A fixup citing no PR still folds as plain git `fixup`, its owner's message untouched. `fork-sync.md` now names this as the sync's only reword. **Guard scope:** it also refuses a sync where git silently drops a linked fork commit. That matches the sync's rule that it never drops a commit. ## Scope and approval Closes #1592. - [ ] **Sync:** a folded `fixup! <subject> (#N)` keeps RSI-Software/t3code-hyprws#N on the owner's message - [ ] **Guard:** the sync refuses a rebased tip that drops a PR link ## Verification | test | result | | --- | --- | | Fold of `fixup! … (#1600)` | link kept as member line, trailers verbatim | | Tip with the link dropped | refused | | Real rebased tip | passes the guard | | command | exit | | --- | --- | | `vp test run`, 3 touched test files, 127 tests | 0 | | scripts `tsc --noEmit` | 0 | | `vp run fork:ci`, scripts 739 tests | 0 | Not run: a real sync with a linked fixup on trunk; the next one proves it. Claude Opus 5.5 in Claude Code, inside T3 Code; implemented by a Pi child agent. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no <!-- gh-bot:attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"fix/sync-fold-keeps-fixup-link@9c52168","build":"252611418","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"da5d3d04239a"}],"ts":"2026-10-04T03:13:16Z"} -->
donjor
pushed a commit
that referenced
this pull request
Oct 10, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## Problem The sync rebase folds a squash-landed `fixup! <owner subject> (#N)` into its owner as git's `fixup`, which keeps only the owner's message. So `(#N)` is lost, breaking the #1491 rule that every PR link survives every fold. ## Change 1. Sync renders each folded owner's message first 2. Adds the `Squashes:` list `fork:fold` writes 3. Lists each fixup's PR link there 4. Keeps trailers verbatim, `Co-authored-by:` too 5. Sequence editor amends the owner with it 6. Link guard refuses a tip that lost a link A fixup citing no PR still folds as plain git `fixup`, its owner's message untouched. `fork-sync.md` now names this as the sync's only reword. **Guard scope:** it also refuses a sync where git silently drops a linked fork commit. That matches the sync's rule that it never drops a commit. ## Scope and approval Closes #1592. - [ ] **Sync:** a folded `fixup! <subject> (#N)` keeps RSI-Software/t3code-hyprws#N on the owner's message - [ ] **Guard:** the sync refuses a rebased tip that drops a PR link ## Verification | test | result | | --- | --- | | Fold of `fixup! … (#1600)` | link kept as member line, trailers verbatim | | Tip with the link dropped | refused | | Real rebased tip | passes the guard | | command | exit | | --- | --- | | `vp test run`, 3 touched test files, 127 tests | 0 | | scripts `tsc --noEmit` | 0 | | `vp run fork:ci`, scripts 739 tests | 0 | Not run: a real sync with a linked fixup on trunk; the next one proves it. Claude Opus 5.5 in Claude Code, inside T3 Code; implemented by a Pi child agent. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no <!-- gh-bot:attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"fix/sync-fold-keeps-fixup-link@9c52168","build":"252611418","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"da5d3d04239a"}],"ts":"2026-10-04T03:13:16Z"} -->
donjor
pushed a commit
that referenced
this pull request
Oct 11, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## Problem The sync rebase folds a squash-landed `fixup! <owner subject> (#N)` into its owner as git's `fixup`, which keeps only the owner's message. So `(#N)` is lost, breaking the #1491 rule that every PR link survives every fold. ## Change 1. Sync renders each folded owner's message first 2. Adds the `Squashes:` list `fork:fold` writes 3. Lists each fixup's PR link there 4. Keeps trailers verbatim, `Co-authored-by:` too 5. Sequence editor amends the owner with it 6. Link guard refuses a tip that lost a link A fixup citing no PR still folds as plain git `fixup`, its owner's message untouched. `fork-sync.md` now names this as the sync's only reword. **Guard scope:** it also refuses a sync where git silently drops a linked fork commit. That matches the sync's rule that it never drops a commit. ## Scope and approval Closes #1592. - [ ] **Sync:** a folded `fixup! <subject> (#N)` keeps RSI-Software/t3code-hyprws#N on the owner's message - [ ] **Guard:** the sync refuses a rebased tip that drops a PR link ## Verification | test | result | | --- | --- | | Fold of `fixup! … (#1600)` | link kept as member line, trailers verbatim | | Tip with the link dropped | refused | | Real rebased tip | passes the guard | | command | exit | | --- | --- | | `vp test run`, 3 touched test files, 127 tests | 0 | | scripts `tsc --noEmit` | 0 | | `vp run fork:ci`, scripts 739 tests | 0 | Not run: a real sync with a linked fixup on trunk; the next one proves it. Claude Opus 5.5 in Claude Code, inside T3 Code; implemented by a Pi child agent. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no <!-- gh-bot:attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"fix/sync-fold-keeps-fixup-link@9c52168","build":"252611418","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"da5d3d04239a"}],"ts":"2026-10-04T03:13:16Z"} -->
donjor
pushed a commit
that referenced
this pull request
Oct 11, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## Problem The sync rebase folds a squash-landed `fixup! <owner subject> (#N)` into its owner as git's `fixup`, which keeps only the owner's message. So `(#N)` is lost, breaking the #1491 rule that every PR link survives every fold. ## Change 1. Sync renders each folded owner's message first 2. Adds the `Squashes:` list `fork:fold` writes 3. Lists each fixup's PR link there 4. Keeps trailers verbatim, `Co-authored-by:` too 5. Sequence editor amends the owner with it 6. Link guard refuses a tip that lost a link A fixup citing no PR still folds as plain git `fixup`, its owner's message untouched. `fork-sync.md` now names this as the sync's only reword. **Guard scope:** it also refuses a sync where git silently drops a linked fork commit. That matches the sync's rule that it never drops a commit. ## Scope and approval Closes #1592. - [ ] **Sync:** a folded `fixup! <subject> (#N)` keeps RSI-Software/t3code-hyprws#N on the owner's message - [ ] **Guard:** the sync refuses a rebased tip that drops a PR link ## Verification | test | result | | --- | --- | | Fold of `fixup! … (#1600)` | link kept as member line, trailers verbatim | | Tip with the link dropped | refused | | Real rebased tip | passes the guard | | command | exit | | --- | --- | | `vp test run`, 3 touched test files, 127 tests | 0 | | scripts `tsc --noEmit` | 0 | | `vp run fork:ci`, scripts 739 tests | 0 | Not run: a real sync with a linked fixup on trunk; the next one proves it. Claude Opus 5.5 in Claude Code, inside T3 Code; implemented by a Pi child agent. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no <!-- gh-bot:attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"fix/sync-fold-keeps-fixup-link@9c52168","build":"252611418","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"da5d3d04239a"}],"ts":"2026-10-04T03:13:16Z"} -->
donjor
pushed a commit
that referenced
this pull request
Oct 12, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## Problem The sync rebase folds a squash-landed `fixup! <owner subject> (#N)` into its owner as git's `fixup`, which keeps only the owner's message. So `(#N)` is lost, breaking the #1491 rule that every PR link survives every fold. ## Change 1. Sync renders each folded owner's message first 2. Adds the `Squashes:` list `fork:fold` writes 3. Lists each fixup's PR link there 4. Keeps trailers verbatim, `Co-authored-by:` too 5. Sequence editor amends the owner with it 6. Link guard refuses a tip that lost a link A fixup citing no PR still folds as plain git `fixup`, its owner's message untouched. `fork-sync.md` now names this as the sync's only reword. **Guard scope:** it also refuses a sync where git silently drops a linked fork commit. That matches the sync's rule that it never drops a commit. ## Scope and approval Closes #1592. - [ ] **Sync:** a folded `fixup! <subject> (#N)` keeps RSI-Software/t3code-hyprws#N on the owner's message - [ ] **Guard:** the sync refuses a rebased tip that drops a PR link ## Verification | test | result | | --- | --- | | Fold of `fixup! … (#1600)` | link kept as member line, trailers verbatim | | Tip with the link dropped | refused | | Real rebased tip | passes the guard | | command | exit | | --- | --- | | `vp test run`, 3 touched test files, 127 tests | 0 | | scripts `tsc --noEmit` | 0 | | `vp run fork:ci`, scripts 739 tests | 0 | Not run: a real sync with a linked fixup on trunk; the next one proves it. Claude Opus 5.5 in Claude Code, inside T3 Code; implemented by a Pi child agent. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no <!-- gh-bot:attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"fix/sync-fold-keeps-fixup-link@9c52168","build":"252611418","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"da5d3d04239a"}],"ts":"2026-10-04T03:13:16Z"} -->
donjor
pushed a commit
that referenced
this pull request
Oct 12, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## Problem The sync rebase folds a squash-landed `fixup! <owner subject> (#N)` into its owner as git's `fixup`, which keeps only the owner's message. So `(#N)` is lost, breaking the #1491 rule that every PR link survives every fold. ## Change 1. Sync renders each folded owner's message first 2. Adds the `Squashes:` list `fork:fold` writes 3. Lists each fixup's PR link there 4. Keeps trailers verbatim, `Co-authored-by:` too 5. Sequence editor amends the owner with it 6. Link guard refuses a tip that lost a link A fixup citing no PR still folds as plain git `fixup`, its owner's message untouched. `fork-sync.md` now names this as the sync's only reword. **Guard scope:** it also refuses a sync where git silently drops a linked fork commit. That matches the sync's rule that it never drops a commit. ## Scope and approval Closes #1592. - [ ] **Sync:** a folded `fixup! <subject> (#N)` keeps RSI-Software/t3code-hyprws#N on the owner's message - [ ] **Guard:** the sync refuses a rebased tip that drops a PR link ## Verification | test | result | | --- | --- | | Fold of `fixup! … (#1600)` | link kept as member line, trailers verbatim | | Tip with the link dropped | refused | | Real rebased tip | passes the guard | | command | exit | | --- | --- | | `vp test run`, 3 touched test files, 127 tests | 0 | | scripts `tsc --noEmit` | 0 | | `vp run fork:ci`, scripts 739 tests | 0 | Not run: a real sync with a linked fixup on trunk; the next one proves it. Claude Opus 5.5 in Claude Code, inside T3 Code; implemented by a Pi child agent. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no <!-- gh-bot:attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"fix/sync-fold-keeps-fixup-link@9c52168","build":"252611418","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"da5d3d04239a"}],"ts":"2026-10-04T03:13:16Z"} -->
donjor
pushed a commit
that referenced
this pull request
Oct 13, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## Problem The sync rebase folds a squash-landed `fixup! <owner subject> (#N)` into its owner as git's `fixup`, which keeps only the owner's message. So `(#N)` is lost, breaking the #1491 rule that every PR link survives every fold. ## Change 1. Sync renders each folded owner's message first 2. Adds the `Squashes:` list `fork:fold` writes 3. Lists each fixup's PR link there 4. Keeps trailers verbatim, `Co-authored-by:` too 5. Sequence editor amends the owner with it 6. Link guard refuses a tip that lost a link A fixup citing no PR still folds as plain git `fixup`, its owner's message untouched. `fork-sync.md` now names this as the sync's only reword. **Guard scope:** it also refuses a sync where git silently drops a linked fork commit. That matches the sync's rule that it never drops a commit. ## Scope and approval Closes #1592. - [ ] **Sync:** a folded `fixup! <subject> (#N)` keeps RSI-Software/t3code-hyprws#N on the owner's message - [ ] **Guard:** the sync refuses a rebased tip that drops a PR link ## Verification | test | result | | --- | --- | | Fold of `fixup! … (#1600)` | link kept as member line, trailers verbatim | | Tip with the link dropped | refused | | Real rebased tip | passes the guard | | command | exit | | --- | --- | | `vp test run`, 3 touched test files, 127 tests | 0 | | scripts `tsc --noEmit` | 0 | | `vp run fork:ci`, scripts 739 tests | 0 | Not run: a real sync with a linked fixup on trunk; the next one proves it. Claude Opus 5.5 in Claude Code, inside T3 Code; implemented by a Pi child agent. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no <!-- gh-bot:attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"fix/sync-fold-keeps-fixup-link@9c52168","build":"252611418","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"da5d3d04239a"}],"ts":"2026-10-04T03:13:16Z"} -->
donjor
pushed a commit
that referenced
this pull request
Oct 15, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## Problem The sync rebase folds a squash-landed `fixup! <owner subject> (#N)` into its owner as git's `fixup`, which keeps only the owner's message. So `(#N)` is lost, breaking the #1491 rule that every PR link survives every fold. ## Change 1. Sync renders each folded owner's message first 2. Adds the `Squashes:` list `fork:fold` writes 3. Lists each fixup's PR link there 4. Keeps trailers verbatim, `Co-authored-by:` too 5. Sequence editor amends the owner with it 6. Link guard refuses a tip that lost a link A fixup citing no PR still folds as plain git `fixup`, its owner's message untouched. `fork-sync.md` now names this as the sync's only reword. **Guard scope:** it also refuses a sync where git silently drops a linked fork commit. That matches the sync's rule that it never drops a commit. ## Scope and approval Closes #1592. - [ ] **Sync:** a folded `fixup! <subject> (#N)` keeps RSI-Software/t3code-hyprws#N on the owner's message - [ ] **Guard:** the sync refuses a rebased tip that drops a PR link ## Verification | test | result | | --- | --- | | Fold of `fixup! … (#1600)` | link kept as member line, trailers verbatim | | Tip with the link dropped | refused | | Real rebased tip | passes the guard | | command | exit | | --- | --- | | `vp test run`, 3 touched test files, 127 tests | 0 | | scripts `tsc --noEmit` | 0 | | `vp run fork:ci`, scripts 739 tests | 0 | Not run: a real sync with a linked fixup on trunk; the next one proves it. Claude Opus 5.5 in Claude Code, inside T3 Code; implemented by a Pi child agent. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no <!-- gh-bot:attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"fix/sync-fold-keeps-fixup-link@9c52168","build":"252611418","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"da5d3d04239a"}],"ts":"2026-10-04T03:13:16Z"} -->
donjor
pushed a commit
that referenced
this pull request
Oct 15, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## Problem The sync rebase folds a squash-landed `fixup! <owner subject> (#N)` into its owner as git's `fixup`, which keeps only the owner's message. So `(#N)` is lost, breaking the #1491 rule that every PR link survives every fold. ## Change 1. Sync renders each folded owner's message first 2. Adds the `Squashes:` list `fork:fold` writes 3. Lists each fixup's PR link there 4. Keeps trailers verbatim, `Co-authored-by:` too 5. Sequence editor amends the owner with it 6. Link guard refuses a tip that lost a link A fixup citing no PR still folds as plain git `fixup`, its owner's message untouched. `fork-sync.md` now names this as the sync's only reword. **Guard scope:** it also refuses a sync where git silently drops a linked fork commit. That matches the sync's rule that it never drops a commit. ## Scope and approval Closes #1592. - [ ] **Sync:** a folded `fixup! <subject> (#N)` keeps RSI-Software/t3code-hyprws#N on the owner's message - [ ] **Guard:** the sync refuses a rebased tip that drops a PR link ## Verification | test | result | | --- | --- | | Fold of `fixup! … (#1600)` | link kept as member line, trailers verbatim | | Tip with the link dropped | refused | | Real rebased tip | passes the guard | | command | exit | | --- | --- | | `vp test run`, 3 touched test files, 127 tests | 0 | | scripts `tsc --noEmit` | 0 | | `vp run fork:ci`, scripts 739 tests | 0 | Not run: a real sync with a linked fixup on trunk; the next one proves it. Claude Opus 5.5 in Claude Code, inside T3 Code; implemented by a Pi child agent. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no <!-- gh-bot:attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"fix/sync-fold-keeps-fixup-link@9c52168","build":"252611418","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"da5d3d04239a"}],"ts":"2026-10-04T03:13:16Z"} -->
donjor
pushed a commit
that referenced
this pull request
Oct 16, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## Problem The sync rebase folds a squash-landed `fixup! <owner subject> (#N)` into its owner as git's `fixup`, which keeps only the owner's message. So `(#N)` is lost, breaking the #1491 rule that every PR link survives every fold. ## Change 1. Sync renders each folded owner's message first 2. Adds the `Squashes:` list `fork:fold` writes 3. Lists each fixup's PR link there 4. Keeps trailers verbatim, `Co-authored-by:` too 5. Sequence editor amends the owner with it 6. Link guard refuses a tip that lost a link A fixup citing no PR still folds as plain git `fixup`, its owner's message untouched. `fork-sync.md` now names this as the sync's only reword. **Guard scope:** it also refuses a sync where git silently drops a linked fork commit. That matches the sync's rule that it never drops a commit. ## Scope and approval Closes #1592. - [ ] **Sync:** a folded `fixup! <subject> (#N)` keeps RSI-Software/t3code-hyprws#N on the owner's message - [ ] **Guard:** the sync refuses a rebased tip that drops a PR link ## Verification | test | result | | --- | --- | | Fold of `fixup! … (#1600)` | link kept as member line, trailers verbatim | | Tip with the link dropped | refused | | Real rebased tip | passes the guard | | command | exit | | --- | --- | | `vp test run`, 3 touched test files, 127 tests | 0 | | scripts `tsc --noEmit` | 0 | | `vp run fork:ci`, scripts 739 tests | 0 | Not run: a real sync with a linked fixup on trunk; the next one proves it. Claude Opus 5.5 in Claude Code, inside T3 Code; implemented by a Pi child agent. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no <!-- gh-bot:attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"fix/sync-fold-keeps-fixup-link@9c52168","build":"252611418","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"da5d3d04239a"}],"ts":"2026-10-04T03:13:16Z"} -->
donjor
pushed a commit
that referenced
this pull request
Oct 16, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## Problem The sync rebase folds a squash-landed `fixup! <owner subject> (#N)` into its owner as git's `fixup`, which keeps only the owner's message. So `(#N)` is lost, breaking the #1491 rule that every PR link survives every fold. ## Change 1. Sync renders each folded owner's message first 2. Adds the `Squashes:` list `fork:fold` writes 3. Lists each fixup's PR link there 4. Keeps trailers verbatim, `Co-authored-by:` too 5. Sequence editor amends the owner with it 6. Link guard refuses a tip that lost a link A fixup citing no PR still folds as plain git `fixup`, its owner's message untouched. `fork-sync.md` now names this as the sync's only reword. **Guard scope:** it also refuses a sync where git silently drops a linked fork commit. That matches the sync's rule that it never drops a commit. ## Scope and approval Closes #1592. - [ ] **Sync:** a folded `fixup! <subject> (#N)` keeps RSI-Software/t3code-hyprws#N on the owner's message - [ ] **Guard:** the sync refuses a rebased tip that drops a PR link ## Verification | test | result | | --- | --- | | Fold of `fixup! … (#1600)` | link kept as member line, trailers verbatim | | Tip with the link dropped | refused | | Real rebased tip | passes the guard | | command | exit | | --- | --- | | `vp test run`, 3 touched test files, 127 tests | 0 | | scripts `tsc --noEmit` | 0 | | `vp run fork:ci`, scripts 739 tests | 0 | Not run: a real sync with a linked fixup on trunk; the next one proves it. Claude Opus 5.5 in Claude Code, inside T3 Code; implemented by a Pi child agent. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no <!-- gh-bot:attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"fix/sync-fold-keeps-fixup-link@9c52168","build":"252611418","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"da5d3d04239a"}],"ts":"2026-10-04T03:13:16Z"} -->
donjor
pushed a commit
that referenced
this pull request
Oct 18, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## Problem The sync rebase folds a squash-landed `fixup! <owner subject> (#N)` into its owner as git's `fixup`, which keeps only the owner's message. So `(#N)` is lost, breaking the #1491 rule that every PR link survives every fold. ## Change 1. Sync renders each folded owner's message first 2. Adds the `Squashes:` list `fork:fold` writes 3. Lists each fixup's PR link there 4. Keeps trailers verbatim, `Co-authored-by:` too 5. Sequence editor amends the owner with it 6. Link guard refuses a tip that lost a link A fixup citing no PR still folds as plain git `fixup`, its owner's message untouched. `fork-sync.md` now names this as the sync's only reword. **Guard scope:** it also refuses a sync where git silently drops a linked fork commit. That matches the sync's rule that it never drops a commit. ## Scope and approval Closes #1592. - [ ] **Sync:** a folded `fixup! <subject> (#N)` keeps RSI-Software/t3code-hyprws#N on the owner's message - [ ] **Guard:** the sync refuses a rebased tip that drops a PR link ## Verification | test | result | | --- | --- | | Fold of `fixup! … (#1600)` | link kept as member line, trailers verbatim | | Tip with the link dropped | refused | | Real rebased tip | passes the guard | | command | exit | | --- | --- | | `vp test run`, 3 touched test files, 127 tests | 0 | | scripts `tsc --noEmit` | 0 | | `vp run fork:ci`, scripts 739 tests | 0 | Not run: a real sync with a linked fixup on trunk; the next one proves it. Claude Opus 5.5 in Claude Code, inside T3 Code; implemented by a Pi child agent. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no <!-- gh-bot:attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"fix/sync-fold-keeps-fixup-link@9c52168","build":"252611418","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"da5d3d04239a"}],"ts":"2026-10-04T03:13:16Z"} -->
donjor
pushed a commit
that referenced
this pull request
Oct 18, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## Problem The sync rebase folds a squash-landed `fixup! <owner subject> (#N)` into its owner as git's `fixup`, which keeps only the owner's message. So `(#N)` is lost, breaking the #1491 rule that every PR link survives every fold. ## Change 1. Sync renders each folded owner's message first 2. Adds the `Squashes:` list `fork:fold` writes 3. Lists each fixup's PR link there 4. Keeps trailers verbatim, `Co-authored-by:` too 5. Sequence editor amends the owner with it 6. Link guard refuses a tip that lost a link A fixup citing no PR still folds as plain git `fixup`, its owner's message untouched. `fork-sync.md` now names this as the sync's only reword. **Guard scope:** it also refuses a sync where git silently drops a linked fork commit. That matches the sync's rule that it never drops a commit. ## Scope and approval Closes #1592. - [ ] **Sync:** a folded `fixup! <subject> (#N)` keeps RSI-Software/t3code-hyprws#N on the owner's message - [ ] **Guard:** the sync refuses a rebased tip that drops a PR link ## Verification | test | result | | --- | --- | | Fold of `fixup! … (#1600)` | link kept as member line, trailers verbatim | | Tip with the link dropped | refused | | Real rebased tip | passes the guard | | command | exit | | --- | --- | | `vp test run`, 3 touched test files, 127 tests | 0 | | scripts `tsc --noEmit` | 0 | | `vp run fork:ci`, scripts 739 tests | 0 | Not run: a real sync with a linked fixup on trunk; the next one proves it. Claude Opus 5.5 in Claude Code, inside T3 Code; implemented by a Pi child agent. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no <!-- gh-bot:attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"fix/sync-fold-keeps-fixup-link@9c52168","build":"252611418","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"da5d3d04239a"}],"ts":"2026-10-04T03:13:16Z"} -->
donjor
pushed a commit
that referenced
this pull request
Oct 18, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## Problem The sync rebase folds a squash-landed `fixup! <owner subject> (#N)` into its owner as git's `fixup`, which keeps only the owner's message. So `(#N)` is lost, breaking the #1491 rule that every PR link survives every fold. ## Change 1. Sync renders each folded owner's message first 2. Adds the `Squashes:` list `fork:fold` writes 3. Lists each fixup's PR link there 4. Keeps trailers verbatim, `Co-authored-by:` too 5. Sequence editor amends the owner with it 6. Link guard refuses a tip that lost a link A fixup citing no PR still folds as plain git `fixup`, its owner's message untouched. `fork-sync.md` now names this as the sync's only reword. **Guard scope:** it also refuses a sync where git silently drops a linked fork commit. That matches the sync's rule that it never drops a commit. ## Scope and approval Closes #1592. - [ ] **Sync:** a folded `fixup! <subject> (#N)` keeps RSI-Software/t3code-hyprws#N on the owner's message - [ ] **Guard:** the sync refuses a rebased tip that drops a PR link ## Verification | test | result | | --- | --- | | Fold of `fixup! … (#1600)` | link kept as member line, trailers verbatim | | Tip with the link dropped | refused | | Real rebased tip | passes the guard | | command | exit | | --- | --- | | `vp test run`, 3 touched test files, 127 tests | 0 | | scripts `tsc --noEmit` | 0 | | `vp run fork:ci`, scripts 739 tests | 0 | Not run: a real sync with a linked fixup on trunk; the next one proves it. Claude Opus 5.5 in Claude Code, inside T3 Code; implemented by a Pi child agent. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no <!-- gh-bot:attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"fix/sync-fold-keeps-fixup-link@9c52168","build":"252611418","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"da5d3d04239a"}],"ts":"2026-10-04T03:13:16Z"} -->
donjor
pushed a commit
that referenced
this pull request
Oct 19, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## Problem The sync rebase folds a squash-landed `fixup! <owner subject> (#N)` into its owner as git's `fixup`, which keeps only the owner's message. So `(#N)` is lost, breaking the #1491 rule that every PR link survives every fold. ## Change 1. Sync renders each folded owner's message first 2. Adds the `Squashes:` list `fork:fold` writes 3. Lists each fixup's PR link there 4. Keeps trailers verbatim, `Co-authored-by:` too 5. Sequence editor amends the owner with it 6. Link guard refuses a tip that lost a link A fixup citing no PR still folds as plain git `fixup`, its owner's message untouched. `fork-sync.md` now names this as the sync's only reword. **Guard scope:** it also refuses a sync where git silently drops a linked fork commit. That matches the sync's rule that it never drops a commit. ## Scope and approval Closes #1592. - [ ] **Sync:** a folded `fixup! <subject> (#N)` keeps RSI-Software/t3code-hyprws#N on the owner's message - [ ] **Guard:** the sync refuses a rebased tip that drops a PR link ## Verification | test | result | | --- | --- | | Fold of `fixup! … (#1600)` | link kept as member line, trailers verbatim | | Tip with the link dropped | refused | | Real rebased tip | passes the guard | | command | exit | | --- | --- | | `vp test run`, 3 touched test files, 127 tests | 0 | | scripts `tsc --noEmit` | 0 | | `vp run fork:ci`, scripts 739 tests | 0 | Not run: a real sync with a linked fixup on trunk; the next one proves it. Claude Opus 5.5 in Claude Code, inside T3 Code; implemented by a Pi child agent. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no <!-- gh-bot:attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"fix/sync-fold-keeps-fixup-link@9c52168","build":"252611418","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"da5d3d04239a"}],"ts":"2026-10-04T03:13:16Z"} -->
donjor
pushed a commit
that referenced
this pull request
Oct 20, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## Problem The sync rebase folds a squash-landed `fixup! <owner subject> (#N)` into its owner as git's `fixup`, which keeps only the owner's message. So `(#N)` is lost, breaking the #1491 rule that every PR link survives every fold. ## Change 1. Sync renders each folded owner's message first 2. Adds the `Squashes:` list `fork:fold` writes 3. Lists each fixup's PR link there 4. Keeps trailers verbatim, `Co-authored-by:` too 5. Sequence editor amends the owner with it 6. Link guard refuses a tip that lost a link A fixup citing no PR still folds as plain git `fixup`, its owner's message untouched. `fork-sync.md` now names this as the sync's only reword. **Guard scope:** it also refuses a sync where git silently drops a linked fork commit. That matches the sync's rule that it never drops a commit. ## Scope and approval Closes #1592. - [ ] **Sync:** a folded `fixup! <subject> (#N)` keeps RSI-Software/t3code-hyprws#N on the owner's message - [ ] **Guard:** the sync refuses a rebased tip that drops a PR link ## Verification | test | result | | --- | --- | | Fold of `fixup! … (#1600)` | link kept as member line, trailers verbatim | | Tip with the link dropped | refused | | Real rebased tip | passes the guard | | command | exit | | --- | --- | | `vp test run`, 3 touched test files, 127 tests | 0 | | scripts `tsc --noEmit` | 0 | | `vp run fork:ci`, scripts 739 tests | 0 | Not run: a real sync with a linked fixup on trunk; the next one proves it. Claude Opus 5.5 in Claude Code, inside T3 Code; implemented by a Pi child agent. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no <!-- gh-bot:attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"fix/sync-fold-keeps-fixup-link@9c52168","build":"252611418","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"da5d3d04239a"}],"ts":"2026-10-04T03:13:16Z"} -->
donjor
added a commit
that referenced
this pull request
Oct 20, 2026
## Problem The sync to `v0.1.1-nightly.20261020.3386` fails after a clean rebase: ```text the rebased tip dropped 1 pull request link(s): #1801: cited by fe075c9 ..., by no new commit ``` #1801 backported upstream `2532e64099` exactly; both share patch-id `4221c8a56228`. The rebase drops it correctly, as its body said it would. The link guard from #1620 has no exemption for that drop, so no sync can pass. ## Change `refuseDroppedLinks` skips old commits that `git cherry <target> <old>` marks `-`, meaning the target already carries the patch. Every other dropped link still refuses. ## Scope and approval Maintainer-authorized: unblocks the requested fork sync. ## Verification | Check | Result | | --- | --- | | New test, without fix | fails | | New test, with fix | passes | | `scripts/fork-sync.test.ts` | 69 passed | | Guard on the real sync shas | passes | | `vp run fork:ci` | exit 0 | Written by Claude Opus 5.5 in Claude Code, hosted by T3 Code. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: bugfix Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
pushed a commit
that referenced
this pull request
Oct 21, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## Problem The sync rebase folds a squash-landed `fixup! <owner subject> (#N)` into its owner as git's `fixup`, which keeps only the owner's message. So `(#N)` is lost, breaking the #1491 rule that every PR link survives every fold. ## Change 1. Sync renders each folded owner's message first 2. Adds the `Squashes:` list `fork:fold` writes 3. Lists each fixup's PR link there 4. Keeps trailers verbatim, `Co-authored-by:` too 5. Sequence editor amends the owner with it 6. Link guard refuses a tip that lost a link A fixup citing no PR still folds as plain git `fixup`, its owner's message untouched. `fork-sync.md` now names this as the sync's only reword. **Guard scope:** it also refuses a sync where git silently drops a linked fork commit. That matches the sync's rule that it never drops a commit. ## Scope and approval Closes #1592. - [ ] **Sync:** a folded `fixup! <subject> (#N)` keeps RSI-Software/t3code-hyprws#N on the owner's message - [ ] **Guard:** the sync refuses a rebased tip that drops a PR link ## Verification | test | result | | --- | --- | | Fold of `fixup! … (#1600)` | link kept as member line, trailers verbatim | | Tip with the link dropped | refused | | Real rebased tip | passes the guard | | command | exit | | --- | --- | | `vp test run`, 3 touched test files, 127 tests | 0 | | scripts `tsc --noEmit` | 0 | | `vp run fork:ci`, scripts 739 tests | 0 | Not run: a real sync with a linked fixup on trunk; the next one proves it. Claude Opus 5.5 in Claude Code, inside T3 Code; implemented by a Pi child agent. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no <!-- gh-bot:attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"fix/sync-fold-keeps-fixup-link@9c52168","build":"252611418","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"da5d3d04239a"}],"ts":"2026-10-04T03:13:16Z"} -->
donjor
added a commit
that referenced
this pull request
Oct 21, 2026
## Problem The sync to `v0.1.1-nightly.20261020.3386` fails after a clean rebase: ```text the rebased tip dropped 1 pull request link(s): #1801: cited by fe075c9 ..., by no new commit ``` #1801 backported upstream `2532e64099` exactly; both share patch-id `4221c8a56228`. The rebase drops it correctly, as its body said it would. The link guard from #1620 has no exemption for that drop, so no sync can pass. ## Change `refuseDroppedLinks` skips old commits that `git cherry <target> <old>` marks `-`, meaning the target already carries the patch. Every other dropped link still refuses. ## Scope and approval Maintainer-authorized: unblocks the requested fork sync. ## Verification | Check | Result | | --- | --- | | New test, without fix | fails | | New test, with fix | passes | | `scripts/fork-sync.test.ts` | 69 passed | | Guard on the real sync shas | passes | | `vp run fork:ci` | exit 0 | Written by Claude Opus 5.5 in Claude Code, hosted by T3 Code. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: bugfix Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
pushed a commit
that referenced
this pull request
Oct 21, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## Problem The sync rebase folds a squash-landed `fixup! <owner subject> (#N)` into its owner as git's `fixup`, which keeps only the owner's message. So `(#N)` is lost, breaking the #1491 rule that every PR link survives every fold. ## Change 1. Sync renders each folded owner's message first 2. Adds the `Squashes:` list `fork:fold` writes 3. Lists each fixup's PR link there 4. Keeps trailers verbatim, `Co-authored-by:` too 5. Sequence editor amends the owner with it 6. Link guard refuses a tip that lost a link A fixup citing no PR still folds as plain git `fixup`, its owner's message untouched. `fork-sync.md` now names this as the sync's only reword. **Guard scope:** it also refuses a sync where git silently drops a linked fork commit. That matches the sync's rule that it never drops a commit. ## Scope and approval Closes #1592. - [ ] **Sync:** a folded `fixup! <subject> (#N)` keeps RSI-Software/t3code-hyprws#N on the owner's message - [ ] **Guard:** the sync refuses a rebased tip that drops a PR link ## Verification | test | result | | --- | --- | | Fold of `fixup! … (#1600)` | link kept as member line, trailers verbatim | | Tip with the link dropped | refused | | Real rebased tip | passes the guard | | command | exit | | --- | --- | | `vp test run`, 3 touched test files, 127 tests | 0 | | scripts `tsc --noEmit` | 0 | | `vp run fork:ci`, scripts 739 tests | 0 | Not run: a real sync with a linked fixup on trunk; the next one proves it. Claude Opus 5.5 in Claude Code, inside T3 Code; implemented by a Pi child agent. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no <!-- gh-bot:attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"fix/sync-fold-keeps-fixup-link@9c52168","build":"252611418","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"da5d3d04239a"}],"ts":"2026-10-04T03:13:16Z"} -->
donjor
added a commit
that referenced
this pull request
Oct 21, 2026
## Problem The sync to `v0.1.1-nightly.20261020.3386` fails after a clean rebase: ```text the rebased tip dropped 1 pull request link(s): #1801: cited by fe075c9 ..., by no new commit ``` #1801 backported upstream `2532e64099` exactly; both share patch-id `4221c8a56228`. The rebase drops it correctly, as its body said it would. The link guard from #1620 has no exemption for that drop, so no sync can pass. ## Change `refuseDroppedLinks` skips old commits that `git cherry <target> <old>` marks `-`, meaning the target already carries the patch. Every other dropped link still refuses. ## Scope and approval Maintainer-authorized: unblocks the requested fork sync. ## Verification | Check | Result | | --- | --- | | New test, without fix | fails | | New test, with fix | passes | | `scripts/fork-sync.test.ts` | 69 passed | | Guard on the real sync shas | passes | | `vp run fork:ci` | exit 0 | Written by Claude Opus 5.5 in Claude Code, hosted by T3 Code. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: bugfix Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
pushed a commit
that referenced
this pull request
Oct 21, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## Problem The sync rebase folds a squash-landed `fixup! <owner subject> (#N)` into its owner as git's `fixup`, which keeps only the owner's message. So `(#N)` is lost, breaking the #1491 rule that every PR link survives every fold. ## Change 1. Sync renders each folded owner's message first 2. Adds the `Squashes:` list `fork:fold` writes 3. Lists each fixup's PR link there 4. Keeps trailers verbatim, `Co-authored-by:` too 5. Sequence editor amends the owner with it 6. Link guard refuses a tip that lost a link A fixup citing no PR still folds as plain git `fixup`, its owner's message untouched. `fork-sync.md` now names this as the sync's only reword. **Guard scope:** it also refuses a sync where git silently drops a linked fork commit. That matches the sync's rule that it never drops a commit. ## Scope and approval Closes #1592. - [ ] **Sync:** a folded `fixup! <subject> (#N)` keeps RSI-Software/t3code-hyprws#N on the owner's message - [ ] **Guard:** the sync refuses a rebased tip that drops a PR link ## Verification | test | result | | --- | --- | | Fold of `fixup! … (#1600)` | link kept as member line, trailers verbatim | | Tip with the link dropped | refused | | Real rebased tip | passes the guard | | command | exit | | --- | --- | | `vp test run`, 3 touched test files, 127 tests | 0 | | scripts `tsc --noEmit` | 0 | | `vp run fork:ci`, scripts 739 tests | 0 | Not run: a real sync with a linked fixup on trunk; the next one proves it. Claude Opus 5.5 in Claude Code, inside T3 Code; implemented by a Pi child agent. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no <!-- gh-bot:attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"fix/sync-fold-keeps-fixup-link@9c52168","build":"252611418","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"da5d3d04239a"}],"ts":"2026-10-04T03:13:16Z"} -->
donjor
pushed a commit
that referenced
this pull request
Oct 21, 2026
## Problem The sync to `v0.1.1-nightly.20261020.3386` fails after a clean rebase: ```text the rebased tip dropped 1 pull request link(s): #1801: cited by fe075c9 ..., by no new commit ``` #1801 backported upstream `2532e64099` exactly; both share patch-id `4221c8a56228`. The rebase drops it correctly, as its body said it would. The link guard from #1620 has no exemption for that drop, so no sync can pass. ## Change `refuseDroppedLinks` skips old commits that `git cherry <target> <old>` marks `-`, meaning the target already carries the patch. Every other dropped link still refuses. ## Scope and approval Maintainer-authorized: unblocks the requested fork sync. ## Verification | Check | Result | | --- | --- | | New test, without fix | fails | | New test, with fix | passes | | `scripts/fork-sync.test.ts` | 69 passed | | Guard on the real sync shas | passes | | `vp run fork:ci` | exit 0 | Written by Claude Opus 5.5 in Claude Code, hosted by T3 Code. ## Fork trailers Squashes: - 4f2343c fix(fork-sync): an exact upstream backport may drop its PR link (#1805) (#1805) - eb10567 fixup! fix(fork-sync): an exact upstream backport may drop its PR link (#1805) (#1805) Fork-Domain: fork-meta Fork-Tier: bugfix Fork-Upstreamable: no
donjor
pushed a commit
that referenced
this pull request
Oct 21, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## Problem The sync rebase folds a squash-landed `fixup! <owner subject> (#N)` into its owner as git's `fixup`, which keeps only the owner's message. So `(#N)` is lost, breaking the #1491 rule that every PR link survives every fold. ## Change 1. Sync renders each folded owner's message first 2. Adds the `Squashes:` list `fork:fold` writes 3. Lists each fixup's PR link there 4. Keeps trailers verbatim, `Co-authored-by:` too 5. Sequence editor amends the owner with it 6. Link guard refuses a tip that lost a link A fixup citing no PR still folds as plain git `fixup`, its owner's message untouched. `fork-sync.md` now names this as the sync's only reword. **Guard scope:** it also refuses a sync where git silently drops a linked fork commit. That matches the sync's rule that it never drops a commit. ## Scope and approval Closes #1592. - [ ] **Sync:** a folded `fixup! <subject> (#N)` keeps RSI-Software/t3code-hyprws#N on the owner's message - [ ] **Guard:** the sync refuses a rebased tip that drops a PR link ## Verification | test | result | | --- | --- | | Fold of `fixup! … (#1600)` | link kept as member line, trailers verbatim | | Tip with the link dropped | refused | | Real rebased tip | passes the guard | | command | exit | | --- | --- | | `vp test run`, 3 touched test files, 127 tests | 0 | | scripts `tsc --noEmit` | 0 | | `vp run fork:ci`, scripts 739 tests | 0 | Not run: a real sync with a linked fixup on trunk; the next one proves it. Claude Opus 5.5 in Claude Code, inside T3 Code; implemented by a Pi child agent. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no <!-- gh-bot:attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"fix/sync-fold-keeps-fixup-link@9c52168","build":"252611418","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"da5d3d04239a"}],"ts":"2026-10-04T03:13:16Z"} -->
donjor
pushed a commit
that referenced
this pull request
Oct 21, 2026
## Problem The sync to `v0.1.1-nightly.20261020.3386` fails after a clean rebase: ```text the rebased tip dropped 1 pull request link(s): #1801: cited by fe075c9 ..., by no new commit ``` #1801 backported upstream `2532e64099` exactly; both share patch-id `4221c8a56228`. The rebase drops it correctly, as its body said it would. The link guard from #1620 has no exemption for that drop, so no sync can pass. ## Change `refuseDroppedLinks` skips old commits that `git cherry <target> <old>` marks `-`, meaning the target already carries the patch. Every other dropped link still refuses. ## Scope and approval Maintainer-authorized: unblocks the requested fork sync. ## Verification | Check | Result | | --- | --- | | New test, without fix | fails | | New test, with fix | passes | | `scripts/fork-sync.test.ts` | 69 passed | | Guard on the real sync shas | passes | | `vp run fork:ci` | exit 0 | Written by Claude Opus 5.5 in Claude Code, hosted by T3 Code. ## Fork trailers Squashes: - 4f2343c fix(fork-sync): an exact upstream backport may drop its PR link (#1805) (#1805) - eb10567 fixup! fix(fork-sync): an exact upstream backport may drop its PR link (#1805) (#1805) Fork-Domain: fork-meta Fork-Tier: bugfix Fork-Upstreamable: no
donjor
pushed a commit
that referenced
this pull request
Oct 21, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## Problem The sync rebase folds a squash-landed `fixup! <owner subject> (#N)` into its owner as git's `fixup`, which keeps only the owner's message. So `(#N)` is lost, breaking the #1491 rule that every PR link survives every fold. ## Change 1. Sync renders each folded owner's message first 2. Adds the `Squashes:` list `fork:fold` writes 3. Lists each fixup's PR link there 4. Keeps trailers verbatim, `Co-authored-by:` too 5. Sequence editor amends the owner with it 6. Link guard refuses a tip that lost a link A fixup citing no PR still folds as plain git `fixup`, its owner's message untouched. `fork-sync.md` now names this as the sync's only reword. **Guard scope:** it also refuses a sync where git silently drops a linked fork commit. That matches the sync's rule that it never drops a commit. ## Scope and approval Closes #1592. - [ ] **Sync:** a folded `fixup! <subject> (#N)` keeps RSI-Software/t3code-hyprws#N on the owner's message - [ ] **Guard:** the sync refuses a rebased tip that drops a PR link ## Verification | test | result | | --- | --- | | Fold of `fixup! … (#1600)` | link kept as member line, trailers verbatim | | Tip with the link dropped | refused | | Real rebased tip | passes the guard | | command | exit | | --- | --- | | `vp test run`, 3 touched test files, 127 tests | 0 | | scripts `tsc --noEmit` | 0 | | `vp run fork:ci`, scripts 739 tests | 0 | Not run: a real sync with a linked fixup on trunk; the next one proves it. Claude Opus 5.5 in Claude Code, inside T3 Code; implemented by a Pi child agent. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no <!-- gh-bot:attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"fix/sync-fold-keeps-fixup-link@9c52168","build":"252611418","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"da5d3d04239a"}],"ts":"2026-10-04T03:13:16Z"} -->
donjor
pushed a commit
that referenced
this pull request
Oct 21, 2026
## Problem The sync to `v0.1.1-nightly.20261020.3386` fails after a clean rebase: ```text the rebased tip dropped 1 pull request link(s): #1801: cited by fe075c9 ..., by no new commit ``` #1801 backported upstream `2532e64099` exactly; both share patch-id `4221c8a56228`. The rebase drops it correctly, as its body said it would. The link guard from #1620 has no exemption for that drop, so no sync can pass. ## Change `refuseDroppedLinks` skips old commits that `git cherry <target> <old>` marks `-`, meaning the target already carries the patch. Every other dropped link still refuses. ## Scope and approval Maintainer-authorized: unblocks the requested fork sync. ## Verification | Check | Result | | --- | --- | | New test, without fix | fails | | New test, with fix | passes | | `scripts/fork-sync.test.ts` | 69 passed | | Guard on the real sync shas | passes | | `vp run fork:ci` | exit 0 | Written by Claude Opus 5.5 in Claude Code, hosted by T3 Code. ## Fork trailers Squashes: - 4f2343c fix(fork-sync): an exact upstream backport may drop its PR link (#1805) (#1805) - eb10567 fixup! fix(fork-sync): an exact upstream backport may drop its PR link (#1805) (#1805) Fork-Domain: fork-meta Fork-Tier: bugfix Fork-Upstreamable: no
donjor
pushed a commit
that referenced
this pull request
Oct 22, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## Problem The sync rebase folds a squash-landed `fixup! <owner subject> (#N)` into its owner as git's `fixup`, which keeps only the owner's message. So `(#N)` is lost, breaking the #1491 rule that every PR link survives every fold. ## Change 1. Sync renders each folded owner's message first 2. Adds the `Squashes:` list `fork:fold` writes 3. Lists each fixup's PR link there 4. Keeps trailers verbatim, `Co-authored-by:` too 5. Sequence editor amends the owner with it 6. Link guard refuses a tip that lost a link A fixup citing no PR still folds as plain git `fixup`, its owner's message untouched. `fork-sync.md` now names this as the sync's only reword. **Guard scope:** it also refuses a sync where git silently drops a linked fork commit. That matches the sync's rule that it never drops a commit. ## Scope and approval Closes #1592. - [ ] **Sync:** a folded `fixup! <subject> (#N)` keeps RSI-Software/t3code-hyprws#N on the owner's message - [ ] **Guard:** the sync refuses a rebased tip that drops a PR link ## Verification | test | result | | --- | --- | | Fold of `fixup! … (#1600)` | link kept as member line, trailers verbatim | | Tip with the link dropped | refused | | Real rebased tip | passes the guard | | command | exit | | --- | --- | | `vp test run`, 3 touched test files, 127 tests | 0 | | scripts `tsc --noEmit` | 0 | | `vp run fork:ci`, scripts 739 tests | 0 | Not run: a real sync with a linked fixup on trunk; the next one proves it. Claude Opus 5.5 in Claude Code, inside T3 Code; implemented by a Pi child agent. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no <!-- gh-bot:attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"fix/sync-fold-keeps-fixup-link@9c52168","build":"252611418","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"da5d3d04239a"}],"ts":"2026-10-04T03:13:16Z"} -->
donjor
pushed a commit
that referenced
this pull request
Oct 22, 2026
## Problem The sync to `v0.1.1-nightly.20261020.3386` fails after a clean rebase: ```text the rebased tip dropped 1 pull request link(s): #1801: cited by fe075c9 ..., by no new commit ``` #1801 backported upstream `2532e64099` exactly; both share patch-id `4221c8a56228`. The rebase drops it correctly, as its body said it would. The link guard from #1620 has no exemption for that drop, so no sync can pass. ## Change `refuseDroppedLinks` skips old commits that `git cherry <target> <old>` marks `-`, meaning the target already carries the patch. Every other dropped link still refuses. ## Scope and approval Maintainer-authorized: unblocks the requested fork sync. ## Verification | Check | Result | | --- | --- | | New test, without fix | fails | | New test, with fix | passes | | `scripts/fork-sync.test.ts` | 69 passed | | Guard on the real sync shas | passes | | `vp run fork:ci` | exit 0 | Written by Claude Opus 5.5 in Claude Code, hosted by T3 Code. ## Fork trailers Squashes: - 4f2343c fix(fork-sync): an exact upstream backport may drop its PR link (#1805) (#1805) - eb10567 fixup! fix(fork-sync): an exact upstream backport may drop its PR link (#1805) (#1805) Fork-Domain: fork-meta Fork-Tier: bugfix Fork-Upstreamable: no
donjor
pushed a commit
that referenced
this pull request
Oct 22, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## Problem The sync rebase folds a squash-landed `fixup! <owner subject> (#N)` into its owner as git's `fixup`, which keeps only the owner's message. So `(#N)` is lost, breaking the #1491 rule that every PR link survives every fold. ## Change 1. Sync renders each folded owner's message first 2. Adds the `Squashes:` list `fork:fold` writes 3. Lists each fixup's PR link there 4. Keeps trailers verbatim, `Co-authored-by:` too 5. Sequence editor amends the owner with it 6. Link guard refuses a tip that lost a link A fixup citing no PR still folds as plain git `fixup`, its owner's message untouched. `fork-sync.md` now names this as the sync's only reword. **Guard scope:** it also refuses a sync where git silently drops a linked fork commit. That matches the sync's rule that it never drops a commit. ## Scope and approval Closes #1592. - [ ] **Sync:** a folded `fixup! <subject> (#N)` keeps RSI-Software/t3code-hyprws#N on the owner's message - [ ] **Guard:** the sync refuses a rebased tip that drops a PR link ## Verification | test | result | | --- | --- | | Fold of `fixup! … (#1600)` | link kept as member line, trailers verbatim | | Tip with the link dropped | refused | | Real rebased tip | passes the guard | | command | exit | | --- | --- | | `vp test run`, 3 touched test files, 127 tests | 0 | | scripts `tsc --noEmit` | 0 | | `vp run fork:ci`, scripts 739 tests | 0 | Not run: a real sync with a linked fixup on trunk; the next one proves it. Claude Opus 5.5 in Claude Code, inside T3 Code; implemented by a Pi child agent. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no <!-- gh-bot:attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"fix/sync-fold-keeps-fixup-link@9c52168","build":"252611418","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"da5d3d04239a"}],"ts":"2026-10-04T03:13:16Z"} -->
donjor
pushed a commit
that referenced
this pull request
Oct 22, 2026
## Problem The sync to `v0.1.1-nightly.20261020.3386` fails after a clean rebase: ```text the rebased tip dropped 1 pull request link(s): #1801: cited by fe075c9 ..., by no new commit ``` #1801 backported upstream `2532e64099` exactly; both share patch-id `4221c8a56228`. The rebase drops it correctly, as its body said it would. The link guard from #1620 has no exemption for that drop, so no sync can pass. ## Change `refuseDroppedLinks` skips old commits that `git cherry <target> <old>` marks `-`, meaning the target already carries the patch. Every other dropped link still refuses. ## Scope and approval Maintainer-authorized: unblocks the requested fork sync. ## Verification | Check | Result | | --- | --- | | New test, without fix | fails | | New test, with fix | passes | | `scripts/fork-sync.test.ts` | 69 passed | | Guard on the real sync shas | passes | | `vp run fork:ci` | exit 0 | Written by Claude Opus 5.5 in Claude Code, hosted by T3 Code. ## Fork trailers Squashes: - 4f2343c fix(fork-sync): an exact upstream backport may drop its PR link (#1805) (#1805) - eb10567 fixup! fix(fork-sync): an exact upstream backport may drop its PR link (#1805) (#1805) Fork-Domain: fork-meta Fork-Tier: bugfix Fork-Upstreamable: no
donjor
pushed a commit
that referenced
this pull request
Oct 23, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## Problem The sync rebase folds a squash-landed `fixup! <owner subject> (#N)` into its owner as git's `fixup`, which keeps only the owner's message. So `(#N)` is lost, breaking the #1491 rule that every PR link survives every fold. ## Change 1. Sync renders each folded owner's message first 2. Adds the `Squashes:` list `fork:fold` writes 3. Lists each fixup's PR link there 4. Keeps trailers verbatim, `Co-authored-by:` too 5. Sequence editor amends the owner with it 6. Link guard refuses a tip that lost a link A fixup citing no PR still folds as plain git `fixup`, its owner's message untouched. `fork-sync.md` now names this as the sync's only reword. **Guard scope:** it also refuses a sync where git silently drops a linked fork commit. That matches the sync's rule that it never drops a commit. ## Scope and approval Closes #1592. - [ ] **Sync:** a folded `fixup! <subject> (#N)` keeps RSI-Software/t3code-hyprws#N on the owner's message - [ ] **Guard:** the sync refuses a rebased tip that drops a PR link ## Verification | test | result | | --- | --- | | Fold of `fixup! … (#1600)` | link kept as member line, trailers verbatim | | Tip with the link dropped | refused | | Real rebased tip | passes the guard | | command | exit | | --- | --- | | `vp test run`, 3 touched test files, 127 tests | 0 | | scripts `tsc --noEmit` | 0 | | `vp run fork:ci`, scripts 739 tests | 0 | Not run: a real sync with a linked fixup on trunk; the next one proves it. Claude Opus 5.5 in Claude Code, inside T3 Code; implemented by a Pi child agent. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no <!-- gh-bot:attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"fix/sync-fold-keeps-fixup-link@9c52168","build":"252611418","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"da5d3d04239a"}],"ts":"2026-10-04T03:13:16Z"} -->
donjor
pushed a commit
that referenced
this pull request
Oct 23, 2026
## Problem The sync to `v0.1.1-nightly.20261020.3386` fails after a clean rebase: ```text the rebased tip dropped 1 pull request link(s): #1801: cited by fe075c9 ..., by no new commit ``` #1801 backported upstream `2532e64099` exactly; both share patch-id `4221c8a56228`. The rebase drops it correctly, as its body said it would. The link guard from #1620 has no exemption for that drop, so no sync can pass. ## Change `refuseDroppedLinks` skips old commits that `git cherry <target> <old>` marks `-`, meaning the target already carries the patch. Every other dropped link still refuses. ## Scope and approval Maintainer-authorized: unblocks the requested fork sync. ## Verification | Check | Result | | --- | --- | | New test, without fix | fails | | New test, with fix | passes | | `scripts/fork-sync.test.ts` | 69 passed | | Guard on the real sync shas | passes | | `vp run fork:ci` | exit 0 | Written by Claude Opus 5.5 in Claude Code, hosted by T3 Code. ## Fork trailers Squashes: - 4f2343c fix(fork-sync): an exact upstream backport may drop its PR link (#1805) (#1805) - eb10567 fixup! fix(fork-sync): an exact upstream backport may drop its PR link (#1805) (#1805) Fork-Domain: fork-meta Fork-Tier: bugfix Fork-Upstreamable: no
donjor
pushed a commit
that referenced
this pull request
Oct 24, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## Problem The sync rebase folds a squash-landed `fixup! <owner subject> (#N)` into its owner as git's `fixup`, which keeps only the owner's message. So `(#N)` is lost, breaking the #1491 rule that every PR link survives every fold. ## Change 1. Sync renders each folded owner's message first 2. Adds the `Squashes:` list `fork:fold` writes 3. Lists each fixup's PR link there 4. Keeps trailers verbatim, `Co-authored-by:` too 5. Sequence editor amends the owner with it 6. Link guard refuses a tip that lost a link A fixup citing no PR still folds as plain git `fixup`, its owner's message untouched. `fork-sync.md` now names this as the sync's only reword. **Guard scope:** it also refuses a sync where git silently drops a linked fork commit. That matches the sync's rule that it never drops a commit. ## Scope and approval Closes #1592. - [ ] **Sync:** a folded `fixup! <subject> (#N)` keeps RSI-Software/t3code-hyprws#N on the owner's message - [ ] **Guard:** the sync refuses a rebased tip that drops a PR link ## Verification | test | result | | --- | --- | | Fold of `fixup! … (#1600)` | link kept as member line, trailers verbatim | | Tip with the link dropped | refused | | Real rebased tip | passes the guard | | command | exit | | --- | --- | | `vp test run`, 3 touched test files, 127 tests | 0 | | scripts `tsc --noEmit` | 0 | | `vp run fork:ci`, scripts 739 tests | 0 | Not run: a real sync with a linked fixup on trunk; the next one proves it. Claude Opus 5.5 in Claude Code, inside T3 Code; implemented by a Pi child agent. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no <!-- gh-bot:attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"fix/sync-fold-keeps-fixup-link@9c52168","build":"252611418","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"da5d3d04239a"}],"ts":"2026-10-04T03:13:16Z"} -->
donjor
pushed a commit
that referenced
this pull request
Oct 24, 2026
## Problem The sync to `v0.1.1-nightly.20261020.3386` fails after a clean rebase: ```text the rebased tip dropped 1 pull request link(s): #1801: cited by fe075c9 ..., by no new commit ``` #1801 backported upstream `2532e64099` exactly; both share patch-id `4221c8a56228`. The rebase drops it correctly, as its body said it would. The link guard from #1620 has no exemption for that drop, so no sync can pass. ## Change `refuseDroppedLinks` skips old commits that `git cherry <target> <old>` marks `-`, meaning the target already carries the patch. Every other dropped link still refuses. ## Scope and approval Maintainer-authorized: unblocks the requested fork sync. ## Verification | Check | Result | | --- | --- | | New test, without fix | fails | | New test, with fix | passes | | `scripts/fork-sync.test.ts` | 69 passed | | Guard on the real sync shas | passes | | `vp run fork:ci` | exit 0 | Written by Claude Opus 5.5 in Claude Code, hosted by T3 Code. ## Fork trailers Squashes: - 4f2343c fix(fork-sync): an exact upstream backport may drop its PR link (#1805) (#1805) - eb10567 fixup! fix(fork-sync): an exact upstream backport may drop its PR link (#1805) (#1805) Fork-Domain: fork-meta Fork-Tier: bugfix Fork-Upstreamable: no
3 tasks
donjor
pushed a commit
that referenced
this pull request
Oct 27, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## Problem The sync rebase folds a squash-landed `fixup! <owner subject> (#N)` into its owner as git's `fixup`, which keeps only the owner's message. So `(#N)` is lost, breaking the #1491 rule that every PR link survives every fold. ## Change 1. Sync renders each folded owner's message first 2. Adds the `Squashes:` list `fork:fold` writes 3. Lists each fixup's PR link there 4. Keeps trailers verbatim, `Co-authored-by:` too 5. Sequence editor amends the owner with it 6. Link guard refuses a tip that lost a link A fixup citing no PR still folds as plain git `fixup`, its owner's message untouched. `fork-sync.md` now names this as the sync's only reword. **Guard scope:** it also refuses a sync where git silently drops a linked fork commit. That matches the sync's rule that it never drops a commit. ## Scope and approval Closes #1592. - [ ] **Sync:** a folded `fixup! <subject> (#N)` keeps RSI-Software/t3code-hyprws#N on the owner's message - [ ] **Guard:** the sync refuses a rebased tip that drops a PR link ## Verification | test | result | | --- | --- | | Fold of `fixup! … (#1600)` | link kept as member line, trailers verbatim | | Tip with the link dropped | refused | | Real rebased tip | passes the guard | | command | exit | | --- | --- | | `vp test run`, 3 touched test files, 127 tests | 0 | | scripts `tsc --noEmit` | 0 | | `vp run fork:ci`, scripts 739 tests | 0 | Not run: a real sync with a linked fixup on trunk; the next one proves it. Claude Opus 5.5 in Claude Code, inside T3 Code; implemented by a Pi child agent. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no <!-- gh-bot:attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"fix/sync-fold-keeps-fixup-link@9c52168","build":"252611418","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"da5d3d04239a"}],"ts":"2026-10-04T03:13:16Z"} -->
donjor
pushed a commit
that referenced
this pull request
Oct 27, 2026
## Problem The sync to `v0.1.1-nightly.20261020.3386` fails after a clean rebase: ```text the rebased tip dropped 1 pull request link(s): #1801: cited by fe075c9 ..., by no new commit ``` #1801 backported upstream `2532e64099` exactly; both share patch-id `4221c8a56228`. The rebase drops it correctly, as its body said it would. The link guard from #1620 has no exemption for that drop, so no sync can pass. ## Change `refuseDroppedLinks` skips old commits that `git cherry <target> <old>` marks `-`, meaning the target already carries the patch. Every other dropped link still refuses. ## Scope and approval Maintainer-authorized: unblocks the requested fork sync. ## Verification | Check | Result | | --- | --- | | New test, without fix | fails | | New test, with fix | passes | | `scripts/fork-sync.test.ts` | 69 passed | | Guard on the real sync shas | passes | | `vp run fork:ci` | exit 0 | Written by Claude Opus 5.5 in Claude Code, hosted by T3 Code. ## Fork trailers Squashes: - 4f2343c fix(fork-sync): an exact upstream backport may drop its PR link (#1805) (#1805) - eb10567 fixup! fix(fork-sync): an exact upstream backport may drop its PR link (#1805) (#1805) Fork-Domain: fork-meta Fork-Tier: bugfix Fork-Upstreamable: no
donjor
pushed a commit
that referenced
this pull request
Oct 27, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## Problem The sync rebase folds a squash-landed `fixup! <owner subject> (#N)` into its owner as git's `fixup`, which keeps only the owner's message. So `(#N)` is lost, breaking the #1491 rule that every PR link survives every fold. ## Change 1. Sync renders each folded owner's message first 2. Adds the `Squashes:` list `fork:fold` writes 3. Lists each fixup's PR link there 4. Keeps trailers verbatim, `Co-authored-by:` too 5. Sequence editor amends the owner with it 6. Link guard refuses a tip that lost a link A fixup citing no PR still folds as plain git `fixup`, its owner's message untouched. `fork-sync.md` now names this as the sync's only reword. **Guard scope:** it also refuses a sync where git silently drops a linked fork commit. That matches the sync's rule that it never drops a commit. ## Scope and approval Closes #1592. - [ ] **Sync:** a folded `fixup! <subject> (#N)` keeps RSI-Software/t3code-hyprws#N on the owner's message - [ ] **Guard:** the sync refuses a rebased tip that drops a PR link ## Verification | test | result | | --- | --- | | Fold of `fixup! … (#1600)` | link kept as member line, trailers verbatim | | Tip with the link dropped | refused | | Real rebased tip | passes the guard | | command | exit | | --- | --- | | `vp test run`, 3 touched test files, 127 tests | 0 | | scripts `tsc --noEmit` | 0 | | `vp run fork:ci`, scripts 739 tests | 0 | Not run: a real sync with a linked fixup on trunk; the next one proves it. Claude Opus 5.5 in Claude Code, inside T3 Code; implemented by a Pi child agent. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: core Fork-Upstreamable: no <!-- gh-bot:attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"fix/sync-fold-keeps-fixup-link@9c52168","build":"252611418","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"da5d3d04239a"}],"ts":"2026-10-04T03:13:16Z"} -->
donjor
pushed a commit
that referenced
this pull request
Oct 27, 2026
## Problem The sync to `v0.1.1-nightly.20261020.3386` fails after a clean rebase: ```text the rebased tip dropped 1 pull request link(s): #1801: cited by fe075c9 ..., by no new commit ``` #1801 backported upstream `2532e64099` exactly; both share patch-id `4221c8a56228`. The rebase drops it correctly, as its body said it would. The link guard from #1620 has no exemption for that drop, so no sync can pass. ## Change `refuseDroppedLinks` skips old commits that `git cherry <target> <old>` marks `-`, meaning the target already carries the patch. Every other dropped link still refuses. ## Scope and approval Maintainer-authorized: unblocks the requested fork sync. ## Verification | Check | Result | | --- | --- | | New test, without fix | fails | | New test, with fix | passes | | `scripts/fork-sync.test.ts` | 69 passed | | Guard on the real sync shas | passes | | `vp run fork:ci` | exit 0 | Written by Claude Opus 5.5 in Claude Code, hosted by T3 Code. ## Fork trailers Squashes: - 4f2343c fix(fork-sync): an exact upstream backport may drop its PR link (#1805) (#1805) - eb10567 fixup! fix(fork-sync): an exact upstream backport may drop its PR link (#1805) (#1805) Fork-Domain: fork-meta Fork-Tier: bugfix Fork-Upstreamable: no
donjor
added a commit
that referenced
this pull request
Oct 27, 2026
donjor
added a commit
that referenced
this pull request
Oct 27, 2026
donjor
added a commit
that referenced
this pull request
Oct 27, 2026
donjor
added a commit
that referenced
this pull request
Oct 27, 2026
donjor
added a commit
that referenced
this pull request
Oct 27, 2026
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
The sync rebase folds a squash-landed
fixup! <owner subject> (#N)into its owner as git'sfixup, which keeps only the owner's message.So
(#N)is lost, breaking the #1491 rule that every PR link survives every fold.Change
Squashes:listfork:foldwritesCo-authored-by:tooA fixup citing no PR still folds as plain git
fixup, its owner's message untouched.fork-sync.mdnow names this as the sync's only reword.Guard scope: it also refuses a sync where git silently drops a linked fork commit.
That matches the sync's rule that it never drops a commit.
Scope and approval
Closes #1592.
fixup! <subject> (#N)keeps RSI-Software/t3code-hyprws#N on the owner's messageVerification
fixup! … (#1600)vp test run, 3 touched test files, 127 teststsc --noEmitvp run fork:ci, scripts 739 testsNot run: a real sync with a linked fixup on trunk; the next one proves it.
Claude Opus 5.5 in Claude Code, inside T3 Code; implemented by a Pi child agent.
Fork trailers
Fork-Domain: fork-meta
Fork-Tier: core
Fork-Upstreamable: no