Dodee/
CONNECTING —
DRIVE —
Status Connecting…
Render progress — frame‑weighted
—
— files —
rate — s/frame/node — elapsed —
Headroom — ETA against the node killer
—
ETA—
Deadline—
NOW — — KILLER

Episode timeline

— / — stages —

Timeline progress

GPU nodes

Guards

Region map

—units
—dialogue
—songs
—idles
excluded ranges

Raw archive — WS-02 → BLACK-A

Background jobs

Scripts

Re-run any pipeline script by hand — for when Claude is unavailable. Pick the episode, tick the flags, Preview (a dry run) and read the output, then Run. Scripts with no dry run ask for one confirmation. The server refuses a run on a delivered episode, while another Resolve pass is running, or when Resolve is closed; each script's own gates still apply.

Where things live — every script, and the Terminal command to run it

Every Dodee pipeline script, where it lives, and the exact command to run it in Terminal. This works with the monitor DOWN and with Claude unavailable. Paste the setup block once, then any command below. Flags in square brackets are optional; the monitor's checkboxes map to them one-to-one. Anything not listed as a monitor button is listed at the bottom.

Setup (paste once)

EP=EP22; N=${EP#EP}
DIR=/Volumes/2T5-WS-02/2026-MOST-PRODUCTION-DODEE/00-ASSETs/00-EPISODEs/$N-RV-$EP
XML=$(ls "$DIR"/02-$EP-IMPORTs/01-$EP-I-XMLs/*.xml | head -1)
VOCAB="$DIR/01-$EP-DOCs/$EP-VOCAB.json"          # run_prompt_pack only
PREV=EP$(printf %02d $((10#$N - 1)))               # previous episode (prompt-pack inheritance)
PREV_DIALOGUE_PACK=$(ls -d /Volumes/2T5-WS-02/2026-MOST-PRODUCTION-DODEE/00-ASSETs/00-EPISODEs/*-RV-$PREV)/01-$PREV-DOCs/$PREV-DIALOGUE-PROMPT-PACK.json
PREV_SONG_PACK=${PREV_DIALOGUE_PACK/DIALOGUE/SONG}

0 · Check (read-only)

Readiness ~/.claude/skills/dodee-episode/readiness.py
~/.pyenv/shims/python3 ~/.claude/skills/dodee-episode/readiness.py --ep $EP
flags: [--next]
Coverage audit ~/.claude/skills/dodee-episode/audit_coverage.py
~/.pyenv/shims/python3 ~/.claude/skills/dodee-episode/audit_coverage.py --ep $EP --dir "$DIR"
flags: [--drops]

1 · Ingest & gens

Announce camera raws ~/.claude/skills/dodee-episode/announce_raws.py
# preview (changes nothing)
~/.pyenv/shims/python3 ~/.claude/skills/dodee-episode/announce_raws.py --ep $EP --dir "$DIR" --dry-run
# run
~/.pyenv/shims/python3 ~/.claude/skills/dodee-episode/announce_raws.py --ep $EP --dir "$DIR"
Stage WAVs to Drive ~/.claude/skills/dodee-episode/stage_wavs.py
~/.pyenv/shims/python3 ~/.claude/skills/dodee-episode/stage_wavs.py --ep $EP --dir "$DIR"
flags: [--verify-only]
Import gens ~/.claude/skills/dodee-episode/import_gens.py
# preview (changes nothing)
~/.pyenv/shims/python3 ~/.claude/skills/dodee-episode/import_gens.py --ep $EP --dir "$DIR" --dry-run
# run
~/.pyenv/shims/python3 ~/.claude/skills/dodee-episode/import_gens.py --ep $EP --dir "$DIR"

2 · VOX, transcript, prompts

VOX audio export ~/.claude/skills/dodee-episode/run_audio_export.py
# preview (changes nothing)
~/.pyenv/shims/python3 ~/.claude/skills/dodee-episode/run_audio_export.py --ep $EP --dir "$DIR"
# run
~/.pyenv/shims/python3 ~/.claude/skills/dodee-episode/run_audio_export.py --ep $EP --dir "$DIR" --apply
Transcribe VOX ~/.claude/skills/dodee-episode/run_transcribe.py
~/.pyenv/shims/python3 ~/.claude/skills/dodee-episode/run_transcribe.py --ep $EP --dir "$DIR"
flags: [--songs]
terminal-only: --language, --limit, --ack-disagree/--ack-reason are terminal-only (free text).
Prompt pack ~/.claude/skills/dodee-episode/run_prompt_pack.py
~/.pyenv/shims/python3 ~/.claude/skills/dodee-episode/run_prompt_pack.py --ep $EP --dir "$DIR" --vocab "$VOCAB" --inherit "$PREV_DIALOGUE_PACK" --inherit-song "$PREV_SONG_PACK"
terminal-only: --allow-banned and --out-dir are terminal-only.

3 · Assembly, render, verify

Assembly (place + comp) ~/.claude/skills/dodee-episode/run_assembly.py
~/.pyenv/shims/python3 ~/.claude/skills/dodee-episode/run_assembly.py --ep $EP --dir "$DIR" --xml "$XML"
flags: [--render] [--skip-short] [--idles-only]
terminal-only: --force, --revert, --limit, --head, --allow-unreviewed, --refcomp are terminal-only.
Resume render ~/.claude/skills/dodee-episode/resume_render.py
~/.pyenv/shims/python3 ~/.claude/skills/dodee-episode/resume_render.py --ep $EP --dir "$DIR"
flags: [--comp]
terminal-only: --refcomp, --nest are terminal-only.
Verify pass ~/.claude/skills/dodee-episode/verify_pass.py
~/.pyenv/shims/python3 ~/.claude/skills/dodee-episode/verify_pass.py --ep $EP --dir "$DIR"
flags: [--skip-media]
Clear black-bar hold ~/.claude/skills/dodee-episode/clear_hold.py
~/.pyenv/shims/python3 ~/.claude/skills/dodee-episode/clear_hold.py --ep $EP --who dodee-monitor
flags: [--rerun]
Keyings render in place ~/.claude/skills/dodee-episode/run_keyings_render.py
~/.pyenv/shims/python3 ~/.claude/skills/dodee-episode/run_keyings_render.py --ep $EP --dir "$DIR"
flags: [--v3-fanout] [--v3-comps-identical] [--allow-partial]
terminal-only: --tracks is terminal-only.
Apply keyings comps ~/.claude/skills/dodee-episode/apply_keyings_comps.py
# preview (changes nothing)
~/.pyenv/shims/python3 ~/.claude/skills/dodee-episode/apply_keyings_comps.py --ep $EP --dir "$DIR" --dry-run
# run
~/.pyenv/shims/python3 ~/.claude/skills/dodee-episode/apply_keyings_comps.py --ep $EP --dir "$DIR"

4 · Colour, cut, transforms

Dodee colour grade ~/.claude/skills/dodee-episode/apply_dodee_grade.py
# preview (changes nothing)
~/.pyenv/shims/python3 ~/.claude/skills/dodee-episode/apply_dodee_grade.py --ep $EP --dir "$DIR"
# run
~/.pyenv/shims/python3 ~/.claude/skills/dodee-episode/apply_dodee_grade.py --ep $EP --dir "$DIR" --apply
Cut (blade) ~/.claude/skills/dodee-episode/run_blade.py
~/.pyenv/shims/python3 ~/.claude/skills/dodee-episode/run_blade.py --ep $EP --dir "$DIR"
flags: [--skip-short] [--no-delete]
terminal-only: --limit, --head, --nest are terminal-only. Never re-run the razor over finished work.
Drop Dodee over Onur CU ~/.claude/skills/dodee-episode/run_drop_onur_cu.py
# preview (changes nothing)
~/.pyenv/shims/python3 ~/.claude/skills/dodee-episode/run_drop_onur_cu.py --ep $EP --dir "$DIR"
# run
~/.pyenv/shims/python3 ~/.claude/skills/dodee-episode/run_drop_onur_cu.py --ep $EP --dir "$DIR" --apply
Transforms ~/.claude/skills/dodee-episode/run_transforms.py
~/.pyenv/shims/python3 ~/.claude/skills/dodee-episode/run_transforms.py --ep $EP --dir "$DIR"
flags: [--no-learn-wide]
terminal-only: --reset (sets every Dodee clip back to 1:1) is terminal-only.

5 · Exports

Export CPX (client preview) ~/.claude/skills/dodee-episode/export_cpx.py
~/.pyenv/shims/python3 ~/.claude/skills/dodee-episode/export_cpx.py --ep $EP --dir "$DIR"
flags: [--no-burnin]
terminal-only: --allow-unattributable is terminal-only (only after checking by hand).
Export CFX (client elements) ~/.claude/skills/dodee-episode/export_cfx.py
~/.pyenv/shims/python3 ~/.claude/skills/dodee-episode/export_cfx.py --ep $EP --dir "$DIR"
terminal-only: --only, --batch, --allow-unattributable are terminal-only.

6 · Revisions & repair

Recheck renders (revision round) ~/.claude/skills/dodee-episode/recheck_renders.py
# preview (changes nothing)
~/.pyenv/shims/python3 ~/.claude/skills/dodee-episode/recheck_renders.py --ep $EP
# run
~/.pyenv/shims/python3 ~/.claude/skills/dodee-episode/recheck_renders.py --ep $EP --apply
flags: [--pass dodee] [--pass keyings] [--export]
Fix un-comped clips ~/.claude/skills/dodee-episode/fix_uncomped.py
# preview (changes nothing)
~/.pyenv/shims/python3 ~/.claude/skills/dodee-episode/fix_uncomped.py --ep $EP --dir "$DIR" --dry-run
# run
~/.pyenv/shims/python3 ~/.claude/skills/dodee-episode/fix_uncomped.py --ep $EP --dir "$DIR"
terminal-only: --refcomp is terminal-only.
Fix idles ~/.claude/skills/dodee-episode/fix_idles.py
~/.pyenv/shims/python3 ~/.claude/skills/dodee-episode/fix_idles.py --ep $EP --dir "$DIR"
flags: [--render]
terminal-only: --refcomp is terminal-only.
Pool cleanup (21.1) ~/.claude/skills/dodee-episode/pool_cleanup_2111.py
# preview (changes nothing)
~/.pyenv/shims/python3 ~/.claude/skills/dodee-episode/pool_cleanup_2111.py --ep $EP --dir "$DIR"
# run
~/.pyenv/shims/python3 ~/.claude/skills/dodee-episode/pool_cleanup_2111.py --ep $EP --dir "$DIR" --apply
terminal-only: --prove-only, --move-method, --neutral-timeline, --only-sub, --accept-nomp are terminal-only.

7 · Sync tools

Review sync (iCloud <-> WS-02) ~/.local/bin/dodee-review-sync
# preview (changes nothing)
~/.local/bin/dodee-review-sync $EP
# run
~/.local/bin/dodee-review-sync $EP --apply
Gen sync (Drive -> WS-02) ~/.local/bin/dodee-gen-sync
# preview (changes nothing)
~/.local/bin/dodee-gen-sync --ep $EP --dry-run
# run
~/.local/bin/dodee-gen-sync --ep $EP
flags: [--verbose]
terminal-only: --expect N and --exclude NAME are terminal-only.
Keyings supervisor (resume loop) ~/.local/bin/dodee-keyings-supervise
~/.local/bin/dodee-keyings-supervise $EP "$DIR"

Terminal-only (no monitor button)

run_all.py Whole-chain runner: needs --xml --drp --raw-src --sound-src --gen-src (source folders), not derivable from the episode folder.
~/.pyenv/shims/python3 ~/.claude/skills/dodee-episode/run_all.py --ep $EP --dir "$DIR" --xml "$XML" --drp <previous-episode.drp> --raw-src <camera-raws> [--from STAGE] [--to STAGE]
prep_episode.py Step 1 disk prep: needs --raw-src / --gen-src / --sound-src.
~/.pyenv/shims/python3 ~/.claude/skills/dodee-episode/prep_episode.py --ep $EP --dir "$DIR" --xml "$XML" --raw-src <camera-raws> [--dry-run]
run_episode.py Step 2 project build from the previous episode's .drp.
~/.pyenv/shims/python3 ~/.claude/skills/dodee-episode/run_episode.py --ep $EP --dir "$DIR" --xml "$XML" --drp <previous-episode.drp>
run_submit.py Submits GPU jobs to Colab nodes: costs money, needs node letters. Always a human call.
~/.pyenv/shims/python3 ~/.claude/skills/dodee-episode/run_submit.py --ep $EP --dir "$DIR" --nodes A,B,C [--verify1 | --bulk]
pipeline_advance.py The unattended orchestrator (launchd com.2t5.pipeline-advance). Use the Background jobs panel.
~/.pyenv/shims/python3 ~/.claude/skills/dodee-episode/pipeline_advance.py --once [--dry-run]
selfcheck.py Offline regression of the pipeline rules. No Resolve.
~/.pyenv/shims/python3 ~/.claude/skills/dodee-episode/selfcheck.py

Logs and keys

Runs started from the monitor write ~/.dodee-watchdog/script-runs/runs/<run-id>.log (+ .json with the exact argv and exit code). Every script also writes its own job log, which is what the dashboard's stage verdicts read. The dashboard key is in ~/.dodee-watchdog/dashboard-key. Terminal runs obey the same rules the monitor enforces: do not start a second Resolve-driving pass while one is running, never run on a DELIVERED episode, and Resolve must be open first.