10 张虚构盘逐体系对照。不一致的方法在标题下写明差在哪一类。本命 Tithi 顺行一致,逆行没有公开函数。Windows 上 1970 年以前的日出不再用 fromtimestamp。 自测:合同与研究章测试通过;200 张英文扫描约 1956 秒通过。未跑全量 pytest、快速门和前端。 Co-Authored-By: Grok (agent loop)
11 KiB
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。本单没有新开缺陷编号。
做了什么
完整数据版在原有六章之后加三块,渲染时现算,不写进资料包,不进对话卡,不进校正打分。
- 补充推运计算数据:Tithi Ashtottari 本命顺逆、年度三年里每一对 300 到 400 天的回归(角距和时间余额,顺逆,只到子运)、Yoga Vimshottari 本命、目标年内的 Yoga / Nakshatra 回归以及每个回归之后 300 到 400 天里的后继和 360 个太阴月年、七分盘星座主、Buddhi Gati、Kaala、Sudasa 出生周期、Sudasa 已确认起点(只写原因)、Varnada、Karana 三种(目标年里的每一次 Tithi 回归)。
- 辅助大运次小运数据:Sthira、Drig、Shoola、Navamsha 的次小运。主运和子运的生产者没有改,次小运加在副本上。Niryaana Shoola 不列子运和次小运。Kalachakra 只加第三层,沿用简化模型,不改已有主运和子运。
- 研究型分盘: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:」开头的行。