Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
21 KiB
21 KiB
PROGRESS:Rath 大运进全部领域卡 + 年运强度层改 Tajika 五分法(第四批)— 2026-10-03
- 任务书:
docs/tasks/TASK-astrologer-rulings-batch4-20261003.md。执行方:Claude 子代理(产品负责人要求由子代理执行)。 - 分支
codex/astrologer-rulings-batch4-20261003,工作树.worktrees/astrologer-rulings-batch4-20261003,基线origin/staging=8ca06c4f(已含TASK-annual-return-frame-20261003的01929bae,BUG-1220)。未推送。 - BUG 编号:开工时最大号 BUG-1220;本单 BUG-1221、BUG-1222。
scripts/solar_return.py未改(与 annual-return-frame 那张单无冲突文件)。
结论
| 任务 | 结果 |
|---|---|
| T1 Rath 当前大运进全部领域卡 | 完成(BUG-1221)。9 盘 × 12 领域(及年运 / 时运各自路由)252 次取卡全部含 Rath 当前大运;契约 + 卡最大 10,244 ≤ 12,500,含清单最大 13,694 ≤ 18,500;非清单重领域最大 11,913 ≤ 12,500 |
| T2 年运强度层改 Tajika 五分法 | 完成(BUG-1222)。强度层 Panchavargiya 一列与年主选法同一函数、同一输入,测试逐星断言相同;9 盘年主 / 候选分 / Harsha 全不变 |
| T3 记录 | BUG-1221、1222,CHANGELOG,本文件,任务索引,BLOCKED |
| 生时校正 | 冻结身份文件(production_scoring_files 23 个)零改动;v5 77 例改前改后逐项相同;不升打分版本 |
提交与任务对应
| 任务 | 提交 | BUG |
|---|---|---|
| T1 | 11225171 |
BUG-1221 |
| T2 | a6cf8f8f |
BUG-1222 |
| T3 记录 | 本分支最后一个 docs 提交 | — |
环境
| 项 | 实际 |
|---|---|
| Python | 无 .venv,用系统 python3 |
| Node | /exec-daemon/node v22(scratchpad 临时 bin 软链);frontend/node_modules 软链到同 lockfile 的 .worktrees/consult-career-yoga-functional-20261002/frontend/node_modules |
| 磁盘 | 开工 44G 可用 |
| 模型 key | 无 → 名人生平回测未跑(BLOCKED) |
next build |
未跑(node_modules 为软链,Turbopack 拒绝;本单不改页面与路由) |
T1 Rath 当前大运进全部领域卡(BUG-1221)
consultation-evidence-card.ts:删RATH_NARAYANA_CARD_DOMAINS与withRath,baseTiming对所有卡放base.timing.narayana_rath。- 字段按红线 2 收短:
algorithm(引擎短标签「Sanjay Rath 版(并列参考,未进打分与时间轴结论)」,即红线 4 说的「在 label 上说明有两种 Narayana」)、seed_sign、md: {sign, start_age, end_age}。第三批 timing / annual 卡上的md.lord、md.years(= 止 − 起)、seed_level(起运宫第几级)去掉,留在报告;子运不进卡。旧算法narayana及「旧算法」标签不变。所以年运 / 时运卡比第三批短约 40 字。 - 提示词未改(
frontend/src/mastra/**提示词与清单文本零改动;consultation-methodology.ts只改一段注释)。投影白名单无需改(rath、seedsign第三批已在)。 - golden:用真实引擎重采两份咨询 golden(
capture_consult_evidence_card_golden.py、capture_consult_biography_backtest_golden.py,PYTHONHASHSEED=0、缓存 TTL 0),逐字节不变(T1 只改前端,T2 的强度层不在咨询链路上),无需提交。 - 长度测量:scratchpad 脚本用真实引擎采 9 位公开名人(回测 golden 同一批、同一参考日)的 family / annual / timing 三条路由,前 3 位与 golden 逐项相同;对 12 个领域各跑
run-jyotish-consultation(问题文本取「测试问题」与「q」两种,年运 / 时运另用各自路由),每格取最大值。
9 盘 × 12 领域卡长度(改前 → 改后(余量))
含清单 total(上限:事业 / 婚恋 / 财富 / 年运 / 时运 18,500,其余 12,500)
| 名人 | 婚恋 | 事业 | 财富 | 健康 | 父母 | 子女 | 学业 | 迁居 | 家庭 | 综合 | 年运 | 时运 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 乔布斯 | 11,979→12,113(6,387) | 11,786→11,920(6,580) | 11,602→11,736(6,764) | 11,197→11,331(1,169) | 11,032→11,166(1,334) | 9,764→9,898(2,602) | 9,897→10,031(2,469) | 9,670→9,804(2,696) | 9,750→9,884(2,616) | 11,702→11,836(664) | 13,734→13,694(4,806) | 12,649→12,609(5,891) |
| 奥巴马 | 11,578→11,715(6,785) | 11,807→11,944(6,556) | 11,748→11,885(6,615) | 11,106→11,243(1,257) | 11,035→11,172(1,328) | 9,754→9,891(2,609) | 9,876→10,013(2,487) | 9,660→9,797(2,703) | 9,722→9,859(2,641) | 11,776→11,913(587) | 13,250→13,211(5,289) | 12,833→12,794(5,706) |
| 泰勒 | 11,917→12,052(6,448) | 11,743→11,878(6,622) | 11,704→11,839(6,661) | 11,121→11,256(1,244) | 11,020→11,155(1,345) | 9,844→9,979(2,521) | 9,950→10,085(2,415) | 9,712→9,847(2,653) | 9,798→9,933(2,567) | 11,667→11,802(698) | 13,468→13,428(5,072) | 13,570→13,530(4,970) |
| 梦露 | 11,458→11,596(6,904) | 11,569→11,707(6,793) | 11,543→11,681(6,819) | 10,999→11,137(1,363) | 10,897→11,035(1,465) | 9,649→9,787(2,713) | 9,767→9,905(2,595) | 9,574→9,712(2,788) | 9,631→9,769(2,731) | 11,497→11,635(865) | 13,004→12,964(5,536) | 12,402→12,362(6,138) |
| 嘉兰 | 11,579→11,719(6,781) | 11,763→11,903(6,597) | 11,646→11,786(6,714) | 11,168→11,308(1,192) | 11,089→11,229(1,271) | 9,778→9,918(2,582) | 9,886→10,026(2,474) | 9,719→9,859(2,641) | 9,751→9,891(2,609) | 11,722→11,862(638) | 13,311→13,270(5,230) | 13,018→12,977(5,523) |
| 皮雅芙 | 11,667→11,804(6,696) | 11,624→11,761(6,739) | 11,602→11,739(6,761) | 11,062→11,199(1,301) | 10,912→11,049(1,451) | 9,711→9,848(2,652) | 9,821→9,958(2,542) | 9,620→9,757(2,743) | 9,677→9,814(2,686) | 11,575→11,712(788) | 13,623→13,581(4,919) | 12,502→12,460(6,040) |
| 卡罗 | 11,353→11,493(7,007) | 11,259→11,399(7,101) | 11,047→11,187(7,313) | 10,748→10,888(1,612) | 10,461→10,601(1,899) | 9,246→9,386(3,114) | 9,348→9,488(3,012) | 9,126→9,266(3,234) | 9,198→9,338(3,162) | 11,150→11,290(1,210) | 12,483→12,443(6,057) | 13,089→13,049(5,451) |
| 小布什 | 11,827→11,961(6,539) | 11,493→11,627(6,873) | 11,405→11,539(6,961) | 10,971→11,105(1,395) | 10,870→11,004(1,496) | 9,628→9,762(2,738) | 9,734→9,868(2,632) | 9,532→9,666(2,834) | 9,603→9,737(2,763) | 11,414→11,548(952) | 13,317→13,274(5,226) | 12,900→12,857(5,643) |
| 齐达内 | 11,682→11,820(6,680) | 11,727→11,865(6,635) | 11,683→11,821(6,679) | 11,085→11,223(1,277) | 10,959→11,097(1,403) | 9,708→9,846(2,654) | 9,822→9,960(2,540) | 9,621→9,759(2,741) | 9,678→9,816(2,684) | 11,654→11,792(708) | 13,263→13,222(5,278) | 12,835→12,794(5,706) |
改后最大 13,694(乔布斯 年运);改前最大 13,734。
非清单重领域改后最大 11,913(奥巴马 综合),余量 587。
契约 + 卡、不含清单(上限 12,500;只列清单重的 5 个领域)
| 名人 | 婚恋 | 事业 | 财富 | 年运 | 时运 |
|---|---|---|---|---|---|
| 乔布斯 | 8,053→8,187(4,313) | 7,657→7,791(4,709) | 7,891→8,025(4,475) | 10,284→10,244(2,256) | 8,643→8,603(3,897) |
| 奥巴马 | 7,652→7,789(4,711) | 7,678→7,815(4,685) | 8,037→8,174(4,326) | 9,800→9,761(2,739) | 8,827→8,788(3,712) |
| 泰勒 | 7,991→8,126(4,374) | 7,614→7,749(4,751) | 7,993→8,128(4,372) | 10,018→9,978(2,522) | 9,564→9,524(2,976) |
| 梦露 | 7,532→7,670(4,830) | 7,440→7,578(4,922) | 7,832→7,970(4,530) | 9,554→9,514(2,986) | 8,396→8,356(4,144) |
| 嘉兰 | 7,653→7,793(4,707) | 7,634→7,774(4,726) | 7,935→8,075(4,425) | 9,861→9,820(2,680) | 9,012→8,971(3,529) |
| 皮雅芙 | 7,741→7,878(4,622) | 7,495→7,632(4,868) | 7,891→8,028(4,472) | 10,173→10,131(2,369) | 8,496→8,454(4,046) |
| 卡罗 | 7,427→7,567(4,933) | 7,130→7,270(5,230) | 7,336→7,476(5,024) | 9,033→8,993(3,507) | 9,083→9,043(3,457) |
| 小布什 | 7,901→8,035(4,465) | 7,364→7,498(5,002) | 7,694→7,828(4,672) | 9,867→9,824(2,676) | 8,894→8,851(3,649) |
| 齐达内 | 7,756→7,894(4,606) | 7,598→7,736(4,764) | 7,972→8,110(4,390) | 9,813→9,772(2,728) | 8,829→8,788(3,712) |
改后最大 10,244(乔布斯 年运);改前最大 10,284。
- 每格 +134~+140(Rath 短字段);年运 / 时运 −39~−43(第三批的长字段收短)。
- 最紧的是非清单重领域「综合」:奥巴马 11,913,余量 587;其余非清单重领域余量都 ≥ 664。
改动的既有断言(原值 / 新值 / 原因)
| 文件 / 测试 | 原值 | 新值 | 原因 |
|---|---|---|---|
frontend/tests/consult-evidence-card-20260927.test.ts「model-visible size …」 |
契约 + 卡 ≤ 12,000;非清单重领域 total ≤ 12,000;total ≤ 18,000;标题「past 12,000」 | 12,500 / 12,500 / 18,500;标题「past 12,500」 | 产品 2026-10-03:全部领域卡放 Rath 当前大运,预算 12,000 → 12,500、含清单 18,000 → 18,500(修改 BUG-1160/1161) |
frontend/tests/consult-evidence-card-v2-20260927.test.ts「size: contract + card …」 |
契约 + 卡 ≤ 12,000;标题「under 12,000」 | ≤ 12,500;标题「under 12,500」 | 同上 |
frontend/tests/consult-condensed-checklist-20260927.test.ts「size: single-domain turns …」 |
其余领域 total ≤ 12,000;年运 / 时运 契约 + 卡 ≤ 12,000、total ≤ 18,000 | 12,500 / 12,500 / 18,500,标题同步 | 同上。任务书只列了前两个文件,但这一条是同一预算的第三处断言,且只有它真的被打破(乔布斯婚恋 total 12,113 > 12,000,该测试没有把婚恋算作清单重领域) |
frontend/tests/consult-narayana-rath-card-20261003.test.ts「timing and annual cards …」 |
md 含 lord、years,卡上有 seed_level |
narayana_rath 只有 algorithm、seed_sign、md{sign,start_age,end_age},且不含子运 |
红线 2「字段尽量短」 |
| 同文件「other domains leave the Rath MD to the report (12,000-character card budget)」 | 婚恋 / 事业 / 财富 / 健康卡 不带 narayana_rath |
改为「every domain card carries the Rath running MD (12,500-character card budget)」:三张 golden 盘 × 12 领域 都带 | 产品决定 1 |
| 同文件(新增) | — | 「nine public charts: every domain card carries the Rath running MD」:回测 golden 9 位 × 4 条路由 × 12 领域 | T1 验收 |
T2 年运强度层改 Tajika 五分法(BUG-1222)
开工核对:任务书事故实证 2 与代码的出入
- 本仓没有渲染出来的年运强度表。
calc_tajika_strength_layers的结果只出现在solar_return_full_report的tajika_strength(→/api/annual、/api/tajika的report.tajika_strength,solar-return命令行 JSON)与varshaphala的tajika_strength。参考版 / 读者版报告(jyotish_engine年运段、pl9_reader_export)与年运包annual_tajika_pack都不带它;前端没有使用方。pl9_reader_export的tajika_strength_rows没有生产者。 - 改前该层的 Panchavargiya 一列是 blocked(
unified_varga_core_and_golden_oracle_parity_required),不是近似分;庙旺近似的旧实现留在函数return之后,不可达。 - 按任务书意图处理:把这一层(API / 命令行里的「报告」)的 Panchavargiya 改由五分法驱动;没有新增报告段落(任务书没授权加新表)。是否要在参考版报告里渲染这张表,留给产品决定(下方「待产品决定」)。
改动
tajika.calc_tajika_strength_layers:panchavargiya_bala[星]=_calc_native_panchavargiya_bala(与calc_panchadhikari_year_lord同一函数;两边都由solar_return_full_report的同一份planet_lons算)→status: usable、engine: tajika_native_five_fold、label「Tajika 五分力量」/label_en「Tajika five-fold strength」、score(满分 20)、max_score: 20、raw_total(满分 80)、raw_max_score: 80、components(graha_bala / uchcha_bala / hudda_bala / drekkana_bala / navamsha_bala)、component_trace、rule_source;层级panchavargiya_method/panchavargiya_method_en。usable_layers= Harsha + Panchavargiya。年盘缺星时该列 blocked 并写原因,不退回近似分。- 删除函数里不可达的庙旺近似旧实现。
- Harsha Bala 不变(9 盘逐星相同)。
- Harsha + Panchavargiya 合成强度:上游
c7117f92直接相加(满分 35),本仓没有裁定,仍 blocked,原因改为combined_tajika_strength_not_ruled。列入下轮问题。 - 英文:新字段都有
_en;没有改references/*.json;没有新的报告文案,英文词表无需加词;tests/test_report_english_dictionary.py单独跑通过。
仍用庙旺近似分的地方(任务书要求列出)
| 位置 | 用途 | 产品调用方 |
|---|---|---|
tajika._resolve_year_lord_panchavargiya_score,native_scores 未传时 |
上游原行为(native_proxy) |
无(产品调用方都传 native_scores,BUG-1217) |
tajika._calc_panchavargiya_bala_for_planet / _varga_dignity_component |
上面那条路径;test_tajika_five_fold_panchavargiya.py 与本单新测试用它做「被调用即失败」 |
无 |
tajika._dignity_points |
Harsha Bala 自己的尊贵分(不是 Panchavargiya 近似) | Harsha(不变) |
_strength_interpretation / _strength_headline 原只被不可达代码调用,现在没有调用方,未删(不顺手)。
9 位公开名人 2026 年强度层:改前 / 改后(raman 岁差,与第三批同设置)
| 名人 | 年主(改前 = 改后) | 改前 Panchavargiya 列 | 改后 Tajika 五分力量(满分 20)日 / 月 / 火 / 水 / 木 / 金 / 土 | 旧庙旺近似(满分 25,未上表,仅作对照) | 年主候选分 = 表中同星分 |
|---|---|---|---|---|---|
| 乔布斯 | 金星 | 7 星全 blocked | 11.26 / 11.27 / 10.48 / 7.93 / 15.91 / 11.64 / 8.03 | 14.0 / 15.0 / 12.5 / 14.0 / 16.5 / 15.5 / 12.5 | ✓ 4/4 |
| 奥巴马 | 水星 | 7 星全 blocked | 6.58 / 12.08 / 9.64 / 8.91 / 8.78 / 11.2 / 9.22 | 14.0 / 12.0 / 12.0 / 12.5 / 13.0 / 8.5 / 14.0 | ✓ 3/3 |
| 泰勒 | 火星 | 7 星全 blocked | 11.31 / 14.91 / 11.38 / 9.18 / 15.91 / 12.01 / 8.02 | 14.0 / 14.0 / 14.0 / 14.0 / 16.5 / 14.0 / 12.5 | ✓ 4/4 |
| 梦露 | 火星 | 7 星全 blocked | 12.35 / 10.43 / 15.28 / 12.64 / 11.47 / 7.89 / 11.16 | 14.0 / 14.0 / 13.5 / 18.0 / 25.0 / 16.5 / 15.0 | ✓ 4/4 |
| 嘉兰 | 火星 | 7 星全 blocked | 13.68 / 7.89 / 15.72 / 15.18 / 8.7 / 8.54 / 10.83 | 14.0 / 12.5 / 16.0 / 14.0 / 22.5 / 12.5 / 14.0 | ✓ 4/4 |
| 皮雅芙 | 火星 | 7 星全 blocked | 12.15 / 14.84 / 9.53 / 9.23 / 15.75 / 13.11 / 8.47 | 14.0 / 17.5 / 15.0 / 10.5 / 12.5 / 18.0 / 12.5 | ✓ 3/3 |
| 卡罗 | 月亮 | 7 星全 blocked | 11.74 / 14.88 / 9.89 / 13.58 / 13.96 / 11.46 / 12.35 | 15.0 / 13.5 / 12.0 / 12.5 / 20.0 / 12.0 / 14.0 | ✓ 5/5 |
| 小布什 | 月亮 | 7 星全 blocked | 11.75 / 13.58 / 9.9 / 13.59 / 13.96 / 11.47 / 12.35 | 15.0 / 17.0 / 12.0 / 12.5 / 20.0 / 12.0 / 14.0 | ✓ 4/4 |
| 齐达内 | 火星 | 7 星全 blocked | 10.84 / 7.4 / 13.59 / 8.6 / 10.91 / 5.63 / 12.37 | 14.0 / 10.5 / 10.5 / 12.5 / 20.0 / 12.5 / 14.0 | ✓ 4/4 |
- 年主、年主候选分、Harsha Bala:9/9 改前改后逐项相同(T2 不碰选法)。
- Panchavargiya 一列:改前 7 星全 blocked;改后是五分法分数,年主每个候选的分数与表中同一颗星逐项相同(9/9,测试
tests/test_annual_strength_five_fold.py用虚构盘锁住)。 - 「旧庙旺近似」一列只为对照:它是函数里不可达代码会算出的值(满分 25),改前也从未上表;与五分法排序差别很大(如梦露木星 25.0 vs 11.47)。
改动的既有断言(原值 / 新值 / 原因)
| 文件 / 测试 | 原值 | 新值 | 原因 |
|---|---|---|---|
tests/test_tajika.py::TestTajikaStrengthLayers::test_harsha_and_panchavargiya_strength_layers |
'Panchavargiya Bala' in blocked_layers;usable_layers == ['Harsha Bala'];每星 Panchavargiya status == 'blocked' |
blocked_layers == ['combined Tajika strength'];usable_layers == ['Harsha Bala', 'Panchavargiya Bala'];每星 usable,分数 / 原始分 / 五分量等于 _calc_native_panchavargiya_bala,满分 20,中英标签 |
产品 2026-10-03 决定强度表统一用五分法(BUG-1222) |
tests/test_api_server_security.py::test_annual_endpoint_returns_varshaphala_report |
usable_layers == ['Harsha Bala'] |
['Harsha Bala', 'Panchavargiya Bala'],panchavargiya_method == 'Tajika 五分力量' |
同上 |
新增:tests/test_tajika.py 两条(近似函数被调用即失败、缺星 blocked);tests/test_annual_strength_five_fold.py 7 条(3 张虚构盘 × 2025 / 2026 两处分数逐项相同;无近似分字段、满分 20、Harsha 不变)。
测试
| 项 | 结果 |
|---|---|
run_quality_gate.py --profile quick --skip-frontend-runtime(系统 python3,T1、T2 之后) |
Quality gate passed,exit 0:1047 passed、1 skipped |
定向:test_annual_strength_five_fold、test_tajika、test_tajika_five_fold_panchavargiya、test_tajika_panchadhikari_year_lord、test_year_lord_basis_label |
全过,exit 0 |
定向:test_api_server_growth_contract、test_rectification_validation_integrity_gate、test_sealed_holdout_contract_freshness、test_narayana_legacy_label、test_narayana_rath_book_tables、test_narayana_rath_rules、test_tajika_mudda、test_solar_return_frame |
全过 |
tests/test_report_english_dictionary.py(单独跑) |
通过 |
隐私 tests/test_repo_privacy_markers.py |
通过(记录提交后复跑) |
tsc --noEmit |
0 错 |
npm run lint |
0 error(126 warnings,与第三批同数) |
npm test(Node 22) |
开工基线(本工作树改动前 = 8ca06c4f)4931 项 / pass 4866 / fail 24 / cancelled 0 / skipped 41;改后 4932 / 4867 / 24 / 0 / 41(+1 为新增「九盘」测试)。失败名单与基线按测试名逐条相同(24 条 DB / Docker / 部署类)。确认门 rectification-confirmation-gate.test.ts 单独跑 8/8 通过(本单未重新冻结) |
生时校正评测(v5 77 例)
- 命令:
python3 scripts/research/holdout_v5_baseline.py --dataset v5 --out-dir <dir> --json-out <dir>/summary.json,PYTHONHASHSEED=0、JYOTISH_API_CHART_CACHE_TTL_SECONDS=0;改前8ca06c4f、改后a6cf8f8f(T1、T2 之后,代码终版),各在一次性--detach工作树(已删除)。 - 四个输出文件(sweep、cluster_width、v5_all 汇总、合并 summary)去掉耗时与路径字段后 逐项相同(
IDENTICAL×4)。线上区间回放头名 ±10 / ±30 / ±60 = 0.6623 / 0.5584 / 0.4026,覆盖 0.987,中位宽度 13 / 33 / 65,与第三批记录一致。 - 冻结身份
production_scoring_files23 个文件与origin/staging无差异(tajika.py不在清单里);无需按 ERR-110 重新冻结;ALGORITHM_VERSION不变。
名人生平回测
全部领域卡多了 Rath 版当前大运。本机无模型 key,未跑,写入 BLOCKED.md。
待产品 / 下轮问占星师
- (产品)年运强度要不要在报告里显示:现在这一层只在
/api/annual结果里,参考版 / 读者版报告和前端都没有展示。任务书说的「报告年运强度表」在本仓并不存在;本单只改了数据,没有加新表。 - (占星师)Harsha + Panchavargiya 合成强度怎么算:上游直接相加(满分 15 + 20 = 35);本仓没有裁定,仍 blocked。
- (产品)卡片余量:非清单重领域「综合」最紧(奥巴马 11,913,余量 587);再往卡上加字段前需要再定预算。
Claude 验收(2026-10-03)
- 快速门通过;英文对照、隐私、
test_annual_strength_five_fold.py通过;冻结清单文件零改动。 - 前端:
tsc0 错;lint 0 error / 126 warning;npm test4932 项、fail 24,失败名单与第三批逐条相同,确认门测试通过。 - T2 出入核实:
pl9_reader_export.py里虽然声明了tajika_strength_rows「Tajika Strength」表,但全仓没有地方产出这个键,所以报告里从来没显示过年运强度表;改前 Panchavargiya 一列是 blocked,不是近似分。任务书的事故实证(来自第三批进度记录「其他观察」)写错了,执行方按事实处理是对的。是否在报告里展示年运强度,交产品决定。