Cut the target set to the triple the runner builds once 0243's entry arrives - #513
Merged
Merged
Conversation
…arrives 0291 decided on 2026-09-04 that no triple leaves 0113's set and that the manifest entry 0243 requires waits for a pure-Rust provider, and it recorded that no reading of which C cross-compilers the runner carries had ever been taken. The decision of 2026-09-18 on #291 reverses the first half: a triple the target leg cannot build leaves the set until a provider reaches a release the leg compiles it on, and the leg's own run says which those are. That run is now taken. On a draft carrying rustls 0.23.45 and rustls-platform-verifier 0.7.0 and nothing else, on ubuntu-latest with the pinned toolchain, six of the seven triples fail inside aws-lc-sys's build script, each at a different missing tool - the NDK's wrapper for the two Android ABIs, xcrun for the two Apple triples that need an SDK, and the image's own cc stopping on an Apple assembly source and on a source compiled with the MSVC definitions for the other two. The same tree with those six out of the register is green. 0512 records the cut, supersedes 0113 and 0291, says which parts of each it carries forward unchanged, names every triple that left with the tool its build stopped at, and states what returns it. The register holds the one triple that is left, and its header no longer argues that the set is a set of client platforms rather than of runners, because after this change it is not. What this prevents is a register holding a single line with nothing saying whether that is a decision or an accident, and a platform taken out with no record of what it was short of, which comes back by somebody re-measuring from nothing or does not come back at all. Closes #291 Closes #512 Signed-off-by: Nils Lehnen <30603423+iderex@users.noreply.github.com>
… that costs The cut in the commit before this one left `.github/cross-toolchain/probes` naming six triples the target register no longer carries, and the loader refuses a probe for a triple that set does not name - which is the rule that stops a probe register outliving the platform it was written for, and it is right. The six blocks leave. What leaves with them is the reading 0291's second reversal condition asks for, and 0512 carries that condition forward for the triples it took out. The leg now surveys the set the target register names, which after 0512 is a set this runner serves by construction, so it reports a control rather than a survey. #514 carries the subject it needs to watch a departed triple again, and 0512's reversal condition, the register's header and the workflow's own comment each say so where a reader of that file meets it rather than in one place. The script's messages named 0113's set, and 0113 is superseded by 0512 as of the commit before this one. They name the target register instead, so the leg does not print a superseded record's number on every run; its twenty fixtures are unchanged and still hold. Contributes to #291 Contributes to #512 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.
What this changes
.github/targets/targetsholds one triple where it held seven, anddocs/decisions/0512-the-triples-the-gate-compiles-once-the-providers-c-build-arrives.mdrecords why, supersedes 0113 and 0291, and says which parts of each it carries
forward unchanged. 0113 and 0291 take their
superseded byhalves, which is oneof the three in-place edits 0001 permits, and the index takes its line.
The means
Prose in the register that already exists and a record in the register of
records. The decision is a change to a set two legs read through one reader, and
neither a new file format nor a new check would carry it: 0001 fixes the shape a
decision takes here and
.github/targets/targets.shis already the authority forwhat the set is. No language, runtime or dependency is added.
The reading behind it
Taken on
ubuntu-latestwith the toolchainrust-toolchain.tomlpins, on adraft carrying
rustls 0.23.45andrustls-platform-verifier 0.7.0in[dependencies]and nothing else. #291 records that every cross-compile readingbefore this one was taken on a contributor's Windows machine.
The first run is https://github.com/Flowfin/core/actions/runs/35351749365, at
head
3915c8d4d32cb2e3996f142e3bd59987bce4529f, against the register as itstood:
Every one of the six ends in
error: failed to run custom build command for aws-lc-sys v0.45.0, at a different tool:The second is https://github.com/Flowfin/core/actions/runs/35352090075, at head
9cdd5389d78e7862296bd39ed8e63e704f9c4cc1, the same manifest with those six outof the register:
Both are on one branch whose name begins with the word probe, opened as a draft
and closed rather than merged.
Run at this head
What this costs, stated rather than left to the tick
Six client platforms stop being compiled at all: Android on both its ABIs, iOS
and iPadOS, Apple's television platform, macOS on Apple silicon, and the Windows
desktop. A defect that appears only on one of them now leaves the whole gate
green, which is the failure 0113 built the leg against. Two of the six cost more
than the other four, and 0512 names both: the 32-bit Android ABI is the only
entry in the set that was not 64-bit, and 0113 calls it the entry to keep if the
set is ever cut; the Windows entry is the one whose toolchain differed from every
other.
What is left is the runner's own host, which is the triple the suite already runs
on, so the leg adds nothing to
buildfor as long as 0512 holds.What the probe register beside the target one had to do
.github/cross-toolchain/probesnamed six triples the target register no longercarries, and its loader refuses a probe for a triple that set does not name -
the rule that stops a probe register outliving the platform it was written for.
Those six blocks leave, and what leaves with them is the reading 0291's second
reversal condition asks for. The leg now surveys the set the target register
names, which after 0512 is a set this runner serves by construction, so it
reports a control rather than a survey.
That is written where a reader of each file meets it: in 0512's reversal
condition, in the register's header, and in the workflow's own comment. #514
carries the subject the leg needs to watch a departed triple again. The script's
messages named 0113's set and name the target register instead, since 0113 is
superseded here; its twenty fixtures are unchanged and still hold.
What this does not do
It does not add the manifest entry.
Cargo.tomlandCargo.lockare untouchedhere, and #27 is where the entry and the clause 0303 and 0103 require beside it
arrive.
It does not decide which provider. 0243's means is unchanged and the candidate
crates read on #291 on 2026-09-16 are weighed there.
It does not add a runner or a toolchain, so the cost is paid in platforms rather
than in minutes.
The second reader
There is none tonight. What stands in place of one is that the decision this
lands was taken on #291 on 2026-09-18 by somebody other than whoever writes the
record, and that both readings above were taken by the gate on its own runner
rather than reported from a working tree. That is weaker than a reading by a
second person and is not a substitute for one.
Closes #291
Closes #512