Files
Jyotisha/docs/tasks/PROGRESS-consult-affliction-reading-20261001.md
T

16 KiB
Raw Blame History

PROGRESS · 普通对话「先看受冲、再看旺弱」读法,补齐各领域清单,健康改口径(2026-10-01,三单之二)

  • 任务书:docs/tasks/TASK-consult-affliction-reading-20261001.md(origin/staging 9b937c4a)
  • 执行:Claude fork 子代理(直接执行模式,产品授权);未推送
  • 分支 / worktree:codex/consult-affliction-reading-20261001 / .worktrees/consult-affliction-reading-20261001
  • 基线:第一单分支 codex/consult-card-affliction-data-20261001 4c888902(已验收,尚未上 staging),合入 origin/staging 78823e94(只多一个任务书文档提交,无冲突)→ 合并提交 509c88c4。全部门禁的基线数字都在 509c88c4 的独立检出上实测。
  • BUG 编号:开工核对最大 BUG-1159(第一单用到 1159);本单用 1160~1163,1164~1166 未用。
  • 代码提交:40179650;文档另一提交。

环境

  • Node 22.14(/exec-daemon/node);frontend/node_modules 用 cp -al 硬链接自第一单 worktree(真目录,已 gitignore,未提交)。
  • 无 Docker:24 条数据库 / 部署套件失败,与基线逐条同名。
  • 无模型凭据:本单不跑模型,读法效果由第三单名人回测验收。
  • 未改 Python、skills/**、数据库结构、jyotish_api_server.py。

交付门

项 基线 509c88c4 本分支
tsc --noEmit 0 错 0 错
npm run lint 0 error / 126 warning 0 error / 126 warning
npm test(Node 22) 4,878(pass 4,813 / fail 24 / skip 41) 4,884(pass 4,819 / fail 24 / skip 41)
失败名单 24 条,数据库 / 部署类 与基线逐条同名(diff 无差)
测试名单 — 新增 9、改名 3(下表),无删除
next build / ○ Static / ○ Static
首屏 gzip 555,580 B(index.html 引用 26 个脚本 gzip-9 求和;与第一单的 29 个口径不同,基线同法实测) 555,582 B(+2 B,+0.0004%)

改名的 3 条测试(断言改动见下):「a route the skill declares no checklist for is reported…」→「…gets this product's own list, never another route's」;「health uses the skill's health-timing-strict checklist」→「health uses the consultation's Chinese health list in place of health-timing-strict」;「methodology names no strict checklist for parents or children…」→「methodology gives parents and children their own consultation lists after the shared reading」。

实现

任务 落点
T1(BUG-1160) consultation-condensed-checklist.ts 新增 CONDENSED_SHARED_READING_TITLE「通用读法 · 先看受冲」、CONDENSED_SHARED_READING_LINES(任务书六条 + 第 7 条「瑜伽只认 yogas.hits:hits 里的才是这张盘成立的格局;只在 names 里、没进 hits 的是待检规则,不得说成本人的格局。」)、sharedConsultationReading();consultationMethodologyForDomains 在 sections 最前推一次(多领域同轮也只一次),其后才是 Shared mandatory baseline
T2(BUG-1161) CONSULTATION_CONDENSED_CHECKLISTS 加 parents、children、education、migration、family、annual、general、health 八份(任务书定稿文本);domainMethodology 填本地名 consult-<domain>(注释写明来源是本任务书、不是路由);这八份的 source 为 CONSULT_BRIEF_CHECKLIST_SOURCE。健康在普通对话里不再发英文 health-timing-strict(报告面不变);时运保留英文路由
T3(BUG-1162) 事业、婚姻、财富各加一行(行数 6 / 8 / 6)
T4(BUG-1163) consultation-domain-registry.ts health:label: "健康",aliases 加 身心压力,prompt 改为「我的身体底子怎样,哪些方面要多留意?」,claimBoundary、confidenceCap: "low" 不变;guided-jyotish-topics.ts 无出生分钟问法改为「请从非医疗诊断的角度,帮我看看我的身体底子怎样,哪些方面要多留意。」;git grep "身心压力" frontend/src 只剩 alias 一处。frontend/docs/VOICE.md 领域名改「健康」并加健康口径一条。无视觉变化(只改文字标签与默认问法),frontend/DESIGN.md 不需改
提示词 frontend/src/mastra/index.ts 方法说明句:讲明第一段「通用读法 · 先看受冲」是全领域共用、先于领域清单;列出哪些领域是本产品中文清单。写作形状、product-voice.ts 未动(第三单)
测试 新文件 frontend/tests/consult-affliction-reading-20261001.test.ts(6 条):T1 位置与次数、阻塞项钉住、T2 每领域 sections 标题与来源、T3、硬红线 3(清单里每个小写字段名都必须是三张 golden 盘某张卡上的真实键)、T4

scripts/research/ 里两个测量脚本的健康问题文本仍是旧问法,只是测量用的问题字符串,不在 frontend/src,未改。

字段名改写(硬红线 3:意思不变,只改到卡上真实位置)

位置 任务书原文 落地文本 原因
T1 第 2 条 ① 同宫(conjunct_with) 同宫(星行 conjunct_with、宫行 occupants) conjunct_with 只在行星行上;领域段宫位行用 occupants 列同宫星
T1 第 2 条 ① 被土星、火星照(aspected_by) 原样(aspected_by) 行星行与领域段宫位行都有
T1 第 2 条 ③ 本上升的功能凶星 本上升的功能凶星(functional_malefics,父母行 functional) 卡上 base.natal.functional_benefic_malefic.functional_malefics;父母卡 lord_rows / significator_rows 每行带 functional
T1 第 2 条 ④ 落陷或燃烧(combust) 落陷(status)或燃烧(combust) 落陷在行星行 status(如「落陷(Debilitated)」);combust 只在 true 时出现
T1 第 7 条(新增) — 瑜伽只认 yogas.hits… 第一单 BUG-1159:names 是领域包的规则候选,只有 hits 成立
parents 第 1 条 D12 同号宫及其宫主 D12 同号宫及其宫主(roles.*.d12_house) D12 同号宫与宫主在 roles.mother/father.d12_house(house/sign/occupants/lord/lord_sign)
parents 第 1 条 roles.father/mother 的 lord_rows、significator_rows 原样 字段存在
education 第 3 条 卡上 d9 段和本命 status 原样 base.natal.d9、行星行 status 存在
annual 第 2 条 saturn_from_moon_house 原样 在年运领域段 slow_transits.saturn_from_moon_house

清单里没写字段名、但卡上本领域段没选中的宫(如迁居的 9 宫、家庭的 2、3 宫、婚姻 UL 的第 2 宫),模型可从 base.natal.houses 星座与行星行推出;未为此改卡。PiK 卡上不出(父亲没有 karaka 行),清单原文「卡上有才看」已覆盖。

改动的既有断言(原值 / 新值 / 原因)

文件 · 测试 原值 新值 原因
consultation-methodology.test.ts「the route's own strict checklist…」 去掉 baseline 后领域段 = 1 去掉 baseline 与通用读法后领域段 = 1 T1 通用读法不是领域清单
同文件 education 测试 domains_without_strict_checklist = ["education"] [],且学业段来源是本任务书 决策 D6 推翻「报缺不替代」(普通对话)
同文件 health 测试 标题含 health-timing-strict 不含;有 consult-health 段、来源本任务书、含「体质底子」 决策 D4/D5
consultation-domain-parents-children-20260927.test.ts parents / children 报缺;sections[0] = Shared mandatory baseline 均为 [];sections[0] = 通用读法,baseline 在 sections[1](D7/D12 文字断言保留) T1 + D6
consult-condensed-checklist-20260927.test.ts「each condensed list is 5–8 lines」 全部清单 5–8 行;只有三份 三份仍 5–8 行;共 11 份、每份 2–8 行 T2 定稿文本行数 2–6,不得凑行
同文件「other routes still quote the live skill…」 health 段来源是 strict-workflow-router.md 无 health-timing-strict 段;consult-health 段来源是本任务书 D4/D5
consultation-domain-registry.test.ts 无出生分钟问法 「…近期的身心压力和调整重点。」 「…我的身体底子怎样,哪些方面要多留意。」 D4

三个 12,000 字符断言(consult-evidence-card-20260927、consult-evidence-card-v2-20260927、consult-condensed-checklist-20260927)一条未改。

字符预算与阻塞项(BLOCKED,待产品决定)

两条断言的口径(开工先核实):

  • consult-evidence-card-20260927「model-visible size…」:withoutMethod(契约 + 卡,去掉 methodology)≤ 12,000 对全部领域;total(整个工具返回,含 methodology)≤ 12,000 只对 methodHeavy 以外的领域(methodHeavy = career / marriage / wealth),≤ 18,000 对全部。
  • consult-condensed-checklist-20260927「size…」:total(含清单)≤ 12,000 对全部 12 个领域(annual / timing 用各自路由 golden)。
  • 所以任务书「12,000 只算契约 + 卡」的假设不成立:清单在内。

通用读法作为一个 section 占 733 字符(JSON 序列化),年运清单 334。全部下发时实测:

盘 / 领域 本单之前 含清单 全部下发 上限
泰勒 / annual 11,918 12,979 12,000
乔布斯 / annual 11,787 12,848 12,000
奥巴马 / annual 11,537 12,598 12,000
泰勒 / timing 11,523 12,257 12,000
奥巴马 / timing 11,496 12,230 12,000
乔布斯 / timing 11,474 12,208 12,000

按交代不改断言、不删清单行、不压缩定稿文本:CONSULT_READING_BUDGET_BLOCKED = {annual, timing}(consultation-methodology.ts,注释写明数字)让只含这两个领域的轮次保持本单之前的方法段(不加通用读法;年运清单已写入但不下发,年运仍列在 domains_without_strict_checklist)。年运或时运与其他领域同轮时,通用读法照常第一段(年运清单仍不发)。测试「T1/T2 budget blocker is pinned」钉住这一缺口,解除时必须有意改它。

产品可选:①把年运 / 时运单领域轮的 12,000 改成与 career / marriage / wealth 同口径(契约 + 卡 ≤ 12,000、总量 ≤ 18,000);②再压卡(年运 slow_transits.key_dates 等)腾出约 1,000 字符;③方法段去掉 further_reading(863 字符)或英文 Shared mandatory baseline(1,007)。决定后删 CONSULT_READING_BUDGET_BLOCKED 的对应项并改钉住测试。

本分支各领域最大值(三张 golden 盘取最大;annual / timing 为阻塞后的实际下发):

领域 契约+卡 含清单 盘
career 7,233 10,653 乔布斯
marriage 8,064 11,608 泰勒
wealth 7,466 10,824 泰勒
health 7,410 10,564 乔布斯
education 6,527 9,604 泰勒
migration 6,369 9,366 泰勒
family 6,469 9,452 泰勒
parents 7,398 10,687 奥巴马
children 6,362 9,462 泰勒
annual 9,882 11,918 泰勒
timing 8,604 11,523 泰勒
general 7,859 10,877 乔布斯

健康卡比第一单少 2 字符(标签「身心压力」→「健康」);健康方法段从英文路由换成中文清单,含清单总量反而下降(泰勒 11,120 → 10,485)。

产品决定(2026-10-02):年运 / 时运字数口径,阻塞解除

产品选上节方案 ①:年运、时运单领域轮与事业 / 婚姻 / 财富同口径,契约 + 卡 ≤ 12,000,含清单 ≤ 18,000。在第三单分支 codex/consult-no-presupposition-backtest-20261001 单独一个提交落地:

  • 删 CONSULT_READING_BUDGET_BLOCKED:每轮第一段都是通用读法;年运单领域轮下发本产品年运清单(domains_without_strict_checklist 为空),时运仍是英文路由。
  • 断言改动(原值 / 新值 / 原因):
文件 · 测试 原值 新值 原因
consult-evidence-card-20260927「model-visible size…」 methodHeavy = career / marriage / wealth 加 annual、timing 产品 2026-10-02 字数口径决定
consult-condensed-checklist-20260927「size…」 全部 12 领域 total ≤ 12,000 年运、时运:契约 + 卡 ≤ 12,000、total ≤ 18,000;其余领域不变 同上
consult-affliction-reading-20261001「T1/T2 budget blocker is pinned」 年运只有 baseline 段、报缺;时运无通用读法 改为「annual and timing single-domain turns get the shared reading, and annual its list」 同上
同文件 T1、T2 跳过年运、时运;annual 期望标题 "" 全部 12 领域;annual 期望「年运 · consult-annual · 普通对话精简清单」 同上
  • 实测(三张 golden 盘):年运 契约 + 卡 9,501~9,882、总量 12,598~12,979;时运 8,555~8,604、12,208~12,257,都在新口径内。
  • BUG-1160、BUG-1161 状态改 resolved(文本层),BLOCKED.md 对应条目划掉。

产品决定(2026-10-02,第二次):受冲读法改为「迹象 + 范围」

第三单名人回测第一轮对照组误报 1 → 15;Claude(PM)按卡片确定性计数核对,在场与缺席的父亲受冲信号数相同。产品改口径,推翻本单以下定稿文本中冲突的部分,实现在第三单分支提交 066558a6:

位置 原定稿 新文本要点
通用读法第 3 条(T1) 两个及以上受冲:第一句先写这一面,用「可能」 引用 AFFLICTION_RANGE_RULE:压力或距离的迹象 + 依据 + 现实范围;不断定传记事实;不写「有分量」「站得住」「不是缺位」「底子不差」「关系稳」「能走下去」;段末请用户说一句,全篇最多一处
父母第 2 行(T2) 第一句写「爸爸(妈妈)可能不常在你身边 / 很早就有距离」 按通用读法写范围;盘分不出父母在不在身边,不替用户断定
婚姻受冲行(T3) 「感情可能不止一段 / 可能有断续」 「感情这条线上有波折的迹象」+ 范围,不断定有几段
健康第 1 行(T2) 命主兼 6、8 宫主……底子偏弱 受冲两个及以上写「身体这条线有压力的迹象」+ 范围,不写「底子不差」,不诊断
事业第 3 行 ①接触(消息、面试、初步接洽)②结构性机会(合同、正式职位、长期项目) ①机会出现(消息、邀约、初步接洽)②成形(合同、合作、长期项目)③公开落地(发布、到账、被看见、名声);另加首行「先讲这张盘一生的事业形态……受冲只说阻力和代价,不改写事业形态」(事业 7 行)

断言改动(三栏也写在测试注释里):consult-affliction-reading-20261001 父母断言(原 /不得写成「有分量」「站得住」/ → 新「盘分不出父母在不在身边,不替用户断定」且不得再有「可能不常在你身边 / 很早就有距离」)、婚姻断言(原「感情可能不止一段 / 可能有断续」→ 新「感情这条线上有波折的迹象」「不断定有几段」);consult-condensed-checklist-20260927 事业必含词(原「结构性机会」→ 新「机会出现」「成形」「事业形态」,并断言事业清单无「面试 / 职位 / 简历」)。字数断言全部原样通过。

未做 / 交给第三单

  • 写作形状去「对象在场」预设、product-voice.ts 逆行示例(排查 D 类源头)——第三单。
  • 名人回测(门槛「两个及以上受冲信号」的误报校验)——第三单。
  • 年运 / 时运单领域轮的通用读法与年运清单——待产品定字符口径(上节)。