Skip to content

0243 runs ten readings inside a checkout of another crate, and six of the paths it names resolve in this tree to something else #394

Description

@iderex

Split: none
Scope: docs/decisions

0243 measures a crate that is not this tree, and ten of its readings are commands
run inside a checkout of that crate. Six of the ten name a path this repository
also carries, so a reader standing where every other command in the record is run
gets an answer out of the wrong file. The record says where its cargo readings
were taken and says nothing about these, and the repair is neither of the two
edits a landed record is allowed.

What is wrong

Read at origin/main c6ccf5e3ece1726744043b36dc86d9d83bdef194. The ten sites:

git grep -nE "^ {4,}(grep|sed|awk|ls|comm|cat|wc|head|tail) .*(^| )(README\.md|Cargo\.toml|src/|src/lib\.rs)" origin/main -- docs/ README.md SECURITY.md NOTICE.md CONTRIBUTING.md CODE_OF_CONDUCT.md
origin/main:docs/decisions/0243-the-means-a-certificate-is-validated-with.md:35:    grep -rn 'log::' src/verification/ | grep -c '!'
origin/main:docs/decisions/0243-the-means-a-certificate-is-validated-with.md:37:    grep -n -A2 'dependencies.log' Cargo.toml
origin/main:docs/decisions/0243-the-means-a-certificate-is-validated-with.md:67:    grep -n '' src/lib.rs | sed -n '456p;1318,1327p'
origin/main:docs/decisions/0243-the-means-a-certificate-is-validated-with.md:231:    sed -n '20,27p' README.md
origin/main:docs/decisions/0243-the-means-a-certificate-is-validated-with.md:265:    grep -rn 'Only map' src/
origin/main:docs/decisions/0243-the-means-a-certificate-is-validated-with.md:271:    grep -n '=> InvalidCertificate' src/verification/windows.rs
origin/main:docs/decisions/0243-the-means-a-certificate-is-validated-with.md:277:    grep -n 'errors::errSec' src/verification/apple.rs
origin/main:docs/decisions/0243-the-means-a-certificate-is-validated-with.md:283:    grep -n 'VerifierStatus::' src/verification/android.rs | sed -n '1,5p'
origin/main:docs/decisions/0243-the-means-a-certificate-is-validated-with.md:321:    grep -n '' Cargo.toml | sed -n '70,76p;88,91p'
origin/main:docs/decisions/0243-the-means-a-certificate-is-validated-with.md:486:    sed -n '56,57p' README.md | awk -F'|' '{print $2 "|" $4}'

Every one of them is in 0243 and nothing else in this file set carries the
shape. The record's only statement about where a reading was taken covers a
different set of commands by its own words:

git show origin/main:docs/decisions/0243-the-means-a-certificate-is-validated-with.md | sed -n '130,133p'
## How the readings below were taken

Every `cargo` reading in this record was taken in a scratch crate outside this
tree, on a Windows machine, with the toolchain `rust-toolchain.toml` pins. The

None of the ten is a cargo reading.

Four of the ten fail loudly and six do not

I ran all ten in a checkout of origin/main at the sha above, one at a time in
the shell, rather than through a wrapper. Four name a path this tree does not
carry and say so on the error stream:

grep -n '=> InvalidCertificate' src/verification/windows.rs
grep: src/verification/windows.rs: No such file or directory

The remaining six name a path this tree does carry, so they answer out of this
repository's own files with no error at all. Two of them return something
plausible. 0243:321 pastes eleven lines of the verifier crate's manifest, and
in this tree the same command answers with eleven lines of this repository's own:

grep -n '' Cargo.toml | sed -n '70,76p;88,91p'
70:# outright refusals applies: nothing in the graph opens a socket or resolves a
71:# name, none touches the filesystem, the only thread in it is inside `bytes`'s own
72:# `loom` test module, the one logging facade is `log`, which 0243 already narrowed
73:# this behaviour for and which the verifier entry brings anyway, and nothing here
74:# carries a field-bearing surface of its own. The readings are in 0292.
75:#
76:# Retired by: the toolchain offering HTTP on a stable build, which 0011 already
88:#
89:# The version is pinned at the minor, so a patch release is taken and `0.7` is
90:# not. Under this ecosystem's convention a `0.x` minor is a breaking change, and
91:# 0292 records that cadence as the price of this shape rather than hiding it.

and 0243:231 pastes a seven-row table under a sentence about the crate's own
README, while this tree's README.md answers with prose:

sed -n '20,27p' README.md
[0103](docs/decisions/0103-what-admits-a-dependency-and-what-is-refused.md) is
the rule that admitted the first entry.

THE COUNT THAT REPLACED THE NONE WENT STALE ON THE NEXT ENTRY, WHICH IS WHY
THERE IS NO NUMBER HERE NOW. It said one. A second entry arrived on 2026-09-04
with [0292](docs/decisions/0292-the-means-the-core-speaks-http-with.md), which
decides the means the core speaks HTTP with and had no reason to open this
paragraph, and the sentence above went on saying one until somebody read it

The other four of the six return nothing:

grep -n -A2 'dependencies.log' Cargo.toml ; echo "exit=$?"
exit=1
grep -n '' src/lib.rs | sed -n '456p;1318,1327p' ; echo "exit=$?"
exit=0
grep -rn 'Only map' src/ ; echo "exit=$?"
exit=1
sed -n '56,57p' README.md | awk -F'|' '{print $2 "|" $4}'
|
|

The one that reads as a proven absence

0243:35 is the expensive shape and it is worth separating. The record pastes
10 under it and the pipeline's second stage swallows the missing directory, so
in this tree it prints a number rather than an error:

grep -rn 'log::' src/verification/ | grep -c '!'
grep: src/verification/: No such file or directory
0

Standing where the record's other commands are read, a reader gets 0 on the
output stream where the record says 10. The argument that paragraph makes is
that the logging facade is not optional in the verifier crate, and a 0 is the
answer that refutes it. What produced the 0 is an absent path rather than an
absent call site, and nothing on the output stream says which.

Two of the six name the same path for what the prose calls two crates

0243:231 stands under a sentence about the platform verifier's dispatch table
and 0243:486 under one about a comparison table, three hundred lines and one
intervening crate apart, and both are written README.md:

git show origin/main:docs/decisions/0243-the-means-a-certificate-is-validated-with.md | sed -n '227,231p'
This is the first thing #243 asks and the answer is not uniform. The crate's own
README states its dispatch per platform, and the row that matters is the second
from last:

    sed -n '20,27p' README.md

git show origin/main:docs/decisions/0243-the-means-a-certificate-is-validated-with.md | sed -n '483,486p'
so it costs no narrowing of any record. What it costs is the platform's
decisions, which the crate's own comparison table states in the row for it:

    sed -n '56,57p' README.md | awk -F'|' '{print $2 "|" $4}'

Which checkout each is run in is not written anywhere in the record, so a reader
who wants to reproduce either has to infer it from the paragraph above it.

Why this is a decision and not a change

Neither edit a landed record allows reaches it.

0269 deletes a pasted output that no longer reproduces and leaves the command
standing. These outputs are not stale: each is what its command returned in the
checkout it was run in, and the record's argument rests on them. Deleting ten
correct readings out of a licence decision to repair a path prefix is a larger
move than the defect, and it leaves the same commands pointing at the same wrong
files.

Naming the directory in the command is the repair that fits the defect, and it is
an edit to the prose of a landed record. 0001 withholds that:

git show origin/main:docs/decisions/0001-decision-records.md | sed -n '105,106p'
Three edits are not supersessions and are allowed. Fixing a typographical error

git grep -n '^Narrowed-by: ' origin/main -- docs/decisions/0001-decision-records.md
origin/main:docs/decisions/0001-decision-records.md:7:Narrowed-by: 0267, on the third permitted edit, the pointer to a later record, which takes a fixed form and becomes a pair of fields where the later record narrows a clause
origin/main:docs/decisions/0001-decision-records.md:9:Narrowed-by: 0269, on the rule that a record is never edited in place, which does not reach a pasted output deleted so that only the command that produced it is left

Whether a command's working directory is part of the reading or part of the prose
is the question, and answering it in a change would settle it without anybody
deciding it. It is the same shape #313, #361 and #366 are open on, one class over:
those three ask what a stale output owes, and this asks what a correct output
owes when the command above it resolves somewhere else for the reader.

What this does not decide

Done when

The ten readings in 0243 either name the checkout they are run in, or the
record says once and in one place where a command with no directory in it is
run, or the answer is recorded that a landed record owes neither and a reader is
expected to infer it. Whichever of the three is decided is recorded in
docs/decisions/ as a record going further than 0001 and 0269 rather than as an
edit to either, and it says how the shape is recognised, so the next record
measuring a foreign checkout is written against a rule instead of against this
one's example.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

decisionAn architecture decision that must be written down with its reasonsdocumentationImprovements or additions to documentation

Type

No type

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions