The harness's tool floor¶
What this harness assumes a host provides, what it does without, and where the line between "degrade and note it" and "do not proceed" sits. Written for an agent that has never seen this repo — and for the person deciding whether an alternate agent can be swapped in.
The machine-readable form is tests/unit/fixtures/toolchain_capabilities.json;
the probe is scripts/improve_toolchain.py. This page explains them.
uv run python scripts/improve_toolchain.py --status # what this host has
uv run python scripts/improve_toolchain.py --require playwright # gate, exits 1 if missing
uv run python scripts/improve_toolchain.py --json # machine-readable
The floor¶
| Capability | Needed for | Without it |
|---|---|---|
uv |
everything — the repo is uv-managed (python-preference = only-managed) |
nothing works; make dev-install is the setup |
git |
ship discipline, gates that diff against origin/main |
stop: the gates cannot attest anything |
gh, authenticated |
issue triage, CI badge snapshot, PR merge, push-gate | the work may proceed, but log github: unavailable — never invent a green badge |
make |
the tier vocabulary (ci-fast, ci-changed, preflight-surface, push-gate) |
substitute the underlying command; note the degradation |
postgres |
any runtime path: serve, migrate, integration tests, live walks | DSL/IR work is unaffected; every live-path task is BLOCKED |
playwright and its browser binary |
qa smoke-crawl/smoke-dig, journey/story walks, visual probes |
those tasks are BLOCKED — never a stamped PASS. The package alone is not enough: playwright install chromium is a separate download and the step that gets missed |
a served app (served-app) |
every live walk (smoke, journey, acceptance panel, story walk) | same — BLOCKED with the remedy |
Capability mapping: features vs binaries¶
AGENTS.md's Capability Mapping table maps harness features (ask-user-choice,
task-list, subagent-dispatch, scheduled-loop, …) across named hosts. Features are
what the harness asks the host to do; binaries are what the harness runs.
This page is the binary floor. A host can satisfy every row of that table and
still be unable to do the work — for instance a CLI with no gh authentication
can hold a perfectly good task list and cannot read the issue inbox.
For a host that lacks part of the floor¶
- Run the probe and record what is missing.
- Prefer work whose capabilities you have: DSL/IR work, gate authoring, docs — none need a browser.
- When a task needs something absent, report
BLOCKEDwith the remedy. - Do not substitute a different tool silently. A substitute is a different claim.