- fix(mcp): require placeholder values on catalog install; guard save and flag stored placeholders
- fix(childWithLog): log onExit throw before closeFd; rethrow on sync paths
- fix(lint): check-explicit-any walks TS AST for AnyKeyword
- fix(repo): remove committed <path> junk file; add lint:filenames guard
- perf(chat): gate live markdown throttle/no-cache on explicit streaming prop
- fix(spawn): planEpicSpawn refuses a non-existent execCwd (spawn_cwd_missing); honest on-disk test
- feat(lint): guard tsconfig.main.json include <-> // @ts-check pairing
- refactor(scheduler): extract finalizeJobWorktree + guardedTick with unit tests
- fix(resilience): force-crash hung renderer instead of same-process reload
- fix(childWithLog): enumerate process group before SIGTERM; sync onExit when nothing to enumerate
- fix(perf): resolve EpicsWorkspace usage-poll focus against the terminal panel explicitly
- merge scheduler job 1367-resilience-atomic-verdicts-spawn-errors-lock-leak
- fix(resilience): atomic verdicts sidecar, spawn error handling, intraday lock release
- merge scheduler job 1368-typing-lint-ban-explicit-any-drop-inert-eslint
- chore(lint): ban explicit any in renderer/preload, drop inert eslint-disable comments
- fix(logs): drop already-installed auto-install rows, backfill streak warnedAt, replace raw NUL
- fix(git): bound status caches with shared LRU and delete expired entries
- fix(chat): per-sessionId in-flight latch so two runs never spawn against one session
- perf(chat): uncached, 100ms-throttled markdown for the live bubble
- fix(epic): probe project root when resuming an Epic whose worktree vanished
- fix(logs): refuse appendError from vitest outside tmpdir/SM_SANDBOX_DIR
- chore(types): start main typecheck ratchet on zod schema modules
- merge scheduler job 1359-typing-remove-explicit-any-and-shadow-casts
- refactor(types): remove explicit any and IPC shadow casts in renderer/preload
- merge scheduler job 1358-resilience-spawnjob-guarded-finally-logged-errors
- fix(scheduler): guard spawnJob finalize, log dispatch + reverify-interval failures
- merge scheduler job 1357-resilience-renderer-crash-auto-reload
- feat(resilience): bounded auto-reload on renderer crash/hang/load failure
- merge scheduler job 1354-leak-chatrunner-bounded-stderr-line-buffers
- fix(chatRunner): bound stderr (head+64KB tail) and stdout line buffer (8MB)
- merge scheduler job 1353-perf-childwithlog-async-ps-guarded-watchdog
- perf(childWithLog): async ps enumeration off the kill path; guard watchdog tick
- merge scheduler job 1352-perf-usage-for-incremental-tail-parse
- perf(transcripts): incremental tail parse for usageForOne + bounded LRU usageCache
- merge scheduler job 1351-perf-focus-gate-hidden-renderer-pollers
- perf(renderer): focus-gate queueHealth and epic usage pollers
- merge scheduler job 1349-perf-epicdetail-memoize-timeline-derivation
- perf(epics): memoize EpicDetail timeline derivation in one O(n) pass
- fix(attachments): revoke blob URLs on remove, clear, and unmount
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>