Record the wait the socket takes, rather than the bill or the platform (#291) - #301
Merged
Merged
Conversation
#291) 0243 priced three ways out of the C crypto provider its means brings and took none of them, so the choice sat unheld on #291 and no socket could be opened on this board until somebody took it. It was taken on 2026-09-04: wait for a pure-Rust provider, add no C cross-toolchain to the target leg, and let no triple leave 0113's set. This lands that choice as a decision record with its index line, and nothing else. No dependency arrives, the target register and its workflow are untouched, and no earlier record is edited - the record takes one of the ways out 0243 priced rather than narrowing a clause of it, so it carries no Narrows: field and 0243 receives no Narrowed-by: one. What it prevents is the fourth way out, which #291 opened asking to refuse: a transport landing with a socket and no TLS on the reading that 0028 honours a typed clear-scheme address. Written nowhere, this choice is met for the first time as a red target leg at the end of somebody's change, and the cheapest thing to do with a red gate at that point is to take the entry back out and open the socket without it - one commit from a core that speaks in clear, with a green gate to show for it. The record states the cost rather than softening it. Nothing under src/ reaches the network, so every condition on this board naming a request, an exchange, a sign-in or a session is unreachable for as long as this holds; that is a milestone held rather than a scheduling detail and the record says so. It also keeps negative what was not measured: which C cross-compilers the runner image carries is still unread, every cross-compile reading behind this question was taken on a Windows machine outside this tree, and the record says why the choice does not rest on that reading and names it as a reversal condition instead. #291 stays open. The record is one of its three conditions; a target leg green on a tree carrying the dependency is not reachable while this record holds, and the issue carries that reading. Signed-off-by: Nils Lehnen <30603423+iderex@users.noreply.github.com>
This was referenced Sep 4, 2026
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
#291
No closing keyword, deliberately. That issue asks for three things and this is one
of them; the reading of the other two is below and is written into the issue as
well.
What changed
One decision record and its index line.
docs/decisions/0291-the-provider-the-socket-waits-on.mdrecords the choice taken on #291 on 2026-09-04 among the three ways out that
0243 priced and did not take: the manifest entry 0243's means requires does not
arrive until a pure-Rust crypto provider for
rustlsreaches a release thetarget leg compiles on every triple in 0113's set. Until then no C
cross-toolchain is added to that leg, no triple leaves that set, and the socket
in #27 waits with everything behind it.
Nothing else moves. No dependency arrives, the target register and the workflow
beside it are untouched, and no earlier record is edited. The record takes one of
the ways out 0243 priced rather than narrowing a clause of it, so it carries no
Narrows:field and 0243 receives noNarrowed-by:one; the record says that inits own text so the absence is a decision rather than an omission.
What failure it prevents
The fourth way out, which #291 opened asking to refuse by name: a transport
landing with a socket and no TLS on the reading that 0028 honours a typed
clear-scheme address.
Written nowhere, this choice is met for the first time as a red target leg at the
end of somebody's change rather than at the start of one, and the cheapest thing
to do with a red gate at that point is to take the entry back out and open the
socket without it. That is one commit from a core that speaks in clear over any
address it is handed, with a green gate to show for it.
This has not happened here. It is the expected failure rather than one already
observed, and the record says which of the two it is.
The neighbouring failure costs less and is likelier: a runner bill or a dropped
client platform taken inside a change about a transport, because the leg was red
and the record that priced both was one directory away.
Evidence
At the commit being pushed,
4eb3b2a88970b132c7ef8a59ea57d1a542f60e80, branchedfrom
a9dfdca1a71410761bf54f97738b5ba65cc9e581.The two commands this repository runs before a push:
The three gate legs whose subject this change is:
The paths this change touches, against the mainline:
The readings the record itself rests on, taken at
origin/mainbefore it waswritten:
The version string was re-read for this change rather than carried over from
0243, because that record names it as the thing to re-read and a record resting
on a stale copy of it would be the defect this board already has a record for.
What this does not cover
It adds no guard, so there is no proof that one bites. Nothing in this tree
refuses a change that adds the manifest entry while this record holds, nothing
refuses a socket opened without TLS, and nothing reads a decision record's prose
for sense. The record is carried by review and by the fact that a reader of
0243's reversal condition arrives at it.
The runner's own inventory of C cross-compilers is not measured. #291's body
names that measurement as its own first act and it is still unmade. Every
cross-compile reading behind this question - in 0243 and on #291 - was taken on a
Windows machine outside this tree and is that machine's rather than the runner's.
The record says why the choice does not rest on it (under the way out taken, no
cross-toolchain is added and no triple is dropped) and names a runner reading
that contradicts the premise as a reversal condition rather than treating the
absence as harmless.
Two of #291's three conditions are not met by this. A target leg green on a
tree carrying the dependency is not reachable while this record holds, because no
tree carries the dependency; and #27 naming the record is a comment on that issue
rather than a byte here. Both are written into #291.
The cost is real and this change does not reduce it. Nothing under
src/reaches the network, so every condition on this board naming a request, an
exchange, a sign-in or a session stays unreachable for as long as the record
holds. The record states that as a milestone held rather than as a scheduling
detail.
No number here is a measurement of anything the core does. The counts above
are counts of packages, paths, records, triples and tests.
Who has read it
Nobody other than me. There was no second reader available for it, and the
evidence above stands in place of one.