同步上游 skill 技法 #141

Open
opened 2026-10-28 07:03:22 +08:00 by jesse · 6 comments
Owner

上游技能仓已更新 请你同步更新一下 workspace/yinduzhanxing 这个仓的代码 看看计算需要更新哪些地方 这是她更新的日志
你要把我授权使用的印度占星仓库中的计算能力,接入另一个项目,形成可运行、可追溯的计算数据链。

源仓库:<云端仓库地址或本地克隆路径>
目标项目:<目标项目路径>
授权范围:本人拥有且有权授权的代码。第三方依赖与资料仍须遵守各自许可证。

一、先查清当前版本和边界

  1. 读取源仓和目标项目的 AGENTS.md、README、依赖说明。
  2. 记录源仓分支、commit、工作区状态。以实际取得的代码为准,
    不得把原作者电脑上的未提交修改、本机脚本、私人案例或冻结引擎
    当成云端仓库已经包含的能力。
  3. 优先查找:
    • docs/research/data_category_inventory_2026_10_27.md
    • docs/research/current_capability_truth_index_2026_09_15.md
    • docs/research/pre_work_error_ledger.md
    • references/technique_registry.json
      若文件不存在,记录当前版本未包含,并继续从代码检索。
  4. 源仓 AGENTS.md 中依赖原作者本机目录的检查,在你的环境中若不可执行,
    如实记录原因,不得伪造通过,也不得复制私人资料来满足检查。

二、地毯式定位这些计算类目

优先接入:

  • 行星:位置、星座、度数、速度、逆行、宫位。
  • 宫位:宫头、宫界、宫主、Bhava Chalit。
  • 分盘:先 D1、D9、D10,再保留其他已有分盘入口。
  • 大运:优先 Vimshottari、Narayana,保留已有层级与日期边界。
  • 行运:指定日期位置、多参考点、双行运与触发。
  • 星力:Shadbala、Bhava Bala、Vimsopaka。
  • 相位:行星相位、星座相位。
  • 瑜伽:规则、参与行星、成立条件、证据状态。

同时保留基础配套:

  • 星宿与 Pada。
  • 旺陷、本垣、燃烧、星战、Avastha 等状态。
  • 自然/临时/复合敌友。
  • 功能性吉凶与 Yogakaraka。
  • 出生时间精度、地点、时区、岁差、交点及位置口径。

第二批再接入:
Ashtakavarga、Karaka、Arudha、特殊上升、敏感点、
Goel 强度与特殊点、年度盘、KP、合盘、择时、问事。

三、沿真实调用链调查,不凭文件名判断

从以下位置开始,但不要局限于这些文件:

  • scripts/jyotish_engine.py:CLI 与综合计算编排。
  • scripts/jyotish_api_server.py:HTTP 接口与参数转换。
  • scripts/:独立计算模块。
  • references/technique_registry.json:能力索引,不是执行证明。
  • tests/:参数、公式、输出与边界测试。
  • jyotish-app/:核对前端如何消费数据,不作为计算真值来源。
  • mcp_server.py:检查是否有适合复用的工具入口。

逐项追踪:
输入 → 参数归一化 → 星历/基础盘 → 计算模块
→ 输出结构 → API/CLI → 前端或报告。

查清各项的必要依赖,包括星历文件、规则 JSON、
时区与地点数据、外部引擎、配置及许可证。

把以下状态分开:
A. 有本地计算实现且已接入入口。
B. 有实现,但需要显式参数或尚未接入默认流程。
C. 仅有外部适配器,依赖额外环境。
D. 仅有规则、资料、注册项或展示代码。

不得把“注册了”“有按钮”“有历史报告”写成“已计算”。

四、先形成清晰的接入映射,再实施

交付一张表,每行包含:
类目、源文件与函数、CLI/API 入口、必填参数、
依赖文件、输出字段、状态、目标项目接入位置、
对应测试及许可证边界。

在现有能力足够时,优先封装源仓原生 CLI/API 或模块,
不要另写一套公式,也不要直接搬整座 API 服务。
根据目标项目环境选择最小、可维护的接入方式并说明原因,
然后完成目标项目内的实现。

五、统一数据合同,但保留原始结果

公共输入至少包括:
出生日期、当地时间及秒数/精度、地点、经纬度、
时区、岁差、交点模式;
行运与年度计算还须有明确的观测日期和地点等必要参数。

