-
Notifications
You must be signed in to change notification settings - Fork 2
FAQ
It is built for Claude Code, and it ports. python harness-bootstrap/scripts/port.py --target . --tool all
converts the rules to Cursor's format and registers the hooks for Cursor and Codex. Codex's hook
payload matches Claude Code's, so its hooks are registered directly; Cursor gets a small adapter that
translates the payload and the answer.
The port carries enforcement, not just advice. The adapter is self-tested in CI on both hook flavours.
Yes, and more importantly it knows when it CANNOT. Every source you hand over is routed to a
reader that can actually read it (route_sources.py decides per file and prints why). The
dangerous case is handled explicitly: a scanned PDF "extracts" successfully and returns almost
nothing, which is exactly how a model ends up inventing a spec - so anything under 80
characters a page routes to a vision pass instead. A file nothing installed can open becomes a
named open issue (OI-nn) telling you which file, why, and what would fix it. It never becomes
a silent gap, and never a guess.
No, and that is the central claim. The guardrails are shell scripts and exit codes. Swap every agent
from Opus to Haiku and python eval/guardrail_eval.py returns a byte-identical result.
What a cheaper model does change is the quality of the code written and the depth of the review. That is the ceiling, and the eval does not measure it. The floor is what is model-independent.
Because a rule written as an instruction can be skipped. Anything that depends on the model choosing to obey is not a control, it is a preference. A hook that exits 2 is a control.
The harness uses both, deliberately, and is explicit about which is which:
docs/ASSESSMENT.md
lists what is enforced and what is only advisory.
No. The scaffolder never overwrites a file that exists. It reports ADDED, KEPT or CONFLICT,
and a CONFLICT is yours to resolve. Nothing you wrote is deleted without you approving it.
That is the point rather than a shortfall. See Tailored Build. A seat nobody routes work to is a context bill and a harder-to-read routing table, not capability in reserve. A run installs 7 to 15 of the 16 seats depending on what the contract and the codebase justify, plus one dev agent per module that actually exists.
No. Each stands alone. The contract makes the harness better and the harness makes the contract enforceable, but you can run either on its own.
A rule is guidance the agent reads; a hook is a script that runs before or after a tool call and can block it. Rules shape behaviour, hooks enforce it. See Rule Reference and Hook Reference.
Because a rule loaded in every session is a permanent context cost on every request. Path-scoped rules enter the window only when a matching file is touched, which keeps most rule content out of the default session. Only the genuinely universal rules load unconditionally.
No. /harness-toggle refuses agents outright, and safety-critical controls require a phrase typed
by a human, not a yes. Every toggle is recorded in the committed .claude/disabled.json, so turning
something off is a reviewable change rather than a silent one.
Possibly, and the questionnaire has a lightweight answer for exactly that: minimal ceremony, no
methodology rule, the review gate kept. The leanest build is seven seats. If that is still too much,
rm -rf .claude/ and the repo is as it was.
The skills and the tool run locally. harness-view has no network calls at all. Whatever your
Claude Code session sends is between you and your provider; the harness adds nothing to it, and the
model-policy rule exists so you can write down which data classes may reach which provider at all.
Run the script named next to it. Every figure published anywhere in this project is checked against
the scripts by python scripts/check_numbers.py, which fails the build on a contradiction. The
reference pages on this wiki are generated from the assets, so they cannot drift independently
either.
Licensed under PolyForm Noncommercial 1.0.0 - commercial use requires a paid license (nguyenhx1@gmail.com). The reference pages are generated by scripts/build_wiki.py; edit the assets, not the wiki.
Start
Reference (generated)
Tools
Help