Stop counting the register's other entries inside one of them [#330] - #331
Merged
Merged
Conversation
The reason beside x86_64-pc-windows-msvc said a construct the other five entries
accept can still stop there. The register holds seven, so six are other:
git show origin/main:.github/targets/targets | grep -v '^#' | grep -c .
7
git show origin/main:.github/targets/targets | grep -v '^#' | grep . \
| awk '{print $1}' | grep -vc '^x86_64-pc-windows-msvc$'
6
It was wrong on the day it landed rather than having gone stale. The register
arrived in one commit with all seven entries and that sentence already in it:
git log origin/main --format='%h %ad %s' --date=short -- .github/targets/targets
b3090f0 2026-08-26 Compile the library for every triple a client links it on
git show b3090f0:.github/targets/targets | grep -v '^#' | grep -c .
7
git show b3090f0:.github/targets/targets | sed -n '29p'
x86_64-pc-windows-msvc The Windows desktop client. It is the one entry whose toolchain differs from every other in this set, so a construct the other five accept can still stop here.
What it cost is that the number is printed rather than filed. The check prints
this register with its reasons at every verdict, by its own header's argument that
the set should be read at the moment somebody reads a verdict rather than found
later by somebody auditing:
grep -n 'the register, read with its reasons' .github/targets/targets.sh
265: echo "-- the register, read with its reasons"
So a reader auditing whether this leg earns a standard library install and a
compile per pull request was handed a set of seven and a reason accounting for
six of them, on every run for three weeks.
The number is deleted rather than corrected. The sentence says every other line
here instead, which holds whatever the register comes to hold, and the header
gains the account of what the line said, that nothing reads a reason, and why a
count inside this file disagrees with it on the next line somebody adds. That
matters more here than it would in a document, because #291 may take triples
out of 0113's set and a corrected count would go stale on the day it does.
Nothing else in the register carries a count of the set. The 32-bit line's claim
that every other line is 64-bit holds against all six others, and the remaining
reasons name a platform without counting one.
bash .github/targets/targets.sh selftest | tail -1
Every fixture held. The rules the gate applies are the rules these fixtures ran.
bash .github/targets/targets.sh check | grep 'target triple(s)'
The library compiles for 7 target triple(s): aarch64-linux-android armv7-linux-androideabi aarch64-apple-ios aarch64-apple-tvos aarch64-apple-darwin x86_64-pc-windows-msvc x86_64-unknown-linux-gnu
It was found by reading the register's reasons against the register while working
the board, not by anything reporting it.
What this does not prevent: nothing compares a reason line against the register it
sits in. The check refuses a triple with no reason and a derived set that
disagrees with the raw lines it came from; it reads no word of what a reason says,
and the next count written into one is refused by nothing.
Closes #330
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 #330
What changed
The reason beside
x86_64-pc-windows-msvcin.github/targets/targetsno longer counts the other entries. It says a construct every other line here accepts can still stop at this one, which is the argument it was making and holds whatever the register comes to hold.The register's header gains the account of what the line said, that nothing in the check reads a word of a reason, and why a count written inside this file disagrees with it on the next line somebody adds.
What failure it prevents
A failure that has already happened, on every run of the
targetsleg for three weeks. The line said five and the register holds seven:The number was wrong on the day it landed rather than having gone stale. The register arrived in one commit with all seven entries and that sentence already in it:
What it costs is that this number is printed rather than filed. The check prints the register with its reasons at every verdict, on the register's own header argument that the set should be read at the moment somebody reads a verdict rather than found later by somebody auditing:
So a reader deciding whether this leg earns a standard library install and a compile on every pull request was handed a set of seven and a reason accounting for six of them.
It was found by reading the register's reasons against the register while working the board, not by anything reporting it.
Evidence
Read at the commit being pushed,
02f428aad78556f48c3307217d53a53ed513a048.Every other reason line in the register was read against the register in the same pass. Nothing else in it counts the set. The 32-bit line's claim holds against all six others:
One 32-bit entry, six 64-bit ones, which is what that line says.
The leg's own two modes:
The paths this change touches, against the
Scope:line #330 declares:The means is a line of the register this rule already lives in, and no artefact is built here. The change edits the reason text of one entry and adds a comment to the header, in the form the file already has; it adds no language, no runtime and no dependency, and the leg that already reads this file is what proves the register still parses and still compiles.
What a guard here refuses, and the proof it bites
Nothing. This change adds and edits no guard, no check and no test, so no bite is owed and none is shown. What it edits is data the existing check reads, and the two runs above are that check judging the edited file rather than a proof of a new refusal.
What this does not cover
README.md's summary that the library is compiled for one target triple per client platform family. That sentence drops the two exceptions 0113 states in its own words, the Android second ABI and the third Apple entry. Whether a summary owes them is a judgement about a sentence rather than a count against a file, so it is named and left.aarch64-apple-tvosline's phrase "a fourth client family". It is not a count of this register's entries, and no reading of the register settles what it counts, so it is left alone rather than repaired on a guess.cargo build --locked --all-targetsandcargo test --lockedwere not run at this commit and the two leg runs above are the whole of what was measured here.Who has read it
Nobody other than the author. There is one person on this account and no second reader was available, so the evidence above stands in place of a review rather than the question being left open.