From 36182896331dc3bedb976c64e2443e5b8df5d2cf Mon Sep 17 00:00:00 2001 From: Levi Neuwirth Date: Wed, 22 Jul 2026 15:36:51 -0400 Subject: [PATCH] docs(vterm): record the #135/#137 rebase-and-regate constraint MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR #137 (tab-width-parity) is approved and frozen at 5b23e11. Neither lane copies from or merges the other; whichever lands second rebases onto the canonical resulting main and reruns the complete gate suite. The overlap is pmacs-gpu/src/main.rs, pmacs-protocol/src/lib.rs, Cargo.lock, and the two ledger docs. The lock and docs are mechanical; the two source files are not โ€” both PRs edit the GPU renderer's measurement path and widen the protocol crate's export surface in the same region, so a conflict-free apply is not evidence of a correct merge. --- docs/active-work.md | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/docs/active-work.md b/docs/active-work.md index f3396d1..1673ca2 100644 --- a/docs/active-work.md +++ b/docs/active-work.md @@ -115,6 +115,38 @@ git worktree add --track \ githubsucks/vterm-gpu ``` +## Cross-PR coordination: #135 and #137 overlap + +Two PRs are open against canonical `main` at once and they touch the same +files. **Neither lane copies from or merges the other.** PR #137 +(`tab-width-parity`, "feat(render): unify tab-width projection") is +APPROVED and FROZEN at `5b23e11`; this lane must not cherry-pick, merge, +or otherwise absorb it. + +**Whichever PR lands SECOND rebases onto the canonical resulting `main` +and reruns the COMPLETE gate suite** โ€” not a subset, and not the +pre-rebase results. The overlap is in the renderer and the protocol +crate's export surface, so a clean textual merge does not imply a +correct one. + +Overlapping paths, and why each one collides: + +| Path | #135 (vterm stage 3) | #137 (tab width) | +| --- | --- | --- | +| `pmacs-gpu/src/main.rs` | terminal mode: `State` fields, render-batch swaps, input branches, headless probe | tab-width projection in the same renderer | +| `pmacs-protocol/src/lib.rs` | `pub mod terminal` + the terminal re-export block | its own added export | +| `Cargo.lock` | `unicode-width` promoted to a workspace dep for `pmacs-protocol` | a `pmacs-gpu` dependency change | +| `docs/active-work.md`, `docs/agent-handoff.md` | this lane's entries and ยง1 snapshot | its own entries | + +`Cargo.lock` and the docs are mechanical. The two source files are not: +both PRs edit the GPU renderer's measurement/paint path, and both widen +`pmacs-protocol`'s public surface in the same `pub use` region. After the +rebase, re-read the merged region rather than trusting a conflict-free +apply โ€” in particular that terminal cell geometry (`cell_viewport`, +`hit_test_cell`, `terminal_run_rect`) still uses the monospace advance +and is not routed through any new tab-expansion path, since terminal +columns come from the child and never from document projection. + ## Vterm Stage 3 framing lane (superseded) - Portable branch: `githubsucks/vterm-stage3-framing`