Repository navigation
Conversation
Keep locally accepted requests resolving until the native write receipt. Make stale authority, withdrawal, Stop, and failed or closed writes inert uncertain outcomes without retries. Deduplicate native requests and preserve sensitive answers and approval policies. Coven-Harness: Codex / gpt-6
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Code coverage overviewLanguages: TypeScript TypeScript / code-coverage-agent
View coverage of the 10 most impacted files.
ℹ️ Calculations represent line coverage. Results may change as calculations are updated. Updated |
|
I haven't changed this branch. Either the phone keeps an approval row while delivery is pending, or the test and the iOS app learn the new notice. That is a CF-3 (#276) design choice for this PR's owner or the tracker session. |
|
For the #316 owner, from the #273 tracker session, with Val's approval: #335 lands this PR's commit on current Fixes on top:
Once #335 lands, this PR can be closed. Coven-Harness: Claude Code / claude-opus-5-5 |
The companion sent an approval as a notice while its decision was sending. Today's iPhone build shows "Approved" only on an approval row, so after Approve once the row read "Sending decision on your Mac." and the paired iPhone test (CompanionFlowTests, line 348) timed out waiting for "Approved". While a decision is sending, the card now keeps its answer: the phone shows the decision, and the answer means it offers no buttons. Uncertain delivery and withdrawn requests still become notices, because a phone that reads only `answer` would show them as decided. Coven-Harness: Claude Code / claude-opus-5-5
Conflicts: - companion.ts: keeps this branch's question notice text and main's fallback notice for an unknown item kind (#329). - docs/human-requests.md: keeps this branch's phone paragraph and main's "Who answered" bullet and paired-desktop window line (#329). journal-resume.test.ts (#309) was written against delivery being recorded the moment an answer is accepted. On this branch a backend confirms its write through sink.deliverRequest, as the mock backend and the runner tests do. Its two fake backends now pass a native request id and write inside deliverRequest, so the crash test still checks that the card reloads answered and the CLI hears one decision. Full desktop unit suite: 1,704 tests, 1,688 passed, 16 skipped, 0 failed. Coven-Harness: Claude Code / claude-opus-5-5
|
Taken over on Val's instruction, and fixed. The new head is
CI will show whether the iPhone job passes now. I'll start the merge guard once #295 has landed, following the order on #273. |
… lands #316) (#335) * Record native answer delivery only after its transport handoff Keep locally accepted requests resolving until the native write receipt. Make stale authority, withdrawal, Stop, and failed or closed writes inert uncertain outcomes without retries. Deduplicate native requests and preserve sensitive answers and approval policies. Coven-Harness: Codex / gpt-6 (cherry picked from commit 18ca1a8) * Hand the iPhone fixture's approval to its CLI, so the phone sees it decided #316 records a human answer as delivered only after the backend hands it to its CLI (TurnSink.deliverRequest). Until then the phone is sent a "Sending decision on your Mac." notice instead of the approval. The built-in mock and image backends were updated to call it. The iPhone UI test's Mac fixture has its own backend and was not, so the phone never saw "Approved" and CompanionFlowTests.swift:348 failed in CI. The fixture now gives its approval a native request id and hands the answer off the way the built-in mock does, counting the decision only once it is consumed. Locally, on the iPhone 16 Pro simulator (iOS 26.5, Xcode 26.6), testPairApproveAndFollowUpThroughTheMac failed at line 348 on the cherry-picked #316, just after "phone answers ... with yes". With this change it passes in 88.9 s, through the follow-up, pause and resume. Coven-Harness: Claude Code / claude-opus-5-5 * Hand off decisions in the journal-resume test backends, as #316 requires #309 (CF-6 journal mechanics) landed after #316 was written. Its two journal-resume tests use backends that await sink.approval and then act, without the handoff #316 introduced (TurnSink.deliverRequest). Under #316 such an answer stays "sending", and a crash makes it "uncertain". So "the card shows the answer" after a crash, and the coalesced transcript's answered card, both failed. Both test backends now hand the decision to their "CLI" through deliverRequest and record what it heard inside that write, which is what the tests' own comments describe ("handed to the CLI"). The withdrawn card is untouched, since it is never delivered. journal-resume passes 9/9. Desktop unit: 1,688 passed, 16 skipped of 1,704; second stage 21/21. store-desktop 16/16. Coven-Harness: Claude Code / claude-opus-5-5 * List the delivery receipts under On main, unreleased #316 described its change under In flight as under review. Once landed, it belongs with the other landed slices. Coven-Harness: Claude Code / claude-opus-5-5
|
This work is on Coven-Harness: Claude Code / claude-opus-5-5 |
A locally accepted answer could be withdrawn before its native write while its card already read answered. Keep acceptance separate from the local write receipt, show interrupted or failed sends as uncertain, and never retry them automatically.
Repairs merged #293 for #276, based on main b804e9c with the landed CF-6 request journal and CF-7 clarification changes. This does not close the parent acceptance gates.
Validation:
Contract and limits and evidence.
Installed Codex 0.163.0 schemas were generated locally. The automated tests use protocol fixtures; live native question acceptance and human keyboard/VoiceOver acceptance remain open in #276. Phone question entry is outside this repair.
Coven-Harness: Codex / gpt-6