# Agent runbook For AI agents operating this stack. Humans: see README.md first. ## Fast paths **Is it up?** ```bash curl -s -o /dev/null -w '%{http_code}\n' http://NODE1:8004/health # want 200 ``` **Bring the pair up** ```bash bash scripts/04-launch-pair.sh # r1 first, then r0; health ≤ 7.5 min ``` **Bring it down** ```bash ssh NODE2 'docker rm -f qwen38-dflash2-tp2-r1' ; ssh NODE1 'docker rm -f qwen38-dflash2-tp2-r0' ``` **Quick health of both ranks** ```bash ssh NODE1 'docker logs --tail 3 qwen38-dflash2-tp2-r0 2>&1' | tail -3 ssh NODE2 'docker logs --tail 3 qwen38-dflash2-tp2-r1 2>&1' | tail -3 ``` **Bench once** ```bash python3 bench/edit_bench.py http://NODE1:8004/v1 qwen3.8-27b-dflash2 ``` ## Failure signatures → root causes | Symptom | Root cause | Fix | |---|---|---| | boot dies: unquantized LM head gate | lm_head quantized (wrong checkpoint) | run 02 + 03, relaunch | | health 000 after >8 min | see logs; often wrong checkpoint or NCCL | `docker logs qwen38-dflash2-tp2-r0` | | accept ~99.6%, tps low | K=7 (1 block) | set K=16 in launch | | accept ~66%, tps below peak | K=24 | set K=16 | | r0 up, r1 dead | r1 started after r0 | relaunch both, r1 first | ## Hard rules - K must be a multiple of 8. - rank1 before rank0, always. - Kill stale background launcher jobs before relaunching (zombie once rm -f'd a healthy pair and relaunched the wrong checkpoint). - Never edit config.json in place on hardlink copies — temp+os.replace. - The original `unsloth-nvfp4/` checkpoint must stay pristine (it is the rollback). If corrupted, re-download via 00.