Skip to content

Give the reason 0105's queue answers are unwritten that survives the queue - #413

Merged
iderex merged 1 commit into
mainfrom
the-queue-this-paragraph-says-is-absent-412
Sep 17, 2026
Merged

iderex merged 1 commit into
mainfrom
the-queue-this-paragraph-says-is-absent-412

Conversation

@iderex

@iderex iderex commented Sep 17, 2026

Copy link
Copy Markdown
Contributor

The issue this belongs to

Closes #412

What changed

The What is not here section of src/cache/envelope.rs said nothing in this
tree holds a queue, and gave that as the reason none of 0105's three answers for
a queue entry is written there. It no longer says it. The paragraph names
crate::server::write_queue as what holds the queue, gives the reason that is
actually load-bearing, and says what it claimed before and how that was found.

The conclusion does not move: none of the three is written here and #47 is still
where they belong. Only the reason changes, from an absence that has been filled
to one that has not.

Every changed line is a documentation comment. No type, constant, function, test
or behaviour moves, and none of 0105's three answers is written.

What failure it prevents

A reason that stopped being true while the sentence it supports stayed right.
That is the shape that survives longest, because nothing about the conclusion
looks wrong, and it costs whoever acts on it: the paragraph as it stood told the
next person that a queue has to exist before 0105's answers can be written, and
one does - with the standing drop counter that 0105's first answer says its
report counts into already in it.

The replacement is chosen so that it cannot fail the same way. "Nothing holds a
queue" ends the day a queue lands. "Nothing puts a queue entry in an envelope"
ends the day the queue is stored, which is the same day the three answers become
writable, so the reason and the conclusion now expire together.

This is a correction and the failure has already happened. What was wrong: an
absence used as a reason after the thing had arrived. How it was found: by
reading the paragraph against the module it says does not exist, which opens by
saying it holds the queue a drain would walk.

Evidence

Read at 675a1979138b8c40b97b56ca225fc39421ea7d7e, which is the base of this
branch. The head being pushed is d105a3c.

The sentence as it stood.

git rev-parse origin/main
675a1979138b8c40b97b56ca225fc39421ea7d7e
git show 675a1979:./src/cache/envelope.rs | sed -n '44,47p'
//! `notice`, a drain steps over a bad entry instead of stopping at it, and a
//! counter that fails its own envelope is rebuilt rather than emptying the
//! queue. Nothing in this tree holds a queue, so none of the three is written
//! here, and #47 is where they belong.

What holds the queue, in its own words.

git show 675a1979:./src/server/write_queue.rs | sed -n '32,36p'
//! WHAT IS NOT HERE IS THE DELIVERY. Nothing in this tree opens a connection,
//! for the reason [`super::transport`] gives about itself, so nothing is sent,
//! nothing is acknowledged and no drain runs. This module holds the queue such a
//! drain would walk. #47's two conditions restart the core and restore a server,
//! and neither is met by anything here.
git grep -n '^pub mod write_queue' 675a1979 -- src/server/mod.rs
675a1979:src/server/mod.rs:81:pub mod write_queue;

Two days apart, and nothing has opened the paragraph since.

