The story
Reproduce it
The commands below are the README's, verbatim. Data, weights, model directories and submission TSVs are not in the repository; the layout they are expected in is stated, and the parity checks say how closely a live run reproduces the submitted file.
Setup
Requires uv and FFmpeg. Source: the README's setup section.
uv sync
cp .env.example .env
uv run pytest -q
uv run ruff check .
Data, weights, model directories and submission TSVs are gitignored; only the experiment log is tracked. Expected layout: the NSA test set at data/nsa/HackGTHearsayTesting/, the template at data/nsa/HearsayScoreKey4TeamX.tsv, pretrained weights under weights/, trained bundles under models/.
Score a directory
uv run python scripts/run_pipeline.py --in data/nsa/HackGTHearsayTesting --out outputs/runner/final --template data/nsa/HearsayScoreKey4TeamX.tsv --team CrossExam --fusion models/fusion_v2/constants.json
--fusion models/fusion_v2/constants.json selects the shipped rule. It writes CrossExam_predictions.tsv, one explanation JSON per file under results/, a resumable results.jsonl, timings.csv and run_meta.json. Rerun the same command to resume after a crash. --flip also writes the pre-flipped twin; --rule, --policy and --flip re-fuse the cached logits without reloading a model. Speed with M5 loaded: 1.34 ssource: README.md, section score-a-directory-on-the-mac per file on the full test set (38 minutessource: README.md, section score-a-directory-on-the-mac wall on a Mac shared with other jobs); peak memory 4.0 GBsource: README.md, section score-a-directory-on-the-mac. Source: the README.
Parity
Reproduce in Docker (offline, CPU; not a graded deliverable)
NSA said on Saturday that the image is not required; the deliverable is the TSV and the README. The image is kept as evidence that the pipeline runs offline from a clean build. The recorded image runs the previous rule, not the shipped one: it does not contain the M5 checkpoint. Source: the README.
bash docker/build.sh
docker run --network none -v <test_dir>:/data:ro -v <out_dir>:/out -v <path>/HearsayScoreKey4TeamX.tsv:/tmpl/key.tsv:ro -e HEARSAY_TEMPLATE=/tmpl/key.tsv -e HEARSAY_TEAM=CrossExam hearsay:20260926-0916
The image contains every engineered detector, the M1b probe, Spectra-AASIST, the ECAPA speaker model, the handcrafted bundle and the fusion constants, with a sha manifest of the shipped files checked at start. It refuses to start unless it is offline, and nothing is downloaded at run time. Always pass HEARSAY_TEAM: the runner's default team name is not ours. Recorded image hearsay:20260926-0916: 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; the smoke test passed, including the refusal to run online.
Where each artifact lives
| Artifact | Path |
|---|---|
| Experiment log (every TSV with its holdout score) | submissions/log.csv |
| Shipped fusion constants | models/fusion_v2/constants.json; previous rule models/fusion_v1/constants.json |
| Per-detector score exports | outputs/detector_scores/<name>.csv (regenerable; commands in each report) |
| Model bundles and their readouts | models/<rung>_<stamp>/meta.json |
| Submitted TSV | submissions/20260926-0914_M4_sweep_A3_w0.2_E_CANDIDATE_our_direction.tsv (sent as CrossExam_predictions.tsv) |
| Fold file | splits/nsa_folds.csv (+ nsa_folds_plus_asv19.csv for M1b) |
| Experiment write-ups | docs/reports/ |
| Outside reviews we asked for, and their answers | docs/consults/ |
| Run specs and audits | docs/specs/ |
Repository layout
src/hearsay/ application code; detectors/ holds the contract and every detector
tests/ pytest suite (hermetic; data- and weight-dependent tests are marked)
scripts/ extraction, training, fusion, runner, cloud and ops scripts
docker/ build, entrypoint, smoke, parity and asset-manifest scripts
docs/ plan, architecture, code map, reports/, specs/, consults/, handoffs/, and this site
submissions/ log.csv (tracked) and submission TSVs (ignored)
data/ weights/ models/ local only
.claude/ Claude Code skills and review scripts shared by the team