From 6bf706df9df9a4f386590a8cedea5eadb2828b49 Mon Sep 17 00:00:00 2001 From: Nils Lehnen <30603423+iderex@users.noreply.github.com> Date: Thu, 27 Aug 2026 03:52:19 +0200 Subject: [PATCH] Carry the borrowed-code rule into the contributing guide Record 0019 says twice that the rule belongs in the contributing guide, where somebody starting an experiment meets it, and the guide carried no mention of it. The rule lived in docs/experiment-template.md alone, which a person reaches once they are filling in a record rather than when they are deciding whether the code they want to start from may be here at all and where it goes. What it prevents is a reader concluding the opposite of what 0019 decided. The list under "What may never be committed" ends with a line refusing a file whose licence forbids it being here and offers no route beside it, so the guide as it stood read as a board that does not take borrowed code. 0019 decides that it does, and says why: the questions that begin with existing code are a class this board wants. The section states what a run refuses and what it does not, because a rule written without that teaches a reader the gate is holding the whole of it. Two refusals exist. A borrowed directory in an experiment whose record declares nothing passes, which record 0013 requires. A second quarantine deeper inside an experiment passes too. Neither of those two is recalled: each was run against a tree built for it, and the second was confirmed by removing the licence file and watching the same tree turn red. That the paths leg reaches the new text was proved rather than assumed, by pointing one of its links at a file that is not in the tree and watching document-names-a-path-that-does-not-resolve refuse CONTRIBUTING.md for exactly that path. Closes #204 Signed-off-by: Nils Lehnen <30603423+iderex@users.noreply.github.com> --- CONTRIBUTING.md | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index da9dfd6..49c7dc2 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -100,6 +100,45 @@ and the states are fixed in [docs/decisions/0003-the-experiment-lifecycle.md](docs/decisions/0003-the-experiment-lifecycle.md). There are three states and no others: `asking`, `answered`, `abandoned`. +## Starting from somebody else's code + +An experiment may start from code somebody else wrote, and there is exactly one +place that code may live. The argument is in +[docs/decisions/0019-code-under-another-licence.md](docs/decisions/0019-code-under-another-licence.md); +what follows is what the rule asks of you. + +The code goes in `experiments//borrowed/`, and that directory carries its +own `LICENSE` naming the terms the code arrives under. One such directory per +experiment. Everything under it is under the licence that file names and +everything outside it is under this board's, so the boundary is something a +person walking the tree can see rather than something they have to be told. +That is the whole point of it: a directory named `borrowed` with a licence file +in it is visible to a walk, and a line in a header is visible only to somebody +who opened the header. + +The record declares it too. `Borrowed:` in the header of +`experiments//EXPERIMENT.md` names where the code came from and the +licence it arrives under, and it sits with the rest of the header in +[docs/experiment-template.md](docs/experiment-template.md). An experiment that +borrows nothing writes no such line. + +Two of those a run refuses and the rest of them it does not, and the difference +is worth knowing before you lean on any of it. A `borrowed/` directory with no +`LICENSE` beside it is refused, and so is a record declaring `Borrowed:` in an +experiment that holds no such directory. A `borrowed/` directory in an +experiment whose record declares nothing passes, because a field added to the +format after +[docs/decisions/0013-how-the-record-format-changes.md](docs/decisions/0013-how-the-record-format-changes.md) +is never refused for being absent. A second quarantine deeper inside an +experiment passes as well, since the check reads `experiments//borrowed` +and no other name, so the one-directory limit above is yours to keep rather +than the gate's. + +Nothing opens the licence file. A green run says the layout and the declaration +do not contradict each other, and it says nothing about which licence the code +is actually under, or about whether the result may be promoted into a board +under other terms, which record `0019` leaves undecided on purpose. + ## Stopping one Two honest ways to stop, and both of them are finished work.