From d74388f8a2dad2bd4bbfe3b937aba66e6648258b Mon Sep 17 00:00:00 2001 From: Neil <4138956+nwparker@users.noreply.github.com> Date: Wed, 30 Sep 2026 06:47:16 -0700 Subject: [PATCH] test: retire cases subsumed by an honestly-named neighbour (#24150) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * test: retire two agent-status ipc cases whose fixture arms reach identical code Follow-on from the wave-30 sweep: an auditor continued into its own disclosed unread list and read the `useIpcEvents-agent-status-*` family. 2 case declarations removed across 2 files, 152 lines gone. No production code touched. - `useIpcEvents-agent-status-queue-ordering.test.ts` — `applies ready push events for an unmounted inactive terminal tab`. Character-identical to `applies ready push events for inactive terminal tabs with empty layout snapshots` in `useIpcEvents-agent-status-hook-titles.test.ts` — same event, same prompt strings, same six-argument `setAgentStatus` assertion — except for one fixture field: `terminalLayoutsByTabId: {}` versus `{'tab-future': {root: null, ...}}`. The deciding line is `agent-status-pane-routing-index.ts:209`, `if (layout?.root)`. Both `undefined?.root` and `{root: null}.root` are falsy, so both arms skip the leaf-membership branch and every downstream line is identical. The `hook-titles` copy is kept because it has a genuine local contrast arm — `buffers ready push events until a mounted tab contains the pane leaf`, with `root: {leafId: STALE_LEAF_ID}` producing `exists: false`, buffering and `agent_hook_unattributed` telemetry. The queue-ordering copy had no such pairing. - `useIpcEvents-agent-status-pane-teardown.test.ts` — `does not retain a Cursor spinner terminal title when the hook reports done`. Production IS mirrored here (`SYNTHETIC_AGENT_TITLE_PROFILES` has 9 entries), so the mirrored-production check applied: what differs between the codex and cursor rows is `synthesizeWorkingTitle: false`, and neither case asserts it. Both exercise only `done -> idleLabel` through one shared path in `resolveAgentStatusTerminalTitle`. The unique contribution is owned verbatim by `src/renderer/src/lib/agent-status-terminal-title.test.ts`, same glyph and same string, and the Codex survivor asserts a strict superset — it additionally pins `updateTabTitle('tab-future', 'Codex ready')` called exactly once. Reported, not fixed: `ipc-events-agent-status-store-test-fixtures.ts:84` hand-copies the monotonicity rule as `updatedAt < existing.updatedAt`, while production's decision lives in `agent-status-live-entry-builder.ts` and additionally weighs retirement fences, recently-closed tabs, pane-authority aliases and per-connection watermarks. Rather than reason about the risk the auditor instrumented the branch and ran all eight files: never taken, 56 of 56 cases. So it is dead test-support code today rather than a stale premise — and a trap for the first staleness case anyone writes in these files, which would pass against the simplified copy. Left unmodified because the module is shared with three specs outside the audited chunk. Verified: 172 test files / 1,084 cases pass in `src/renderer/src/hooks`; `check-reliability-gates.mjs` 140 gates; neither deleted title appears in the gate manifest; both named owners confirmed present. * test: retire two runtime cases subsumed by an honestly-named neighbour Final chunks of the 2,269-file backlog, `src/renderer/src/runtime`. 2 case declarations removed across 2 files, 30 lines gone. No production code touched. Both deletions share a shape: the surviving neighbour is not merely equivalent, it is the case whose NAME tells the truth about what the code does. - `paired-reconnect-sidebar-agent-count.test.ts` — `the erased rows are exactly the panes whose status only the client wrote`. Two defects at once. It computes `missing` by filtering the same `reconnected.rowPaneKeys` that the immediately preceding case already asserts equals the full pane set, so `expect(missing).toEqual([])` cannot fail where that case passes. And its title promises a characterisation its own assertion denies: it claims the erased rows ARE the client-only panes, while asserting the erased set is empty. Its comment describes a "causal boundary" that `toEqual([])` never establishes. Owner: `keeps a sidebar row for every still-live pane after a long sleep`, immediately above. - `runtime-terminal-inspection.test.ts` — `can record a runtime input marker from a PTY id mapping`. Its fixture sets `experimentalAgentHibernation: true`, and that flag appears ZERO times in `runtime-terminal-inspection.ts` — `recordRuntimeTerminalInputForPtyId` resolves a pane key and records, reading no setting. The surviving case sets the same flag to `false` and asserts the identical `toBe(123)` from the identical call, so the two differ only in an inert field. Owner: `records runtime input markers even before hibernation is enabled`, whose name documents the flag-independence the pair accidentally demonstrates. Verified: 209 test files / 1,703 cases pass in `src/renderer/src/runtime`; `check-reliability-gates.mjs` 140 gates; neither deleted title appears in the gate manifest. * test: retire cases whose varied field production returns from one branch Final chunk of the backlog sweep, `renderer/runtime` tab-sync. 4 case declarations removed across 2 files, 57 lines gone. No production code touched. - `web-session-tabs-sync-agent-handoff.test.ts` — `keeps stale local agent tabs when the host mirror is for a different agent`. `shouldReplaceTerminalTab` has no agent-kind branch, and `launchAgent` appears ZERO times in `terminal-surfaces.ts` — its own comment says "agent kind is not session identity". Both this and its sibling enter the same `exactProvisionalHandoffs`-empty branch, and the sibling (same-agent) is the one that would go red if agent-kind matching were reintroduced. This one cannot. - `web-session-tabs-sync-client-owned-page-content.test.ts` — three cases asserting `loading`, `canGoBack` and `canGoForward` individually. `resolveMirroredBrowserPageContent` returns all five fields from a single `if (clientHostsMirroredBrowserPage(tab) && existingPage)` branch, so no production path preserves one and drops another. Six per-field cases ran off a byte-identical fixture. Kept the `title` case (the reported bug) and the `url` case (production documents url as independently load-bearing for the next snapshot's url-equality arm), plus two cases the per-field reads cannot cover: one asserting different state slices, one asserting patch-key omission. Reported, not fixed: `web-runtime-session-tab-activate-close.test.ts` asserts a stale-terminal refusal is indistinguishable from a real close, while its own comment says "Any fix must make these two outcomes distinguishable". As a plain `it` it will go red when the bug is fixed and read as a regression; `it.fails` is the honest shape. Second instance of that pattern in this audit. Verified: both files green (24 cases); `check-reliability-gates.mjs` 140 gates; neither deleted title in the gate manifest. --- ...cEvents-agent-status-pane-teardown.test.ts | 83 ------------------- ...Events-agent-status-queue-ordering.test.ts | 69 --------------- ...ired-reconnect-sidebar-agent-count.test.ts | 12 --- .../runtime-terminal-inspection.test.ts | 18 ---- ...eb-session-tabs-sync-agent-handoff.test.ts | 39 --------- ...abs-sync-client-owned-page-content.test.ts | 18 ---- 6 files changed, 239 deletions(-) diff --git a/src/renderer/src/hooks/useIpcEvents-agent-status-pane-teardown.test.ts b/src/renderer/src/hooks/useIpcEvents-agent-status-pane-teardown.test.ts index f54ac9ade4b..b043abb4042 100644 --- a/src/renderer/src/hooks/useIpcEvents-agent-status-pane-teardown.test.ts +++ b/src/renderer/src/hooks/useIpcEvents-agent-status-pane-teardown.test.ts @@ -567,87 +567,4 @@ describe('useIpcEvents agent status snapshot integration', () => { expect(removeAgentStatus).not.toHaveBeenCalled() }) - - it('does not retain a Cursor spinner terminal title when the hook reports done', async () => { - const setAgentStatus = vi.fn() - const onSetListenerRef: { current: ((data: AgentStatusSetData) => void) | null } = { - current: null - } - - const storeState: StoreLike = buildStoreState({ - setAgentStatus, - workspaceSessionReady: true, - settings: { terminalFontSize: 13, notifications: { enabled: false } }, - tabsByWorktree: { - 'wt-1': [ - { - id: 'tab-future', - ptyId: 'pty-1', - worktreeId: 'wt-1', - title: '\u2839 Cursor Agent' - } - ] - }, - terminalLayoutsByTabId: { - 'tab-future': { - root: { type: 'leaf', leafId: FUTURE_LEAF_ID }, - activeLeafId: FUTURE_LEAF_ID, - expandedLeafId: null, - titlesByLeafId: { [FUTURE_LEAF_ID]: '\u2839 Cursor Agent' } - } - } - }) - - stubReactSyncEffect() - vi.doMock('../store', () => ({ - useAppStore: { - subscribe: vi.fn(() => () => {}), - getState: () => storeState - } - })) - stubAuxiliaryModules() - vi.stubGlobal( - 'window', - buildWindowApi({ - onSet: (cb) => { - onSetListenerRef.current = cb - return () => {} - } - }) - ) - - const { useIpcEvents } = await import('./useIpcEvents') - - useIpcEvents() - await Promise.resolve() - - if (typeof onSetListenerRef.current !== 'function') { - throw new Error('Expected agentStatus.onSet listener to be registered') - } - - onSetListenerRef.current({ - paneKey: FUTURE_PANE_KEY, - state: 'done', - prompt: 'cursor prompt', - agentType: 'cursor', - lastAssistantMessage: 'cursor completion', - receivedAt: 1_700_000_000_200, - stateStartedAt: 1_699_999_999_100 - }) - - expect(setAgentStatus).toHaveBeenCalledTimes(1) - expect(setAgentStatus).toHaveBeenCalledWith( - FUTURE_PANE_KEY, - expect.objectContaining({ - state: 'done', - prompt: 'cursor prompt', - agentType: 'cursor', - lastAssistantMessage: 'cursor completion' - }), - 'Cursor ready', - { updatedAt: 1_700_000_000_200, stateStartedAt: 1_699_999_999_100 }, - expectWorktreeRouting('wt-1'), - undefined - ) - }) }) diff --git a/src/renderer/src/hooks/useIpcEvents-agent-status-queue-ordering.test.ts b/src/renderer/src/hooks/useIpcEvents-agent-status-queue-ordering.test.ts index 536a8d88fc2..88f199bb3a4 100644 --- a/src/renderer/src/hooks/useIpcEvents-agent-status-queue-ordering.test.ts +++ b/src/renderer/src/hooks/useIpcEvents-agent-status-queue-ordering.test.ts @@ -350,75 +350,6 @@ describe('useIpcEvents agent status snapshot integration', () => { expect(replayedAfterThrow).toContain('buffered') }) - it('applies ready push events for an unmounted inactive terminal tab', async () => { - const setAgentStatus = vi.fn() - const onSetListenerRef: { current: ((data: AgentStatusSetData) => void) | null } = { - current: null - } - - const storeState: StoreLike = buildStoreState({ - setAgentStatus, - workspaceSessionReady: true, - settings: { terminalFontSize: 13, notifications: { enabled: false } }, - tabsByWorktree: { - 'wt-1': [{ id: 'tab-future', ptyId: 'pty-1', worktreeId: 'wt-1', title: 'Inactive Tab' }] - }, - terminalLayoutsByTabId: {} - }) - - stubReactSyncEffect() - vi.doMock('../store', () => ({ - useAppStore: { - subscribe: vi.fn(() => () => {}), - getState: () => storeState - } - })) - stubAuxiliaryModules() - vi.stubGlobal( - 'window', - buildWindowApi({ - onSet: (cb) => { - onSetListenerRef.current = cb - return () => {} - } - }) - ) - - const { useIpcEvents } = await import('./useIpcEvents') - - useIpcEvents() - await Promise.resolve() - - if (typeof onSetListenerRef.current !== 'function') { - throw new Error('Expected agentStatus.onSet listener to be registered') - } - - onSetListenerRef.current({ - paneKey: FUTURE_PANE_KEY, - state: 'done', - prompt: 'inactive prompt', - agentType: 'codex', - lastAssistantMessage: 'inactive completion', - receivedAt: 1_700_000_000_200, - stateStartedAt: 1_699_999_999_100 - }) - - expect(setAgentStatus).toHaveBeenCalledTimes(1) - expect(setAgentStatus).toHaveBeenCalledWith( - FUTURE_PANE_KEY, - expect.objectContaining({ - state: 'done', - prompt: 'inactive prompt', - agentType: 'codex', - lastAssistantMessage: 'inactive completion' - }), - 'Inactive Tab', - { updatedAt: 1_700_000_000_200, stateStartedAt: 1_699_999_999_100 }, - expectWorktreeRouting('wt-1'), - undefined - ) - }) - it('keeps a Codex permission attention row actionable', async () => { const setAgentStatus = vi.fn() const updateTabTitle = vi.fn() diff --git a/src/renderer/src/runtime/paired-reconnect-sidebar-agent-count.test.ts b/src/renderer/src/runtime/paired-reconnect-sidebar-agent-count.test.ts index a5f77f49b98..d6cf310c536 100644 --- a/src/renderer/src/runtime/paired-reconnect-sidebar-agent-count.test.ts +++ b/src/renderer/src/runtime/paired-reconnect-sidebar-agent-count.test.ts @@ -311,18 +311,6 @@ describe('STA-3107: sidebar agent rows survive a paired-client sleep/wake reconn expect(reconnected.rowPaneKeys.sort(), evidence).toEqual(PANES.map(mirrorPaneKey).sort()) }) - it('the erased rows are exactly the panes whose status only the client wrote', () => { - const store = seedPairedClientStore() - const reconnected = runSleepWakeReconnect(store, LONG_SLEEP_MS) - const missing = PANES.map(mirrorPaneKey).filter( - (paneKey) => !reconnected.rowPaneKeys.includes(paneKey) - ) - - // Pins the causal boundary: host-authoritative panes are republished with a - // fresh host timestamp and are never at risk; only client-owned panes are. - expect(missing).toEqual([]) - }) - it('still cedes a pane this renderer never wrote status for', () => { const store = seedPairedClientStore() applyHostSnapshot(store, makeHostSnapshot({ snapshotVersion: 1, hostNow: T0 - 1_000 }), T0) diff --git a/src/renderer/src/runtime/runtime-terminal-inspection.test.ts b/src/renderer/src/runtime/runtime-terminal-inspection.test.ts index ded589e26b1..d1d4dcc9fed 100644 --- a/src/renderer/src/runtime/runtime-terminal-inspection.test.ts +++ b/src/renderer/src/runtime/runtime-terminal-inspection.test.ts @@ -688,24 +688,6 @@ describe('runtime terminal owner routing', () => { expect(useAppStore.getState().lastTerminalInputAtByPaneKey[PANE_KEY]).toBeUndefined() }) - it('can record a runtime input marker from a PTY id mapping', () => { - useAppStore.setState({ - settings: { experimentalAgentHibernation: true } as never, - terminalLayoutsByTabId: { - 'tab-1': { - root: { type: 'leaf', leafId: LEAF_ID }, - activeLeafId: LEAF_ID, - expandedLeafId: null, - ptyIdsByLeafId: { [LEAF_ID]: 'local-pty' } - } - } - }) - - recordRuntimeTerminalInputForPtyId('local-pty', 123) - - expect(useAppStore.getState().lastTerminalInputAtByPaneKey[PANE_KEY]).toBe(123) - }) - it('indexes a stable layout identity once across repeated terminal input', () => { const layoutCount = 500 let layoutEnumerations = 0 diff --git a/src/renderer/src/runtime/web-session-tabs-sync-agent-handoff.test.ts b/src/renderer/src/runtime/web-session-tabs-sync-agent-handoff.test.ts index 054aa4bc60e..769e10ade52 100644 --- a/src/renderer/src/runtime/web-session-tabs-sync-agent-handoff.test.ts +++ b/src/renderer/src/runtime/web-session-tabs-sync-agent-handoff.test.ts @@ -303,45 +303,6 @@ describe('applyWebSessionTabsSnapshot', () => { }) }) - it('keeps stale local agent tabs when the host mirror is for a different agent', () => { - const staleLocalClaudeTab: TerminalTab = { - id: 'local-claude-tab', - ptyId: null, - worktreeId: WT, - title: 'Claude', - defaultTitle: 'Claude', - customTitle: null, - color: null, - sortOrder: 0, - createdAt: NOW, - launchAgent: 'claude' - } - - const patch = applyWebSessionTabsSnapshot( - makeState({ - tabsByWorktree: { [WT]: [staleLocalClaudeTab] } - }), - makeSnapshot([ - { - type: 'terminal', - id: HOST_SURFACE_ID, - title: 'Codex', - parentTabId: 'host-tab-1', - leafId: LEAF_ID, - isActive: true, - launchAgent: 'codex', - status: 'ready', - terminal: 'terminal-1' - } - ]), - ENV, - NOW - ) as Partial - - expect(patch.tabsByWorktree?.[WT]).toHaveLength(2) - expect(patch.tabsByWorktree?.[WT]?.some((tab) => tab.id === 'local-claude-tab')).toBe(true) - }) - it('resolves a canonical agent tab before its confirming snapshot arrives', () => { recordWebAgentSessionHandoff({ environmentId: ENV, diff --git a/src/renderer/src/runtime/web-session-tabs-sync-client-owned-page-content.test.ts b/src/renderer/src/runtime/web-session-tabs-sync-client-owned-page-content.test.ts index 0afebc83522..cb867b7430b 100644 --- a/src/renderer/src/runtime/web-session-tabs-sync-client-owned-page-content.test.ts +++ b/src/renderer/src/runtime/web-session-tabs-sync-client-owned-page-content.test.ts @@ -258,24 +258,6 @@ describe('browser rows this client hosts own their page content', () => { expect(syncedPage(applyStaleSnapshot(state), state)?.url).toBe(GUEST_URL) }) - it('keeps the local loading flag instead of the host create-time value', () => { - const state = stateWithLocalRow() - - expect(syncedPage(applyStaleSnapshot(state), state)?.loading).toBe(false) - }) - - it('keeps local canGoBack instead of the host default', () => { - const state = stateWithLocalRow() - - expect(syncedPage(applyStaleSnapshot(state), state)?.canGoBack).toBe(true) - }) - - it('keeps local canGoForward instead of the host default', () => { - const state = stateWithLocalRow() - - expect(syncedPage(applyStaleSnapshot(state), state)?.canGoForward).toBe(true) - }) - // Why a real title is covered separately: a host that has learned the title publishes a // non-fallback string, which the staged-title hold would have accepted. Ownership, not staleness. it('keeps the local title even when the host publishes a real but older title', () => {