Derivative works and licensing
Normative. Derived from RUNBOOK.md §1 (NG2), §10.2 and §15. Implemented by
@runbooks/lint; every rule here has a test.
Why this exists at all
Content comes from public repositories. What arrives is P0 — prose with frontmatter, which is browsable and impossible to run. Everything that makes a procedure runnable happens when it is lifted to P1, and a lifted procedure is a derivative work that this catalog hosts.
That is a real change from "link-first, we host nothing", and saying otherwise would be the kind of unchecked claim §19 refuses. What survives from the original position is what it was protecting: we never present someone else's work as ours, and an adaptation never obscures its source.
The licence decides, in four branches
| Branch | The licence | What happens |
|---|---|---|
| adaptable | permits derivatives | index it, and lift it to P1 |
| link-only | permits redistribution, forbids derivatives | index it, link to it, never adapt it |
| rejected | terms indexing cannot satisfy, or none detected | not ingested |
| review | not recognised | a human classifies it once; the answer applies to every later record from that source |
Nothing defaults to permissive. An unrecognised identifier is the case this branch exists for: guessing it permissive is the mistake that has no migration once records have been adapted under it.
An undetectable licence is rejected rather than review, because absence is not
ambiguity. Nobody granted anything.
An adaptation says what it came from
A derivative work with no stated origin is indistinguishable from a claim of authorship,
so every record carries source — the url it came from, the commit if there was one, and
when it was fetched — and nothing validates without it.
derived_from is a different thing and is often confused with it: it is the edge to
another catalog record, used when we adapt something already indexed here. An
adaptation lifted from a public repository has no such record to point at, and requiring
one would be requiring a link to nothing. Attribution is source; derived_from is what
lets a reader see both records and keeps deduplication from counting one procedure twice.
It also keeps the original's provenance — source_url, source_commit, license —
because those describe where the procedure came from. The adaptation adds who adapted it
and when. The publisher of an adaptation is the catalog; the author of the procedure is
whoever wrote it, and every surface that shows one shows both, with the original one
click away.
An adaptation does not publish without a human
The other three content classes auto-publish in some form. This one does not, and the exception is deliberate.
Auto-publishing an unreviewed submission is defensible: a person chose to stand behind
it, and §15's seven-day rule turns a reviewer shortage into an honest label rather than a
blocked queue. Auto-publishing an unreviewed machine adaptation is not. Nobody has
stood behind it, and the specific error it invites — a step inferred read-only that is
actually destructive — passes every downstream gate and fails exactly where this product
claims to help.
If the review queue grows, §15's escalation applies: more reviewers, better inference, or a narrower intake. Publishing unreviewed inferences is not on that list.
Two readings we are asked about
An adaptation so heavy that nothing of the original remains is still an adaptation.
It was written by reading someone else's work, derived_from still points there, and the
question of how much survives is not one a catalog should be adjudicating.
An adaptation so light that it is a copy is not an adaptation — it is redistribution, and the licence branch governs it. If the licence is link-only, adding frontmatter does not make hosting it permitted.
Takedown
A takedown against an adaptation is our obligation, not a request we forward. We host the derivative, so we remove it, within the 72 hours §15 commits to. A takedown against the original is forwarded to the source and the adaptation goes with it: an adaptation whose source has been withdrawn has lost the thing that made it permitted.