Repository navigation
Send a question or a plan to an older paired desktop as a notice it can read (CF-6) - #330
Merged
Merged
Conversation
…ce (CF-6, finding 6) Store builds cut before CF-3, such as TestFlight Store 0.0.8 (October 6), have no question or plan in their renderer and show nothing for one. The test drives a real DesktopClient and a client that names no item kinds through thread:items, live item and item_update events, journal replay and journaled events. On c345779 the older client gets [question, plan] unchanged. Coven-Harness: Claude Code / claude-opus-5-5
…an read (CF-6, finding 6) Val chose a capability field over a protocol bump: a bump would leave TestFlight Store 0.0.8, which predates #166's recovery screen, retrying "Waiting for your Mac host" indefinitely. - A paired desktop names the item kinds it draws in an x-modex-item-kinds header on every request. Hosts that predate it ignore it. - The host treats a client that names none as a Store build from before CF-3. It sends that client any kind outside the seven it draws (today question and plan) as an info notice with the same id, in thread:items, live and journaled events, and journal replay. An update to one arrives as the whole current notice, which every client replaces by id. A question's answers are never included. - Current clients draw every kind and get every event unchanged; each broadcast is framed once per distinct set of kinds. DESKTOP_PROTOCOL and the installed-host markers are unchanged. Coven-Harness: Claude Code / claude-opus-5-5
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
13 tasks
Code coverage overviewLanguages: TypeScript TypeScript / code-coverage-agent
View coverage of the 3 most impacted files.
ℹ️ Calculations represent line coverage. Results may change as calculations are updated. Updated |
The raw client in desktop-item-kinds.test.ts turned certificate validation off, which CodeQL flags as high severity. It now pins the host's certificate through pinnedDesktopCertificate, the same way the real DesktopClient and Store builds connect. Coven-Harness: Claude Code / claude-opus-5-5
Contributor
Author
|
CodeQL flagged one high-severity alert on |
This was referenced Oct 20, 2026
This branch was successfully deployed
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.
Finding 6 from the CF-6 review on #279: older paired desktops showed nothing for a Codex question.
Store builds cut before CF-3, such as TestFlight Store 0.0.8, have no
questionorplanin their renderer, so a thread waiting on a question looked stuck. Their answers were already refused, so this was safe, just not readable.Why a capability field, not a protocol bump
Val first chose a protocol bump, then switched to this option. A bump would have left TestFlight Store 0.0.8, uploaded October 6 and so before #166's "incompatible host" screen, retrying "Waiting for your Mac host" indefinitely. Today that build works for everything except questions and plans.
Change
A paired desktop names the item kinds it draws in an
x-modex-item-kindsheader on every request. Hosts that predate the header ignore it.A client that names none is a Store build from before CF-3. The host sends it a
questionor aplan, and any later kind it doesn't list, as aninfonotice with the same id. That covers:thread:items;An update to such an item arrives as the whole current notice, which every client replaces by id. A question's answers are never included.
Current clients draw every kind and get every event unchanged. Each broadcast is framed once per distinct set of kinds.
DESKTOP_PROTOCOLand the installed-host markers are unchanged.Docs:
human-requests.md("Older paired desktops"), the Store README andstatus.md.Evidence (
3da1d75, onmainatc345779)c44985faddstest/desktop-item-kinds.test.ts. Onc345779the older client got[["a","assistant"],["q","question"],["p","plan"]]fromthread:items, and a rawquestionin replay.pnpm buildandpnpm typecheckpassed.pnpm test: desktop 1,655 tests, with 1,639 passed, 16 skipped (the existing ones) and 0 failed. Every other suite passed.store-desktop,workspace-store,desktop-host-launch,human-requestsandevent-journalpassed 14/14, afterpnpm --filter @modex/store-desktop build.Limits
db264a3.The rest of the CF-6 residue is in #329 (findings 9 and 3) and #318 (finding 11). Findings 4 and 7 are #316's, and finding 10 is waiting on #316. The full classification is on #279.
Coven-Harness: Claude Code / claude-opus-5-5