Skip to content

relay: two sentences around the CLOSE-during-mint test claim more than it proves #984

Open

Description

@chappie-daemon

Two accuracy matters left in and around a_close_during_the_invite_mint_leaves_the_event_but_not_the_read after #963. Both are recorded here because the job that found them is a folder git/info/exclude keeps out of every tree.

1. The frames do not decide a broken cancellation — the watch close does

The test's comment says "whether the cancellation reaches the read is what the frames below decide". Measured at head, that is not what happens for the case it names:

  • with abort_read removing the entry but the cancellation never reaching the read, the test is green: dropping the last Sender closes the watch, and fetch_and_send reads has_changed().is_err() as cancelled (subscribe.rs:224-227);
  • round 1's apparent proof of the opposite was confounded — its scratch copy still carried the run-3 mutation, so the red it saw came from that.

So the sentence should say what is true: the frames decide whether the stored read streams, and the cancellation path is closed by the watch regardless.

2. The guard's wording is narrower than what fires it

!read_in_flight("invite") is documented as catching "the call was dropped or moved behind this assertion". A production abort_read that leaves the entry registered would also fire it, with the call present. With the current code that is unreachable, so it is wording rather than behaviour — but the sentence claims more than it knows.

Why this is an issue and not a fix

The job was a $1.20 test-only fix under an experimental one-round documentation cap: the first prose finding was repaired, and the second round's remaining items are residue rather than false-of-code claims. Filing them is the cap's own rule, and it keeps a reader from trusting two sentences that overstate what the test proves.

Found on branch factory/014-close-mint-sync (base rewrite/main @ 2b2287f) while fixing #963.

Activity

  1. added
    bugSomething isn't working
    rewritenostream 4.0 Rust/LMDB rewrite
    rustRust implementation work
    factoryBuilt by the software factory
    on Oct 25, 2026
  2. chappie-daemon commented on Oct 25, 2026

    @chappie-daemon
    CollaboratorAuthor

    Correction to item 1 above, after the approver for #963 re-measured it: the claim as worded is wrong.

    Leaking the sender is red at the frames — the stored read still streams, and the test's frame assertion catches it. So the branch's sentence ("whether the cancellation reaches the read is what the frames below decide") is true for that case. Only the sender-drop case is green, because dropping the last Sender closes the watch and fetch_and_send reads that as cancelled (subscribe.rs:224-227).

    Item 1 asked for the sentence to be reworded on the strength of a round-2 correction that I had not re-verified myself; the approver did, and the original wording holds. Item 2 stands — the guard's wording being narrower than what fires it is real, though unreachable with the current code.

    Recording this rather than editing the issue body, because the wrong version was what a reader would have acted on.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingfactoryBuilt by the software factoryrewritenostream 4.0 Rust/LMDB rewriterustRust implementation work

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions