watchlisted
Install: claude install-skill jasonm4130/claude-skills
# Watch a Nightwatch run
The first night failed five ways in the harness and once in the code: a
print-mode timeout that fabricated a result, an env var that silently forced
default permission mode, an untrusted clone that dropped project settings, a
`tee` that polluted the state channel, and a dirty-tree false positive on a
file the acceptance command itself wrote — against one real spec defect (an
Earnings-21 reference file with empty timestamp columns). All five harness
failures are fixed in the engine now; this playbook is for the failures a
fixed engine still can't prevent — a blocked branch, a spec that needs an
edit mid-run, a night that needs to stop early — and for reading the state a
running launcher writes so nothing has to be guessed.
Announce: "Using nightwatch:watch to launch and steer the run."
## 1. Preflight
Before starting `run.sh`, confirm all of:
- The clone is clean (`git status --porcelain` empty) and trusted (`claude
-p` in it reads project settings — an untrusted workspace silently drops
them).
- `gh variable get LANDING_STATE` (from inside the clone; the launcher's
default `STATE_VAR`) prints exactly `run`.
- `node <plugin>/nightwatch/lint-spec.mjs --specs-dir <specs-dir> --check <check>`
prints `SPEC OK (<n> specs)` for the whole queue — a spec defect caught
here is free; caught at 2 a.m. it costs a unit.
- 1Password is unlocked if any command in the queue needs a secret.
- `$HOME/.local/state/nightwatch/<name>/launcher.lock` is absent