fix(rectification): plain-word opening with examples in the stem, plain de-duplicated step receipt (BUG-1049, BUG-1050)

- BUG-1049 (recurrence of BUG-504): the opening stem carries six examples and
  an example answer again and is server-owned on the zero-evidence opening;
  the body is two plain sentences (no 大运/盘面/代表分钟/精确到秒, no year, no
  question). Stem de-dup compares whole sentences / near-equality instead of a
  12-char prefix, which had deleted the body's examples sentence since
  aa7ccb30 (BUG-604) + dd8f35f7 (BUG-648).
- BUG-1050: plain step labels; a finished step label shows once and
  「已完成 N 步」counts shown rows; failed rows read 「…未完成」 from the
  in-progress wording.
- Skill 10.0.30 -> 10.0.31 (OpeningPolicy); 10.0.30 kept as deprecated.
- VOICE / DESIGN / CHANGELOG / BUG_HISTORY / PROGRESS / real-device checklist
  and screenshots.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
This commit is contained in:
Jesse_Chen
2026-09-26 22:04:56 +08:00
co-authored by Claude Opus 5.5
parent e53052a258
commit 8fc1a5bded
56 changed files with 1562 additions and 134 deletions
+18 -4
View File
@@ -86,14 +86,27 @@ test("completed-step trail stays short and drops while composing", () => {
});
test("live rectification labels name the actual public tool", () => {
assert.equal(RECTIFICATION_TOOL_PROGRESS_LABELS["rectification-read-case"], "正在读取校正记录…");
assert.equal(RECTIFICATION_TOOL_PROGRESS_LABELS["rectification-compare-candidates"], "正在比较候选时间…");
// 原值: "正在读取校正记录…" / "正在比较候选时间…"
// 新值: "正在看你的资料…" / "正在重新对照盘面…"
// 原因: BUG-1050 步骤名改大白话;对照盘面一句与 BUG-1047 已批准的阶段句同文
assert.equal(RECTIFICATION_TOOL_PROGRESS_LABELS["rectification-read-case"], "正在看你的资料…");
assert.equal(RECTIFICATION_TOOL_PROGRESS_LABELS["rectification-compare-candidates"], "正在重新对照盘面…");
assert.equal(rectificationToolActivityPhase("rectification-read-case"), "loading-method");
assert.equal(rectificationToolActivityPhase("rectification-compare-candidates"), "chart-calculation");
assert.equal(rectificationToolActivityPhase("rectification-propose-evidence"), "evidence-validation");
assert.equal(
rectificationCompletedTrail(["rectification-read-case", "rectification-propose-evidence"]),
"已完成:读取校正记录 · 整理事件证据",
// 原值: "已完成:读取校正记录 · 整理事件证据" / 新值: 大白话步骤名 / 原因: BUG-1050
"已完成:看了你的资料 · 记下你说的事",
);
// BUG-1050: two tools that share one plain label are named once in the trail.
assert.equal(
rectificationCompletedTrail([
"rectification-read-case",
"rectification-record-evidence-batch",
"rectification-propose-evidence",
]),
"已完成:看了你的资料 · 记下你说的事",
);
});
@@ -103,7 +116,8 @@ test("persisted receipts rebuild the public activity steps without thinking text
steps: ["rectification-read-case", "rectification-record-evidence-batch"],
methods: ["d1-rashi", "d10-dashamsa"],
}).map((row) => `${row.kind}:${row.label}`),
["activity:读取校正记录", "activity:整理多条事件证据"],
// 原值: ["activity:读取校正记录", "activity:整理多条事件证据"] / 新值: 大白话步骤名 / 原因: BUG-1050
["activity:看了你的资料", "activity:记下你说的事"],
);
assert.deepEqual(activityTraceFromReceipt({ steps: [], methods: ["d1-rashi"] }), []);
});