test: retire cases subsumed by an honestly-named neighbour (#24150)

* 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.
This commit is contained in:
Neil
2026-09-30 06:47:16 -07:00
committed by GitHub
parent fa3710df5a
commit d74388f8a2
6 changed files with 0 additions and 239 deletions
@@ -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
)
})
})
@@ -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()
@@ -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)
@@ -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
@@ -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<WebSessionTabsSyncState>
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,
@@ -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', () => {