Time and turns: Finding the actual failure cost the most. qa-input.txt said only “pre-push red failed without output”, and its 30 KB was mostly passing test lines. I had to rerun each sub-check of pre-push-check.sh by hand to see which one failed. The first run hid the cause because I piped it through tail and check-adr-refs.py was silenced with >/dev/null. Locating the ADR index (docs/specification/adr/README.md, not docs/adr*) took a couple more calls.
commit.nika needs the built binary at target/fast/nikaia, and that the report file already existed.pre-push-check.sh, then its four sub-checks run separately.ls docs/briefs, which dumped a huge listing, and the grep for ADR-384 across the whole repo, which a targeted look at the index would have replaced.pre-push step capture the failing sub-script’s stderr and stdout into qa-input.txt, instead of “failed without output”. Then I would have read the ADR-384 error straight away. Failing that, put in qa.md or the brief a line saying that for a pre-push red the first move is to run each line of pre-push-check.sh separately, and that the cause may lie in already-pushed commits.