docs(runbook): self-heal can loop forever + R8 v2-primary cutover traps#146
Open
MaxGhenis wants to merge 1 commit into
Open
docs(runbook): self-heal can loop forever + R8 v2-primary cutover traps#146MaxGhenis wants to merge 1 commit into
MaxGhenis wants to merge 1 commit into
Conversation
Two operator lessons that cost real time on the live macOS install (2026-07-19), neither previously documented: - The Google cookie self-heal (#74) can spin on "refreshing" indefinitely when Chrome has zero messages.google.com cookies (no source to refresh from), and a fresh re-pair only holds ~3-4 min before the same expiry — so connected:true right after a re-pair is not proof of a fix (watch >=5 min). Cross-refs #108 (symptom) and #75 (durable Android-companion fix). - R8 / v2-primary cutover: a stale sandbox container hijacks `defaults write` (set V2Primary via CFPreferencesSetAppValue instead), `killall cfprefsd` can drop an unflushed write, build.sh's `find .build -name OpenMessage` first-match is nondeterministic with stale caches (clean-build first), and short Swift string literals are invisible to `strings` (grep the >=16-byte env-var name to verify a build).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Two operator lessons from the live macOS install (2026-07-19) that weren't written down anywhere — both cost real time. Docs-only, no code.
Google self-heal can loop silently forever
The #74 in-process cookie refresh assumes it can renew from Chrome. On an install whose Chrome has zero
messages.google.comcookies (never opened Messages-for-web), there's no source to refresh from, so/api/statussits atneeds_repair:true/ "…session cookie expired; refreshing and reconnecting…" indefinitely. A fresh re-pair reconnects but only holds ~3–4 min before the same expiry — soconnected:trueright after a re-pair is not proof of a fix (watch ≥5 min). Added a callout under the self-heal section with thesqlite3check for the 0-cookie case and pointers to #108 (symptom) and #75 (durable Android-companion fix).R8 / v2-primary cutover operator traps
New section. The
V2Primarydefaults lever (#142) has four non-obvious ways to silently no-op on macOS: a stale sandbox container hijacksdefaults write(useCFPreferencesSetAppValue+ verify against the running backend's env),killall cfprefsdcan drop an unflushed write,build.sh'sfind .build -name OpenMessagefirst-match is nondeterministic with stale caches (clean-build first), and short Swift string literals likeV2Primaryare invisible tostrings(grep the ≥16-byte env-var name to verify a build).Not urgent — safe to merge whenever; documents things the next operator (or the in-flight refactor) will otherwise rediscover.