Name the module that answers a refused store call, not the issue that asked for it - #488
Merged
Merged
Conversation
… asked for it (#487) `StorageUnavailable` in `src/cache/mod.rs` said the core's answer to a refused store call "belongs to #42". The header of the same file, a hundred lines above, says `#42 and #54 landed rather than pending` and names writing suspended on a full device among what landed with them, so one document held both halves and they disagreed about whether the answer exists. `src/cache/bound.rs` carries it: a write the store refused is `Cached::NotKept`, the call that caused the write does not fail for it, and three consecutive refusals suspend writing for a stated interval. The paragraph now says that and names the module. What that prevents is a reader taking a handled case for an open one. Somebody reading the one failure a client's byte store may report is there to find out what the core does when their implementation returns it, and the answer they got was an issue that closed as completed on 2026-08-27. A reader who trusted this paragraph and a reader who trusted the header of the same file came away with opposite answers about whether a full device is handled at all. The sentence landed on 2026-08-26, #42 closed the next day, and `src/cache/bound.rs` landed two hours after that carrying the answer and correcting the module header's own half of the same claim, which is a change that had no reason to open the type's documentation below it. So this one went stale rather than landing refuted, and the correction at the site says so in those words, in the shape the paragraph directly below it already uses for its own repair. Everything else in the paragraph is kept. 0040 still admits exactly one failure, the three conditions behind it are still not told apart, and the reason is unchanged. It was found by reading every issue number this tree names outside `docs/decisions/` against the state of that issue on the tracker. Nothing else moves. No behaviour, signature, variant, bound or event. Closes #487 Signed-off-by: Nils Lehnen <30603423+iderex@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.
The issue this belongs to
Closes #487
What changed
StorageUnavailableinsrc/cache/mod.rsstops handing the core's answer to arefused store call to #42. It names
crate::cache::boundas the module holdingit and says what the answer is: a write the store refused is
Cached::NotKept,the call that caused the write does not fail for it, and a run of refusals
suspends writing for a stated interval. A second paragraph records what the
sentence said and which of the two states it was in, in the shape the paragraph
directly below it already uses for its own repair.
Nothing else moves. No behaviour, signature, variant, bound or event.
What failure it prevents
It is wrong in the direction that reads as covered. Somebody reading the one
failure a client's byte store may report is there to find out what the core does
when their implementation returns it, and the answer they got was an issue that
closed as completed on 2026-08-27. The header of the same file says that issue
landed and names writing suspended on a full device among what landed with it, so
one document held both halves and a reader came away with opposite answers
depending on which half they read.
The sentence landed on 2026-08-26, #42 closed the next day, and
src/cache/bound.rslanded two hours after that carrying the answer andcorrecting the module header's own half of the same claim. That change had no
reason to open the type's documentation a hundred lines below, so this one went
stale rather than landing refuted.
It was found by reading every issue number this tree names outside
docs/decisions/against the state of that issue on the tracker.The means
Doc comments in the Rust source that carries the claim, which is the only means
that puts the correction where the sentence a reader meets is. A record under
docs/decisions/would leave the false sentence standing in the file somebodyopens to find the answer. No language, runtime or dependency is added, and the
suites that already exist judge the result, because
cargo docresolves the twolinks the change adds.
Evidence
The commit being pushed:
What the paragraph said, at the parent:
What the header of the same file said, at the same parent:
#42 is closed as completed:
The module the header names says a full device is #42's, and carries the answer
as a type in library code:
that a failed write does not fail its caller:
and the run of refusals that suspends writing:
The dates. The sentence is a day older than the issue closing, and the module
holding the answer is two hours younger than that:
What the paragraph says now:
What the change is:
The two commands the gate runs, at this commit. The build was run first and
exited 0; its own summary line is not pasted, because this board's hygiene check
reads the word in it as a speed claim:
The two links the paragraph adds resolve, which the ordinary build does not
judge:
Four of this board's own legs, run on this machine at this commit:
What this does not cover
src/cache/bound.rs. It is read as evidence and not edited. It alreadysays what holds.
The header of
src/cache/mod.rs. It is read as evidence and not edited. Itis the half that was already correct.
The paragraph below the one repaired. Its own correction about
crate::failure::Failure::from_cache_storeis read and left exactly as it is.The index that survives a restart.
src/cache/bound.rsstates in its ownwords that it writes none and that Decide what a cache written by another version, or half-written, is allowed to do #105 and Decide what creating and stopping the core means, including a host that suspends it #115 are where it arrives. Both are
open and neither is touched.
0040, 0042 and 0054. The records are referred to and none is edited. A
record is added or superseded rather than edited in place, which
docs/decisions/0001-decision-records.mdfixes.Every other reference to a closed issue in this directory. Only
#42atthis one site is examined, and nothing is claimed about the rest in either
direction.
A check that would refuse this. Nothing in this tree reads a doc comment's
hand-off against the state of the issue it names, and the document check reads
only
.mdfiles. This adds no rule, so the next sentence of this shape iscaught by a reader or not at all.
The shell analysis. It was not run on this machine, because the analyser is
not on this machine's path:
What the run on this pull request reports is the reading, and nothing is
claimed for it from here. This change touches no shell file.
Who has read it
Nobody other than the author. There is no second reader on this board tonight,
and the readings pasted above stand in place of one rather than a review having
happened.