Repository navigation
Show a gap notice when a stalled connection drops watch notices - #1096
Merged
Merged
Conversation
Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
Use the approved plain-language notice in Rust, OpenCode and Pi, including unknown counts and singular/plural missing-match sentences. Replace the prior wording goldens intentionally to pin that approved copy. Keep speech-authority migrations 22 and 23 unchanged, place watch-gap tables and tombstones at migration 24, and test a populated schema-23 upgrade. Earlier migration tests still verify their speech data while advancing to the current schema. Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
The gap census is keyed by SQLite's file name, which resolves symlinks. On macOS the test's temp folder is /var/..., stored as /private/var/..., so the helper found nothing. Canonicalize before the lookup. Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
refused_shell_start_fails_fast_with_the_terminal_reason allowed 2 s for the refusal; a loaded macOS runner took longer. 10 s still sits well inside the 15 s startup timeout, so the test still proves the refusal arrives as its own terminal reply. Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
ualtinok
force-pushed
the
land/watch-gap-notice
branch
from
October 28, 2026 21:22
f09d77f to
86e83f9
Compare
The test spelled the database path itself and canonicalized it to match SQLite's resolved name on macOS, but on Windows canonicalize adds the \\?\ verbatim prefix SQLite never reports, so the lookup missed and the test read an empty census. Share the production key function instead. Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
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.
Stacked on #1095 (needs its migrations 22-23; this adds migration 24). Retarget to main after #1095 merges.
When the 256-entry reliable-push retry buffer evicts a watch-match notice on a stalled connection, AFT records a durable gap. The next notice for that watch says, in the approved wording:
("1 of them" for one notice; "Some matches may be missing." when matches can't be counted; OpenCode uses taskId/stderrOffset.) The gap is shown once, survives restart, follows the watch's exact-version acknowledgement, and never counts as a match for a one-shot watch. Health reports transport evictions separately from outstanding watch gaps and stays degraded until gaps are acknowledged. Recoverable snapshots and task completions are not counted as missing.
Summary by cubic
Shows a gap notice when a stalled connection drops watch-match notices, so the user learns that matches were lost and where to read the task output, and health stays degraded until the gap is acknowledged.
Migration
bash_watch_delivery_acksandbash_watch_delivery_gapstables.Behavior
bash_status(...)pointer to the task output, or "Some matches may be missing" when matches cannot be counted.degradeduntil gaps are acknowledged.Written for commit b6d5393. Summary will update on new commits.