Four Columns Instead of Four Paragraphs
Take the prose you would normally write about a step in a process — what it is for, what to be careful about, what good looks like — and force it into four columns: the stage's name, its allowed inputs, its forbidden inputs, and what it closes with. Most of the prose will not fit, and what does not fit is worth examining, because it is either craft advice that belongs in a template or a wish that was never enforceable.
The columns are chosen so that a harness can hold them. Allowed and forbidden inputs are a set membership question. "Closes with" is a postcondition — a file that must exist, a record that must have been written, a state that must have changed. None of the four asks anyone to be careful.
The Interesting Column Is the Third One
Most process documents have an implicit allowed column and no forbidden column at all, and that omission is where the failures live. Saying a stage may see the design brief and the target's current state is useful. Saying it may not see the source-language sibling is the sentence that makes the stage a different stage than it would otherwise be.
Writing the forbidden column also forces an honest audit. You will find stages where the forbidden item is genuinely required — a stage that writes files needs paths — and that is not a failure of the exercise, it is the exercise working. Those are the stages that have to be protected some other way, and knowing which ones they are is the entire input to the rest of this track.
Contracts Compose Into Pipelines, and Pipelines Are Data
Once each stage is four columns, a pipeline is an ordered list of stages plus a few flags: which stages restrict which inputs, which paths this pipeline may land, which record kind it stamps, what its gates are. That is a registry entry. Adding a ninth pipeline becomes a data change rather than a new subclass, and — more importantly — every guard the harness already knows how to apply is available to the new pipeline for free.
The difference shows up not when you add the ninth pipeline but when you change one rule that applies to all eight. With the contract scattered through code that is eight edits, and nobody can tell whether one was missed. As data it is one edit and the readers follow. The value of keeping pipelines as data is not that adding is cheap — it is that consistency is the default.