perf(shelf): cut sidebar tab-count subscription storm and add signposts
Fast book-switch profiling on the Shelf showed `RepositorySectionView.body`
running ~7400 times/sec under SwiftUI observation tracking — `openTabCount`
inside the body subscribed every section to the entire
`WorktreeTerminalManager.states` dictionary, which churns on any terminal
activity. Combined with `ShelfView.body` rebuilding `worktreeRowSections`
per call, a 25s fast-switching trace produced one Severe Hang (2.02s) plus
11 multi-hundred-ms Hangs.
Changes:
- RepositorySectionView: extract the tab-count badge into a dedicated leaf
view (`RepoHeaderTabCountBadge`) so the parent body never reads
`terminalManager`. Body invocations -92% in the rerun trace.
- ShelfBook.orderedShelfBooks: replace `Dictionary(uniqueKeysWithValues:)`
with `repositories[id:]` and route worktree ordering through
`orderedWorktrees(in:)` to skip per-repo `WorktreeRowSections` model and
Set construction.
- ShelfView: drop the redundant TCA action animation
(`store.send(..., animation:)`) on book open paths — the view-level
`.animation(_:value: openBookID)` already drives the spine flow.
- SupaLogger: add an `OSSignposter` plus `interval`,
`beginInterval`/`endInterval` (token form for `inout`-bound paths), and
`event` helpers — kept always-on since signposts are ~zero-cost when no
Instruments session is attached.
- Instrument hot paths: `WorktreeTerminalState.focusSelectedTab`,
`syncFocus`, `applySurfaceActivity`; `ShelfOpenBookView.onAppear` /
`onChange(selectedTabId)`; `RepositoriesFeature.selectWorktree` /
`selectRepository` reducer cases; `ShelfView` book-click events.
Verified via `make check`, `make build-app`, `make test` (928 passed).