Expand description
The repository’s own workflows as command-graph nodes.
A workflow is a recipe the repository declares for a person to run and that no program
here implements — building the site, running the suite, publishing. The runner already
describes them: crate::environment::workflows reads just --dump --dump-format json and turns it into a typed catalogue, and this is a second reading of that
catalogue, not a second parser.
§The bridge is not a workflow
Once the graph projects the two programs’ commands into recipes, the runner reports
those recipes too — and reading them back as workflows would produce a node whose
execution is a recipe whose execution is that node. That is the cycle this design
exists to forbid, and it is closed by construction: contribute is given the set of
names the graph projects, and a recipe with such a name is the graph’s own bridge and
is not a declaration of anything.
§What a workflow’s effect is
It is not inferred from the name, the group or the body. A recipe is arbitrary shell, and a guess about what arbitrary shell does is exactly the kind of thing that is right until the day it matters. A recipe the runner marks as needing confirmation is destructive, because that is what the marker means; every other workflow is read as a repository mutation, which is the strongest ordinary class and therefore the reading that keeps an unclassified workflow off every machine surface.
Structs§
- Contribution
- What the read produced.
Constants§
- DECLARATION
- The file a projection shows as the declaration of a workflow.
Functions§
- contribute
- Read the declared workflows, excluding the recipes the graph itself projects.