Skip to main content

Triage playbook

Facilitator material, for the co-host. When a participant is stuck, ask for the output of

uv run --no-sync python setup-check/check.py

and find the red or yellow line below. Each check prints its own fix and a link into SETUP.md. This page adds what to do when the fix does not work, and when to stop trying.

The rule of the room​

Ten minutes, then move. If a participant is not green ten minutes into Module 0, move them to the shared instance (no Docker needed) or pair them with a neighbour. They can finish the setup in a break. Nobody debugs a laptop while the room waits.

By check, in the order they usually fail​

CheckTypical causeFixIf that fails
Container runtimeDocker Desktop not started; on Linux, the user is not in the docker groupstart Docker; sudo usermod -aG docker $USER, then log in againShared instance: create .env with SHOP_URL and SHOP_SPACE
Shop imageThe image pull was blocked by a proxy, or never randocker compose -f shop/compose.yaml pullShared instance
Shop healthThe shop container is still starting, or port 9090 is takenwait a minute and rerun; docker compose -f shop/compose.yaml ps; free the portShared instance
Workshop spaceSHOP_SPACE missing or not a GitHub handle, with SHOP_URL set to the shared instanceset SHOP_SPACE=<handle> in .envGive them a handle-shaped name of their choice
Browser binariesrfbrowser install chromium not run, or run in another environmentuv run --no-sync rfbrowser install chromiumPair
Headless browserMissing system libraries on Linuxuv run --no-sync rfbrowser install --with-deps chromium (needs sudo)Pair
Locked environmentInstalled without --locked, or packages added by handuv sync --lockedDelete .venv and run the install again
Browser runtimerfbrowser init was run instead of install, or the batteries package is missinguv sync --locked, then uv run --no-sync rfbrowser install chromiumDelete .venv, install again
Pythonuv picked another interpreteruv python install 3.12, then uv sync --lockedPair
Coding agentNo agent on PATH, or installed in another shellinstall one per its vendor, open a new terminalPair with someone whose agent works; the transcripts carry the rest
Node.js, OpenSpecNode older than 20.19, or OpenSpec not installed at the pinned versioninstall Node 22 LTS; npm install -g @fission-ai/openspec@1.13.1Lab 5 works in pairs: one OpenSpec per pair
GitHub CLINot installed, or not signed ingh auth loginLab 7's issue can be filed in the browser instead
RobotCode commandsThe environment is out of dateuv sync --lockedPair
RobotCode on PATH (warning)A global RobotCode from pipx or uv tool shadows the project'salways use uv run robotcodeNothing to do if they use uv run
Healing endpoint (warning)No HEAL_* settingsexpected unless the workshop hands out keysLab 8's recorded report
Azure CLI (warning)Not installedoptionalNothing to do
Platform (warning)Windows on Arm, macOS before 13, or an old or non-glibc Linuxthe fallback in SETUP.md, Platforms: rfbrowser init with Node.jsShared instance and pairing; the browser labs need a working Browser Library

Not caught by the check​

  • Agent sign-in or quota fails mid-day. The lab's If your agent fails section points to its transcript. The participant follows it and rejoins at the next module. Modules 2 to 4 need the least cloud access: the safe harbour. If the site is down, the transcripts are readable on GitHub, on the repository's solutions branch, under transcripts/.
  • "Mine looks different." Expected: agents are non-deterministic. Ask them to keep both results for the debrief.
  • The suite fails more than the two broken tests in Module 0. Check uv run --no-sync python -m shop status: a preset other than clean is on. uv run --no-sync python -m shop reset fixes it.
  • Hooks or MCP do nothing in Copilot or Codex. The folder, or the hooks, are not trusted yet. Start the agent interactively in the repository once and accept.
  • The agent waits at the (rdb) or REPL prompt and never comes back, or reaches for tmux (Windows has none). It started the debugger or the REPL without input. Stop the command, and ask for the piped form: one command per line, ending with one that resumes, for example printf '.where\n.continue\n' | uv run robotcode robot-debug --plain -bl "<long name>". When the input ends, the run resumes and finishes. The cheat sheet has more.
  • The REPL fails with FileNotFoundError for playwright-log.txt. Its output directory does not exist, and the REPL does not create it: results/ before the first test run, or a directory the agent passed with -d. Create it.
  • Codex cannot reach the shop from a test run. Its sandbox blocks network access; see docs/environments.md.
  • A corporate proxy blocks the agent. Nothing to fix on the day: pair them, and give them the transcripts.