From e39e178f489d15db52f85f19b3723d6b81e30724 Mon Sep 17 00:00:00 2001 From: zizi Date: Sat, 1 Aug 2026 11:37:14 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=AF=B9=E9=BD=90=20writer=20=E6=AD=A3?= =?UTF-8?q?=E5=B8=B8=E7=BB=88=E6=80=81=E5=9B=9E=E6=89=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .claude/skills/continuation/scripts/run_writer.py | 5 ++++- .claude/skills/continuation/scripts/test_run_writer.py | 6 ++++-- .../skills/replay-eval/scripts/test_run_writer_replay.py | 3 ++- 3 files changed, 10 insertions(+), 4 deletions(-) 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",