docs(rectification): chart-tier caveats records — BUG-1138/1139, changelog, voice, design, device checklist, progress (T4)

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-10-01 10:15:10 +08:00
co-authored by Claude Opus 5.5
parent f8b4f46d0d
commit 87719a6c84
7 changed files with 148 additions and 1 deletions
@@ -0,0 +1,78 @@
# PROGRESS · 报告与聊天标注判断不了的分盘(2026-10-01)
任务书:`TASK-rectification-chart-tier-caveats-20261001.md`(BUG-1138 / BUG-1139)。执行:Claude fork 子代理。分支 `codex/rectification-chart-tier-caveats-20261001`,基线 `origin/staging` @ `437dcecb`。只 commit,未 push。
## 环境
Linux,Node 22.14(`/exec-daemon/node`),Python 3.13(系统 `python3`,本机无 `.venv`)。`frontend/node_modules` 用 `cp -al` 硬链主检出(同一 lockfile;Turbopack 不接受软链),未执行 `npm ci`。基线在独立 worktree `.worktrees/tier-caveats-base`(`437dcecb`)同机同依赖量。无 Docker:真库断言用 PostgreSQL 17.9 本地替身,正式证据待产品真 Docker。
## 实现
| T | 内容 | 提交 |
| --- | --- | --- |
| T1 | `frontend/src/lib/rectification-adopted-chart-tiers.ts`:仅 `active_birth_provenance.contract === "segment-v1"` 时按 `case_id` 读 `get_agentic_rectification_case_dossier`(服务账号),解析 `latest_result.decision_receipt.inference_state.segment_summary`,`blocked` / `indistinct` → 不可判分盘;同 Case 有更新结果用更新的,跨 Case 拒绝;5 分钟缓存;失败记日志返回 null | `5f279214` |
| T2 | 聊天:共用范围读取 `loadReportCandidateRange` 在 segment-v1 时附带 `unreliableVargas`(经服务账号读资料来源列,`20260927020000` 已授列权);`prepareConsultationRoute` 写入排盘工具输入 `unreliable_vargas`;`runConsultationWorkflow` 从引擎载荷剔除该字段,并经 `applyUnreliableVargasToWorkflowContext` 写 `answer_policy.unreliable_vargas` / `deterministic_claims_forbidden_for` 与一句 `user_facing_limitation`;`projectEvidenceContract` 把两项透传进模型数据包。**未改** `consult/route.ts`、`product-voice.ts`、`consultation-evidence-card.ts`、`consultation-thinking-plan.ts`(挂接点在路由已注入的范围读取函数) | `e68ac9b2` |
| T3 | 报告:`frontend/src/lib/personal-report-chart-caveats.ts` 在不可判分盘的图盘标题与数值位置表标题下插一行提示;`generatePersonalReportLongform` 在计算快照哈希前对中英文正文各自应用;引擎载荷不变,不改 Python | `6372ad8a` |
| 真库 | `tests/database-segment-adoption.test.ts` 追加:采用后服务账号读来源列 + 档案 RPC → `{ source: "segment-v1", resultMatch: "adopted", unreliable: [] }` | `da88c325` |
| T4 | BUG-1138 / 1139、CHANGELOG、VOICE、DESIGN、真机清单、本记录、README | 末提交 |
## helper 五种输入(T1 测试)
| 输入 | 输出 |
| --- | --- |
| segment-v1,结果 D9/D10 blocked(虚构 ±60 宽窗) | `{ source: "segment-v1", resultMatch: "adopted", unreliable: ["D9","D10"] }`,1 次 RPC |
| 旧采用(`contract: "candidate-v2"`) | `null`,0 次 RPC |
| 未校正(provenance 为 null) | `null`,0 次 RPC |
| 结果缺失(RPC 报错 / 档案无 latest_result) | `null` + 警告 `P0001` / `invalid_segment_summary` |
| 摘要损坏(档位与占比不一致) | `null` + 警告 `invalid_segment_summary` |
另:真实引擎扫描(公开 AA,31 分钟)窄窗 → D1 certain、D9/D10 credible,不标注。
## 聊天 A/B
- 工具输入:segment-v1 多 `unreliable_vargas: ["D9","D10"]`,其余字段与旧采用逐字节相同;旧采用工具输入字节快照锁在测试里。
- 引擎载荷:带 / 不带 `unreliable_vargas` 逐字节相同(字段不出站)。
- 上下文与模型数据包:segment-v1 多 `answer_policy.unreliable_vargas`、`deterministic_claims_forbidden_for`,`user_facing_limitation` 末尾追加「你的出生时间范围里,婚恋(D9)、事业(D10)的上升会变,这几张盘判断不了;涉及它们的部分只看本命盘和大运,不按它们下结论。」
- **旧资料逐字节不变(硬红线 1)**:基线 worktree 与本分支各跑同一脚本(`scratchpad/tier/peek2.ts`、`peek3.ts`):旧采用聊天工具输入 `cmp` 相同;真实工作流 golden 下「引擎请求 + 工作流上下文 + 模型数据包」226,949 字节 `cmp` 相同。
## 报告 A/B
- 引擎载荷:旧 / 新资料逐字节相同。
- 落库正文:旧资料 = 引擎原文逐字节;新资料(D9+D10)多 3 行(密度版真实输出:D9 两处、D10 一处图盘标题),删去这 3 行后与引擎原文相同;图盘数不变。
- 读者版真实输出(虚构出生)命中标题:`##### Navamsha`、`##### D9 九分盘`、`##### D10 Dasamsa`、`#### D9 九分盘 数值位置表`、`#### D10 Dasamsa 数值位置表`;英文版:`##### Navamsha`、`##### D9 Navamsa`、`#### D9 Navamsa Position Table`。
- 样例:
```
##### D9 九分盘
提示:出生时间范围内这张盘的上升会变,这一节仅供参考。
(图盘)
```
- 图盘网格:卡片解析允许标题与图之间恰好一段,提示行成为图注;密度版卡片数前后相同,3 张卡带该图注。
## 门禁(基线 `437dcecb` vs 本分支,同机同依赖)
| 检查 | 基线 | 本分支 |
| --- | --- | --- |
| tsc | 0 | 0 |
| lint | 0 error / 126 warning | 0 error / 126 warning |
| npm test | 4809 / pass 4744 / fail 24 / cancel 0 / skip 41 | 4823 / pass 4758 / fail 24 / cancel 0 / skip 41;失败清单逐名相同,基线名 0 丢失,新增 14 |
| `/` | Static | Static |
| 首屏 gzip(`/` 预渲染 HTML 引用 JS + CSS,gzip -9) | JS 555,325 / CSS 68,764 | JS 555,325 / CSS 68,764(±0.00%) |
| 快速门 Python | 1036 passed / 1 skipped | 1036 passed / 1 skipped / 0 failed |
| 快速门 npm 步 | 24 环境失败(Docker / PG / 部署) | 同 24 条 |
| 真库(替身)`database-segment-adoption.test.ts` | — | 2/2 |
| 隐私守卫 | — | 通过 |
## 改动的既有断言
无。`tests/database-segment-adoption.test.ts` 只追加断言,未改既有断言。
## 缺口
- 真 Docker 未跑(替身证据);真机与真实模型输出待部署 staging 后按 `docs/testing/rectification-chart-tier-caveats-20261001.md` 走。
- 写作模型报告路径(`PERSONAL_REPORT_WRITER_ENABLED = false`)未接 `demoteThemesMissingRequiredCharts`;该路径生产关闭,开启前需补。
- 只给图盘 / 数值位置表加提示,未给依赖 D9/D10 的主题段落(报告正文为引擎输出,无稳定的主题→分盘映射);若要按主题降级需引擎侧配合,另立单。
- 已生成的旧报告不回改(任务书 D3)。
+1 -1
View File
@@ -261,7 +261,7 @@
| `TASK-rectification-varga-resolution-20260930.md` | — | **「盘型口径」实现单**:交付改为「每张目标盘的上升 + 可信度档位」(≤±10:≥0.6 较可信 / 0.5–0.6 倾向 / <0.5 分不开;≤±30 只有较可信或分不开;>±30 只给 D1);按问题域取盘(婚恋 D1+D9 / 事业 D1+D10 / 综合三张);段扫描端点 + 「盘型一致不用校正」出口;按段选题仅 ≤±30;不得用占比提前停;采用落库头段交集中点。不改引擎 / 常数 / 冻结文件。红线:回放 ±10/±30 真值段保留 76/76、头段命中不低于研究「按段」列;段级汇总与研究 JSON golden 逐格一致 | 已验收(Claude 10-01,经修复单 BUG-1132;分支 codex/rectification-varga-resolution-fix-20261001) | — |
| `TASK-rectification-varga-resolution-fix-20261001.md` | — | **盘型口径修复单**:F1 开案 RPC 42501(推荐包装改 security invoker,禁补属主授权)、F2 Docker 真库全量 test:db + 旧会话可打开、F3 用 `--posterior production` 重生成正式回放文件(Claude 同命令已得差 0)、F4 研究 PG harness、F5 记录。部署须先迁移 | 已执行并验收(Claude 10-01 直接执行:开案 42501 修复、history/harness 改 V10 写轮次、迁移改名 20261001*、正式回放替换;真库替身全量与 staging 一致;真 Docker 复跑与真机待产品) | 基于 review/rectification-varga-resolution-20260930 ce9d669c |
| `TASK-rectification-message-cleanup-20261001.md` | — | **校正消息清理**:题干两遍(作废旧焦点仍打印题干 + 独立问题块再打印一次)→ 一屏一题干;证据轮正文改为「记下了 N 件事」+ 服务端清单可展开;校正结算后不显示「已完成 N 步」与「1.」泄漏。推翻 BUG-917 作废题留题干、VOICE 逐条复述 | 待领取 | BUG-1135~1137 |
| `TASK-rectification-chart-tier-caveats-20261001.md` | — | **报告与聊天标注判断不了的分盘**:采用后读 `active_birth_provenance`(segment-v1)→ 结果 `segment_summary` 档位,blocked/indistinct 的 D9/D10 在聊天 answer_policy 与一句说明、报告章节顶部提示 + 主题降级;旧资料逐字节不变;不改库、不改 consult/route.ts | 待领取 | BUG-1138~1139 |
| `TASK-rectification-chart-tier-caveats-20261001.md` | `PROGRESS-rectification-chart-tier-caveats-20261001.md` | **报告与聊天标注判断不了的分盘**:采用后读 `active_birth_provenance`(segment-v1)→ 结果 `segment_summary` 档位,blocked/indistinct 的 D9/D10 在聊天 answer_policy 与一句说明、报告章节顶部提示 + 主题降级;旧资料逐字节不变;不改库、不改 consult/route.ts | 已实现待验收(fork 10-01:helper + 聊天 + 报告长报告路径;旧资料聊天 / 报告逐字节不变;npm 失败清单同基线、gzip ±0.00%、快速门 Python 0 失败;真 Docker 与真机待) | BUG-1138~1139 |
| `TASK-rectification-typed-event-scoring-research-20260929.md` | `PROGRESS-rectification-typed-event-research-20260929.md` | **打字经历按选择题规则计分(离线研究,不上线)**:计分通道不对称 + 已入账年份挡题;R0 学业质量题措辞 / 年精度显示成 1 月(冻结文件,需重新冻结) | 已验收(Claude 2026-09-29 合并验收:全量前端 4302/24 与基线同 24 条环境失败、tsc 0、lint 0 error、`/` Static、gzip +0.16%、快速门 pytest 1001 passed、两份回放复跑一致),待部署核对 | BUG-1088、1089 |
| `TASK-report-reader-polish-20260929.md` | `PROGRESS-report-reader-polish-20260929.md` | **报告页打磨**:生成入口挪进页面主体(删标题栏按钮)、详情页到底部按钮(懒渲染一次到底)、导出按钮带文字、目录一级/二级分层、去掉「字段」与 RL/NL 缩写表头、状态列同义重复去重、报告表格淡底色、分块导出显示真实文件大小 | Claude 直接执行并自验(tsc 0、lint 0 error、全量 fail 与基线同 24 条、`/` Static、gzip +7 B、快速门 Python 1000 passed),已部署 staging `d7772011`,真机欠 | BUG-1092~1094 |
| `TASK-report-english-edition-20260929.md` | `PROGRESS-report-english-edition-20260929.md` | **报告中英两版**:同一次引擎计算渲染 zh/en 两遍(不用模型翻译),瑜伽库 477 条补英文、模板与前端表头英文化;中文逐字节不变、英文零汉字、两版数字序列一致;阅读页 `?lang=en` 切换,导出当前语言 + 「问 AI 建议导出英文版」提示;旧报告不补英文 | Claude 直接执行(含两个 fork 子代理)并自验(tsc 0、lint 0 error、全量 fail 与基线同 24 条、`/` Static、gzip +0.06%、Python 定向全绿),已部署 staging `d7772011`,真机欠 | — |