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>
This commit is contained in:
tegwick 2026-07-31 10:13:52 +02:00
parent 578dcbea78
commit 3f1dbac164
9 changed files with 254 additions and 30 deletions

View file

@ -4,4 +4,29 @@ A rebuild from scratch simulation and games engine framework set up to assimilat
Licensed under the Target Revenue Source License (TRSL V1C1) — see [LICENSE](LICENSE); canonical text lives in the org's `target-revenue` repository.
## Running the gates
```sh
make all # every gate, from a clean shell
make -C /path/to/clay-borg all # …or from any other directory
```
**There is no environment setup step.** No `cd`, no `export PATH`, no
activation script. `make` locates the repo from its own path and `cargo`
from the standard rustup locations; the Python tools do the same via
`tools/repo.py`. The only prerequisites are a rustup toolchain and Python
3.11+.
This is deliberate and enforced: `make env-test` runs every tool from `/`
with a PATH containing no cargo, and `make all` includes it. CB-RES-0003
measured 84 agent turns and $15.33 spent prefixing commands with `cd` and
`export PATH` before that friction was fixed at the root (CB-WP-0004 T01).
Other useful targets: `make cost` (spend per task), `make cost-budget`
(spend since the last commit), `make cost-mix` (mechanical vs judgment
turns), `make loop-lint` (executable InnerLoop rules), `make self-tests`
(every tool's positive control).
## GROUND
The first product vertical is a virtual tabletop implementation of **GROUND — A Game of Bonds and Rivalry: DARVO Edition**. The boardgame itself (rules, editions, content) is at home in the sister repository **`ground-game`** — that repo is authoritative for what GROUND *is*; clay-borg implements the engine that runs it.