- v0.1.1: config persistence — FileHelper paths made absolute (/media/startos/volumes/main/...); relative paths resolved into the JS runtime's ephemeral cwd so action saves never reached /data - v0.1.2: preJobStopContainers (Configure Grading) — docker-stop resident vLLM containers on the head Spark at job start, no auto-restart - v0.1.3: preflight auth (LiteLLM master_key gates /models), poll-until-loaded, crash fast-fail (restarting counts as dead) - v0.1.4: HF_HUB_OFFLINE/TRANSFORMERS_OFFLINE in airgapped serving (--internal network has no DNS); grader _post timeout 600→1800s for ~3.6 tok/s GB10 generation - v0.1.5: dashboard viewer survives the periodic background refresh; download buttons for deck reports, deck JSON, and SCORECARD.md - .gitignore: .startos/ build workspace, start-technologies/ Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Boardroom Map reviewer sandbox
This directory is the build context for the reviewer image, which runs on the
DGX Spark — it is not packed into the .s9pk. The orchestrator rsyncs this
folder to the head Spark and runs build.sh there (the Sparks are aarch64), or
you can build it by hand.
grader_agent.py— a one-shot, read-only agent. It reads the documents mounted at/docs, runs one local model (through the on-Spark proxy) under its persona (/persona/PERSONA.md) and the shared rubric (/RUBRIC.md), and writes a single report to/out. WithBM_ROLE=synthesizerit instead reads the panel's reports from/reportsand writesCONSOLIDATED_REPORT.md.reviewer.Dockerfile— lean pure-Python image (stdlib only).build.sh—IMAGE=boardroom-grader:latest bash build.sh.
How it is launched (by the orchestrator)
Hardened and, in air-gapped mode, network-isolated:
docker run -d --name bm-grader-<id> \
--network boardroom-net \ # --internal in air-gapped mode
--user 1000:1000 --security-opt no-new-privileges --cap-drop ALL \
--read-only --tmpfs /tmp --tmpfs /home/rev --pids-limit 256 --memory 6g --cpus 4 \
-e BM_MODEL=<alias> -e BM_LLM_BASE=http://boardroom-proxy:4000/v1 ... \
-v <job>/docs:/docs:ro -v <job>/out:/out \
-v <job>/personas/<id>.md:/persona/PERSONA.md:ro -v <job>/RUBRIC.md:/RUBRIC.md:ro \
boardroom-grader:latest
The container can reach only the model proxy in air-gapped mode; it holds no credentials beyond a dummy proxy key and cannot touch the host or the documents' originals.