Systems and subsystems
The Docker image
An offline, CPU-only image whose entrypoint is the runner, with every model and weight inside, a hash manifest checked at start, and a refusal to run if the network is on. Not a graded deliverable since Saturday noon; kept as evidence that the pipeline runs from a clean build.
In plain words
The brief originally asked for a container that scores the test set without configuration. NSA said on Saturday that the TSV and the README are the submission, so the image became a reproducibility check rather than a deliverable. It still proves the claim that nothing on the scoring path needs a network: the build bakes the offline flags in, the entrypoint verifies every shipped file against a manifest, and the smoke test confirms that an online container is refused.
What goes in and comes out
In: a mounted directory of audio, the template TSV, and the team name in an environment variable. Out: the same outputs as the runner, in a mounted output directory.
Where it lives
Dockerfile; docker/build.sh (stages the model bundles, builds for linux/amd64, tags by timestamp); docker/entrypoint.sh (threads, template discovery, manifest check, the runner); docker/assets.py (the manifest); docker/smoke.sh; docker/parity.py.
Parameters and where each is set
- Base image
python:3.12source: Dockerfile line 7 (GitHub; assumes main is public)-slim-bookwormpinned by digest; FFmpeg from apt; CPU-only torch 2.14.0source: Dockerfile line 29 (GitHub; assumes main is public) from the PyTorch CPU index; locked dependencies exported without torch, torchaudio or LightGBM (Dockerfile, lines 7–30). - Offline flags baked in as environment: Hugging Face and transformers offline, telemetry off (Dockerfile, lines 9–12).
- Copied in: the XLS-R, Spectra-AASIST and ECAPA weights, the staged model bundles, the source and scripts; a manifest of every shipped file's size and hash is frozen at build time and verified at every start, exit code 3 on a mismatch (entrypoint.sh, lines 36–39).
- Threads: the container's CPU quota, capped at six (entrypoint.sh, lines 12–25); a lone TSV in the data mount becomes the template; the runner is started with
--require-offline. - The build stages the probe, the handcrafted and compression bundles and every fusion constants file, refuses to run with less than eight gigabytes free, and records a build-info line with the git commit (build.sh, lines 21–69).
Status
The recorded image is hearsay:20260926-0916, built from source 37c26b8, running the previous rule: it does not contain the M5 checkpoint. The build script does not stage M5, so a rebuild as-is would refuse to start under the runner's current default; staging M5 adds about 627 MBsource: docs/specs/2026-09-26_k-docker-image.md. Both facts are on the routed list.
Numbers
50source: README.md, section reproduce-in-docker-offline-cpu-linuxamd64-not-a-graded-deliverable test files scored inside the image against the previous rule's TSV: Spearman 1.0source: README.md, section reproduce-in-docker-offline-cpu-linuxamd64-not-a-graded-deliverable, max abs diff 2.02e-4source: README.md, section reproduce-in-docker-offline-cpu-linuxamd64-not-a-graded-deliverable; decoded audio identical to the Mac on 50 of 50 files; about 4 ssource: README.md, section reproduce-in-docker-offline-cpu-linuxamd64-not-a-graded-deliverable per file under emulation; 3.3 GiBsource: README.md, section reproduce-in-docker-offline-cpu-linuxamd64-not-a-graded-deliverable resident.
Known limits
Built on Apple Silicon under emulation, so it is slow there. The entrypoint's comment still names an old default rule. The image is not the shipped rule; the runner on the Mac is.
Tests that pin it
tests/test_docker_image.py (no Docker needed): base image and FFmpeg layer, offline environment baked in, CPU torch and no LightGBM in the locked dependencies, the context never copies private trees or the frontend, copy destinations match the loaders, the entrypoint's contract matches the runner including the six-thread cap, symlinked bundles resolve, no LightGBM on the image path, the manifest freezes, verifies and detects tampering, the PCM hash detects a changed sample, the smoke script runs offline and checks order, the build script targets amd64 and records provenance.