Refuse a borrowed quarantine that does not declare itself - #189
Merged
iderex merged 1 commit intoAug 25, 2026
Merged
Conversation
Record 0019 puts code under another licence in experiments/<slug>/borrowed/, carrying its own LICENSE, declared by a Borrowed field in the experiment record. It says at the rule that nothing in this repository refuses a violation of any of that. Two of the three violations are refused now. A borrowed directory with no licence file in it is refused. That is the quarantine without the thing that makes it one, and the layout is what record 0019 buys: a directory named borrowed is visible to somebody walking the tree, and a directory that declares no terms tells that person nothing at the moment they are least careful. A record declaring Borrowed with no borrowed directory in the experiment is refused. The message names both sides, because which of the two is wrong decides the repair. The field arrives with the check that reads it, in the file that reads it, which is the shape FieldMeasurementCommit already argues for at its own declaration. Issue #188 says the format change is a prerequisite rather than part of this work, and it evidences that with a grep of internal/check/record.go alone. That file is not where the last field the format gained was declared: git grep -n 'Field[A-Za-z]* = "' origin/main -- internal/check/ origin/main:internal/check/measurement.go:14:const FieldMeasurementCommit = "Measurement-Commit" origin/main:internal/check/record.go:16: FieldSlug = "Slug" origin/main:internal/check/record.go:19: FieldState = "State" origin/main:internal/check/record.go:24: FieldQuestionWritten = "Question-Written" origin/main:internal/check/record.go:28: FieldAnswerWritten = "Answer-Written" origin/main:internal/check/record.go:34: FieldNeedsHardware = "Needs-Hardware" Record 0016's field, its check and the record itself landed in one change, 19ac2bf, so the prerequisite is the rule in record 0013 rather than a separate landing, and that rule is met: the field is optional and an absent one is never refused. That is also what the third refusal the issue asks for cannot have. A borrowed directory in an experiment whose record declares no Borrowed field is a refusal on an absence, which record 0013 forbids in the words refuseHardware already declines the same shape in, so it is not built here and the issue stays open for it. Both guards were proved by deleting them. Removing the licence refusal site leaves a-borrowed-directory-with-no-licence-file failing with the refusal not produced; removing the declaration refusal site leaves a-record-declaring-borrowed-with-no-borrowed-directory failing the same way; removing the dispatch in walkExperiments leaves both failing. Each refusing case has a near neighbour that refuses nothing, differing by the licence file and by the declaration line respectively. The template names the field in its prose rather than carrying it in its header, for the reason Measurement-Commit is named the same way, and it carries what a green run does not prove. The one record on the board is left exactly as it was. Means: Go, in the package that already walks experiments/ and already reads the header, adding no language, runtime or dependency and proved by the fixture harness that already exists. Record 0019 says the check is ordinary gate work in this tree rather than a new apparatus. Signed-off-by: Nils Lehnen <30603423+iderex@users.noreply.github.com>
iderex
deleted the
borrowed/refuse-a-quarantine-that-does-not-declare-itself
branch
August 25, 2026 05:34
This was referenced Aug 25, 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.
Refs #188
What this changes
Record
0019puts code under another licence inexperiments/<slug>/borrowed/,carrying its own
LICENSE, declared by aBorrowed:field in the experimentrecord. It says at the rule that nothing in this repository refuses a violation
of any of that. Two of the three violations #188 names are refused now.
borrowed-directory-carries-no-licencerefuses a borrowed directory with nolicence file in it, whatever the record says, because the layout is what record
0019buys and a header field is visible only to somebody who opened the header.record-borrowed-declaration-names-no-directoryrefuses a record declaringBorrowed:while the experiment holds no such directory. The message names bothsides, because which of the two is wrong decides the repair.
The field arrives in the file that reads it, which is the shape
FieldMeasurementCommitalready argues for at its own declaration. #188 saysthe format change is a prerequisite rather than part of this work, and evidences
that with a grep of
internal/check/record.goalone. That file is not where thelast field the format gained was declared:
Record
0016's field, its check and the record itself landed in one change:So what the prerequisite is, is record
0013's rule rather than a separatelanding, and that rule is met here: the field is optional and an absent one is
never refused. The template names the field in its prose rather than carrying it
in its header, for the reason
Measurement-Commitis named the same way, and itcarries what a green run does not prove.
The one record on the board is left exactly as it was, which is what record
0013requires of a record already on the default branch.The means is Go, in the package that already walks
experiments/and alreadyreads the header, proved by the fixture harness that already exists. It adds no
language, no runtime and no dependency, and record
0019says this check isordinary gate work in this tree rather than a new apparatus.
What failure it prevents
A directory a reader walking the tree takes for quarantined, declaring none of
the terms it is under. That is the footgun record
0019describes: the personwho meets it is whoever promotes the result later, at the moment they are least
careful, and the boundary they are relying on tells them nothing.
And a record that says an experiment borrows while the tree says it does not,
which is the same claim going quietly out of date from the other side.
What was run
At
eafb8ddb9600ce694cea86c7e32e1c201f251eac, the four commandsCONTRIBUTING.mdnames, in that order:
What the
-vrun says it did not cover:The harness was not asked for on this branch and nothing in it ran. The change
registers no test with it.
The run over this tree:
What each refusal says, run against its own fixture tree:
Both guards were proved by deleting them and watching the suite go red.
Deleting the licence refusal site:
Deleting the declaration refusal site:
Deleting the dispatch in
walkExperiments:Each site was restored and the suite re-run green before the commit was made.
Each refusing case declares a near neighbour that refuses nothing and differs by
the smallest legal change: the licence file arriving, and the declaration line
going away.
What this does not do
#188 stays open, and this pull request does not finish it. That sentence is
phrased around the platform's closing keywords rather than with them, and the
reason is a trap this change walked into. The heading originally read as a denial
built on one of those keywords followed by the issue number; the platform read
the keyword and never the denial, and merging this closed that issue while two
thirds of its done-condition were unmet. It was reopened and the wording repaired. The
literal is not reproduced here, deliberately: a body quoting it carries the same
live keyword, which is how this paragraph would become the second instance of
what it is written against.
The third refusal that issue asks for is a borrowed
directory in an experiment whose record declares no
Borrowed:. That is arefusal on an absent field, and record
0013says an absent field is never arefusal, in the same words
refuseHardwarealready declines the identical shapein, at its own declaration. Building it here would be taking a decision about
record
0013inside a check, so it is not built and the issue keeps that clause.It is written into #188 with what it waits on.
Nothing reads the licence file. A green run says the layout and the
declaration do not contradict each other. It says nothing about which licence
the code is actually under, and nothing about whether the borrowed code may be
promoted into a board under other terms, which record
0019explicitly leavesundecided.
A
Borrowed:declaration written with nothing after the colon is adeclaration. The directory half is read against it and nothing asks whether it
names a source or a licence. Record
0019says the field names both; whether itdoes is prose a reader judges.
An experiment whose record the walk did not reach is not judged here at all,
whether the record is absent, unreadable, or above the size bound. The check is
called with the record's bytes in hand and those runs never get that far.
A symbolic link named
borrowedpointing at a directory reads as a quarantinehere, because
fs.Statresolves it. That is not repaired at this site: a linkanywhere under
experiments/is already refused by the stray-record walk, whichreads the entry rather than the target, and a second rule deciding what a link
points at is the resolution that walk exists to avoid.
Record
0019also owes the contributing guide. It says the rule belongswhere a person starting an experiment meets it, and this change carries it into
docs/experiment-template.mdand not intoCONTRIBUTING.md. That is outsidewhat #188 asks for and no issue holds it.
There is no second reader on this board tonight. What stands in place of one
is the evidence above: the commands, their output, and each guard shown red with
its site removed.