不得静默采用 Raman 或覆盖源模块参数。
缺少必要参数时明确返回缺失字段,不编造默认计算结果。

公共结果外层至少包含:

  • source_commit
  • calculation_profile
  • inputs_used
  • execution_status
  • data
  • warnings
  • provenance

外层字段可统一,data 内保留源模块原始字段与精度。
缺值不能写成 0;失败不能伪装成空数组成功。
保留方法差异、时区、日期边界规则和执行状态。
每个模块分别报告成功、失败、缺输入或不适用,
不能只给整批一个“成功”。

六、严格保留已有方法边界

  • MD/AD/PD 必须调用原生大运引擎,禁止重写顺序或自行推日期。
  • 传统分盘与研究型 D-N 分开。
  • Goel 交点书面规则与示例表口径分开。
  • Niryaana Shoola Ayur 强度不能冒充 Goel 强度。
  • 不把知识规则或历史 oracle 收据当成当前个案已执行的证据。
  • 不搬运私人案例、密钥、本机路径、冻结个人报告引擎。
  • 本任务只建立计算数据链,不生成运势结论,不改个人报告导出合同。
  • 授权不能覆盖第三方许可证;遇到限制优先采用合法的独立进程/API
    调用方案,并记录部署与分发条件。

七、验收与交付

使用公开或虚构输入:

  1. 在源仓原生入口取得基准结果。
  2. 用相同参数调用目标项目。
  3. 比较原始数值、时间边界、参数与状态,不只检查接口返回 200。
  4. 覆盖正常输入、缺输入、无效输入和关键边界。
  5. 无法运行的模块明确列为未验收,不计算为通过。

最后交付:

  • 类目与源代码映射表。
  • 可运行的目标项目代码。
  • 必要依赖和启动说明。
  • 示例请求与真实响应。
  • 对照测试结果。
  • 已接入/未接入/受限项目清单。
  • 固定的源仓 commit 与后续升级办法。

仅修改目标项目及必要的接入文档。
不要未经要求推送、部署或发布。

