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.

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.