#!/usr/bin/env python3 from __future__ import annotations import argparse import json import sys from pathlib import Path def main() -> int: parser = argparse.ArgumentParser(description="Run bounded Music3 native Stage1 residual pilot") parser.add_argument("--config", type=Path, required=True) parser.add_argument("--flow-config", type=Path, required=True) parser.add_argument("--flow-checkpoint", type=Path, required=True) parser.add_argument("--stage0-checkpoint", type=Path, required=True) parser.add_argument("--snapshot", type=Path, required=True) parser.add_argument("--diffusers-root", type=Path, required=True) parser.add_argument("--teacher-root", type=Path, required=True) parser.add_argument("--evidence-root", type=Path, required=True) parser.add_argument("--smoke-only", action="store_true") args = parser.parse_args() project = Path(__file__).resolve().parents[1] sys.path.insert(0, str(project / "src")) sys.path.insert(0, str(args.diffusers_root.resolve())) from music3lab.codec.native_stage1_residual_runner import run_stage1 result = run_stage1(**vars(args)) print(json.dumps(result, sort_keys=True)) return 0 if result["status"] in {"PASS", "FUNCTIONAL_FAIL"} else 2 if __name__ == "__main__": raise SystemExit(main())