上游技能仓已更新 请你同步更新一下 workspace/yinduzhanxing 这个仓的代码 看看计算需要更新哪些地方 这是她更新的日志 你要把我授权使用的印度占星仓库中的计算能力,接入另一个项目,形成可运行、可追溯的计算数据链。 源仓库:<云端仓库地址或本地克隆路径> 目标项目:<目标项目路径> 授权范围:本人拥有且有权授权的代码。第三方依赖与资料仍须遵守各自许可证。 一、先查清当前版本和边界 1. 读取源仓和目标项目的 AGENTS.md、README、依赖说明。 2. 记录源仓分支、commit、工作区状态。以实际取得的代码为准, 不得把原作者电脑上的未提交修改、本机脚本、私人案例或冻结引擎 当成云端仓库已经包含的能力。 3. 优先查找: - docs/research/data_category_inventory_2026_10_27.md - docs/research/current_capability_truth_index_2026_09_15.md - docs/research/pre_work_error_ledger.md - references/technique_registry.json 若文件不存在,记录当前版本未包含,并继续从代码检索。 4. 源仓 AGENTS.md 中依赖原作者本机目录的检查,在你的环境中若不可执行, 如实记录原因,不得伪造通过,也不得复制私人资料来满足检查。 二、地毯式定位这些计算类目 优先接入: - 行星:位置、星座、度数、速度、逆行、宫位。 - 宫位:宫头、宫界、宫主、Bhava Chalit。 - 分盘:先 D1、D9、D10,再保留其他已有分盘入口。 - 大运:优先 Vimshottari、Narayana,保留已有层级与日期边界。 - 行运:指定日期位置、多参考点、双行运与触发。 - 星力:Shadbala、Bhava Bala、Vimsopaka。 - 相位:行星相位、星座相位。 - 瑜伽:规则、参与行星、成立条件、证据状态。 同时保留基础配套: - 星宿与 Pada。 - 旺陷、本垣、燃烧、星战、Avastha 等状态。 - 自然/临时/复合敌友。 - 功能性吉凶与 Yogakaraka。 - 出生时间精度、地点、时区、岁差、交点及位置口径。 第二批再接入: Ashtakavarga、Karaka、Arudha、特殊上升、敏感点、 Goel 强度与特殊点、年度盘、KP、合盘、择时、问事。 三、沿真实调用链调查,不凭文件名判断 从以下位置开始,但不要局限于这些文件: - scripts/jyotish_engine.py:CLI 与综合计算编排。 - scripts/jyotish_api_server.py:HTTP 接口与参数转换。 - scripts/:独立计算模块。 - references/technique_registry.json:能力索引,不是执行证明。 - tests/:参数、公式、输出与边界测试。 - jyotish-app/:核对前端如何消费数据,不作为计算真值来源。 - mcp_server.py:检查是否有适合复用的工具入口。 逐项追踪: 输入 → 参数归一化 → 星历/基础盘 → 计算模块 → 输出结构 → API/CLI → 前端或报告。 查清各项的必要依赖,包括星历文件、规则 JSON、 时区与地点数据、外部引擎、配置及许可证。 把以下状态分开: A. 有本地计算实现且已接入入口。 B. 有实现,但需要显式参数或尚未接入默认流程。 C. 仅有外部适配器,依赖额外环境。 D. 仅有规则、资料、注册项或展示代码。 不得把“注册了”“有按钮”“有历史报告”写成“已计算”。 四、先形成清晰的接入映射,再实施 交付一张表,每行包含: 类目、源文件与函数、CLI/API 入口、必填参数、 依赖文件、输出字段、状态、目标项目接入位置、 对应测试及许可证边界。 在现有能力足够时,优先封装源仓原生 CLI/API 或模块, 不要另写一套公式,也不要直接搬整座 API 服务。 根据目标项目环境选择最小、可维护的接入方式并说明原因, 然后完成目标项目内的实现。 五、统一数据合同,但保留原始结果 公共输入至少包括: 出生日期、当地时间及秒数/精度、地点、经纬度、 时区、岁差、交点模式; 行运与年度计算还须有明确的观测日期和地点等必要参数。 不得静默采用 Raman 或覆盖源模块参数。 缺少必要参数时明确返回缺失字段,不编造默认计算结果。 公共结果外层至少包含: - source_commit - calculation_profile - inputs_used - execution_status - data - warnings - provenance 外层字段可统一,data 内保留源模块原始字段与精度。 缺值不能写成 0;失败不能伪装成空数组成功。 保留方法差异、时区、日期边界规则和执行状态。 每个模块分别报告成功、失败、缺输入或不适用, 不能只给整批一个“成功”。 六、严格保留已有方法边界 - MD/AD/PD 必须调用原生大运引擎,禁止重写顺序或自行推日期。 - 传统分盘与研究型 D-N 分开。 - Goel 交点书面规则与示例表口径分开。 - Niryaana Shoola Ayur 强度不能冒充 Goel 强度。 - 不把知识规则或历史 oracle 收据当成当前个案已执行的证据。 - 不搬运私人案例、密钥、本机路径、冻结个人报告引擎。 - 本任务只建立计算数据链,不生成运势结论,不改个人报告导出合同。 - 授权不能覆盖第三方许可证;遇到限制优先采用合法的独立进程/API 调用方案,并记录部署与分发条件。 七、验收与交付 使用公开或虚构输入: 1. 在源仓原生入口取得基准结果。 2. 用相同参数调用目标项目。 3. 比较原始数值、时间边界、参数与状态,不只检查接口返回 200。 4. 覆盖正常输入、缺输入、无效输入和关键边界。 5. 无法运行的模块明确列为未验收,不计算为通过。 最后交付: - 类目与源代码映射表。 - 可运行的目标项目代码。 - 必要依赖和启动说明。 - 示例请求与真实响应。 - 对照测试结果。 - 已接入/未接入/受限项目清单。 - 固定的源仓 commit 与后续升级办法。 仅修改目标项目及必要的接入文档。 不要未经要求推送、部署或发布。
jesse added the agent/待规划agent/试点 labels 2026-10-28 07:03:22 +08:00
Claude added the agent/规划中 label 2026-10-28 08:44:59 +08:00
Collaborator

结论:上游 10-16 有 15 个计算修正我们从来没跟过,先搬其中 9 个,任务书已写好交给 Grok。

上游仓库我已拉到最新(最新提交 10-21,本机与 GitHub 一致)。

为什么漏了:第八轮同步(10-17)照作者给的修复分支搬,那条分支没合进上游主线;作者 10-16 在主线上另外一次性提交了十几个「按书纠正」的计算修正,两边都没碰到这批。我把上游这些修正自带的测试直接放到我们的代码上跑,大部分不过:

