Justfile Command Reference
| Status | Applies to | Owner |
|---|---|---|
| Pre-release draft | main branch as of 2026-06-30 Justfile command surface | Development maintainers |
The repository Justfile is a thin, stable entrypoint layer. It names common
workflows and delegates workflow truth to saved Hydra configs under
tooling/configs/.
Run just help for the full recipe list.
Policy
Environment variables configure the machine.
Hydra configs configure the workflow.
Justfile recipes select the workflow.
Environment variables are appropriate for secrets, scheduler-provided state, local cache/toolchain roots, and explicit one-off path overrides. They must not be the primary source of truth for benchmark grids, profiler modes, dataset or chromosome identity, output format, run semantics, or named machine profiles.
Hydra-backed recipes accept trailing overrides for ad hoc work, but routine
workflow behavior belongs in a saved config. Every migrated tooling.cli.*
recipe should use --config-name.
Core Development
Use these on the login node when they are lightweight:
just doctor
just doctor-server
just dev-bootstrap
just dev-bootstrap-gpu
just dev-install
just dev-install-release
just check-local
just check-artifact-schema data/profiles/example/report.json
just check-rust-architecture
just rust-check
just workspace-check
just test-local
just docs-build
just docs-check
server-setup-tools runs in a minimal uv --no-project environment so it can
install Mold before any Linux build attempts to compile the project itself.
dev-install uses Cargo's fast dev profile. dev-install-release uses the
FatLTO, single-codegen-unit release profile used by benchmarks and final
builds. Cargo defaults to 30 build jobs through .cargo/config.toml;
CARGO_BUILD_JOBS or an explicit --jobs option can impose a different cap.
SLURM jobs use the scheduler allocation unless CARGO_BUILD_JOBS is already
set.
Use SLURM for CPU-heavy validation:
just slurm-cpu-check
just slurm-cpu-test
just slurm-cpu-test-full
just slurm-cpu-rust-build
just slurm-cpu-rust-test
Data
just data-fetch
just data-simulate
just data-prepare
just data-baseline-binary
just data-baseline-qt
just data-verify-binary-gpu-inputs
GWAS_ENGINE_DATA_DIR may point at a shared data directory, such as the main
checkout's gitignored data/ directory from a temporary worktree.
Matrices
just matrix-chr10-dry
just matrix-chr10-smoke
just slurm-gpu-matrix-chr10
just matrix-chr22-dry
just matrix-chr22-smoke
just slurm-gpu-matrix-chr22
The matrix-* workflows replace direct hand-written g regenie recipes. Use
smoke configs for bounded validation and full matrix configs for parity or
performance runs.
Benchmarks
just bench-bgen-reader
just bench-callback-overhead
just bench-callback-overhead-gpu
just bench-linear-startup-gpu
just bench-linear-startup-gpu-parquet
just bench-binary-hot-gpu
just bench-binary-hot-gpu-smoke
just bench-output-stages-gpu
just rust-bench
just bench-torchgwas-chr22
just bench-tensorqtl-chr22
just bench-rust-build-profiles
just slurm-gpu-bench-binary-hot
just slurm-gpu-bench-torchgwas-chr22
just slurm-gpu-bench-tensorqtl-chr22
rust-bench runs Criterion benchmarks through cargo bench --workspace so
workspace-owned benches are discovered from their owning crates. Cargo's
bench profile inherits the maximum-performance release profile.
bench-rust-build-profiles compares the built-in dev and release profiles.
The repo Cargo configuration defaults to 30 build jobs and, on Linux, enables
target-cpu=native and links through Mold using the cc compiler driver.
doctor verifies the compiler driver can complete a tiny Mold link. SLURM jobs
isolate native Cargo artifacts under target/slurm/<node>/; an explicit
CARGO_TARGET_DIR still takes precedence.
RUSTC_WRAPPER remains an environment-specific choice.
Historical external baseline comparisons remain available under legacy-*:
just legacy-baselines
just legacy-baselines-full
just legacy-regenie-comparison-cpu
just legacy-regenie-comparison-gpu
just legacy-profile-regenie-comparison-cpu
just legacy-profile-regenie-comparison-gpu
Use the TorchGWAS chr22 competitor benchmark through SLURM for real GPU evidence:
just slurm-gpu-bench-torchgwas-chr22
just slurm-gpu-bench-torchgwas-chr22 tool.variant_limit=1000
The benchmark records cold and warm-style repeated runs for single-trait
quantitative chr22. It is a workflow/runtime comparison, not strict statistical
parity with REGENIE Step 2 LOCO output. g reads the chr22 BGEN plus sample
file; full TorchGWAS runs read the existing PLINK .bed/.bim/.fam triplet
because the pinned TorchGWAS BGEN path stalls in PLINK2 raw-table parsing at
chr22 scale. TorchGWAS PLINK runs do not emit a persistent genotype cache, so
their warm cases reflect repeated process/filesystem-cache behavior.
Variant-limited smoke runs still use a generated NPY subset.
Use the tensorQTL chr22 competitor benchmark through SLURM for real GPU evidence:
just slurm-gpu-bench-tensorqtl-chr22
just slurm-gpu-bench-tensorqtl-chr22 tool.variant_limit=1000
The benchmark records cold and warm-style repeated runs for single-trait
quantitative chr22, but the comparison boundary is QTL-shaped: g runs REGENIE
Step 2 with LOCO predictions on BGEN input, while tensorQTL runs dense trans
nominal linear association on generated phenotype/covariate matrices and local
PLINK .bed/.bim/.fam input. Full runs expose the PLINK files through a
BED-only symlink prefix under the benchmark output directory because tensorQTL
auto-selects PGEN when PGEN and BED files share the same prefix, and its PGEN
reader fails on the local chr22 multiallelic records. Do not treat the result as
statistical parity.
Performance
just perf-smoke
just perf-cpu
just perf-gpu
just perf-compare results/perf/baseline.json results/perf/new.json
just perf-jax-runtime
just perf-tune-regenie2-gpu
perf-smoke and perf-compare are login-node-safe. perf-cpu and perf-gpu
submit through SLURM and use saved benchmark configs for output locations.
Profiling
just profile-deep-dry
just profile-deep-smoke
just profile-rust-criterion
just profile-app-full-dry
just profile-app-full-smoke
just profile-app-full
just profile-chr10-binary-gpu-dry
just profile-chr10-binary-gpu-smoke
just profile-chr10-binary-gpu-full
just profile-chr22-binary-gpu-dry
just profile-chr22-binary-gpu-full
The full profile recipes submit GPU work through SLURM. Native Criterion profiles use the configured CPU compute node. The focused chr10 and chr22 binary GPU recipes keep their profiler selection and campaign budgets in saved Hydra configs rather than in the Justfile.
SLURM Substrates
just slurm-cpu-shell
just slurm-cpu-run 'cargo build --workspace --all-targets'
just slurm-cpu-just check
just slurm-gpu-shell
just slurm-gpu-run 'nvidia-smi'
just slurm-gpu-just bench-binary-hot-gpu-smoke
The SLURM wrappers are execution substrates. Workflow choices should still live in saved configs or named Just recipes.
Guardrails
just check-rust-architecture verifies Cargo workspace dependency boundaries
for the Rust migration. just check-python-architecture verifies Python
package ownership boundaries for compute kernels and JAX runtime helpers.
just check-justfile verifies that the command surface stays config-backed and
that maintained docs do not reference removed recipe names. These guardrails
are included in just check and just check-local; just rust-check and
just workspace-check keep a Rust-focused validation lane for multicrate
migration phases.