Repository navigation
Mac push follow-ups (2026-10-29) #2065
Copy link
Copy link
Open
Labels
area:sessionThe engine — turns, tasks, the toolbelt, checkpointsThe engine — turns, tasks, the toolbelt, checkpointsarea:testsThe suite itself — flakes, harnesses, laws, CI redsThe suite itself — flakes, harnesses, laws, CI redsneeds groomingShape and scope are still being decided — the approach is not settledShape and scope are still being decided — the approach is not settled
Milestone
Description
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:
- Mac push: Engine-backed sync fixtures for macOS (from #2032) #2049 (tests: the engine-backed sync fixtures speak, wait for their branches, and read the Mac chord #2032)
- Mac push: Tests use the physical temporary folder on macOS (from #2033) #2050 (tests: fixtures get the physical temporary folder on macOS #2033)
- Mac push: Landing works with a filter program on Apple Git 2.39 (from #2035) #2051 (session: a land with a filter program works on Apple Git 2.39 (git-lfs on macOS) #2035)
- Mac push: macOS's provenance attribute no longer blocks task review and apply (from #2036) #2052 (taskcopy: macOS's own provenance attribute no longer blocks task review and apply #2036)
- Mac push: cellstore keeps one spelling through linked folders (from #2037) #2053 (cellstore: a folder that does not exist yet keeps one spelling through linked folders #2037)
- Mac push: A file in the chat's folder is not called outside through a linked path (from #2038) #2054 (app: a file in the chat's folder is not called outside through a linked path #2038)
- Mac push: macOS reads process groups without cgo (from #2039) #2055 (processgroup: macOS reads process groups, so left-running services and the job bound work there #2039)
- Mac push: Setup proves OpenRouter accepts a key (from #2040) #2056 (app: setup proves OpenRouter accepts a key before it says the key works #2040)
- Mac push: An idle chat does not open SQLite every second (from #2042) #2057 (perf(knowledge): idle chats stop opening SQLite every second #2042)
- Mac push: A streamed delta costs less on the in-process loopback (from #2043) #2058 (remote: an app chat's streamed text is folded before it is framed #2043)
- Mac push: Idle chats wait for seal news instead of polling (from #2044) #2059 (perf(remote): idle chats wait for seal news instead of polling every 100 ms #2044)
- Mac push: Opening a long chat no longer holds ~730 MB (from #2045) #2060 (session: an opened chat lets go of the journal lines it replayed #2045)
- Mac push: The remaining test-only macOS assumptions (from #2047) #2061 (tests: the last test-only Mac assumptions (T3-T7) #2047)
- Mac push: Knowledge capture wakes on the chat's own writes (from #2048) #2062 (perf(knowledge): capture wakes on the chat's own writes, not a per-chat 1 s ticker #2048)
- A terminal migrates a chat another process holds before it knows the chat is held #2063
- Closing a chat releases its journal before its sync drive #2064
🤖 Generated with Claude Code
Metadata
Metadata
Assignees
Labels
area:sessionThe engine — turns, tasks, the toolbelt, checkpointsThe engine — turns, tasks, the toolbelt, checkpointsarea:testsThe suite itself — flakes, harnesses, laws, CI redsThe suite itself — flakes, harnesses, laws, CI redsneeds groomingShape and scope are still being decided — the approach is not settledShape and scope are still being decided — the approach is not settled
Activity