这次要搬(甲批) 上游测试在我们这边 用户能看到的变化
Yogini 大运:月亮恰好在星宿交界时 31 条挂 24 条 这类盘第一大运从「几乎 0 年」变成整段,后面日期跟着移
Tithi 主星顺序 35 条挂 21 条 有的 tithi 主星会变(如太阳→罗睺)
年运 Saham:书里表 74 剩下的公式 7 条全挂 年运 Saham 会多出若干项
Ashtottari 大运弧段与小运 20 条挂 13 条 星盘页 Ashtottari 日期边界会变
Kalachakra 大运 116 条全挂 日期边界会变
Arudha / A10 / UL 2 条全挂 只写星座,不再写编出来的度数
Darakaraka 排序 跑不起来(缺函数) 合盘里配偶星的判定与主表一致
相位把计都算进来、分入相离相 待执行方核对 相位表会多出计都
星宿交界(大运分析) 已过 第八轮已修,只补测试

这次先不搬(乙批):Drekkana 第 22 号与 Sarpa 范围、Narayana 小运强度口径。它们改的文件被「生时校正」冻结着,而 #137(另一个会话在做)也要改冻结文件。等 #137 合进 staging,我再另开一单,免得冻结来回改两次。

不搬:合盘产品与报告形态那一大串、几个依赖我们没有的研究工具的修正。

关于你贴的那段接入说明:那是给「从零接到另一个项目」写的,我们已经接过八轮了。这单只从里面取两样:一张「每类计算接到哪里、跟到上游哪个版本」的对照表;以及「跑不了的不算通过」。它要求的统一返回格式会改所有接口,这单不做,你要的话我另开一单。

风险:生时校正结果必须一个字节都不变(20 条 + 900 条回放逐条比),任何一项让校正变了就停下来回报。

  • 任务书:docs/tasks/TASK-upstream-sync9-20261028.md(staging 9a0ce76d)
  • 真机清单:docs/testing/upstream-sync9-20261028.md
  • 分支:codex/upstream-sync9-20261028
<!-- agent:claude plan brief=docs/tasks/TASK-upstream-sync9-20261028.md branch=codex/upstream-sync9-20261028 base=9a0ce76d480c8b3d9fd8dd73bcc5ab59437469c4 --> **结论:上游 10-16 有 15 个计算修正我们从来没跟过,先搬其中 9 个,任务书已写好交给 Grok。** 上游仓库我已拉到最新(最新提交 10-21,本机与 GitHub 一致)。 **为什么漏了**:第八轮同步(10-17)照作者给的修复分支搬,那条分支没合进上游主线;作者 10-16 在主线上另外一次性提交了十几个「按书纠正」的计算修正,两边都没碰到这批。我把上游这些修正自带的测试直接放到我们的代码上跑,大部分不过: | 这次要搬(甲批) | 上游测试在我们这边 | 用户能看到的变化 | | --- | --- | --- | | Yogini 大运:月亮恰好在星宿交界时 | 31 条挂 24 条 | 这类盘第一大运从「几乎 0 年」变成整段,后面日期跟着移 | | Tithi 主星顺序 | 35 条挂 21 条 | 有的 tithi 主星会变(如太阳→罗睺) | | 年运 Saham:书里表 74 剩下的公式 | 7 条全挂 | 年运 Saham 会多出若干项 | | Ashtottari 大运弧段与小运 | 20 条挂 13 条 | 星盘页 Ashtottari 日期边界会变 | | Kalachakra 大运 | 116 条全挂 | 日期边界会变 | | Arudha / A10 / UL | 2 条全挂 | 只写星座,不再写编出来的度数 | | Darakaraka 排序 | 跑不起来(缺函数) | 合盘里配偶星的判定与主表一致 | | 相位把计都算进来、分入相离相 | 待执行方核对 | 相位表会多出计都 | | 星宿交界(大运分析) | 已过 | 第八轮已修,只补测试 | **这次先不搬(乙批)**:Drekkana 第 22 号与 Sarpa 范围、Narayana 小运强度口径。它们改的文件被「生时校正」冻结着,而 #137(另一个会话在做)也要改冻结文件。等 #137 合进 staging,我再另开一单,免得冻结来回改两次。 **不搬**:合盘产品与报告形态那一大串、几个依赖我们没有的研究工具的修正。 **关于你贴的那段接入说明**:那是给「从零接到另一个项目」写的,我们已经接过八轮了。这单只从里面取两样:一张「每类计算接到哪里、跟到上游哪个版本」的对照表;以及「跑不了的不算通过」。它要求的统一返回格式会改所有接口,这单不做,你要的话我另开一单。 **风险**:生时校正结果必须一个字节都不变(20 条 + 900 条回放逐条比),任何一项让校正变了就停下来回报。 - 任务书:`docs/tasks/TASK-upstream-sync9-20261028.md`(staging `9a0ce76d`) - 真机清单:`docs/testing/upstream-sync9-20261028.md` - 分支:`codex/upstream-sync9-20261028`
Claude added agent/待执行 and removed agent/待规划agent/规划中 labels 2026-10-28 08:45:11 +08:00
Grok added agent/执行中 and removed agent/待执行 labels 2026-10-28 09:00:26 +08:00
Collaborator

