# All simple cargo modules share the workspace image.
# Build the image with: dev/run/runbox .build
image: workspace_test
# non-root so chmod-000 file-permission tests fail correctly (root bypasses checks)
test_user: testuser
# per-crate scope to avoid OOM when committing large workspace target directory as image layer
cmd_scope: --package claude_runner_core
# baked into the image default CMD; excludes tests needing external I/O (offline-safe default)
cmd_filter: "!binary(behavior)"
# script invoked by `.test` inside the container (path relative to /workspace)
test_script: module/claude_runner_core/verb/test.d/l1
# script invoked by `.lint` inside the container (path relative to /workspace)
lint_script: module/claude_runner_core/verb/lint.d/l1
# optional binary plugin: name:container_path (binary found via 'which name' on host)
bin_plugin: w3:/usr/local/bin/w3
# container mount point for bin_plugin working volume (persists compilation artifacts)
bin_plugin_volume: /tmp/will_test_targets
# data directory plugin: host_path:container_path:check_type
# .test mounts as required+rw; .shell mounts as optional+ro
plugin_mount: ~/.claude:/workspace/.claude:directory
# cli_fmt is a co-developed companion crate; passed as a named build context (--build-context cli_fmt).
# Path is resolved relative to this file's directory (run/).
extra_build_context: cli_fmt=../../../../../wtools/dev/module/core/cli_fmt
# ── Formerly hardcoded parameters (now configurable) ─────────────────────────
# base_image: rust:slim # FROM for chef and test stages
# rustup_components: clippy # space-separated; e.g. "clippy rustfmt"
system_packages: curl procps
# cargo_features: --all-features # passed to nextest list and offline run CMD
# workspace_dir: /workspace # container WORKDIR; must match in runbox/runbox.dockerfile and runbox-run