Deploy runtime profiles

Deployment is an operator action, not an authority granted to the autonomous agent. All profiles use project-local, Git-ignored runtime paths, after which the harness exposes a selected instrument to the numerical execution backend. Bubblewrap enforces read-only mounts; cooperative PRoot is not an OS security boundary. Native research agents retain their separate host tools. See restricted hosts.

Core

From a source checkout, synchronize the locked Python environment and verify the scientific packages plus Bubblewrap namespace isolation:

uv sync --frozen
uv run simjecture install core

Python 3.11 or newer, uv, and the operating-system Bubblewrap package remain host prerequisites. The package manager installs NumPy, SciPy, Matplotlib, pandas, HTTPX, and Pydantic from the project lock.

WarpX CPU

Install the pinned Conda environment at .runtime/warpx-cpu and execute its one-step 2D openPMD field preflight:

uv run simjecture install warpx-cpu

The installer discovers Micromamba or Mamba, consumes environments/warpx-cpu.yml, loads the versioned capability manifest, and runs the manifest-declared program through Bubblewrap. Repeating the command against a healthy runtime performs no installation. It will not overwrite an unhealthy existing directory; --repair is accepted only for an identifiable Conda-managed CPU prefix.

WarpX CUDA/openPMD

CUDA deployment compiles an audited WarpX checkout for the local GPU and is therefore more expensive and hardware-specific:

uv run simjecture install warpx-cuda \
  --source /absolute/path/to/pinned/warpx-26.07 \
  --jobs 8

The installer requires the exact source revision declared by the deployment skill before invoking its pinned bootstrap. The bootstrap verifies the CUDA backend and an HDF5 openPMD round trip; the capability doctor then executes the manifest’s field-diagnostic smoke inside the sandbox. --arch 89 can override GPU architecture detection when necessary.

CUDA repair is deliberately not performed in place. Move an unhealthy runtime and its dependency prefixes aside so their previous identity remains available for audit, then perform a fresh build.

FLASH MHD

FLASH is operator-supplied. Obtain the source from the official FLASH Center, review its license, and build the required application outside the Simjecture repository. Simjecture does not download FLASH or redistribute its source, modified units, or binaries.

Register the local application-specific executable under the Git-ignored runtime path named by its capability descriptor. Include a build record, an operator-prepared inexpensive parameter file, and all sibling binaries or records in identity_files. The generic deployment procedure and required operator tests are documented in skills/flash-mhd/references/local-deployment.md.

Once the local runtime exists, verify it without changing it:

uv run simjecture doctor --profile flash

simjecture install flash never contains a FLASH download URL. Pass your licensed copy:

uv run simjecture install flash \
  --repository git@github.com:<you>/<your-private-flash>.git \
  --git-ref <tag-or-commit>

or --source /absolute/path/to/FLASH. Set FLASH_SETUP_ARGS, FLASH_OBJDIR, and FLASH_PREFLIGHT_PARFILE in the environment. A Git-ignored overlay can store those defaults. See skills/flash-mhd/references/private-install.md.

The cached probe exercises the exact MPI launcher and reads a fresh HDF5 file. It is permanently non-evidentiary. The campaign must still commission its actual compiled model, initial state, boundaries, diagnostics, and numerical regime prospectively.

Equation of state

atoMEC, Singularity-EOS, and M-ANEOS are optional instruments. The installer clones the pinned upstream revision into a Git-ignored runtime, compiles any query driver, and runs a non-evidentiary probe. Host prerequisites are Git and Python 3.12 or 3.11; Singularity-EOS also needs g++, and M-ANEOS needs gfortran and make.

uv run simjecture install atomec
uv run simjecture install singularity-eos
uv run simjecture install m-aneos

Repeating a command against a healthy runtime performs no installation. It will not overwrite an unhealthy existing directory; --repair is accepted only for an installer-managed prefix. --source may supply an already cloned tree at the pinned revision. The generic procedure is documented in skills/eos/references/local-deployment.md. A campaign must still commission the named model, composition, units, and estimator.

Opacity tables

Optab is optional and GPL-3.0 licensed. The installer clones the pinned revision, builds the MPI/HDF5 executable, fetches the Gaunt-factor and NIST databases required by the doctor probe, and writes a one-zone continuum hydrogen input. Host prerequisites are Git, Python 3.12 or 3.11, h5pfc, and an MPI launcher.

uv run simjecture install optab

The probe copies the prepared input tree, launches Optab, and reads HDF5. It does not qualify a production opacity table. Optab consumes an external abundance file; it is not an equation-of-state solver. See skills/opacity/references/local-deployment.md.

Inspect without installing

uv run simjecture doctor
uv run simjecture doctor --profile warpx-cpu
uv run simjecture doctor --profile warpx-cuda --json
uv run simjecture doctor --profile flash --json
uv run simjecture doctor --profile atomec --json
uv run simjecture doctor --profile optab --json
uv run simjecture install warpx-cpu --dry-run

The default doctor treats missing optional profiles as warnings and fails only when the core is unusable. Selecting a profile makes that capability required. --skip-probes checks files, manifests, devices, and runtime identity without executing the declared smoke programs.

An installation report is recorded under .runtime/deployment/. A doctor run writes only to a temporary sandbox and does not modify an installed runtime.