第九轮甲批九项计算修正已经做完,推在分支 codex/upstream-sync9-20261028。生时校正的 20 条密封案例和 900 个报时窗口,名次和分钟误差都与上一份回放逐条相同。乙批(分盘 Drekkana / Sarpa、Narayana 小运强度)没做,因为那两个文件还冻着,等 #137。

检查 命令 结果数字
本轮测试和相关几何、相位、特殊点 .venv\Scripts\python -m pytest 16 个文件 297 个点,退出码 0
Yogini 不在星宿起点的抽样 1 万个随机经度对比改前公式 不一致 0
既有 Yogini、Saham、Tajika、Dasha 5 个既有测试文件 退出码 1;只有 Windows 路径那一条失败
密封校正 20 条回放对比第八轮记录 不一致 0;相对更老档案仍是 8 条,与第八轮相同
报时窗口 900 条回放对比第八轮记录 不一致 0;相对更老档案仍是 581 条

进度:docs/tasks/PROGRESS-upstream-sync9-20261028.md。能力对照:docs/research/upstream_capability_map_2026_10_28.md。

偏离:Saham 给报告用的轨迹仍是 36 条列表,不是上游的字典,数字按上游断言。Kalachakra 的 pada 起点用了本地表,因为共用的星宿函数会把 50 个起点划错。相位文件因为开工时已在暂存区,和 Yogini 记在了同一次提交里,调用方在后面的提交。镜像清单的旧提交号没改,只加了说明;台账另记上游 main 5fb8379c。

环境缺口:开工预检的两项超时。Windows 上 test_tajika.py 有一条用正斜杠检查规则文件路径,会失败,断言没有放宽。Python 快速门留给验收。

<!-- agent:grok report branch=codex/upstream-sync9-20261028 sha=57867c94fe7fd08196a2cb5d0be4b7c1f2cdf5df --> 第九轮甲批九项计算修正已经做完,推在分支 `codex/upstream-sync9-20261028`。生时校正的 20 条密封案例和 900 个报时窗口,名次和分钟误差都与上一份回放逐条相同。乙批(分盘 Drekkana / Sarpa、Narayana 小运强度)没做,因为那两个文件还冻着,等 #137。 | 检查 | 命令 | 结果数字 | | --- | --- | --- | | 本轮测试和相关几何、相位、特殊点 | `.venv\Scripts\python -m pytest` 16 个文件 | 297 个点,退出码 0 | | Yogini 不在星宿起点的抽样 | 1 万个随机经度对比改前公式 | 不一致 0 | | 既有 Yogini、Saham、Tajika、Dasha | 5 个既有测试文件 | 退出码 1;只有 Windows 路径那一条失败 | | 密封校正 | 20 条回放对比第八轮记录 | 不一致 0;相对更老档案仍是 8 条,与第八轮相同 | | 报时窗口 | 900 条回放对比第八轮记录 | 不一致 0;相对更老档案仍是 581 条 | 进度:`docs/tasks/PROGRESS-upstream-sync9-20261028.md`。能力对照:`docs/research/upstream_capability_map_2026_10_28.md`。 偏离:Saham 给报告用的轨迹仍是 36 条列表,不是上游的字典,数字按上游断言。Kalachakra 的 pada 起点用了本地表,因为共用的星宿函数会把 50 个起点划错。相位文件因为开工时已在暂存区,和 Yogini 记在了同一次提交里,调用方在后面的提交。镜像清单的旧提交号没改,只加了说明;台账另记上游 main `5fb8379c`。 环境缺口:开工预检的两项超时。Windows 上 `test_tajika.py` 有一条用正斜杠检查规则文件路径,会失败,断言没有放宽。Python 快速门留给验收。
Grok added agent/待验收 and removed agent/执行中 labels 2026-10-28 09:48:43 +08:00
Claude added the agent/验收中 label 2026-10-28 10:17:34 +08:00
Collaborator

