pure-integration
Haskell-based declarative continuous integration/workflow runner
rad:z4LuYsa4LgMGSBMNzHTbaAuVXPxtZ
Visibility
public
Delegates
did:key:z6MkhuezpEwordpojG26PCqbhptt5YFCyN43DjpJRXHND9KR
Default branch
main → b11b8728da70f792ce5538ab0a25d62e7c890c44 (Wed Aug 20 15:09:29 2025)
Threshold
1
README.md
# Pure Integration Half baked concept of using Haskell as a workflow definition language for CI pipelines. The use of arrows (`Control.Arrow`) enables declaratively describing the stages of the pipeline and their dependencies in a way that automatically enables both reuse of the results of previous steps as well as automatically parallelizing portions of the workflow which do not depend on each other. Meanwhile, the use of a full programming language (as opposed to YAML or other such configuration files) means that workflows can be much more expressive and flexible. Additionally, since Haskell is statically typed, this helps to eliminate an entire class of errors that we tend to have in CI workflow files (typos). The tradeoff is of course, the potential for there to be *too much* flexibility, as now there are ways to write "workflows" that aren't workflows, or which arbitrarily spawn untracked background tasks, meaning debugging a workflow is potentially much harder, as we've added multiple new sources of error (concurrency, control flow...). The next steps would be to have such a workflow orchestrate varying steps that are run in Docker containers over a shared volume containing the repository state.