docs(consult): records for answer-the-question — BUG-1070~1073, VOICE/DESIGN, changelog, device checklist, progress

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0199rbQDTsUbCVw84wc8BTFe
This commit is contained in:
Jesse_Chen
2026-09-27 23:31:44 +08:00
co-authored by Claude Fable 5.1
parent 9a42333a55
commit 2b435f11d0
8 changed files with 186 additions and 8 deletions
@@ -0,0 +1,76 @@
# PROGRESS · 普通对话回答问的那句话(2026-09-27)
任务书:`TASK-consult-answer-the-question-20260927.md`。执行方:Claude 子代理(产品要求直接执行)。分支 `codex/consult-answer-the-question-20260927`,工作树 `.worktrees/consult-answer-the-question-20260927`,未推送。
## 基线
- `origin/staging` = `2ce3c216`(任务书含首轮原文与 R6 的那一版)。D8 已由产品确认,T6 已做。
- 开工实测(Node 22.14,`npm test`):4192 条 / pass 4096 / fail 66(TAP 行 24 条 `not ok`,均为无 Docker 的 DB / 部署套件)/ skipped 30。失败清单存 scratchpad `baseline-fails.txt`。
- BUG 编号:`BUG_HISTORY.md` 最大 1063,任务书预留至 1069,本单从 1070 起。
## 做了什么
| 任务 | 改动 | 落点 |
| --- | --- | --- |
| T1 口气层 | 反差的 A、B 限定为盘面结构,问人时写宫位与代表星;删「这句我按『……』理解了」改成两种读法才写「我按 A 答」;新增「不揣测」段(六个禁写短语 + 禁替用户 / 当事人陈述动机需求感受);是非题答法;Good / Bad 是非题样例(虚构盘面);合同 Never 段加「写盘把人放在哪,不写人要什么」 | `frontend/src/mastra/product-voice.ts`、`frontend/docs/VOICE.md` |
| T6 首轮只说一遍(D8) | `REPORT_HEADING` 去掉 `question`(申报窗口保留 `WINDOW_OPEN_HEADING`);开场不带行动;正文三标题;依据节只写开场没说过的、表格与正文二选一;行动只在最后一节;首轮 ≤ 900 字。四处同步:`natalSpokenReportContract`、`natalAnswerShapeInstruction()`、`NATAL_REPORT_SKELETON`、`index.ts` 写作句;`route.ts` grounded 兜底两处内联指令合并为一份 `legacyNatalInstruction`;续写提示与 `consultationSpokenHeadingRule("natal")` 同步 | `consultation-thinking-plan.ts`、`product-voice.ts`、`skill-binding.ts`、`index.ts`、`route.ts` |
| T2 追问轮 | `followUpAnswerShapeInstruction()`、`hasPriorAssistantAnswer(history)`、`natalUserTurnShape({ entrypoint, history })`;route 用户轮按它切;grounded 兜底同样切;agent context 与思考计划带 `followUpTurn`。工具仍每轮调用 | `consultation-thinking-plan.ts`、`route.ts`、`consultation-tools.ts` |
| T3 清单是核对项 | `index.ts` 加「The checklist is a list of things to check, not a list of paragraphs to write…」;合同第 2 条加「cite only the fields that support this judgment, and only what the opener did not already say」 | `index.ts`、`product-voice.ts` |
| T4 步骤栏 | 第一节标题 `OPENER_THINKING_TITLE = "先回答你问的这件事"`;首轮步骤「用盘上的反差回答这个问题」,追问轮「直接回答这句话」;该节 heading 与「盘里支持」共用 | `consultation-thinking-plan.ts`、`frontend/DESIGN.md` |
| T5 记录 | BUG-1070~1073(`fixed_pending_acceptance`)、CHANGELOG 一条(Skill 不 bump)、真机清单、本文件、README 索引 | `docs/**`、`CHANGELOG.md` |
### 思考栏节的 heading 选择(任务书允许执行方自选)
开场节保留为思考栏第一节,`heading` 指向第一个正文 H2(「盘里支持这个判断的地方」):第一个正文 H2 出现时开场节与依据节一起收口;追问轮整篇无 H2,四节在结算时收口(`applyThinkingSectionProgress` 的 `settled` 分支已有)。没有删节,`thinkPlanSteps` 的 id 序列不变,改动量最小。
## 测试
新增:`frontend/tests/consult-answer-the-question-20260927.test.ts`(2 条:追问轮真实 Agent + 记录提示词假模型 + 公开盘 golden:写作步提示词含追问形状、工具 1 次 / 模型 2 次、无标题短正文 < 160 字整段放出并扣点一次、思考栏步骤「直接回答这句话」;首轮对照);`consultation-thinking-plan.test.ts` +1(追问指令、`hasPriorAssistantAnswer` 四种历史、`natalUserTurnShape` 三种入口、追问计划);`consultation-voice-contract.test.ts` +1(禁写短语、反差限盘面、是非题答法、样例、行动位置)。测试支撑 `consult-natal-agent-test-support.ts` 加 `instruction` / `followUpTurn` 两个可选项(默认值不变)。
### 改既有断言(原值 / 新值 / 原因,注释也写在测试里)
| 文件 | 原值 | 新值 | 原因 |
| --- | --- | --- | --- |
| `consultation-voice-contract.test.ts` | `match(voice, /## 先回答你的问题/)` | `doesNotMatch` + 三标题顺序、开场无行动、Say each thing once、≤ 900 字、只引支撑字段、行动只在最后一节、合同末句改追问轮 | D8 / BUG-1073 |
| `consultation-voice-contract.test.ts` | `match(voice, /这句我按『……』理解了,不对你纠正我/)` | `doesNotMatch` + 「两种实质不同的读法时才写『我按 A 答』」「单义的问题直接答,不改写它」 | D4 / BUG-1070 |
| `consultation-thinking-plan.test.ts` | 四节 heading `[question, support, timing, action]` | `[support, support, timing, action]`,首节 title「先回答你问的这件事」,不含「先抓住你真正在问的事」 | D5 / D8 |
| `consultation-thinking-plan.test.ts` | window heading = `REPORT_HEADING.question` | `WINDOW_OPEN_HEADING`(字面不变) | 正文标题表删掉 question,申报窗口不在本单范围 |
| `consultation-thinking-plan.test.ts` | 拆分测试四标题、首节切片含「外松内紧」 | 三标题、开场留在 preamble | D8 |
| `consultation-thinking-plan.test.ts` | 写出 `## 先回答你的问题` → 首节 done、第二节 active | 无标题时首节 active;写出 `## 盘里支持` 后前两节 done、时间节 active | 开场与依据节共用 heading |
| `consultation-thinking-plan.test.ts` | 指令含四个标题 | 三个标题 + 开场不写行动、只在这里出现一次、≤ 900 字、不写「先回答你的问题」、反差只写盘上 | D8 |
| `consultation-thinking-plan.test.ts` | 续写夹具 / 续写标题清单用 question | 用 support;续写提示不含「## 先回答你的问题、」 | D8 |
| `consultation-run-timeline.test.ts` | 正文夹具 `## 先回答你的问题`;思考行「先抓住你真正在问的事」;写作行 `write-先回答你的问题` | 口语开场 + `## 盘里支持…`;「先回答你问的这件事」;`write-盘里支持这个判断的地方` | D5 / D8(BUG-1072/1073) |
| `consultation-run-timeline.test.ts` | settled 夹具以 `## 先回答你的问题` 开头 | 口语开场无标题再接「盘里支持」 | D8 |
| `consult-single-pass-answer-20260927.test.ts` | `match(route, /natalAnswerShapeInstruction\(\)/)` | `natalUserTurnShape({ entrypoint: consultEntrypoint, history })`、`followUpTurn` 接线、`doesNotMatch` 旧调用 | D3 / D6(BUG-1071) |
| `consult-single-pass-answer / condensed-checklist / evidence-lookup / gender-card` 四个 ANSWER 夹具 | 含 `## ${REPORT_HEADING.question}` 一节 | 该节删除,开场直接到 `## 盘里支持` | D8 |
| `consult-answer-truncation-20260926.test.ts` | 夹具标题 `REPORT_HEADING.question` | `REPORT_HEADING.support`(只需任意一个标题) | D8 |
| `consultation-agentic-runtime.test.ts` | `sections.some(heading === REPORT_HEADING.question)`;5 处正文夹具标题 question | `sections.some(title === OPENER_THINKING_TITLE)`;夹具改 support | D5 / D8 |
| `consultation-smalltalk.test.ts` | `match(contract, /One natal … question still uses the opener-plus-skeleton/)` | `/The first natal … answer of a session uses the opener-plus-skeleton above/` + 追问轮句 | D3(BUG-1071) |
`frontend/tests/agent-voice-copy-contract.test.ts` 里的 `marriageConsultOpen: ["## 先回答你的问题", …]` 是 Task 0 冻结的「修前快照」数据,不是对现状的断言,未改。`chat-answer-split.ts` 的 `shortenAnswerHeading` 保留「先回答你的问题 → 先回答」给历史消息渲染。Python `tests/` 无按这些文案断言的用例(已 grep)。
## 门禁数字(完工实测,Node 22.14,本工作树)
| 项 | 开工基线 | 完工 | 结论 |
| --- | --- | --- | --- |
| `tsc --noEmit` | — | 0 错 | 通过 |
| `npm run lint` | — | 0 error(127 warning,既有) | 通过 |
| `npm test` 总数 | 4192 | 4196(+4:新文件 2、thinking-plan 1、voice 合同 1) | 通过 |
| `npm test` pass / fail / skipped | 4096 / 66(TAP 顶层 `not ok` 24 条)/ 30 | 4142 / 24 / 30 | 失败名单与基线 24 条逐条一致(`diff` 为空),均为无 Docker 的 DB / 部署套件;退出码 1 即这 24 条 |
| 消失的测试名 | — | 0(只有新增) | 通过 |
| `next build --webpack` | — | 退出 0;`/`、`/chart`、`/ephemeris`、`/people` 均 ○ Static | 通过 |
| 首屏 rootMainFiles gzip(9) | 130,933 B(`PROGRESS-consult-evidence-card-v2` / `single-pass` 口径) | 130,933 B(0.00%) | 通过 |
| `index.html` 引用的 `_next/static` JS gzip(9) | 660,412~661,444 B(36 个,gender 单口径) | 618,938 B(33 个,本单用正则从 `.next/server/app/index.html` 取,文件数不同,口径未必相同) | 供参考;rootMainFiles 为准 |
| `frontend/src/app/(app)/page.tsx` | — | 未改 | 通过 |
## 提交
- `9a42333a` feat(consult):T1/T6/T2/T3/T4 代码与测试(18 个文件,+416/−70)。
- 第二个提交:T5 记录(BUG-1070~1073、CHANGELOG、VOICE、DESIGN、真机清单、本文件、README、任务书 D8 确认)。
## 偏离与说明
- 提交分组:任务书要求按 T1/T6、T2/T3、T4、T5 分四次提交;T2(`followUp`)与 T6(标题表)落在同一批文件(`consultation-thinking-plan.ts`、`route.ts`、同一批测试)的相邻改动里,按 hunk 拆分不可靠,改为两次提交:代码 + 测试一次,记录一次。
- `next build` 默认 Turbopack 对软链的 `node_modules` 报 `Symlink … points out of the filesystem root`(与 `PROGRESS-consult-gender-optional-20260927` 同一现象),改用 `next build --webpack` 量 `/` 状态与首屏 gzip;数字口径与该记录一致(rootMainFiles,gzip level 9)。
- lint 有 127 条既有 warning(0 error),不在本单范围,未动。
- 真实模型输出未验(无凭据):见 `docs/testing/consult-answer-the-question-20260927.md`。
+1 -1
View File
@@ -244,7 +244,7 @@
| `TASK-engine-runtime-hygiene-20260901.md` | `PROGRESS-engine-runtime-hygiene-20260901.md` | Python 引擎运行时治理 | 已验收 | `124d3990`(staging 实机三条待部署窗口) |
| `TASK-billing-pricing-20260830.md` | `PROGRESS-billing-pricing-20260830.md` | 计费闭环与功能级定价 | 已合入 | `aaaa5fb7`~`a499c344` |
| `TASK-cost-accounting-gaps-20260927.md` | — | **成本记账补漏与缓存分价**:七处模型调用不入账(标题 / 摘要 / 校正意图 / 采用旁白 / 校正开场 / 生时引导 / 每日星语);缓存命中按全价算、单价表无缓存列;多事件账本 `metadata.cache` 被覆盖;失败运行无成本记录;测算页不显示 token 分位数;**后台模型表单没有单价输入框,单价只能是 0**。只加「记」不加「扣」,不动售价与会员参数 | 待领取 | BUG-1064~1069 预留;部署后由产品按 `docs/testing/cost-accounting-20260927.md` 采真实成本 |
| `TASK-consult-answer-the-question-20260927.md` | — | **普通对话回答问的那句话**:反差只写盘上、删「按我的理解答」、禁写动机句;追问轮 ≤ 200 字直接回答不重开四标题骨架(服务端按「本会话已有解读」切指令,不用正则);清单是核对项不是段落大纲;步骤栏「先抓住你真正在问的事」改「先回答你问的这件事」 | 待领取(D8 首轮只说一遍待产品确认) | 基线 `24a9a635`;BUG 从 1070 起;原文夹具已由产品补交 |
| `TASK-consult-answer-the-question-20260927.md` | `PROGRESS-consult-answer-the-question-20260927.md` | **普通对话回答问的那句话**:反差只写盘上、删「按我的理解答」、禁写动机句;追问轮 ≤ 200 字直接回答不重开四标题骨架(服务端按「本会话已有解读」切指令,不用正则);清单是核对项不是段落大纲;步骤栏「先抓住你真正在问的事」改「先回答你问的这件事」 | 已实现待验收(Claude 子代理直接执行) | 分支 `codex/consult-answer-the-question-20260927`(未推送);基线 `2ce3c216`;BUG-1070~1073;Skill 不 bump;真机清单 `docs/testing/consult-answer-the-question-20260927.md` |
| `TASK-cend-ui-claude-alignment-20260916.md` | `PROGRESS-cend-ui-r1/r2/r3-20260916.md` | **C 端界面向 claude.ai 产品界面对齐(三轮串行 R1→R2→R3,都动 `globals.css`,不得并行)**:根因是 `frontend/CLAUDE_DESIGN.md` 扒的是 **claude.com 营销官网**,它自己在 Known Gaps 里写明 claude.ai 产品界面不在范围内,而 `DESIGN.md:3` 把它当成了产品界面的实现契约。**R1**:`--font-display` 里 Tiempos Headline / StyreneB **从未加载**(无 `@font-face`、`public/` 无字体、`layout.tsx` 只 vendor 了 Inter),中文标题全站落到 **宋体 / SimSun**,波及 20 处含助手回答的 h2/h3(BUG-737);亮色强调色 `#85432f` 与暗色 `#d78064` 不同源,产品拍板亮色换 **Claude coral `#cc785c`**,**易漏点**是 `globals.css:16` 的 `--color-ring` 硬编码在 `@theme inline` 里不跟随 `:root`,另有第四个 `:root` 亮色块(`:4358`)必须同步(BUG-738);`.composer-footer` 常驻 44px + 顶栏 68px + `--composer-reserve` 148px,每屏固定吃掉 216px,模型选择器移进输入框内部、删掉底栏、顶栏收到 46px 并删「分析对象」副标题。**R2**:空状态是营销落地页(hero 卡 + 两张 132px 入口大卡 + 3 列 156px 主题卡),输入框被压在 **800px 以上**内容之下,重排成「问候 + 居中输入框 + 两枚入口 pill + 一排 chip」。**R3**:侧栏两个 `<details>` 拍平成一条「最近」、星盘的两个入口(侧栏分组 + 账户菜单)收敛到一处、删掉逐条助手头像。**决策记录 D3 推翻 DESIGN.md「报告强调色与应用同源」一句**(报告刻意保留深棕)。原型图 https://claude.ai/code/artifact/da275da6-2954-4f50-99aa-32bb8694d38b(三套画面 + 明暗,页面标题就是建议字体栈的实际渲染)。环境缺口:无登录态无 Chrome,四项真机观感留 `docs/testing/`。BUG 段 737–738 | 待领取 | — |
| `TASK-cend-surfaces-claude-alignment-20260916.md` | `PROGRESS-cend-shell-20260916.md`、`PROGRESS-cend-report-20260916.md`、`PROGRESS-cend-rectification-20260916.md`、`PROGRESS-cend-chart-eph-20260916.md` | **次级页面对齐(上一单的续篇,R4→R5/R6,R7、R8 可并行)**:星盘 `/chart`、星历 `/ephemeris`、报告 `/reports` **各是脱离 app 外壳的独立全屏页**,顶部只有一个「返回对话」链接、侧栏整个消失,且三家各写了一套一模一样的 `*-shell`/`*-topbar`/`*-hero` 骨架——与上一单 E5 同根因(营销站 band 结构被套到产品界面)。**R4** 抽只读导航外壳 `AppNavRail`(只用现成的 `GET /api/sessions` + `GET /api/account`,会话行走 `sessionHref` 跳 `/?c=<uuid>`;**刻意不带**重命名/删除/收藏/归档——那套连着 `Home()` 的乐观更新与回滚,搬过来会撞 useState 增长门禁)。**R5** 星盘五 tab 下划线化 + 参数合表 + 行星表横向滚动;星历日期导航改 `‹ 日期 ›`。**R6** 报告中心卡片网格改行式列表;阅读页加常驻目录。**R7** 生时校正把可信区间从盘面板标题行提成常驻条(窄屏 `.is-compact` 下盘面板是 overlay,现在默认看不到区间),五个 `technique-audit` 折叠块收成两段。**R8** 设置内容区收窄(880px 弹窗里表单铺了 690px)、套餐卡三修饰符收敛成两态。**已解锁**:原挡路的设置单已于 `111b4a84`(BUG-698)合入。**两条不得回退**:BUG-698 的 `@supports (height: 1dvh)` 写法(重复声明回退会被 Lightning CSS 折叠)、BUG-616/617 的报告盘面 grid 实现。默认不占 BUG 号 | **R4–R8 全部已实现并验收合入** | R4:抽出 `AppNavRail`(只读,两个 GET,零写操作)+ `SecondaryShell`,三个次级页并入 app 外壳并删掉各自的 shell/topbar/hero;四个路由渲染标记**完全不变**(`/` `/chart` `/ephemeris` 仍 Static);CSS gzip −0.25%。`/reports/[reportId]` 留给 R6 与目录一起做。两处自身健壮性问题被测试抓到:`usePathname()` 可为 null、`fetch` 可能不存在。差点弄丢 BUG-717 的 eyebrow 文案(已放回)。R8:表单分区收窄到 440px(列表分区不变)、套餐卡三修饰符收敛成互斥的 `is-current` / `is-recommended`,`--highlighted` 删除改为滚动定位;手机端 `order:-1` 改挂 `[data-plan-alias]`(版位不是状态)。测试 3350→3354(净增 4),失败清单与基线逐条一致;`/` 仍 Static;我的干净构建实测 CSS gzip −3 字节。**遗留待产品拍板**:`?plan=` 深链现在完全没有视觉指向,只有滚动位置。R6:报告中心卡片网格改行式列表、阅读页并入外壳并把目录挪到右侧常驻。**任务书 E10 过期**——目录在 `cfcd369d` 就已存在,本轮是挪位置定稿而非从零加。挂外壳带出一个真实打印风险已处理:`.chat-app`/`.chat-panel` 是 `height:100%;overflow:hidden`,裸 `window.print()` 会把九节报告裁成一页,阅读页因此多挂一条只在挂载期生效的 print 样式解锁外壳。「生成中的分节进度」做不了——`REPORT_LIST_COLUMNS` 不返回节数,按 VOICE.md 不许前端编。R7:区间常驻条与盘面折叠收敛。**任务书 E9 也不准确**——对话区顶部早有常驻条 `RectificationTimeline` 且窄屏可见,真正只在盘面标题行的是**代表分钟**;因此没另造第二条,在既有条上补齐代表分钟与已答题数(与盘面同一次 `workingRectificationTime()` 调用)。折叠块实际是 **8 个**不是 5 个。**触发让步顺序第 5 条**:收窄进度未做——服务端无该字段,且 `candidate_range` 会放宽(BUG-572),前端相减会把一次放宽报成收窄,已写进 `BLOCKED.md`。顺带修掉一个**静默失效的旧断言**(`slice(indexOf(A), indexOf(B))` 在 B 改名后变成几乎整份文件,四条 `doesNotMatch` 假通过)|
| — (产品口头拍板,无任务书) | `PROGRESS-chart-glyphs-20260918.md` | **星盘改用行星符号,度数进行星表(非 Bug,无 BUG 号)**:北印星盘(星盘页 / 校正右栏 / 我的报告三处共用 `VedicChartSvg`)宫内不再画「水 19°」「罗逆 29°」这类文本——一宫三颗星就叠三行、字号压到 8。改成九个彩色符号(☉☽☿♀♂♃♄☊☋),每行最多 3 个、逆行改符号下同色横线、第 1 宫加 `As`、盘下两行图例。颜色只认星不表吉凶,罗计共用中性灰,`--color-planet-*` 九个 token 在 `:root` 与两个深色块各一份;颜色挂 `is-*` 修饰类而非行内 `style`(报告标记合同禁 `style=`)。符号字体是 vendored 的 9 字形 Noto Sans Symbols 子集(OFL,1.5 KB),`--font-planet-glyphs`,♀♂ 带 U+FE0E 防 iOS 画成表情。星盘页行星表四列扩到八列(行星 / 黄道经度 / 速度 / 宫位 / 星宿 / 宿主 / pada / 状态),度数精确到分,首行是上升(`vedic.ascendant` 新字段)。数据来源:`toNorthIndianChart()` 加结构化 `occupantGlyphs`;校正与报告两条路线的模型只有引擎/golden 显示文本,按首字解析并有测试锁住。**星宿未译中文**——仓库无对照表,印度 27 宿与中国二十八宿不同源,不自造 | 已实现,待验收 | `codex/chart-glyphs-20260918`:tsc 0 / lint 0 error(118 warning 不变)/ npm test 3471→3484 条、36 红与基线 `84b293fb` 逐条相同、0 新红 / `○ /` Static / 首屏 JS gzip 1,450,774→1,455,017(+0.29%),CSS gzip +2.23%(构成见 PROGRESS §2)。真机走查欠(iOS 符号呈现、深浅两主题配色、375px 横滚、打印) |
@@ -58,7 +58,7 @@
- D5 **思考栏第一节标题**改成「先回答你问的这件事」。
- D6 判断「追问轮」用服务端事实(本会话此前是否已有一轮本命解读),不用正则识别用户意图(沿用 BUG-976/977 的口径);是非题 / 换领域由模型按提示词判断。
- D7 排盘工具仍每轮调用(计算是请求级的,BUG-1053 后答案由看过工具结果的那一步写),本单只改答案形状,不改工具调用与结算。
- D8 **首轮解读只说一遍(Claude 建议,待产品确认后执行方才做 T6;未确认则 T6 不做,其余照做)**:口语开场保留反差、谁推谁修、扮演哪个象,**不再带三条行动**;删掉 `## 先回答你的问题` 这一节(开场就是回答);`## 盘里支持这个判断的地方` 只写开场没说过的依据,表格与正文二选一,不得把开场的判断再列一遍;三条行动只出现在最后一节 `## 这周可以做的一件事`。首轮全文目标 ≤ 900 字。这条修改 09-17 口气定稿的骨架顺序,但保留其口语开场形状;`REPORT_HEADING.question` 相关的思考栏节、续写提示、测试一并调整。
- D8 **首轮解读只说一遍(产品 2026-09-27 晚已确认,T6 必做;产品同时要求 Claude 直接执行本单)**:口语开场保留反差、谁推谁修、扮演哪个象,**不再带三条行动**;删掉 `## 先回答你的问题` 这一节(开场就是回答);`## 盘里支持这个判断的地方` 只写开场没说过的依据,表格与正文二选一,不得把开场的判断再列一遍;三条行动只出现在最后一节 `## 这周可以做的一件事`。首轮全文目标 ≤ 900 字。这条修改 09-17 口气定稿的骨架顺序,但保留其口语开场形状;`REPORT_HEADING.question` 相关的思考栏节、续写提示、测试一并调整。
## 硬红线
@@ -109,7 +109,7 @@
**验收**:timeline 测试通过;组件快照若有变化写三栏。
### T6 首轮只说一遍(R6、D8;产品确认后才做)
### T6 首轮只说一遍(R6、D8;产品已确认)
- `natalSpokenReportContract`、`natalAnswerShapeInstruction()`、`skill-binding.ts` 的 `NATAL_REPORT_SKELETON`、`index.ts` 里「Write in Simplified Chinese: a heading-free spoken opener first (… → 最多三条短行动 …)」四处同步:开场不带行动;骨架三个标题 `## 盘里支持这个判断的地方`、`## 时间怎么看`、`## 这周可以做的一件事`;依据节只写开场没说过的,表格或正文二选一。
- `consultation-thinking-plan.ts`:`REPORT_HEADING.question` 与 `natalConsultationThinkingPlan` 第一节按 D5 改名后保留为思考栏节,但不再对应正文标题(或删除该节,执行方按快照测试改动量选,写进 PROGRESS);`consultationContinuePrompt` 的标题清单同步。
@@ -122,7 +122,7 @@
- BUG-1070 普通对话把是非题改写成「你是否需要」并解释提问动机(R1、R2)。
- BUG-1071 追问轮重开 ≤ 400 字开场 + 四标题骨架,一句是非题得到整份领域解读(R4、R5)。
- BUG-1072 步骤栏显示「先抓住你真正在问的事」(R3)。
- BUG-1073 首轮解读同一判断写三遍、三条行动给两遍(R6);产品未确认 D8 时记为 `investigating`,不修。
- BUG-1073 首轮解读同一判断写三遍、三条行动给两遍(R6)。
- 三条都关联 `84b293fb`(口气定稿)与 BUG-1053(答案由看过工具结果的步写);修复版本写本单 commit;状态在 Claude 验收前写 `fixed_pending_acceptance`,不写 `resolved`。
- `CHANGELOG.md` 一条:普通对话追问轮直接回答、不再揣测动机;Skill 不 bump。
- `docs/tasks/PROGRESS-consult-answer-the-question-20260927.md`:基线、测试数字(开工 / 完工)、三栏表、偏离。