验收没过,只差一处小改:打回给 Grok(第 1 次)。 九项计算本身都对,卡在一条旧测试上。

检查 结果
上游带来的 242 条测试(我这边复跑) 全过,条数、数值、容差和上游原文件一样,没有放宽
相关老测试 528 条 527 过;剩下 1 条在 staging 上本来就挂,跟这单无关
生时校正 20 条 + 900 条 与上次逐条相同
冻结文件、前端、部署配置 都没动
整体快速检查 1 条不过

不过的那条是什么:一张测试盘的「配偶星(Darakaraka)」,老测试写死是太阳,现在算出来是月亮。我核对了:这张盘月亮在星座里的度数最低(3.1°,太阳 8.9°),按规则配偶星就是月亮;而且我们自己完整解读里的主表也一直写着月亮。原来那个读取器在 8 星算法下取错了位置,才给出太阳。这次照上游修好了,等于修了一个之前没发现的错,但老测试锁的正是这个错值。

让 Grok 做的:把那条测试改成「读取器和主表必须一致」,记清原值、新值和原因,再查一遍还有没有别的测试锁着同样的错值。

对你的影响:用旧读取器的地方(合盘里的配偶星描述)有的盘配偶星会变,变成和星盘主表一致。

修复单:docs/tasks/TASK-upstream-sync9-fix-20261028.md(已推到分支 codex/upstream-sync9-20261028,bb238283)。

<!-- agent:claude review sha=57867c94fe7fd08196a2cb5d0be4b7c1f2cdf5df verdict=fail brief=docs/tasks/TASK-upstream-sync9-fix-20261028.md branch=codex/upstream-sync9-20261028 --> **验收没过,只差一处小改:打回给 Grok(第 1 次)。** 九项计算本身都对,卡在一条旧测试上。 | 检查 | 结果 | | --- | --- | | 上游带来的 242 条测试(我这边复跑) | 全过,条数、数值、容差和上游原文件一样,没有放宽 | | 相关老测试 528 条 | 527 过;剩下 1 条在 staging 上本来就挂,跟这单无关 | | 生时校正 20 条 + 900 条 | 与上次逐条相同 | | 冻结文件、前端、部署配置 | 都没动 | | 整体快速检查 | **1 条不过** | **不过的那条是什么**:一张测试盘的「配偶星(Darakaraka)」,老测试写死是太阳,现在算出来是月亮。我核对了:这张盘月亮在星座里的度数最低(3.1°,太阳 8.9°),按规则配偶星就是月亮;而且我们自己完整解读里的主表也一直写着月亮。原来那个读取器在 8 星算法下取错了位置,才给出太阳。这次照上游修好了,等于修了一个之前没发现的错,但老测试锁的正是这个错值。 **让 Grok 做的**:把那条测试改成「读取器和主表必须一致」,记清原值、新值和原因,再查一遍还有没有别的测试锁着同样的错值。 **对你的影响**:用旧读取器的地方(合盘里的配偶星描述)有的盘配偶星会变,变成和星盘主表一致。 修复单:`docs/tasks/TASK-upstream-sync9-fix-20261028.md`(已推到分支 `codex/upstream-sync9-20261028`,`bb238283`)。
Claude added agent/待执行 and removed agent/待验收agent/验收中 labels 2026-10-28 10:34:17 +08:00
Grok added the agent/执行中 label 2026-10-28 12:29:07 +08:00
Collaborator

打回的那一条改完了,这一轮只动测试和记录,没碰计算代码。 现在这条测试锁的是「配偶星读取器必须和星盘主表一致」,不再锁一个固定星名。

检查 命令 结果数字
你点的那条测试 pytest tests/test_cli_smoke.py -k darakaraka 1 过、34 未选
本轮 11 个上游测试文件 同一条命令,换那 11 个文件 240 过(本机收集 240 条)
检索到的其余 Darakaraka 测试 5 个文件 test_chara_karaka_8_bphs_order.py、test_jaimini.py、test_synastry_full_dossier.py、test_consultation_consumer_context.py、test_d9_evidence_bands.py 80 过
接口里的配偶星片段 pytest tests/test_api_server_security.py -k relationship_returns_spouse_status_fragment 1 过、134 未选

