Name the trait that declares the byte store a pin would live in (#496) - #497
Merged
Merged
Conversation
`src/server/certificate.rs` named the byte store three times and gave the tracker's number every time: "the byte store of #40" in the module header, "the store in #40" on `PinnedServer`, and "a pin lives in the store in #40" on `Pins::pin`. All three now name `crate::cache::ByteStore`, which is the trait that declares it, with its four operations and its own thread rule written on it. What that prevents is a reader leaving the checkout for something in the same crate. The section those sentences open is `The pin does not survive the process`, and somebody reading it is deciding whether to supply a store and what they would have to implement. On `pin` the store is the whole reason the signature takes a fingerprint rather than a refusal, so the answer to "what store" is load-bearing there rather than incidental. None of the three went stale. #40 closed as completed at 19:33 UTC on 2026-08-26 and the trait took its four operations at 19:29 UTC the same day, four minutes earlier; this file landed on 2026-08-30, four days after both. So all three landed refuted, which is the harder of the two states to defend, and the file had the answer available in its own crate on the day it was written: the paragraph on `PinnedServer` links `crate::cache::key::ServerPart` one line above the sentence that reached for the number instead. The correction is recorded once, in the module header, and the two sites below it say in one clause what they read and point at it, rather than each repeating the dates. Everything else in the three paragraphs is kept. 0029 still puts the pin under a key keyed by the server and the device and never by the account, with no store supplied the pin still lives as long as the process, the register still holds its pins in memory, `PinnedServer` is still an owned value rather than `ServerPart` for the reason already written, and `pin` still takes a fingerprint rather than a refusal for the reason already written. `#41` is left standing. It is open, and this is about the store rather than about the key. 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 #496 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 #496
What changed
src/server/certificate.rsstops calling the byte store#40. It named it threetimes and gave the tracker's number every time: "the byte store of #40" in the
module header, "the store in #40" on
PinnedServer, and "a pin lives in thestore in #40" on
Pins::pin. All three now namecrate::cache::ByteStore, thetrait that declares it, with its four operations and its own thread rule written
on it.
The correction is recorded once, in the module header, and the two sites below it
say in one clause what they read and point at it, rather than each repeating the
dates.
Nothing else moves. No behaviour, signature, variant, bound or event.
What failure it prevents
It sends a reader out of the checkout for something in the same crate. The
section those sentences open is
The pin does not survive the process, andsomebody reading it is deciding whether to supply a store and what they would
have to implement. On
pinthe store is the whole reason the signature takes afingerprint rather than a refusal, so the answer to "what store" is load-bearing
there rather than incidental.
None of the three went stale.
#40closed as completed at 19:33 UTC on2026-08-26 and the trait took its four operations at 19:29 UTC the same day, four
minutes earlier; this file landed on 2026-08-30, four days after both. So all
three landed refuted, which is the harder of the two states to defend, and the
file had the answer available in its own crate on the day it was written: the
paragraph on
PinnedServerlinkscrate::cache::key::ServerParttwo lines abovethe sentence that reached for the number instead.
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 three false addresses standing in the file somebodyopens to find out what a pin is kept in. No language, runtime or dependency is
added, and the suites that already exist judge the result, because
cargo docresolves the links the change adds.
Evidence
The commit being pushed:
Every site in the file that named the number, at the parent:
What the three paragraphs said, at the parent:
The link two lines above the second of those is a type out of the same crate, so
the file already knew how to name one.
#40is closed as completed:The store is a trait in this crate, with four operations:
The dates. The trait took those operations four minutes before the issue closed,
and this file landed four days after both, so all three sites landed refuted:
2026-08-26T21:29:37+02:00is19:29:37Z, against the19:33:25Zabove.What the file says now:
No sentence in the file gives the store that address any more. What is left of
the number is the corrections that say what the three used to read:
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 links the paragraphs add 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/mod.rs. It is read as evidence and not edited. It already sayswhat holds.
#41. It is left standing in the header. It is open, and whether asentence should name an open issue for something the tree has since built is a
different question from this one. Nothing is claimed about it in either
direction.
The validation this module leaves out.
0029's exception is what the fileholds and the rest is outside it, which the file states in its own words.
docs/decisions/.0028,0029,0040and0041are referred to andnone 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/server/. Only#40atthese three sites 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
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.