Skip to content

Record the wait the socket takes, rather than the bill or the platform (#291) - #301

Merged
iderex merged 1 commit into
mainfrom
the-provider-the-socket-waits-on-291
Sep 4, 2026
Merged

Record the wait the socket takes, rather than the bill or the platform (#291)#301
iderex merged 1 commit into
mainfrom
the-provider-the-socket-waits-on-291

Conversation

@iderex

@iderex iderex commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

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.md
records 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 rustls reaches a release the
target 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 no Narrowed-by: one; the record says that in
its 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, branched
from a9dfdca1a71410761bf54f97738b5ba65cc9e581.

The two commands this repository runs before a push:

cargo build --locked --all-targets
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.80s

cargo test --locked | grep -E '^test result:' | awk '{s+=$4} END {print s}'
772

The three gate legs whose subject this change is:

bash .github/doc-paths/doc-paths.sh check
ok    77 document(s), 332 named path(s) resolved, 0 excused as examples

bash .github/decision-records/decision-records.sh check
Records: 65. Fields found: 6.
ok    6 field(s) name a record that exists, name a clause, and are named back

bash .github/format/format.sh check
Every tracked source file above is written the way the formatter would write it.

bash .github/invariants/invariants.sh check
Every rule above was applied to its subject and refused nothing.

The paths this change touches, against the mainline:

git diff --name-only origin/main...HEAD
docs/decisions/0291-the-provider-the-socket-waits-on.md
docs/decisions/README.md

The readings the record itself rests on, taken at origin/main before it was
written:

git rev-parse origin/main
a9dfdca1a71410761bf54f97738b5ba65cc9e581

git show "origin/main:.github/workflows/targets.yml" | grep -n 'runs-on'
69:    runs-on: ubuntu-latest

git show "origin/main:.github/targets/targets" | grep -v '^#' | grep -c .
7

git show origin/main:Cargo.lock | grep -c '^\[\[package\]\]'
17

git show origin/main:Cargo.lock | grep -cE '^name = "(rustls|rustls-platform-verifier|rustls-rustcrypto|aws-lc-sys|ring)"'
0

git grep -n 'std::net' origin/main -- src/ ; echo "exit=$?"
exit=1

cargo search rustls-rustcrypto --limit 1
rustls-rustcrypto = "0.0.2-alpha"    # Pure Rust cryptography provider for the Rustls TLS library...

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.

#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>
@iderex iderex added the documentation Improvements or additions to documentation label Sep 4, 2026
@iderex iderex self-assigned this Sep 4, 2026
@iderex iderex added this to the M3 Server access and session milestone Sep 4, 2026
@iderex
iderex merged commit 7ca9a6e into main Sep 4, 2026
27 checks passed
@iderex
iderex deleted the the-provider-the-socket-waits-on-291 branch September 4, 2026 21:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant