Post-0.64 batch 6

Merged
AF
5h ago
+3392-421

Post-0.64 batch 6, on top of batch 5 (main 04da2d72).

  • scope.background_tasks answers from an indexed query instead of walking every saved task folder, and reports incomplete only for a real store failure.
  • Health metrics fit AFT's 12 KiB budget again (per-root language-server applicability trimmed to the costliest roots plus totals); large-read counters split into whole and streamed reads.
  • The apps' AFT status command finds a working head's project when core opened the route or Broca used the runner alias.
  • Profiler child processes (atos, sample, perf, otool, addr2line) stream input while draining output, under a deadline that kills the process group.
  • Shell waits and request deadlines count time asleep (issue #1439); a request that expires across a sleep gets one 10 s allowance for its reply. @cortexkit/subc-client 0.24.5 with sleepGraceMs: 10000.
  • Language-server void requests (shutdown, exit) omit params, and a missing TypeScript SDK is not counted as an AFT start failure.
  • The cached-LSP smoke test passes a 30 s budget so a loaded macOS runner can't turn its check into an inconclusive timeout.

Summary by cubic

Post-0.64 batch 6: improves reliability and observability across background-task checks, shell waits, profiling, language-server handling, and the subc daemon pin. Behavior changes include pending or failed task-store writes keeping completion checks explicitly incomplete, plus a 10-second reply allowance for requests that expire across a sleep (#1439).

  • Background-task checks use indexed queries instead of scanning saved task folders, and report incomplete results with named reasons when store writes are pending or fail.
  • Shell wait and request deadlines count time asleep; requests get a 10-second reply allowance after wake, and the daemon pin moves to subc-core-v0.21.3 with centralized wire-version metadata (#1439).
  • Handback and bridge-override tests now use a complete test clock, pinning assertions to receipt time so the suspend-aware expiry can't race on CI.
  • Health metrics stay within the 12 KiB budget, trimming SQLite opener detail into a named omission count when the budget is tight, and large-read counters distinguish whole-file and streamed reads.
  • Profiling tools drain output while streaming input and stop at a deadline that kills their process group.
  • AFT status resolves projects through core-opened routes; language servers omit params on void requests and no longer count a missing TypeScript SDK as a start failure. The cached-LSP smoke test gets a 30-second budget so a loaded macOS runner can't time it out.