Stop the diagnostics module handing 0071's rule to an issue it applies in its own emit - #482
Merged
Merged
Conversation
…s in its own emit (#481) `src/diagnostics/mod.rs` said on `FieldValue` that #71 is where 0071's per-field rule is built and that this module decides none of it. The rule is in `src/diagnostics/redaction.rs`, which this file registers and imports four names from, and `Diagnostics::emit` in this same file reads the treatment off each field name: an event of whole fields goes to the sink untouched, a reduced field is replaced by a correlator, and an excluded field is not kept at all. The paragraph now names both places and keeps the point it exists for, which is that the rule reads the field NAME and never the variant, so what decides none of it is this type rather than this module. What that prevents is an absence read as a decision. Somebody asking whether the core decides what may leave through a diagnostic event read on the type carrying a field's value that this module decides none of it, followed #71, found an open issue carrying a waiting label, and concluded that nothing here treats a field before a sink sees it. The sentence landed on 2026-08-26 and was refuted two days later by the commit that added the submodule, the import and the branches to this very file. The coverage register has said since then that the per-field half is built, which is the condition it named for putting `src/diagnostics/` on the pinned surface, so this file was the one place still saying otherwise. The half of #71 that is genuinely not here is unchanged and stays negative: the test that drives a full session at the most verbose level, which the redaction module states in its own header and which nothing in this change claims. Nothing else moves. No behaviour, signature, variant or registration. Closes #481 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 #481
What changed
The
FieldValueparagraph insrc/diagnostics/mod.rsstops saying that #71 iswhere 0071's per-field rule is built and that this module decides none of it. It
names
redaction, which this file registers and imports from, as where the rulelives, and
Diagnostics::emit, in this same file, as where it is applied beforethe client's sink is called. What the paragraph exists for is kept: the rule
reads the field NAME and never the variant, so what decides none of it is this
TYPE rather than this module. The half of #71 that is genuinely absent is named
and stays negative.
Nothing else moves. No behaviour, signature, variant or registration.
What failure it prevents
The module said of itself that it decides none of what may leave through an
event, while its own
emitdrops an excluded field, replaces a reduced one witha correlator, and carries the rest whole. Somebody asking whether the core
treats a field before a sink sees it read that sentence, followed #71, found an
open issue carrying a waiting label, and concluded that nothing here does. That
is wrong in the direction that reads as covered, and the subject is what may
leave a person's device.
It was found by reading this module's account of 0071 against the submodule it
registers and against its own
emit.Evidence
The commit being pushed:
What the paragraph said, at the parent:
The rule, at the parent, in a file this one registers and imports four names
from:
And the application, at the parent, in the same file as the sentence:
The dates. The sentence landed on 2026-08-26 and the submodule, the import and
the branches above arrived on 2026-08-28, in one commit that edited this file:
Another register in this tree had already said the per-field half is built, and
made it the condition for putting this directory on the pinned coverage surface:
The absence that survives, which the change names rather than deletes. #71 is
open, and the module that holds the rule says which half is missing:
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/diagnostics/redaction.rs. Read as evidence and not edited. Italready says what it holds and which half of Keep personal data out of logs, errors and anything a person is asked to send #71 it does not.
Diagnostics::emitand the code below it. Read as evidence and notedited. No production line changes.
The module header's own hand-off. Line 6 of this file says what may leave
through an event is 0071 and Keep personal data out of logs, errors and anything a person is asked to send #71, and the header never names the submodule
that answers it. That sentence is not false, and whether a module header owes
an index of its own submodules is a separate reading. It was not made here.
The sink's paragraph.
DiagnosticsSinksays what may appear in an eventis 0071 and Keep personal data out of logs, errors and anything a person is asked to send #71 and that nothing there decides it. That trait receives an
event which has already been treated, so the sentence is about a different
subject and is left alone.
Keep personal data out of logs, errors and anything a person is asked to send #71 itself. It stays open, it keeps its waiting label, and nothing here
changes what it is waiting on or claims any part of it done beyond what the
tree already holds.
0071, 0100 and 0068. All three records are read and none is edited. A
record is added or superseded rather than edited in place, which
docs/decisions/0001-decision-records.mdfixes.Whether any field is classified correctly. The compiler asks whether
somebody chose a treatment, never whether they chose the right one, which the
redaction module states about itself. This change reads no field name and
moves no classification.
A check that would refuse this. Nothing in this tree reads a doc comment
against the module beside it or against the code below it, and the document
check reads only
.mdfiles. This adds no rule, so the next sentence of thisshape is caught 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.