那条测试的期望值:配偶星从太阳改成月亮,D9 从双子座 / 敌对改成巨蟹座第 1 宫 / 入庙(OWN_SIGN)。这张盘月亮星座内 3.09°、太阳 8.85°,主表本来就是月亮。另外加了一条断言:读取器给出的配偶星必须等于同一结果里八星主表的那一行。原来的断言没有删除、也没有放宽,只补了 D9 宫位。

tests/ 全文检索了一遍(56 处提到 Darakaraka),只有这一条锁具体星名。另外发现一处旧记录:tests/golden/upstream_sync2/relationship_einstein.json 里写的是木星,这张盘现在算太阳;但读它的测试只比字段名和类型、不比数值,所以不拦也不改,已在进度里记一笔。

偏离:没有改 scripts/,没有改冻结文件,没有改前端。环境缺口:Windows 上不设 PYTHONUTF8=1 时子进程按 GBK 输出,会在一个警告符号上编码报错,看起来像引擎崩了;这不是代码问题,本轮跑测试都带了这个变量。

进度:docs/tasks/PROGRESS-upstream-sync9-20261028.md(新增「第 1 次打回」一节)。
Bug 历史:BUG-1478 补了「旧读者八星法取第 7 高、这条测试锁的是错值」。

<!-- agent:grok report branch=codex/upstream-sync9-20261028 sha=60116f28130de02146c11f95eff7af2bb71f3768 --> **打回的那一条改完了,这一轮只动测试和记录,没碰计算代码。** 现在这条测试锁的是「配偶星读取器必须和星盘主表一致」,不再锁一个固定星名。 | 检查 | 命令 | 结果数字 | | --- | --- | --- | | 你点的那条测试 | `pytest tests/test_cli_smoke.py -k darakaraka` | 1 过、34 未选 | | 本轮 11 个上游测试文件 | 同一条命令,换那 11 个文件 | 240 过(本机收集 240 条) | | 检索到的其余 Darakaraka 测试 5 个文件 | `test_chara_karaka_8_bphs_order.py`、`test_jaimini.py`、`test_synastry_full_dossier.py`、`test_consultation_consumer_context.py`、`test_d9_evidence_bands.py` | 80 过 | | 接口里的配偶星片段 | `pytest tests/test_api_server_security.py -k relationship_returns_spouse_status_fragment` | 1 过、134 未选 | 那条测试的期望值:配偶星从太阳改成月亮,D9 从双子座 / 敌对改成巨蟹座第 1 宫 / 入庙(OWN_SIGN)。这张盘月亮星座内 3.09°、太阳 8.85°,主表本来就是月亮。另外加了一条断言:读取器给出的配偶星必须等于同一结果里八星主表的那一行。原来的断言没有删除、也没有放宽,只补了 D9 宫位。 `tests/` 全文检索了一遍(56 处提到 Darakaraka),只有这一条锁具体星名。另外发现一处旧记录:`tests/golden/upstream_sync2/relationship_einstein.json` 里写的是木星,这张盘现在算太阳;但读它的测试只比字段名和类型、不比数值,所以不拦也不改,已在进度里记一笔。 偏离:没有改 `scripts/`,没有改冻结文件,没有改前端。环境缺口:Windows 上不设 `PYTHONUTF8=1` 时子进程按 GBK 输出,会在一个警告符号上编码报错,看起来像引擎崩了;这不是代码问题,本轮跑测试都带了这个变量。 进度:`docs/tasks/PROGRESS-upstream-sync9-20261028.md`(新增「第 1 次打回」一节)。 Bug 历史:BUG-1478 补了「旧读者八星法取第 7 高、这条测试锁的是错值」。
Grok added agent/待验收 and removed agent/待执行agent/执行中 labels 2026-10-28 12:40:33 +08:00
Claude added the agent/验收中 label 2026-10-28 12:43:39 +08:00
Collaborator

验收通过,已合入 staging(cd6ad9d2),等自动部署。

检查 结果
打回那条(配偶星测试) 改对了:现在锁的是「读取器和主表一致」,其余断言没删没放宽
本单测试 + 配偶星相关测试 321 条全过
生时校正 20 条 + 900 条(合并后又跑一次) 与上次逐条相同
Python 全量快速检查(合并后) 通过
前端 本单没改前端,合并后前端与 staging 完全相同;本机没装前端依赖,没跑,staging 门禁会完整跑

