Files
Jyotisha/docs/tasks/PROGRESS-full-data-parity-2-20261021.md
T
jesse-uxandGrok (agent loop) a757af6b4e 标出研究章和 PyJHora 的已知差别(#92)。
10 张虚构盘逐体系对照。不一致的方法在标题下写明差在哪一类。本命 Tithi 顺行一致,逆行没有公开函数。Windows 上 1970 年以前的日出不再用 fromtimestamp。

自测:合同与研究章测试通过;200 张英文扫描约 1956 秒通过。未跑全量 pytest、快速门和前端。

Co-Authored-By: Grok (agent loop)
2026-10-23 22:29:52 +08:00

11 KiB
Raw Blame History

PROGRESS — 完整数据版补齐(二)(#92)

  • 分支:codex/full-data-parity-2-20261021
  • 开工基线:origin/staging = 85e8adddbc9c14e31c687c91ad8666afe3290e64(#91 已合入)。本地先合并的就是这个 staging,没有 rebase。
  • 工作树:代理循环指定的 G:\Ferti\Jyotisha\.worktrees\agent-loop,没有另建 .worktrees/full-data-parity-2-20261021。
  • 最大 BUG 号仍是 BUG-1426。本单没有新开缺陷编号。

做了什么

完整数据版在原有六章之后加三块,渲染时现算,不写进资料包,不进对话卡,不进校正打分。

  1. 补充推运计算数据:Tithi Ashtottari 本命顺逆、年度三年里每一对 300 到 400 天的回归(角距和时间余额,顺逆,只到子运)、Yoga Vimshottari 本命、目标年内的 Yoga / Nakshatra 回归以及每个回归之后 300 到 400 天里的后继和 360 个太阴月年、七分盘星座主、Buddhi Gati、Kaala、Sudasa 出生周期、Sudasa 已确认起点(只写原因)、Varnada、Karana 三种(目标年里的每一次 Tithi 回归)。
  2. 辅助大运次小运数据:Sthira、Drig、Shoola、Navamsha 的次小运。主运和子运的生产者没有改,次小运加在副本上。Niryaana Shoola 不列子运和次小运。Kalachakra 只加第三层,沿用简化模型,不改已有主运和子运。
  3. 研究型分盘:D81、D108、D144,有 D150 时一并列出。普通分盘数值表里不再印这三盘。

每一节都重复研究口径那一句,因为阅读页按二级标题翻页,章首那句可能会被翻走。

位置用我们自己的星历和真岁差。没有搬视位置、Moshier、真位置开关,也没有搬 PyJHora 运行时对照模块。

T0 盘点

方法 上游 输入 出处或 blocked 我方改动
Tithi Ashtottari 本命顺/逆 tithi_ashtottari.py 出生日月角距,108 年 教程没有写第三层 经度改我方函数;次小运不列
Tithi 年度 customer_timing_supplement.py 的三年配对 目标年起三年,每一对间隔 300–400 天 同上,深度只到 2 同上;不拿「下一次短回归」冒充年
Yoga Vimshottari 本命 yoga_annual_dasha.py 日月之和,120 年,三层 固定年长 经度改我方函数
Yoga / Nakshatra 回归 annual_pravesha.py、pravesha_return_year.py 只要目标年里的回归;后继取之后 300–400 天内的全部,另加 360 太阴月年;三层 研究页 求根和时钟都用我方经度
七分盘星座主 aayu_sripati_periods.py 本命经度 关系表,不是大运 用我方经度
Buddhi Gati buddhi_gati.py 上升与行星 Atri 原文没有规定子运 不列子运和次小运
Kaala kaala_dasha.py 日出日落 笔记没有规定子运 日出日落用星历文件,不用 Moshier
Sudasa 出生 sudasa.py 上升与行星 土星和计都同星座时该主运不列子运 我方经度
Sudasa 已确认起点 同上 需要另有确认过的起点 blocked:出生资料里没有这个起点 只写原因,不上空表
Varnada varnada_dasha.py 两个备选起点分开 JSS 我方经度
Karana 三种 karana_annual_dasha.py 目标年每次 Tithi 回归 材料没有子运 只列主运
四种星座大运次小运 rashi_dasha_explicit_contract.py 的顺行等分 子运星座起顺行,十二等分 接既有星座大运出处表 只加在副本上
Niryaana Shoola 子运 niryaana_shoola_dasha.py 主运 blocked:上游写明子运规则没有单独出处;冻结引擎的行不能当书页 不列
Kalachakra 第三层 #91 已有的简化模型 现有主运 产品定:只加第三层,不改主运和子运 按比例从现有主运分出
D81 / D108 / D144 / D150 我方分盘函数 本命经度 研究口径 只在研究章渲染

体量(Windows,虚构盘 0 / 1 / 9)

中英两份一起算,含排盘。都低于前端 180 秒。

盘 排盘(秒) 英文(秒) 中文(秒) 中英合计(秒) 连排盘(秒) 中文字符 英文字符 中文字节 英文字节
0 42.4 43.6 17.3 60.9 103.3 1,917,563 2,491,902 2,695,716 2,493,514
1 20.7 12.6 20.5 33.0 53.7 1,919,551 2,490,711 2,691,687 2,492,316
9 18.7 15.7 16.7 32.3 51.0 2,060,310 2,639,451 2,858,271 2,641,071

0 号盘只算研究章、不算原来的长文:中文 26.4 秒、1,015,374 字符;英文接着算 0.1 秒(同一份计算复用)、1,055,738 字符。目标年起三年 Tithi 回归 3 次,目标年 Yoga 1 次,Nakshatra 1 次。

0 号盘四种星座大运的次小运都是 1728 行(主运 12、子运 144,每个子运再等分成 12)。生产者里的主运和子运没有 pratyantar 字段。

没有删行,没有抽样,也没有把 1e-6 度的回归容差放宽。时钟在一天的格子里先按斜率走几步,残差仍要求不超过 1e-6 度;和原先 45 次二分相比,时刻差不超过百万分之一天。这一条有测试。

章节怎么拆

阅读页按 ## 翻页。三章各自是一节,每个方法、每一对回归、每一种 Karana、每一种星座大运、Niryaana、Kalachakra、研究分盘也各是一节。每节都重复研究口径那一句。

参考时刻取报告月历第一行的当月 1 日正午。资料包没有另存「今天」。天文用儒略日,显示的时刻用历书换算,两者差一个闰秒量级,表上仍写到秒。

岁差按每个时刻重算,不拿一个岁差值套一整年。

让步和偏离

  • T5(修复单补上):这一轮先把 origin/staging 的 bc6795e2a353f6a10fa65ab79766aeb578714b0b 合并进来,没有 rebase。对照文件 docs/tasks/research-timing-pyjhora-20261023.json,状态 compared,10 张固定种子虚构盘,PyJHora 4.8.7。15 个体系里:一致 1,无此方法 1,不一致 13。回归时刻差在 1 分钟内写进 within_tolerance,不算不一致;这 10 张本命 Tithi 顺行的回归差都在 0.003 分钟以内。两边岁差和星历文件不同,所以留这一分钟。
  • 没有让出盘数(仍是 10,不是下限 5),没有让出 Karana 的 360 太阴月年,也没有让出 Tithi 的时间余额。
  • 已知差别写在该方法标题下。中文是「与 PyJHora 不一致:差在 {类别}」,英文是「Differs from PyJHora: {category}」。句子加在按行清理之后,清理器本身没改,所以英文版能留下这句。整份英文不会因为这一句被丢掉。
  • 顺序整段相反才标「方向」。这一轮没有「方向」,也没有超出 1 分钟的「回归时刻」。开头主星相同、只是同一圈又多走了几步的,改去比年数,不再写成起点不同。
  • Karana 三种都对 PyJHora 里那一个公开函数,比的是出生当下那一圈,不是目标年里的回归。Varnada 的两个起点合成一条,标题按前缀对上。Sudasa 已确认起点没有书面锚点,不参与对照,也不标不一致。Niryaana Shoola 按 10 月 23 日的决定仍不列子运。年度 Tithi、Yoga、Nakshatra 不在这次对照名单里。
  • 本命 Tithi 逆行:PyJHora 的公开函数没有大运逆行这一项,标成「无此方法」,不算不一致。
体系 结果 差在
本命 Tithi Ashtottari 顺行 一致 回归都在 1 分钟内
本命 Tithi Ashtottari 逆行 无此方法 公开函数没有这一项
本命 Yoga Vimshottari 不一致 子运划分
Buddhi Gati 不一致 起点
Kaala 不一致 年数
Sudasa 出生周期 不一致 年数
Varnada 不一致 起点
Julene 主星 / PVR 象限主星 / PVR 360 太阴月年 不一致 年数
Sthira / Drig / Shoola / Navamsha 不一致 起点
Kalachakra 不一致 起点
  • 表头用「层级 | 主星/名称 | 起始 | 结束」,与任务书用词一致。
  • Kalachakra 的中文是:「次小运按简化模型,从现有主运按比例分出。主运和子运与原来的表相同。」

自测

检查 命令 结果
研究章、口径、隔离、校正 golden、时钟 pytest tests/test_research_timing.py -q 8 通过
星座大运生产者仍无次小运字段 pytest tests/test_rashi_dashas_native.py -q 通过
对话域读取 pytest tests/test_full_data_domain_reader.py -q 通过
卫生预算 pytest tests/test_python_hygiene_budget.py -q 通过
真恒星框架 pytest tests/test_sidereal_nutation_frame.py -q 通过
运行时不扫进 jhora pytest tests/test_runtime_jhora_import_scan.py -q 通过
API 增长合同 pytest tests/test_api_server_growth_contract.py -q 通过
六章与研究章标题 pytest tests/test_full_data_parity_chapters.py -q 先有 1 个标题顺序失败;断言改为「六章之后才是研究章」后,该测试通过。同一次里其余测试已通过
英文版 pytest tests/test_report_english_edition.py -q 通过
前端 tsc / lint 未跑 没有改前端
test:db 未跑 没有改表
Python 全量、快速门 未跑 按分工留给验收

标题顺序那条断言:原值是「拿掉六章后只少这六章」;新值是「基准同时拿掉六章和研究章,完整报告在六章之后还有研究章」;原因是研究章也是后加的二级标题。

D81 出现位置那条是新断言,不是改旧数字:研究章之前的正文不得再出现 D81、D108、D144。

修复单自测(Windows)

检查 命令 结果
研究章、对照标注、校正 golden pytest tests/test_research_timing.py tests/test_sidereal_nutation_frame.py tests/test_rashi_dashas_native.py tests/test_full_data_domain_reader.py tests/test_report_english_edition.py tests/test_python_hygiene_budget.py tests/test_api_server_growth_contract.py tests/test_runtime_jhora_import_scan.py tests/test_report_reader_main.py tests/test_repo_privacy_markers.py -q 163 通过,失败 0,约 1013 秒
1970 年以前的日出 pytest tests/test_research_timing.py::test_solar_events_before_1970_stay_available_on_windows -q 通过。Windows 上不再用 fromtimestamp,见 BUG-1429
200 张虚构盘英文 pytest tests/test_report_english_sweep.py::test_two_hundred_fictional_charts_have_clean_english -q 通过,约 1956 秒。修复前,早于 1970 年的盘会在 Windows 上中断整份报告(BUG-1429)
前端 tsc / lint 未跑 没有改前端
test:db 未跑 没有改表
Python 全量、快速门 未跑 留给验收

阅读页泄漏断言:原值是整篇出现 PyJHora 都算泄漏;新值是以「与 PyJHora 不一致:」或「Differs from PyJHora:」开头的行先拿掉,其余照旧;原因是修复单要求这两句留在标题下。英文研究章同理:原值是英文不得出现 PyJHora;新值是只允许出现在「Differs from PyJHora:」开头的行。