[docs]defmain(argv:list[str]|None=None)->int:raw_argv=list(argvor[])ifraw_argvandraw_argv[0]=="status":parser=build_status_parser()args=parser.parse_args(raw_argv[1:])payload=read_campaign_status(args)else:ifraw_argvandraw_argv[0]=="run":raw_argv=raw_argv[1:]parser=build_run_parser()args=parser.parse_args(raw_argv)ifnotargs.goal:parser.error("goal markdown path is required")lock_path=run_lock_path(Path(str(args.project_rootor".")).expanduser().resolve())try:payload=run_goal_campaign(args)finally:clear_run_lock(lock_path)ifbool(getattr(args,"json",False)):print(json.dumps(payload,indent=2,sort_keys=True))else:print(json.dumps(payload,indent=2,sort_keys=True))return0