合并时我顺手做的一件事:Grok 做这单的同时,另一边已经往 staging 合了 11 单,把 Bug 编号 1472~1482 用掉了,和这单撞号。我把这单的 8 个编号整体顺延成 BUG-1483~1490(只改文档和一行测试注释,不碰计算),在 Bug 历史里写了说明。分支上的提交说明里还是旧号,以 Bug 历史为准。

部署好了我再 @你 去看真机清单:docs/testing/upstream-sync9-20261028.md。

<!-- agent:claude review sha=60116f28130de02146c11f95eff7af2bb71f3768 verdict=pass staging=cd6ad9d27a7c6a4e3818f4bb6a5a6c20051beaf7 checklist=docs/testing/upstream-sync9-20261028.md --> **验收通过,已合入 staging(`cd6ad9d2`),等自动部署。** | 检查 | 结果 | | --- | --- | | 打回那条(配偶星测试) | 改对了:现在锁的是「读取器和主表一致」,其余断言没删没放宽 | | 本单测试 + 配偶星相关测试 | 321 条全过 | | 生时校正 20 条 + 900 条(合并后又跑一次) | 与上次逐条相同 | | Python 全量快速检查(合并后) | 通过 | | 前端 | 本单没改前端,合并后前端与 staging 完全相同;本机没装前端依赖,没跑,staging 门禁会完整跑 | **合并时我顺手做的一件事**:Grok 做这单的同时,另一边已经往 staging 合了 11 单,把 Bug 编号 1472~1482 用掉了,和这单撞号。我把这单的 8 个编号整体顺延成 **BUG-1483~1490**(只改文档和一行测试注释,不碰计算),在 Bug 历史里写了说明。分支上的提交说明里还是旧号,以 Bug 历史为准。 部署好了我再 @你 去看真机清单:`docs/testing/upstream-sync9-20261028.md`。
Claude added agent/部署中 and removed agent/待验收agent/验收中 labels 2026-10-28 12:53:27 +08:00
Collaborator

已部署到 staging(a614895a,里面包含本单 cd6ad9d2),@jesse 可以真机验收了。 门禁、迁移、部署全部成功;登录页正常,未登录访问账户接口被拒绝(401)。

中间有一次插曲:本单合入后第一次门禁没过,原因是另一单(#132)刚改的代码加载方式在「合盘报告同时算两张盘」时会撞车,跟本单无关。那一单已修好重推,这次一起部署上去了。

真机清单:docs/testing/upstream-sync9-20261028.md。要点:

# 看哪里 应该看到
1 星盘页大运右栏切到 Yogini 日期连续,没有长度为 0 的第一大运
2 切到 Ashtottari,点开一个大运 小运首尾和大运对得上
3 带年运的报告翻到 Saham 比以前多出若干项,没有空白
4 Arudha(AL)、A10、Upapada(UL) 只写星座,不写度数
5 手机上看 1、2 不溢出

另外,合盘与完整解读里的「配偶星」有的盘会变,变成和星盘主表一致——这是修对了,不是新问题。

<!-- agent:claude deployed sha=a614895a2b77d154830d830fdec333ac3fe1d239 --> **已部署到 staging(`a614895a`,里面包含本单 `cd6ad9d2`),@jesse 可以真机验收了。** 门禁、迁移、部署全部成功;登录页正常,未登录访问账户接口被拒绝(401)。 中间有一次插曲:本单合入后第一次门禁没过,原因是另一单(#132)刚改的代码加载方式在「合盘报告同时算两张盘」时会撞车,跟本单无关。那一单已修好重推,这次一起部署上去了。 真机清单:`docs/testing/upstream-sync9-20261028.md`。要点: | # | 看哪里 | 应该看到 | | --- | --- | --- | | 1 | 星盘页大运右栏切到 Yogini | 日期连续,没有长度为 0 的第一大运 | | 2 | 切到 Ashtottari,点开一个大运 | 小运首尾和大运对得上 | | 3 | 带年运的报告翻到 Saham | 比以前多出若干项,没有空白 | | 4 | Arudha(AL)、A10、Upapada(UL) | 只写星座,不写度数 | | 5 | 手机上看 1、2 | 不溢出 | 另外,合盘与完整解读里的「配偶星」有的盘会变,变成和星盘主表一致——这是修对了,不是新问题。
Claude added agent/待真机 and removed agent/部署中 labels 2026-10-28 14:13:04 +08:00
Sign in to join this conversation.
3 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: root/Jyotisha#141