git log -S'Nothing in this tree holds a queue' --format='%h %aI %s' 675a1979 -- src/cache/envelope.rs
a8da1c3 2026-08-28T18:04:33+02:00 Wrap every cache entry in an envelope, and drop one that does not check out (#225)
git log --diff-filter=A --format='%h %aI %s' 675a1979 -- src/server/write_queue.rs
b29ecc9 2026-08-30T22:46:34+02:00 Hold 0047's order, coalescing and bound where a counter and an equality decide them (#250)

The reason that replaces it, out of the same module.

git show 675a1979:./src/server/write_queue.rs | sed -n '38,42p'
//! WHAT IS ALSO NOT HERE IS DURABILITY. 0047 puts the bytes in the store 0040
//! defines, keyed under #41, and neither the store interface's caller nor that
//! keying is built. So this queue lives as long as the value does, and the
//! counter it carries is what a restore would restore rather than something that
//! survives one today.

What the old reason cost, if somebody had acted on it. 0105's first answer
reaches for a counter the queue already keeps:

git show 675a1979:./docs/decisions/0105-an-entry-this-version-did-not-write.md | sed -n '161,163p'
A dropped queue entry is reported at `failure` rather than at `notice`, and it
counts into the standing drop count 0047 already keeps for entries displaced at
the bound. Silently discarding a person's action is the failure 0047 exists to
git grep -n 'self.dropped = self.dropped.saturating_add' 675a1979 -- src/server/write_queue.rs
675a1979:src/server/write_queue.rs:475:            self.dropped = self.dropped.saturating_add(1);

What ran here

bash .github/format/format.sh check | tail -1
Every tracked source file above is written the way the formatter would write it.
bash .github/lint/lint.sh check | tail -1
Every lint the groups above carry was refused, outside the register printed with it.

cargo build --locked --all-targets finishes without error on this branch, and
the suite is green:

cargo test --locked 2>&1 | grep -c '^test result: ok'
10
cargo test --locked 2>&1 | grep '^test result:' | grep -cv ' 0 failed;'
0

Ten result lines, and not one of them reports a failure.

The verdicts the gate reads are the runs this pull request triggers rather than
these.

The intra-doc link this change adds resolves, and the check that would say so
does not run in this gate.
cargo doc fails on this tree for an ambiguous link
in src/artwork/budget.rs that this branch does not touch, so the run cannot be
quoted as a pass. It fails identically with this change stashed, and it names no
diagnostic for either file this paragraph mentions. That is a comparison of two
runs rather than a green verdict, and no leg of this gate runs cargo doc at
all, so nothing here would have caught a broken link either way.

What this does not cover

  • docs/decisions/0047-the-write-queue.md, which carries the same claim -
    "None of this has happened here, because there is no queue in this tree" - and
    is a landed record. Whether a landed record's prose that has gone false
    because the tree moved may be corrected in place is the decision 0001 says no check reads a decision record and pastes five workflow files, and a check over docs/decisions/ has run since 2026-09-02 #380 waits
    on, so that line is left exactly as it stands.
  • The ambiguous intra-doc link in src/artwork/budget.rs, and the fact that
    no leg here runs cargo doc. Both are outside this issue's scope and neither
    is opened by this change.
  • Writing any of 0105's three answers. They stay unwritten, and Queue what a person did while the server was gone, and reconcile it on return #47 stays
    where they belong.
  • Any other claim in either module. I read the What is not here paragraph
    of the envelope against the module it names. That is a sweep of one paragraph
    rather than of src/cache/.
  • A second reader. There was none available for this change, and the
    evidence above stands in place of one.

…queue

Closes #412

The `What is not here` section of the cache envelope said nothing in this tree
holds a queue, and gave that as the reason none of 0105's three answers for a
queue entry is written there. `src/server/write_queue.rs` holds the queue and
says so in its own words. The sentence was written on 2026-08-28 and the queue
landed on 2026-08-30, in a change under `src/server/` that had no reason to open
a section in the cache.

The conclusion is unchanged and only the reason moves. What actually holds all
three is that nothing puts a queue entry in an envelope at all: the queue lives
in memory for as long as the value does, its durability is unbuilt and no drain
runs, so there is no stored entry for one of these checks to refuse and no drain
for one of them to continue past. That reason survives the arrival the old one
did not.

What was wrong: an absence used as a reason after the thing had arrived. How it
was found: by reading this paragraph against the module it says does not exist,
which opens by saying it holds the queue a drain would walk.

Every changed line is a documentation comment. No type, constant, function, test
or behaviour moves, none of 0105's three answers is written, and #47 is still
where they belong.

Signed-off-by: Nils Lehnen <30603423+iderex@users.noreply.github.com>
@iderex
iderex merged commit 9bdf43f into main Sep 17, 2026
28 checks passed
@iderex
iderex deleted the the-queue-this-paragraph-says-is-absent-412 branch September 17, 2026 19:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

The cache envelope gives the absence of a queue as its reason, and src/server/write_queue.rs holds one

1 participant