Say which events the cache emits, and stop the cache module denying the read it holds - #443
Merged
Merged
Conversation
…he read it holds `src/diagnostics/mod.rs` headed a section "Which events exist today" and answered "None. Nothing in this tree emits one, because no subsystem that would is built." Three exist. `src/cache/bound.rs` declares and emits two, for a full device suspending writing and for artwork giving way to metadata, and `src/cache/envelope.rs` declares and emits a third for an entry dropped after failing its check. None of the six sites is in a test module: those files' test modules begin at lines 966 and 463, below every one of them. That section is now about the cache, and it hands the reader `git grep -n 'EventName::declared' -- src/` rather than a list, because a list in the diagnostics module goes stale against the modules that declare the names. `src/cache/mod.rs` said "Nothing in this tree fetches bytes out of a store and hands them anywhere" as the reason the freshness half of #43 has no caller. `TieredCache::read` reads the supplied store and returns the bytes, and `CheckedEntries::read` calls it and hands what comes back to its own caller. What is actually absent is a caller that DEMANDS freshness - nothing here asks for an entry because it is about to show one to somebody - and that is what the file now says, with #27 as the transport that would produce such a caller. The two are in different states and the text says which is which. The diagnostics sentence landed on 2026-08-26 and was true that day; the cache bound arrived on 2026-08-27 and the envelope on 2026-08-28, neither in a change with a reason to open the diagnostics module, so that one drifted. The cache sentence landed on 2026-08-28 against a read that had been in a sibling module of its own directory since 2026-08-27, so that one was refuted before it was written. The diagnostics paragraph also sent a reader to `crate::session` for the same sentence. `git grep -n 'exist today\|no subsystem' -- src/session/` exits 1 and prints nothing, so the pointer is deleted rather than repaired: what it pointed at cannot be found to repair. What failure it prevents: a reader asking what this interface looks like in practice met "None" and went away with a shape and no worked example, two files from three names with their severities and their fields; and a reader asking whether the freshness half of #43 is closable met an absent mechanism where the mechanism is present and the caller is not. Both errors run in the direction that makes the tree look emptier than it is. No negative disclosure is softened. Nothing in this tree runs a core to hand an event to a sink a client supplied, which is #115 and 0100, and the demand for freshness and its callers are still absent. Both are said in the same place, in words that got sharper rather than weaker. What was wrong, and how it was found: a sweep of absence claims in files no check reads, run against the tree, after #438 and #440 repaired the same class elsewhere under `src/`. `.github/doc-paths/doc-paths.sh` takes `git ls-files '*.md'` as its subject, so a claim in a Rust doc comment is read by nothing here, and the next sentence of this shape lands as green as these two did. No event is added, renamed or removed. No type, field, constant, assertion or test changes. The diff is two doc comments. `cargo build --locked --all-targets` and `cargo test --locked` are green at this commit: ten suites, 772 passed, 0 failed. `.github/format/format.sh check`, `.github/lint/lint.sh check`, `.github/doc-paths/doc-paths.sh check` and `.github/invariants/invariants.sh check` each exit 0. `.github/shell-analysis/shell-analysis.sh` was NOT run here: `shellcheck` is not on this machine and the script says so rather than passing. No shell file is touched and the gate runs that leg. Closes #442 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 #442
What changed
src/diagnostics/mod.rs's "Which events exist today" section stops answering"None". It names the cache as the subsystem that emits, says what each of the
three events is emitted for, and hands the reader
git grep -n 'EventName::declared' -- src/rather than a list, because a list inthis module goes stale against the modules that declare the names.
Its pointer at
crate::sessionfor the same sentence is deleted. Nothing of thatshape is in that module, so there is nothing to repair it against.
src/cache/mod.rsstops saying that nothing in this tree fetches bytes out of astore and hands them anywhere. What is absent is a caller that DEMANDS freshness -
nothing here asks for an entry because it is about to show one to somebody - and
that is the reason the file now gives, with #27 as the transport that would
produce such a caller.
Each correction records what the sentence said, and whether it went stale or
landed refuted, because the two are different states.
What failure it prevents
Both errors run in the direction that makes the tree look emptier than it is, in
the two files a reader opens to ask what either subsystem does today.
A reader asking what the diagnostics interface looks like in practice met "None"
and went away with a shape and no worked example, two files away from three names
with their severities and their fields. The sentence sits directly above the rule
that an event name arrives with the issue that builds the subsystem emitting it,
so the emptiness read as evidence that no such issue had landed.
A reader asking whether the freshness half of #43 is closable met what reads as
an absent mechanism. The mechanism is present and used; the caller is what is
missing. Those are different gaps with different owners.
No negative disclosure is softened. Nothing in this tree runs a core to hand an
event to a sink a client supplied, which is #115 and 0100, and the demand for
freshness and every caller are still absent.
How it was found: a sweep of absence claims in files no check reads, run against
the tree, after #438 and #440 repaired the same class elsewhere under
src/.Evidence
Readings at the parent commit,
368664219e3e320f630d041cbf7c3fbd65eff3cb, exceptwhere a historical commit is named.
The two sentences as they stood:
Three events are declared:
and four sites emit them:
None of the six is in a test module. Those begin below every one of them:
The store is read and the bytes are handed on:
The pointer at
crate::sessionresolves to nothing:exits 1 and prints nothing, which is
grepselecting nothing rather than anerror.
One went stale and one landed refuted:
The diff:
Neither claim is left:
The runs at this commit:
cargo build --locked --all-targetsfinishes without error at this commit,cargo clippy --locked --all-targets -- -D warningsexits 0, andcargo fmt --all -- --checkexits 0. Ten result lines, all readingok; a runthat collected nothing would print a result line too, which is what
.github/test/test.shrefuses on the gate, and that leg was not run here.What a guard here refuses, and the proof it bites
No guard is added or edited. No event is added, renamed or removed. No type,
field, constant, assertion or test changes. The diff is two doc comments.
What this does not cover
interface a client supplies a sink through is 0100, and neither is delivered
here.
produce one is Build the HTTP transport, with timeouts, connection reuse and cancellation #27.
written into a Rust doc comment.
.github/doc-paths/doc-paths.shreadsgit ls-files '*.md', and widening it is not asked for here, so this classstays found by hand.
src/cache/mod.rscarriesfurther statements about what is absent - a token to watch, an entry produced
for a notification - and each needs its own reading of the tree. None is
touched.
docs/decisions/. 0100 and 0061 carry sentences of a similar shape. Alanded record's prose that has gone false because the tree moved is the rule
question 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 is open on, and nothing here goes near it.
.github/shell-analysis/shell-analysis.shwas NOT run.shellcheckis noton this machine and the script refuses rather than passing. No shell file is
touched by this change and the gate runs that leg.
was run here. Those run on the gate.
Who has read it
Nobody other than the author. There is no second reader on this board tonight,
and the evidence above stands in place of one rather than the question being left
open.