Name the modules that hold a cache key's device part and its record of written keys (#493) - #494
Merged
Merged
Conversation
…f written keys (#493) `KeySpace` in `src/cache/key.rs` gave two of its own parts addresses on the tracker. The device part of a key was "the device identity from #36", written once in the paragraph and once on the field, and the core's record of which keys it wrote was "the bookkeeping 0040 hands to #42". Both now name the module that holds the thing: `crate::session::device` and the bookkeeping inside `crate::cache::bound::TieredCache`. The paragraph also gains the bound that record actually carries. `TieredCache` accounts for what THIS run wrote, the index does not survive a restart, and `src/cache/bound.rs` says so of itself. That is the half a reader of `KeySpace` needs in order to know what 0068's promise over a sign-out is paid by, and it was in a module they were not sent to. The two halves went wrong in different ways, and the correction at the site says which is which rather than writing them as one thing. `#42` closed as completed at 00:15 UTC on 2026-08-27 and `src/cache/bound.rs` landed at 00:06 UTC the same day; `src/cache/key.rs` landed at 16:45 UTC, sixteen hours after both, so that half landed refuted. `#36` closed at 23:06 UTC and `src/session/device.rs` landed at 22:39 UTC, both after the file, so `from #36` was the best available address when it was written and went stale six hours later. What that prevents is a reader leaving the checkout twice over one struct. The other two parts of `KeySpace` are written the way the third was not: the server part names the record 0041 and the account part says what it is in words. Only the device part sent somebody to the tracker, for something that is a module in the same crate. Everything else in the paragraph is kept. 0068 still promises that signing out removes every entry under one of these, 0041 still makes that set well defined without making it reachable, 0040 still gives the store no listing, and a digest still does not reverse. `#114` is left standing, because it is open and the removal it carries has not happened. 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, field, bound or event. Closes #493 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 #493
What changed
KeySpaceinsrc/cache/key.rsstops giving two of its own parts addresses onthe tracker. The device part was "the device identity from #36", written once in
the paragraph and once on the field, and the core's record of which keys it wrote
was "the bookkeeping 0040 hands to #42". Both now name the module that holds the
thing:
crate::session::device, and the bookkeeping insidecrate::cache::bound::TieredCache.The paragraph also gains the bound that record carries.
TieredCacheaccountsfor what THIS run wrote and the index does not survive a restart, which
src/cache/bound.rsstates of itself. That is the half a reader ofKeySpaceneeds in order to know what 0068's promise over a sign-out is paid by, and it was
in a module they were not sent to.
A second paragraph records what the two sentences said and tells the two states
apart with the dates that decide them, rather than writing them as one thing.
Nothing else moves. No behaviour, signature, field, bound or event.
What failure it prevents
It sends a reader out of the checkout twice over one struct. The other two parts
of
KeySpaceare written the way the third was not - the server part names therecord 0041 and the account part says what it is in words - so only the device
part sent somebody to the tracker, for something that is a module in the same
crate. The second address cost more: the limit that actually matters, that the
record of written keys covers this run and not what an earlier run left in the
store, is written in
src/cache/bound.rsand the reader was sent to a closedissue instead.
The two halves are not in the same state.
#42closed as completed sixteen hoursbefore
src/cache/key.rslanded, withsrc/cache/bound.rsalready in the tree,so that half LANDED REFUTED.
#36was still open andsrc/session/device.rsdidnot exist when the file landed, so
from #36was the best available address andWENT STALE six hours later. The correction says which is which.
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 both addresses standing on the struct somebodyopens to find out what goes in the field. No language, runtime or dependency is
added, and the suites that already exist judge the result, because
cargo docresolves the three links the change adds.
Evidence
The commit being pushed:
What the type said, at the parent:
Both issues are closed as completed:
The device identity is a module, which names the number as provenance rather than
as an address:
The record of written keys is a type:
and the same module states the bound the repaired paragraph now carries:
The dates, which are what separate the two states. The file landed at 16:45 UTC
on 2026-08-27:
#42closed at 00:15 UTC that day and the module holding the bookkeeping landedat 00:06 UTC, which the timestamp gives in the author's offset. Sixteen hours
before the sentence, so that half landed refuted:
#36closed at 23:06 UTC and the module holding the device identity landed at22:39 UTC, which the timestamp gives as the next day in the author's offset. Both
after the sentence, so that half went stale:
What the type 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 three 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.rsandsrc/session/device.rs. They are read as evidenceand not edited. Both already say what holds.
Whether the persisted index should exist.
src/cache/bound.rsstates inits own words that it writes none and that
#105and#115are where itarrives. Both are open and neither is touched.
#114. It is left standing in the paragraph. The removal it carries isopen work, and naming an open issue for something that has not happened is not
what this change is about.
docs/decisions/.0036,0040,0041,0042and0068are referredto and none is edited. A record is superseded rather than edited in place,
which
docs/decisions/0001-decision-records.mdfixes.Every other reference to a closed issue in
src/cache/. Only#36and#42at these sites are examined, and nothing is claimed about the rest ineither direction.
A check that would refuse this. Nothing in this tree reads a doc comment's
pointer 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.