Tooling & Automation

A track of P35 · Packaging, Tooling & Automation.

Automate the dev loop: build the task-graph engine behind a Makefile (topological order, cycle detection, per-target plan), then codify checks as pre-commit hooks and a CI gate over one source of truth.

Ask three people on a team to "run the checks before pushing" and you will get three different subsets. The person whose subset happened to omit the type checker is the person who breaks CI, and the fix everybody reaches for first is a longer paragraph in CONTRIBUTING.md — which is a way of asking humans to be a build system.

Packaging's last mile is making the dev loop automatic, so quality is a property of the repo, not of whether anyone remembered the steps. Under a Makefile — and under a CI job's needs: — is one idea: a task graph. This track has you build the engine behind it.

You implement the scheduler a task runner hides: a topological sort over targets (so make test runs install and build first, once each), cycle detection (a cyclic graph can never run), and a per-target plan (run exactly what this target needs). Then you step up a level: naming routines so one make quality means the same thing on a laptop and in CI, pre-commit as a contract that runs on every commit, and CI as the unskippable gate. Real make and pre-commit execution stay prose; here you build the part that decides what runs — with this repo's own Makefile and make quality as the worked example.

task graphtargets -> prerequisitestopological orderrun deps first, once, no cyclesnamed tasksone make quality, local == CIpre-commit + CIcontract on commit; gate on merge
Automate the loop: encode it, run it every commit, enforce it in CI.
Tooling & Automation — TransformerLab