Skip to content

Mac push follow-ups (2026-10-29) #2065

Open

Description

@AbirAbbas

Items found during the 2026-10-29 Mac stability and performance push that were not fixed in it.

  • Stage furrow in the Full check. Linux CI stages no furrow binary, so furrow-backed sync tests (for example TestWatchDisplacementRetiresTheDriveHoldImmediately) skip there and only ever ran on a Mac.
  • Host pressure on macOS. internal/session/task_pressure.go reads only /proc, so macOS gets no host-pressure signal. Measure before building: 8-16 parallel chats plus a CPU-heavy job, watching load, P-core share and instructions retired.
  • Bounded receipt lock. lockChat(id, "") waits without a deadline for every caller, for example ConfirmWork's resume path calls recordSendLease while holding the drive mutex. A bounded lock helper for all callers.
  • Foreign-holder refusal race. In internal/syncsetup drive.go, becomeViewer's other-device path keeps a stale non-empty Superseded.By and can delete a receipt this window reacquired. It predates syncsetup: a window displaced by a newer hold on the same computer lets go at once #2034.
  • Streaming cost upstream of coalescing. After remote: an app chat's streamed text is folded before it is framed #2043's window, about 1.5 M instructions per token remain in the provider read, the hub and the event stream. A follow-up to remote: an app chat's streamed text is folded before it is framed #2043 could send the first token sooner for remote-backed conversations only.
  • Presence heartbeat. The 7 s presence refresh is the cross-version liveness heartbeat (readers judge liveness on updatedAt within 15 s, including older builds), so it stays.
  • Answered receipts after a relaunch (app: answered receipts and quiet notices disappear after relaunch #2023). A start is on the branch fix/answered-receipt-survives-relaunch (unverified). Quiet notices and turn errors stay live-only and need their own design.
  • Alias paths. Other /var vs /private/var spelling comparisons exist in prototype-gated paths not reachable from the app. Only the app-reachable ones were addressed (cellstore: a folder that does not exist yet keeps one spelling through linked folders #2037, app: a file in the chat's folder is not called outside through a linked path #2038).
  • release.yml on a Mac shell. release.yml's test step expands an empty array under set -u, which macOS /bin/bash 3.2 rejects ("unbound variable"). CI runs Linux bash, so CI is unaffected.
  • Duplicate ask.opened. The app engine re-emits ask.opened when an ask is answered.
  • Mac flaky tests. TestR9R23PersonalLearnerRefreshesColdRouterGeneration and TestR26R27C30OpenLearnerIdleAndStateWake time out at 30 s under load on a Mac, on base and branches alike.
  • CI flaky tests. TestR7PersonalLeaderFallbackAndNoAutomaticRegain, and TestSeniorDevShellResolvesBareAndCrewModelWords (a TempDir cleanup race).
  • Unmerged drafts. The rest of the push's drafts were closed unmerged; each has its own issue, linked below.

Issues for the closed drafts and leftovers:


🤖 Generated with Claude Code

Activity

  1. added
    needs groomingShape and scope are still being decided — the approach is not settled
    area:sessionThe engine — turns, tasks, the toolbelt, checkpoints
    area:testsThe suite itself — flakes, harnesses, laws, CI reds
    on Nov 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:sessionThe engine — turns, tasks, the toolbelt, checkpointsarea:testsThe suite itself — flakes, harnesses, laws, CI redsneeds groomingShape and scope are still being decided — the approach is not settled

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions