"""标准库入口：固定轨迹演示真实文件、校验和恢复，不调用模型。

使用新目录：python harness_demo.py /tmp/my-harness-run --pause-after-draft
然后恢复：python harness_demo.py /tmp/my-harness-run
不要同时对同一目录启动两个进程，也不要把目录交给不可信程序修改。
"""
import argparse
import json
from contracts import correct_report
from runtime_core import Runtime


def run(root, pause=False):
    runtime = Runtime(root)
    if runtime.state["phase"] == "completed":
        print(json.dumps(runtime.inspect_completed(), ensure_ascii=False))
        return
    source = runtime.call("read_source", {})
    if not runtime.candidate.exists():
        # 固定轨迹故意制造一个事实错误，不代表真实模型一定这样回答。
        wrong = correct_report(source)
        wrong["status"] = "paid"
        runtime.call("write_report", {"report": wrong})
        if pause:
            print("已保存错误候选。再次使用同一路径运行，将重新验证后继续。")
            return
    # 无论状态中保存什么标志，恢复后都重新检查磁盘内容。
    result = runtime.call("verify_report", {})
    print(json.dumps(result, ensure_ascii=False))
    if not result["passed"]:
        # 这是预设修复；真实模型模式需要将错误作为 tool_result 回填。
        runtime.call("write_report", {"report": correct_report(source)})
    result = runtime.call("finish", {})
    print(json.dumps(result, ensure_ascii=False))

if __name__ == "__main__":
    parser = argparse.ArgumentParser(description=__doc__)
    parser.add_argument("workspace", help="新任务使用不存在的路径，恢复使用同一路径")
    parser.add_argument("--pause-after-draft", action="store_true")
    args = parser.parse_args()
    run(args.workspace, args.pause_after_draft)
