The known failure modes, most common first. Every one of these has cost this project real debugging time.
You ran plain uv sync, which REMOVES the sim extras. Re-run:
uv sync --extra simAnything that touches the simulator needs the extra; plain sync is only for pure-unit work.
A timeout-killed or crashed dora run leaves orphaned node processes
behind — historically at high CPU, silently corrupting every
measurement that follows (slow episodes, flaky timing tests, thermal
throttling). Upstream issue: dora-rs/dora#2856.
Before debugging ANY perf/timing weirdness:
uptime # load average sane for an idle box?
ps aux | grep -E "dora|genesis" | grep -v grepKill leftovers by their run working directory rather than pattern- matching all of python (other work may be running):
# inspect first, then kill the pids whose cwd is the stale run
lsof -a -d cwd -c python | grep runs/The campaign runners sweep their own worktrees between sessions; manual
dora run invocations are on you.
The Python API is pinned to 1.0.1, but the CLI uses the corrected source commit
in dora-runtime.json. Both the affected release and corrected source build
report CLI version 1.0.1, so dora --version alone cannot distinguish them.
Check the actual receipt against the current pin:
uv run --extra sim --locked python tools/dora_runtime.py verify --prefix "$AISLE_DORA_PREFIX"AISLE_DORA_PREFIX is the installation directory chosen in
getting started. If the receipt, binary or source pin
has changed, install into a new prefix using those instructions. Do not
reinstall the affected release CLI as a remedy for lockstep stalls, and do not
rewrite a receipt. A failed installation keeps partial output for diagnosis;
choose a fresh prefix for the retry.
For the public quickstart, pass --runtime-prefix "$AISLE_DORA_PREFIX".
For manual commands, which dora should resolve inside that prefix after
export PATH="$AISLE_DORA_PREFIX/bin:$PATH". Older Cargo, conda or Homebrew
installations may otherwise shadow the verified executable. Use --extra cuda
in verification commands if that is your selected environment.
Stop and restart any older daemon/coordinator you started before switching runtime builds. Historical pre-1.0 recordings and stores may need migration; consult the upstream 1.0 release notes before reusing them.
The refusal JSON says why; the common ones:
- Frozen-set drift — your working tree differs from the trusted
env baseline. If you intentionally changed frozen code, that is an
env-changePR (CON-7), not an override. For local dev on top of a known-good tree,--env-baseline local(recorded in the manifest). - No open idea (HAR-8) — research-agent branches must
harness report logan idea before rolling out. Humans:--no-idea-gate(recorded). - Validation errors — fix the graph; the error's
hintfield usually names the registry node or adapter you need.INSTALL_MISSINGmeans the manifest's package is not in the frozen environment — pick an installed alternative (seeanalysis/h1/for why this matters).
- S-tier (retail) episodes are long-horizon; give rollouts a real
--timeout-sand expect minutes per episode, not seconds. - A graph bug can leave an episode with no termination condition —
the episode then runs until the outer timeout. If a rollout stalls,
check whether traces are still being written (
ls -lt runs/<id>/traces/) before assuming the runner is dead. - One machine, one sim run. Parallel sim runs (or a parallel
uv sync/ cargo build during a run) contend for the GPU/CPU and corrupt timing.
Determinism is a spec requirement (CON-5) with a dedicated writeup:
determinism.md. Short version: RNG and time are injected, the scene
is rebuilt from (seed, embodiment, tier), and known nondeterminism
sources (thread pools, unordered dict iteration, wall-clock in result
paths) are bugs — file them as such. The M0 gate includes a
same-seeds replicate check.
- Did you run the full gate chain with
&&? A;-chained run can scroll a red step past you. tools/trace_check.pyfails when an implemented MUST id has no citing test — grep the spec id, add the test docstring citation.- CI has no simulator;
-m unitmust not import sim deps at collection time.