headroomlabs-ai/headroom · warning · SystemExit
nothing to run: --skip-npm and --skip-python were both set
Error message
nothing to run: --skip-npm and --skip-python were both set
What it means
release_smoke_all.py's main() rejects the combination of `--skip-npm` and `--skip-python`. Both flags together would make the script do nothing except verify versions, so it exits with a usage error rather than silently succeeding.
Source
Thrown at scripts/release_smoke_all.py:78
parser.add_argument("--python", default=sys.executable)
parser.add_argument("--node", default=shutil.which("node") or "node")
parser.add_argument(
"--python-release",
action="store_true",
help="Run the Python smoke with maturin --release instead of the faster ci profile.",
)
parser.add_argument("--skip-npm", action="store_true")
parser.add_argument("--skip-python", action="store_true")
return parser.parse_args()
def main() -> None:
args = parse_args()
out_dir = args.out.resolve()
version = load_project_version()
if args.skip_npm and args.skip_python:
raise SystemExit("nothing to run: --skip-npm and --skip-python were both set")
ensure_empty_dir(out_dir)
run([args.python, "scripts/verify-versions.py"])
completed: list[tuple[str, Path]] = []
if not args.skip_npm:
npm_out = out_dir / "npm"
run([args.node, "scripts/build_npm_release_assets.mjs", version, npm_out])
completed.append(("npm", npm_out))
if not args.skip_python:
python_out = out_dir / "python"
python_args: list[str | os.PathLike[str]] = [
args.python,
"scripts/build_python_release_smoke.py",
"--out",
python_out,View on GitHub (pinned to 322425c43b)
Solutions
- Remove one of the two skip flags so at least one smoke runs.
- If you genuinely want a no-op verification, run `scripts/verify-versions.py` directly instead.
- Fix the wrapper/matrix logic that sets both flags.
Example fix
# before python scripts/release_smoke_all.py --skip-npm --skip-python # after: only the npm smoke is unwanted python scripts/release_smoke_all.py --skip-npm
Defensive patterns
Strategy: validation
Validate before calling
def validate_flags(skip_npm: bool, skip_python: bool) -> None:
if skip_npm and skip_python:
raise SystemExit("refusing to run with no work: unset --skip-npm or --skip-python") Prevention
- In matrix-driven CI, compute the single skip flag from the axis instead of concatenating both.
- Fail fast on contradictory flags in wrappers — do not pass them through silently.
When it happens
Trigger: Composing flags in a wrapper script or CI step that concatenates skip flags (e.g., a matrix where both skips end up enabled); copy-pasting a command line that accumulated flags.
Common situations: CI matrix jobs passing `--skip-$MATRIX_OTHER` for both axes; a wrapper that forwards user-supplied flags verbatim.
Related errors
- output directory must be empty to avoid stale artifacts: {pa
- output directory must be empty to avoid stale artifacts: {pa
- Error: Memory eval dependencies not installed.
- Error: litellm required for --answer-model. Run: pip install
- Evaluation interrupted.
AI-assisted analysis of headroomlabs-ai/headroom@322425c43b (2026-08-15).
Data as JSON: /api/errors/c10da3a6e0643b57.
Report an issue: GitHub.