Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
10 KiB
TASK · 数据卡补「谁照谁、谁和谁同宫、燃烧」,瑜伽按领域分流(2026-10-01,三单之一)
- 基线:
origin/staging2d620fb4 - 分支 / worktree:
codex/consult-card-affliction-data-20261001/.worktrees/consult-card-affliction-data-20261001 - 范围:普通对话的引擎附加层(
scripts/consultation_native_layers.py)+ 数据卡(frontend/src/lib/consultation-evidence-card.ts)+ golden 刷新。提示词、清单、写作形状不在本单(第二、三单)。生时校正面、报告面不动。 - 串行:本单 →
TASK-consult-affliction-reading-20261001(读法与清单,依赖本单的新字段)→TASK-consult-no-presupposition-and-backtest-20261001(写作形状与名人回测)。三单都改consultation-evidence-card.ts或其测试,必须按顺序,后一单以前一单推上 staging 的提交为基线。 - BUG 编号起点:
BUG-1154,本单预留 1154~1159(开工时grep -o "BUG-1[0-9]\{3\}" docs/BUG_HISTORY.md | sort -u | tail -1核对,当前最大 1153;被占用就顺延,并通知后两单顺延)。
1. 事故实证
见 docs/research/consult_affliction_audit_2026_10_01.md。摘要:
- 读者盘(双鱼上升):9 宫主火星合罗睺、太阳是 6 宫主(功能凶星)、D12 的 9 宫有火星。模型写「父亲是有分量的标尺」「站得住,不是缺位」,与读者经历相反。
- 三位公开名人 13 份样稿里,11 份漏读关键信号,6 份读反,5 份与生平冲突(奥巴马父亲缺席、泰勒八次婚姻、泰勒终身重病)。
- 本单负责其中的 A 类与 E1/E2/E3 类根因:模型看不到的数据。
2. 根因(本单部分)
- 卡上没有相位。
baseNatal的PLANET_ROW_KEYS = sign/house/degree_in_sign/nakshatra/retrograde/status;domainSection的宫位只有sign/occupants/lords。引擎在scripts/jyotish_engine.pyStep 5 算了report['modules']['aspects'](scripts/aspects.pycalc_house_aspects),但普通对话工作流响应里没有(goldenfrontend/tests/fixtures/consult-evidence-card-golden.json中搜不到house_aspects/aspects_to)。土星照太阳、火星照 7 宫这类最经典的受冲信号,模型无从得知。 - 卡上没有燃烧。 引擎
jyotish_engine.py按度数写了planet['combust'],投影没带。奥巴马 9 宫主水星距太阳约 10°,模型看不出。 - 领域段只列被选中宫位的星。 宫主或代表星和谁同宫,要模型自己从 base 里对,四份乔布斯答案都没对出「木星与计都同宫」。
- 瑜伽不分领域。
scripts/jyotish_api_server.py普通对话层build_raman_support_observations之后的modules['yogas']是同一份(奥巴马 8 条:Matrunasa、Bahu Puthra、Eka Puthra……),EVIDENCE_CARD_SPECS里 career/wealth/generalyogas: true原样整份放进去;parents/childrenyogas: false。结果母亲、子女类瑜伽出现在财富卡,父母卡、子女卡反而没有;Sasa、落陷取消这类大格局也不在 8 条里。 - 宫位选择缺口。 health
houses: [6, 8]缺命宫与 12 宫(住院);educationhouses: [5, 9]缺 4 宫(正规学业);annual 卡看不到「土星行运压本命月亮」。
3. 决策记录(产品 2026-10-01 授权)
- D1 三单串行、全领域一起修。 产品选定,不只修父母。
- D2 相位按 Parashari 整宫制。 所有行星照第 7 宫;火星另照 4、8;木星另照 5、9;土星另照 3、10。罗睺、计都不给特殊相位(流派分歧大),它们的影响通过同宫体现。这与
scripts/aspects.pySPECIAL_ASPECTS一致,不改引擎规则。 - D3 卡仍然只抄不算。 相位、燃烧、同宫的值必须由引擎给出或由已有字段做「选择」(同宫 = 同一
house的行星集合,属于选择);卡里不得新写判断文字(不写「受冲」「凶」)。是否算受冲由第二单的清单教模型判断。 - D4 父母卡带宫主与代表星的完整行。 产品已同意父母修法 A~D;其中 B(相位)落在本单。
- D5 健康卡加命宫、12 宫,学业卡加 4 宫。 健康改名「健康」属于第二单(D 那边的口径),本单只改卡的取材。
- D6 字符上限不放宽。 单领域「契约 + 卡」≤ 12,000 字符的既有断言(
consult-evidence-card-20260927.test.ts、consult-evidence-card-v2-20260927.test.ts)保持。超了先压缩格式(短数组),不得删已有字段,不得改断言。
4. 硬红线
scripts/jyotish_api_server.py不得增长超过 4 行(只做薄注册,逻辑进consultation_native_layers.py,每层用_guard)。冻结测试tests/test_api_server_growth_contract.py必须过。- golden 必须由真实引擎重新生成(AGENTS §7.4),不得手改 JSON。
- 不改相位、燃烧的引擎规则与容许度;不改功能吉凶分类(见 T5,只核对)。
- 不改提示词、清单、
natalAnswerShapeBody、product-voice.ts(属后两单)。 - 任何既有断言改动写「原值 / 新值 / 原因」三栏。
5. 任务分解
T1 引擎层:普通对话响应带上相位与燃烧(BUG-1154)
在 scripts/consultation_native_layers.py 新增 build_graha_drishti(chart),由 attach_native_consultation_layers 挂到 modules(_guard 包裹,失败写 blocked,不影响其他层):
planets:{行星: {"aspects_houses": [被它照的宫号], "aspected_by": [照到它所在宫的行星]}},含罗睺、计都作为被照对象,不作为施照者(D2)。houses:{"1": {"aspected_by": [...]}, ... "12": {...}}。- 行星燃烧:沿用引擎已有的
combust字段,透传到普通对话的行星行(不重算)。
验收:Python 定向测试覆盖三位 golden 名人:奥巴马土星(1 宫)的 aspects_houses 含 3、7、10;太阳(7 宫)aspected_by 含 Saturn;水星 combust = true。run_quality_gate.py --profile quick 通过。
T2 卡片 base:行星与宫位带相位、同宫、燃烧(BUG-1155)
base.natal.planets[行星]增加aspected_by、conjunct_with(同house的其他行星,选择所得)、combust(只在 true 时出现,省字符)。base.natal.houses[宫号]从字符串改为{sign, aspected_by},或另设base.natal.house_aspects,二选一,以字符预算为准;改结构的话,所有读base.natal.houses的地方同步(domainSection的sign读取)。- 引擎没给相位层时,
meta.gaps记base.aspects,不得补算。
验收:卡片合同测试新增断言:奥巴马卡太阳 aspected_by 含 Saturn、水星 combust: true;读者盘同构的 golden 场景(任一盘中宫主与罗睺同宫)conjunct_with 含 Rahu。12,000 字符断言全部通过。
T3 父母、健康、学业、年运的取材(BUG-1156)
- 父母
roles.mother/father每个条目增加lord_rows与significator_rows:{planet: {house, sign, status, functional, conjunct_with, aspected_by, combust?}}。functional从 base 的功能吉凶列表选择所得(benefic / malefic / neutral)。D12 同号宫再给该宫宫主在 D12 的星座(引擎已有 D12 行,选择所得)。 - health
houses改为[1, 6, 8, 12];educationhouses改为[4, 5, 9]。 - annual 卡带上「土星行运所在星座与本命月亮星座的宫距」:由 T1 在引擎侧给出
saturn_from_moon_house(1~12),卡只抄。
验收:三位名人 × 父母、健康、学业、年运卡快照更新(真实引擎 golden);乔布斯父母卡 father.lord_rows.Venus.conjunct_with 含 Rahu、significator_rows.Sun.functional = malefic;泰勒健康卡含 1 宫、12 宫;乔布斯年运卡 saturn_from_moon_house = 1(土星行运双鱼、本命月亮双鱼)。
T4 瑜伽按领域分流(BUG-1157)
- 给瑜伽条目带上领域标签:先查引擎 / Raman 筛选是否已有类别字段;没有就在
consultation_native_layers.py用名称对照表(固定表,不用正则猜)映射到 parents / children / siblings / wealth / career / general 等,表放 Python 一处,前端只按标签选择。 - 卡片:parents、children 打开
yogas,只收本领域标签;career / wealth / general 只收本领域与 general 标签。 - 查清 Sasa、Neecha Bhanga、Gajakesari 为什么不在 8 条里(Raman 筛选上限?规则引擎没跑?)。只诊断并写进进度记录;若是有意的置信度筛选,不得放宽(AGENTS §8.4),交产品决定。
验收:奥巴马财富卡、综合卡里不再有 Matrunasa / Puthra 类;父母卡含 Matru 类、子女卡含 Puthra 类。诊断结论写入进度记录。
T5 功能吉凶核对(只核不改,BUG-1158 视结论决定是否占用)
泰勒盘(天蝎上升)引擎把火星(1、6 宫主)标 yogakaraka、太阳(10 宫主)标中性,与常见 BPHS 列表不同。查清引擎规则出处(文件、函数、引用的典籍或流派),写进进度记录。不得改分类;若确认是缺陷,登记 BUG-1158 为 investigating,交产品与占星顾问决定。
T6 文档与记录
docs/BUG_HISTORY.md登记 BUG-1154~1157(以及视 T5 结论的 1158),关联 BUG-1133、BUG-1054。CHANGELOG.md一条;Skill 无改动,写明不 bump。docs/tasks/PROGRESS-consult-card-affliction-data-20261001.md、docs/tasks/README.md索引。
6. 让步顺序
T1、T2 不可让步。T3 的年运字段、T4 的大格局诊断可以挂 blocked 先交付,写进 BLOCKED.md。字符预算紧时,先压缩格式,再去掉 combust: false,绝不删已有字段。
7. 开工前置命令
git fetch origin --prune
git worktree add -b codex/consult-card-affliction-data-20261001 .worktrees/consult-card-affliction-data-20261001 origin/staging
cd .worktrees/consult-card-affliction-data-20261001
grep -o "BUG-1[0-9]\{3\}" docs/BUG_HISTORY.md | sort -u | tail -1
python3 scripts/pre_work_check.py --remote-timeout 8 --command-timeout 45 # 涉及引擎层
验收口径:Python 定向 + quick 门;前端 tsc --noEmit 0、npm run lint 0 error、相关测试 fail=0、测试总数不低于基线、next build 后 / 仍 Static。