clay-borg/workplans
tegwick 3f1dbac164 CB-WP-0004 T01: fix environment friction at the root
CB-RES-0003 measured 84 turns and $15.33 — the largest mechanical
category — spent prefixing commands with `cd` and
`export PATH="$HOME/.cargo/bin:$PATH"`. Both causes are now fixed once
instead of per-leaf.

tools/repo.py resolves the repo root from __file__ and cargo from PATH
then the standard rustup locations. Every tool imports ROOT from it, so
the repo path is stated once rather than redefined in four files —
single source of fact, the rule DFD earned in InnerLoop v1.2.
rule-coverage and dep-weight now call enter_root(), which is why their
relative paths did not need rewriting one by one.

The Makefile derives REPO from MAKEFILE_LIST and resolves CARGO the same
way, so `make -C <repo> <target>` works from any directory with no
prefix.

make env-test is the positive control, and is in `make all`: every tool
runs from / with PATH=/usr/bin:/bin. Without it this fix could regress
silently and invalidate T05's measurement — the whole point of the
control loop.

dep-weight's "cargo not on PATH" error is kept rather than deleted. It
should now be unreachable, and --self-test asserts cargo_bin() resolves
unaided; a control that never fires is cheaper than a regression.

loop-lint failed on repo.py on its first run — a reporting tool with a
positive control but no --self-test entry point. Second time the gate
has caught work from its own pass within the hour.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-31 10:13:52 +02:00
..
CB-WP-0001-inner-loop.md T09: InnerLoop v1.0 — corrected from the first full pass 2026-07-31 03:11:19 +02:00
CB-WP-0002-cost-accounting.md T07: InnerLoop v1.1 — the instrument must emit its own target 2026-07-31 08:53:52 +02:00
CB-WP-0003-loop-hardening.md T10: InnerLoop v1.2 — hardening does not converge, so optimize correction 2026-07-31 09:31:19 +02:00
CB-WP-0004-mechanical-work.md CB-WP-0004 T01: fix environment friction at the root 2026-07-31 10:13:52 +02:00