Settle the means a certificate is validated with, and what the first release is - #270
Merged
iderex merged 3 commits intoAug 31, 2026
Conversation
…se of 0103 (#243) 0029 requires the platform's own trust store and the platform's own path building and refuses a client-supplied evaluation by name. 0103 refuses a dependency that writes to a log. Every candidate that meets the first carries a logging facade and is refused by the second, and the one shape the second admits is refused by the first, so the two landed records refused each other's answer and #29's second condition sat behind an absence no issue held. 0243 names the means - rustls driving rustls-platform-verifier - admitted under 0103's clause for a dependency a landed record already requires, and narrows that record's fourth refused behaviour to writing to a log rather than to linking a facade whose sink is absent, on the condition that the core installs no logger and states that it installs none. The facade's own default sink is a no-op, read out of its source rather than assumed, so the property 0103 exists to guarantee is untouched. What it prevents is the collision being met as a red gate on a branch, where the cheapest way out is to weaken whichever record is nearer to hand, and a means being chosen at a call site by whoever reaches it first. The record carries the graph counted per triple, every licence expression in it derived rather than eyeballed, where the platform's path building stops, why 0029's six reason classes are not derivable from what the backends report, and what the crypto provider costs the target leg. Three residuals are named rather than softened: nothing refuses a logger installed tomorrow (#266), 0001 has no shape for a record that narrows one clause of another (#267), and one licence expression in the Android graph carries a term 0103's set names in neither half (#268). 0103 and 0029 each receive a pointer and nothing else, which is the one edit 0001 permits to a landed record. Signed-off-by: Nils Lehnen <30603423+iderex@users.noreply.github.com>
This repository is a library, so a release of it has nothing an operator can run and the question of what a release even means here had to be answered before anything is tagged. 0091 answers it: the library compiled for 0113's triples together with the probe #92 builds, published as a 0.x tag on this repository alone with its checksums and #87's attestations, and described by #95 as something an operator points at their own server rather than as a client. Every item in the contents is a closed issue rather than a description of work, and every condition in the bar is a closed issue, a green check or a run whose failure mode was demonstrated. Nothing in the list is a judgement somebody makes on the day, which is the failure this record is against: "is it ready" asked at the tag is answered by whoever is most tired of asking, and a preview shipped as a release is not withdrawn afterwards. It also fixes which speed numbers appear. A number appears only where #67 has published it with the command that produced it, and every number 0008 names that #67 has not published is listed in #95 as not measured, in those words - because a list assembled on the day is a list whose absences are invisible, and the absence is the part an operator needs. The four answers it rests on are entries 2, 3, 4 and 6 of #1, taken on 2026-08-24, read from that issue rather than recalled. Signed-off-by: Nils Lehnen <30603423+iderex@users.noreply.github.com>
The codeql row records that the leg refuses a finding the register does not excuse. It did not say which half of that is proven here and which is not, so a green tick on `Analyze (rust)` reads as evidence that the analysis finds defects in this tree, and it is not. What is proven from here is the reading: the five documents under .github/codeql/fixtures are one change apart from each other and demonstrate that a report carrying a finding is refused, that a result naming no rule is still read as a finding, and that a file with no run or no loaded rule is refused too. What is not proven is that the loaded pack finds a defect of this kind in this language. Two deliberate defects matching the loaded queries were written and reverted, once before this crate declared a dependency and once after, and both runs reported nothing. The pack is fetched at run time rather than tracked here, so no reading of this tree settles why. The negative disclosure is written where the row is read rather than only on the issue, because the row is what somebody consults when they want to know what this gate covers. The leg already prints the same bound on every run; this puts it where a reader who never opens a job log will meet it. Signed-off-by: Nils Lehnen <30603423+iderex@users.noreply.github.com>
iderex
deleted the
the-means-a-certificate-is-validated-with-and-the-first-release-243-91-81
branch
August 31, 2026 19:24
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 #243
Closes #91
Three issues, one branch. #81 is the third and it is closed on its own evidence
rather than by this pull request, because what it needed was its condition
rewritten and a sentence put where the condition is read; the tree change here is
that sentence. All three land only documents, which is why they share a branch:
each on its own would move the mainline under the other two for nothing.
What changed
#243, and it is the one that was holding a milestone.
docs/decisions/0243names the means the core validates a certificate with -
rustlsdrivingrustls-platform-verifier, which dispatches to each platform's own verifier -admitted under 0103's clause for a dependency a landed record already requires.
What made this hard was not the choice of package. 0029 requires the platform's
own trust store and the platform's own path building and refuses a
client-supplied evaluation by name. 0103 refuses outright, as its fourth
behaviour, a dependency that writes to a log. Every candidate that satisfies the
first carries a logging facade, and the one shape the second admits treats every
root equally regardless of its status, which the first refuses. Two landed
records refused each other's answer, which 0011 had written down as its own
reversal condition before there was a graph to measure.
The record executes the ruling taken on #243 on 2026-08-30: 0103's fourth
behaviour narrows to writing to a log, and linking a facade whose sink is absent
is not that, on the standing condition that the core installs no logger and says
so. The facade's default sink is a no-op, read out of its own source rather than
assumed, so the property 0103 exists to guarantee is untouched.
The narrowing is written in 0243 rather than into 0103's own text. 0001 permits
three edits to a landed record and a change to what it decided is not among them;
a pointer that changes no sentence's meaning is. So 0103 and 0029 each receive a
pointer and nothing else.
#91.
docs/decisions/0091records what the first release contains - thelibrary for 0113's triples plus the probe #92 builds, a
0.xtag on thisrepository alone with checksums and #87's attestations - and what it does not: no
user interface, no playback, no client, no package in any registry, no frozen
interface. Every item is a closed issue and every condition in the bar is a
closed issue, a green check or a run whose failure mode was demonstrated, so
nothing in it is a judgement somebody makes on the day.
#81. The
codeql.ymlrow indocs/gate-parity.mdgains what the leg provesand what it does not.
What failure it prevents
For #243: the collision between 0029 and 0103 being met as a red gate on
somebody's branch, where the cheapest way out is to weaken whichever record is
nearer to hand. And, before that, a means chosen at a call site by whoever
reaches it first, which on this question is the package whose error type carries
no reason class at all - so nothing a client could show would survive a refusal.
Neither has happened here, because nothing in this tree reaches a network yet.
For #91: two failures, both of which have happened to other projects rather than
to this one. A scope decided at the tag is shaped by whatever compiled that week,
and the parts that did not compile leave no trace in it. And "is it ready" asked
on the day is answered by whoever is most tired of asking; a preview shipped as a
release is not withdrawn afterwards.
For #81: a green tick on
Analyze (rust)read as evidence that the analysisfinds defects in this tree. It is not, and until now the parity row did not say
so.
Evidence
Everything below was run at the head being pushed.
The two commands
CONTRIBUTING.mdnames:The leg that reads what this change touches most:
The readings 0243 rests on
Every
cargoreading in that record was taken in a scratch crate outside thistree, on this Windows machine, with the toolchain
rust-toolchain.tomlpins,declaring
rustls = "0.23"andrustls-platform-verifier = "0.7"and nothingelse. It resolves
rustls v0.23.43andrustls-platform-verifier v0.7.0. Thegate runs on
ubuntu-latest, so the cross-compile results in particular are thismachine's and not the runner's.
The graph, per triple:
against what this tree carries today:
Every licence expression across the union of the seven, thirty-nine packages:
Nine of the ten are satisfied by 0103's admitted set. The tenth is not, and the
record says so rather than admitting it quietly; #268 is where it is asked.
The facade's default sink, which is what the narrowing rests on:
and that this core installs none today:
What #81's condition is now measured against
The leg refuses a report carrying a finding, run here rather than described:
and the one-change neighbour two quotation marks away passes:
What a guard here refuses, and the proof it bites
This change adds no guard. It edits no check, no workflow and no script, and the
runs above are the existing legs judging the documents rather than new ones being
proven.
The proof shown for #81 is of a guard that already exists, and it is quoted
because the issue's rewritten condition is now discharged against exactly it. Its
direction was watched in both:
one-finding.sarifis refused and its one-changeneighbour is not.
What this does not cover
No dependency is taken.
Cargo.tomlandCargo.lockare untouched by thisbranch. 0243 decides the means; the manifest entry, and the line 0103 requires
beside it, arrive under #27 and #29.
Nothing here is compiled against that means. The cross-compile readings in
0243 come from a scratch crate on this Windows machine, not from the runner and
not from this tree, and the record says so in its own text. Six of seven triples
fail in
aws-lc-sys's build script for want of a C toolchain and the host builds;what the runner would do with an NDK and an Apple SDK present is not measured
here.
0029's reversal condition is not discharged. The reason classes were read out
of the crate's source, which is not a refusal on a wire. Whether two platforms
produce different classes for one certificate is still unmeasured, and 0243 says
what it gives that condition is something to take the measurement with.
Three residuals are named and none is closed here. Nothing refuses a logger
installed tomorrow (#266). 0001 has no shape for a record that narrows one clause
of another, so a reader of 0103 who does not follow its pointer reads the fourth
behaviour one clause wider than the rule in force (#267). One licence expression
in the Android graph carries a term 0103's set names in neither half, so that
half of the means is not licensed by this board yet (#268).
One reading in 0103 no longer reproduces, and this branch does not repair it.
It pastes
git grep -l '#103' -- docs/decisionswith three files and the commandreturns five. It is #269, and repairing it is not one of the three edits 0001
permits, so it needs its own decision rather than a line in this diff.
#81's narrower condition is not a claim that the wider one holds. That the
loaded pack finds a defect of this kind in this language is unproven. Two
deliberate defects were written and reverted, once before this crate declared a
dependency and once after, and both runs reported nothing.
No leg that needs the network or the runner ran here.
codeql.yml,zizmor.yml,scorecard.yml,dependenciesandtargetswere not run on thismachine.
shellcheckis not installed here, so the shell leg is unrun; thisbranch adds and edits no shell.
Who has read it
Nobody but me. There was no second reader available for this change, and the
evidence above stands in place of one rather than the question being left open.