diff --git a/.claude/skills/continuation/scripts/run_writer.py b/.claude/skills/continuation/scripts/run_writer.py index 904a193..007ed6c 100644 --- a/.claude/skills/continuation/scripts/run_writer.py +++ b/.claude/skills/continuation/scripts/run_writer.py @@ -87,7 +87,10 @@ def build_writer_execution_profile( system_prompt_id="writer-system-prompt-v2", system_prompt=system_prompt, system_prompt_sha256=sha256_text(system_prompt), - normal_terminal_reasons=("success",), + # Claude Code 2.1.211 的 --print envelope 在正常结束时给 terminal_reason="completed" + # (subtype 才是 "success")。replay 冻结 config 的 normalTerminalReasons 同样登记 + # ["completed"];旧值 ("success",) 会把每一次正常调用误判成 RECEIPT_INVALID。 + normal_terminal_reasons=("completed",), ) diff --git a/.claude/skills/continuation/scripts/test_run_writer.py b/.claude/skills/continuation/scripts/test_run_writer.py index 3e658fe..73841f0 100644 --- a/.claude/skills/continuation/scripts/test_run_writer.py +++ b/.claude/skills/continuation/scripts/test_run_writer.py @@ -98,7 +98,8 @@ def _success_runner(context: dict, output: dict | None = None) -> FakeRunner: "type": "result", "subtype": "success", "is_error": False, - "terminal_reason": "success", + # CLI 2.1.211 正常结束的 terminal_reason 是 "completed"(subtype 才是 "success") + "terminal_reason": "completed", "stop_reason": "end_turn", "api_error_status": None, "total_cost_usd": "0.120000", @@ -282,7 +283,8 @@ class RunWriterTest(unittest.TestCase): "type": "result", "subtype": "success", "is_error": False, - "terminal_reason": "success", + # 与 CLI 2.1.211 真实 envelope 一致;若失配 RECEIPT_INVALID 会抢占主码 + "terminal_reason": "completed", "stop_reason": "end_turn", "api_error_status": None, "total_cost_usd": "0.120000", diff --git a/.claude/skills/replay-eval/scripts/test_run_writer_replay.py b/.claude/skills/replay-eval/scripts/test_run_writer_replay.py index e73cf86..d25cb00 100644 --- a/.claude/skills/replay-eval/scripts/test_run_writer_replay.py +++ b/.claude/skills/replay-eval/scripts/test_run_writer_replay.py @@ -319,7 +319,8 @@ class FakeSubprocessRunner: "type": "result", "subtype": "success", "is_error": False, - "terminal_reason": "success", + # CLI 2.1.211 真实 envelope:terminal_reason 是 "completed",subtype 才是 "success" + "terminal_reason": "completed", "stop_reason": "end_turn", "api_error_status": None, "total_cost_usd": "0.010000",