Conversation
#1602 listed three docs to keep in sync — `docs/worktrees-service.md`, ADR-0072 §6, and CLAUDE.md's worktrees paragraph. The first two were updated; this one was missed across all four phases. It matters more than a normal docs gap because CLAUDE.md is loaded at the start of every session, so it is where a future session looks first: without this, `menu.rs` is invisible, and so are two grep guards, which is how guards get deleted. Adds what a reader needs and cannot infer: `menu.rs` holds per-surface contents as pure functions (the tree menu excepted, so it cannot drift from the `a` menu); `draw_menu` returns the region it drew, so the hit map and the frame cannot disagree; `popup_mouse_enabled` names the one popup kind that takes the mouse, the confirm modal staying keyboard-only because its `y`/`n` gates destructive actions; contract §6 and §7; why `alt-m` is primary and `F10` is deliberately not a `ChromeKey`; and the clipboard-read guard as the other half of `Osc52::OnlyCopy`. Also corrects the §5 sentence in the same bullet, which called the host's escape hatch "shift-drag". The #1602 spike measured that as terminal-specific: Ghostty keeps shift-drag, iTerm2 keeps option-drag and forwards shift-drag, the VS Code terminal keeps neither. The mechanism stands; the modifier is not ours to encode. Finally records #1605's process-group reaping and the residual #1611 stall, with the operational consequence a future session needs: run this module's tests with `--test-threads=1`, and never by skipping them — that is how a never-run test reached CI in #1608.
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.
#1602's Prerequisites named three docs to keep in sync —
docs/worktrees-service.md, ADR-0072 §6, and CLAUDE.md's worktrees paragraph. The first two were updated across the four phases; this one was missed.It matters more than a normal docs gap: CLAUDE.md is loaded at the start of every session in this repo, so it is where a future session looks first. Without this,
menu.rsis invisible, and so are two grep guards — which is how guards get quietly deleted by someone who does not know they are load-bearing.What it adds
Only things a reader needs and cannot infer from the code:
menu.rsholds per-surface menu contents as pure functions of small inputs, so per-surface behaviour is unit-testable directly. The tree menu is the deliberate exception — built fromapplicable_action_groupsso it cannot drift from theamenu and:palette.draw_menureturns thePopupRegionit just drew, so the hit map and the frame cannot disagree — the invariantGroupRegion::tab_spansalready keeps for tab strips.popup_mouse_enablednames the one popup kind that takes the mouse; the confirm modal stays keyboard-only because itsy/ngates destructive actions.alt-mis primary andF10is deliberately not aChromeKey—encode_keyalready sends it to a child, and Alt-chords are the only chrome keys.Osc52::OnlyCopy: neither a child nor the UI can read the clipboard.A correction in the same bullet
The existing §5 sentence called the host's selection escape hatch "shift-drag". The #1602 spike measured that as terminal-specific:
The mechanism stands and the "must stay an omission" instruction is unchanged — but the modifier is not ours to encode, and the sentence now says so. Same correction already applied to
mouse.rsand ADR-0072 in #1608.And the operational consequence
Records #1605's process-group reaping and the residual #1611 stall, with the part a future session actually needs: run this module's tests with
--test-threads=1, and never by skipping them — skipping is how a never-run test reached CI in #1608.Docs-only; no code, no CLI surface, no snapshots.