P69（中文 UI 文案汇总审校）验证记录
基线：commit 4aa6fab（P68）。本单未 push。

审校范围
- 扫描 src/LivingVillage.Desktop 全部 .fs 的字符串字面量（HUD/任务面板/提示/菜单/对话/交易/保存失败反馈），
  逐条核对错别字、半/全角标点、状态词与留白一致。

清单与处置
1. 半/全角标点：全仓中文串内无 CJK 邻接的半角 `, . : ; ! ?`（全部用全角「，：」），无需改。
2. 状态词：待接受/进行中/已完成/已失败 一致。面板打开语不一致——
   「需求面板已打开 / 任务面板已打开」vs「年鉴已打开」→ **改为「年鉴面板已打开」**
   （Interaction.statusLabel + ChineseText.requiredUiLabels）。
3. 交易缺货口径：对话交易失败名「库存不足」vs HUD 交易「背包不足」→ **统一为「库存不足」**（PlayerTrade.sell）。
   （PlayerTrade「背包里没有可卖物品」为「空背包」另一语义，保留。）
4. 提示大小写/留白：对话分页页脚「第 %d/%d 页   空格 翻页   Esc 关闭」用 `Esc`（其余全部 `ESC`）且三空格——
   **改为「第 %d/%d 页  空格 翻页  ESC 关闭」**（Game.DrawDialogOverlay）。
5. 其余保留（跨文件一致，无改动）：白天/夜晚/清晨/黄昏、1倍速/2倍速/5倍速、职业名、任务名、
   剧情线文案、菜单项、按键提示 `ENTER/ESC/空格` 等。

红先
- 先建 P69CopyAuditTests.fs 断言新文案；暂存 4 个实现文件后运行 → 2 例红：
  「应为 年鉴面板已打开，实际 年鉴已打开」「应为 库存不足，实际 背包不足」；恢复后转绿。

改动文件
- src/LivingVillage.Desktop/Interaction.fs（年鉴面板已打开）
- src/LivingVillage.Desktop/ChineseText.fs（requiredUiLabels 同步）
- src/LivingVillage.Desktop/PlayerTrade.fs（库存不足）
- src/LivingVillage.Desktop/Game.fs（分页页脚留白 + ESC 大写）
- src/LivingVillage.Desktop.Tests/P61GlyphCoverageTests.fs（钉住的页脚样例同步）
- src/LivingVillage.Desktop.Tests/P69CopyAuditTests.fs（新，2 例）+ .fsproj 挂载

验收
- dotnet build LivingVillage.sln -c Release → 0 错误，1 警告（P40ArtTests.fs FS0760，既有）。
- dotnet test src/LivingVillage.Desktop.Tests -c Release --no-build → 338/338（336→+2）。
- dotnet test src/LivingVillage.Kernel.Tests -c Release --no-build → 119/119。
- --performance-baseline final_digest=953775FAEB2FDDE97289491AA260BD8D390C571E48A7A13AD2CB6FB7124F7F6C（未动 Kernel/Sim）。

边界
- 只改字符串字面量与直接相关断言；未改逻辑、Kernel/Sim、MapSnapshot/渲染口径；未 push。
- 未改职业名/任务名（由 Kernel `Occupation` 提供，属只读、且全仓一致）。
