Context
Found during #2529 UI remnants audit (F2). The model-fallback UI handler stack remains in ui/src/ despite #2130 claiming to "Remove fallback UI indicators (FallbackStatus, handleLifecycleFallbackEvent, renderFallbackIndicator) from web UI".
The backend stub at src/auto-reply/fallback-state.ts:9 returns {}, so the guarded emit branches in src/auto-reply/reply/agent-runner.ts:587,616 (if (fallbackTransition.fallbackTransitioned) / if (fallbackTransition.fallbackCleared)) NEVER fire — the UI handler is dead wiring.
UI-side remnants (scope of this issue)
| File |
Lines |
What |
ui/src/ui/app-tool-stream.ts |
75-106 |
FallbackAttempt type, parseFallbackAttemptSummaries, parseFallbackAttempts |
ui/src/ui/app-tool-stream.ts |
253-261 |
FallbackStatus type |
ui/src/ui/app-tool-stream.ts |
266-267 |
CompactionHost.fallbackStatus, CompactionHost.fallbackClearTimer |
ui/src/ui/app-tool-stream.ts |
271 |
FALLBACK_TOAST_DURATION_MS constant |
ui/src/ui/app-tool-stream.ts |
330-390 |
handleLifecycleFallbackEvent function |
ui/src/ui/app-tool-stream.ts |
403-406 |
Dispatcher branch for stream: "lifecycle" | "fallback" |
ui/src/ui/app-tool-stream.node.test.ts |
(whole file) |
22 fallback references — tests asserting the dead handler works |
ui/src/ui/app-view-state.ts |
2, 59 |
FallbackStatus import + fallbackStatus: FallbackStatus | null field |
ui/src/ui/views/chat.ts |
24-42, 86, 122-148, 406 |
FallbackIndicatorStatus type, fallbackStatus prop, FALLBACK_TOAST_DURATION_MS, renderFallbackIndicator, call-site |
ui/src/styles/components.css |
1267-1275 |
.compaction-indicator--fallback, .compaction-indicator--fallback-cleared CSS rules |
Backend cleanup (separate follow-up — out of scope here)
src/auto-reply/fallback-state.ts stub + src/auto-reply/reply/agent-runner.ts:398-639 (resolveFallbackTransition call, both emit branches, buildFallbackNotice / buildFallbackClearedNotice calls) should also be removed for full cleanup of the fallback system. File separately.
Acceptance Criteria
Size estimate
~300 LOC removed across 5 source files + 1 CSS file + 1 test file.
Related
Context
Found during #2529 UI remnants audit (F2). The model-fallback UI handler stack remains in
ui/src/despite #2130 claiming to "Remove fallback UI indicators (FallbackStatus, handleLifecycleFallbackEvent, renderFallbackIndicator) from web UI".The backend stub at
src/auto-reply/fallback-state.ts:9returns{}, so the guarded emit branches insrc/auto-reply/reply/agent-runner.ts:587,616(if (fallbackTransition.fallbackTransitioned)/if (fallbackTransition.fallbackCleared)) NEVER fire — the UI handler is dead wiring.UI-side remnants (scope of this issue)
ui/src/ui/app-tool-stream.tsFallbackAttempttype,parseFallbackAttemptSummaries,parseFallbackAttemptsui/src/ui/app-tool-stream.tsFallbackStatustypeui/src/ui/app-tool-stream.tsCompactionHost.fallbackStatus,CompactionHost.fallbackClearTimerui/src/ui/app-tool-stream.tsFALLBACK_TOAST_DURATION_MSconstantui/src/ui/app-tool-stream.tshandleLifecycleFallbackEventfunctionui/src/ui/app-tool-stream.tsstream: "lifecycle" | "fallback"ui/src/ui/app-tool-stream.node.test.tsui/src/ui/app-view-state.tsFallbackStatusimport +fallbackStatus: FallbackStatus | nullfieldui/src/ui/views/chat.tsFallbackIndicatorStatustype,fallbackStatusprop,FALLBACK_TOAST_DURATION_MS,renderFallbackIndicator, call-siteui/src/styles/components.css.compaction-indicator--fallback,.compaction-indicator--fallback-clearedCSS rulesBackend cleanup (separate follow-up — out of scope here)
src/auto-reply/fallback-state.tsstub +src/auto-reply/reply/agent-runner.ts:398-639(resolveFallbackTransitioncall, both emit branches,buildFallbackNotice/buildFallbackClearedNoticecalls) should also be removed for full cleanup of the fallback system. File separately.Acceptance Criteria
app-tool-stream.node.test.ts— delete fallback-related tests (backend doesn't emit).compaction-indicator--fallback*CSS rules (no TS references after UI cleanup)pnpm checkpassespnpm test:ui:smokepassesgrep -rn "fallbackStatus\|FallbackStatus\|FallbackIndicatorStatus\|handleLifecycleFallbackEvent\|renderFallbackIndicator\|parseFallbackAttempt" ui/src/returns no matchesSize estimate
~300 LOC removed across 5 source files + 1 CSS file + 1 test file.
Related