"phpunit could not run: no phpunit.xml"
phpunit needs a config file at the project root. Add a phpunit.xml.dist
that points at your custom code's tests. Until then the gate says "could not
run" rather than passing.
"tool missing"
A gate's tool is not installed where droost runs. On a Drupal site,
composer require --dev drupal/core-dev brings phpcs, phpstan and phpunit.
For the browser tests: npm i -D @playwright/test and
npx playwright install chromium. Then /droost:workflow:continue.
The gates all say "labelled: it ran and examined nothing"
The run changed no file those gates read. Usually that is right (a change that only touched config). If the run did build code, the code was probably already changed in your working folder when the run began: droost does not count changes it finds at the start as the run's own. Commit or stash leftover work before starting a run.
A gate keeps failing on old code
Record the old problems in a baseline, so new runs are judged only on what
they add: droost workflow:baseline --measure, then droost workflow:baseline from your terminal. See
On an existing site.
The agent says a command was refused
Some commands are yours: changing the level, waiving a gate, letting a run
finish on its own. The refusal gives the agent the exact command; run it
yourself, in your own terminal. Claude Code's ! prefix is refused too,
because it has no terminal. See The guard.
A run is stuck and I want to start over
droost workflow:reset --forceThe run's record is kept in droost/droost-workflow/history/. If the run left
code behind, stash it or commit it before the next run. If it also changed the
site's database, put that back too.
On DDEV, a quoted sentence arrives as separate words
ddev exec joins its arguments into one line. Use the
ddev droost command, whose
ExecRaw: true passes them as typed.
On DDEV, droost does not see a change I just made
If your DDEV project uses Mutagen, run ddev mutagen sync after a change on
the host. With direct bind mounts, files are already shared. Prefer
ddev composer so package resolution uses the project’s PHP environment.
The parity gate fails on a page that looks right
Read the failure: it names the check and the text. Common causes:
- the reference was read on another platform (judge where it was read, or capture again);
- the client changed something the design shows (record it in
droost/parity/decided.json); - the page is not built yet (leave it out of
routes:until it is).
Codex (or another agent) ignores the phases
Only Claude Code has the guard's hooks. Other agents get droost's instructions and the gates still run, but nothing stops an out-of-phase edit. The report says "enforcement: advisory".