docs(tasks): #93 fix brief (agent loop, first rejection)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LutgzyJqNhPpZy1nFsJtN3
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
bc6795e2a3
commit
4d0e398ab6
@@ -528,6 +528,7 @@
|
||||
| `TASK-goel-jaimini-strength-20261022.md` | `PROGRESS-goel-jaimini-strength-20261022.md` | #94 搬上游公开的 Goel Jaimini 强度与 Brahma / Maheshwara / Rudra(4 个上游原样文件,按 #81 决策 A 先例根目录预算 448→452;来源串改书目引用);只做计算、不改报告;冻结身份不变 | 已合入 staging | `codex/goel-jaimini-strength-20261022` |
|
||||
| `TASK-chart-subject-table-fix-20261022.md` | `PROGRESS-chart-subject-table-fix-20261022.md` | **#86 第 1 次打回**:报告所有表被强制单行(打印跑出纸面);保存他人复制了档案页代码且已分叉;点编辑框内边距会丢修改 | 已合入 staging | `codex/chart-subject-table-20261021` |
|
||||
| `TASK-full-data-parity-3-20261022.md` | — | #93 完整数据版补齐(三):「独立年度方法参考」正式环境调 PyJHora(子进程隔离;装上后其余输出逐字节不变,7 个换路径开关钉死);输入默认用本地时间与正确年份(D6 待产品确认) | 待领取(等 #91 合入) | `codex/full-data-parity-3-20261022` |
|
||||
| `TASK-full-data-parity-3-fix-20261023.md` | `PROGRESS-full-data-parity-3-20261022.md` | **#93 第 1 次打回**:功能、隔离、速度都过(Linux 约 20 秒,worker 约 60 MB);结果指纹排除本章致重算对不上(违反 D2)、源码合同测试没跟改、自己的新测试与 deploy README 打架 | 待执行 | `codex/full-data-parity-3-20261022` |
|
||||
| `TASK-synastry-staging-fix-fix-20261022.md` | `PROGRESS-synastry-staging-fix-fix-20261022.md` | **#85 第 1 次打回**(T7~T11 主体通过):新地址没登记进路由清单致快速门红;CHANGELOG 与 T11 矛盾;侧栏点亮测试是空断言 | 已合入 staging | `codex/synastry-staging-fix-20261021` |
|
||||
| `TASK-report-english-han-leak-fix-20261022.md` | `PROGRESS-report-english-han-leak-fix-20261022.md` | **#89 第 1 次打回**:改了冻结的校正打分文件 `jaimini.py`;测试的 PyJHora 屏蔽没传到子进程(测的不是生产那份报告,也是慢的原因);缺英文时留空藏住漏洞 | 已合入 staging | `codex/report-english-han-leak-20261021` |
|
||||
| `TASK-full-data-parity-1-fix-20261022.md` | `PROGRESS-full-data-parity-1-fix-20261022.md` | **#91 A 段第 1 次打回**:新六章 69 节里 16 节在三张虚构盘上整节「未判定」,其中 12 节数据在资料包里、是读错了字段;测试抓不到整节未判定;新六章绕过了报告口径替换;中文附录悄悄丢列和瑜伽条目要量出来 | 已合入 staging | `codex/full-data-parity-1-20261021` |
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
# 修复单:完整数据版补齐(三)独立年度方法参考(issue #93,第 1 次打回,2026-10-23)
|
||||
|
||||
- 被验提交:`c644881a3`(分支 `codex/full-data-parity-3-20261022`)
|
||||
- 原任务书:`TASK-full-data-parity-3-20261022.md`
|
||||
- 执行方:Grok。同一分支继续,开工前 `git merge origin/staging`(不 rebase)。BUG 编号开工时核对最大号 +1。
|
||||
|
||||
## 验收结论(Claude,Linux,PyJHora 4.8.7 已装,不屏蔽)
|
||||
|
||||
做对了的:PyJHora 只在子进程 worker 里导入,三张虚构盘生成后父进程 `sys.modules` 里没有 `jhora`;S1~S3 开关保持「未装」时的老结果;没碰冻结打分文件;中英各有「来源:PyJHora / Source: PyJHora」;英文汉字 0;输入是当地时间与正确年份(D6 默认)。
|
||||
|
||||
| 项 | 结果 |
|
||||
| --- | --- |
|
||||
| 生成时长(Linux,0 / 1 / 9 号盘,排盘 + 资料包 + 先英文后中文,PyJHora 真跑) | 22.0 / 19.8 / 19.7 秒 |
|
||||
| worker 峰值内存(0.5 秒采样) | 约 60 MB |
|
||||
| 本章内容(9 号盘中文) | 3 年 × 4 张表,717 行;「未获得结果」6 处 |
|
||||
| 前端全量、类型检查、构建 | 与 staging 一致 |
|
||||
| 全量 pytest | 比 staging 基线多 5 条;2 条单独重跑通过(本机负载),**3 条单独跑仍失败**,见下 |
|
||||
|
||||
## P1 · 结果指纹:别把本章排除在外(必修)
|
||||
|
||||
`jyotish_engine._bind_result_without_annual_method_reference` 在绑定前把 `pyjhora_annual_method_reference` 摘掉、绑定后再放回。结果是:交付出去的资料包**里有**这一章,`result_hash` 却**没算**它;任何人按 `hash_bound_result` 重算都对不上——`tests/test_report_reference_perf.py::test_fast_hash_matches_the_legacy_algorithm_on_a_real_packet` 因此失败(BUG-693 / 694 的出处绑定就是靠「重算能对上」)。`calculation_profile_contract.py` 的 D2 也写明只有三类可以排除,本单没有授权加第四类。
|
||||
|
||||
修法:删掉 `_bind_result_without_annual_method_reference`,恢复原来的 `bind_result_to_profile(delivered, profile)`;本章照常算进指纹。原任务书「切掉本章后与 T1 完成时的输出逐字节相同」那条对照,比较前把**报告引用号 / 结果指纹那一行**按正则抹成同一个占位符,再逐字节比较(引用号本来就该随结果变);在 PROGRESS 写明抹掉的是哪一行。
|
||||
|
||||
验收:上面那条测试通过;`tests/test_calculation_profile_contract.py` 全过;「切掉本章逐字节相同」的对照仍通过(抹掉引用号行之后)。
|
||||
|
||||
## P2 · 源码文本合同测试没跟着改(必修,P1 修完多半自动消失)
|
||||
|
||||
`tests/test_calculation_profile_contract.py::test_professional_reference_packet_rebinds_sanitized_delivery` 在 `build_professional_report_reference_packet` 源码里找 `bind_result_to_profile(delivered, profile)`,被包进新函数后找不到(`ValueError: substring not found`)。按 P1 恢复原调用即可;若仍要改这个函数,按 AGENTS §7.8 同轮改测试并写三栏。
|
||||
|
||||
## P3 · 自己的新测试和自己写的部署说明打架(必修,小)
|
||||
|
||||
`tests/test_pyjhora_annual_method_reference.py::test_deploy_does_not_set_year_lord_pyjhora_reference` 扫 `deploy/` 下所有文件不得出现 `JYOTISH_YEAR_LORD_PYJHORA_REFERENCE`,而本单在 `deploy/README.md` 写了「Do not set `JYOTISH_YEAR_LORD_PYJHORA_REFERENCE`」。二选一:README 改成不点名(例如「不要打开年主的 PyJHora 对照开关」),或测试只扫 compose / env / workflow 这类配置文件、跳过 `*.md`。推荐前者。
|
||||
|
||||
## 顺手(小,不阻塞)
|
||||
|
||||
- `build_professional_report_reference_packet` 对标准版和 JSON 输出也会起一次 PyJHora 子进程(本章只在完整数据版渲染)。线上目前只请求完整数据版,影响不大;顺手改成只在 `edition == full_data` 时调用(放在 `professional_report_reference._assemble_professional_report_reference` 判定版本之后),并加一条测试:标准版不启动 worker。
|
||||
- 进度里写「超时放宽到 120 秒」。Linux 上整份约 20 秒,120 秒只是上限,保留可以;但请在 PROGRESS 写明:前端总等待是 180 秒,worker 超时 + 其余生成时间不得超过它。
|
||||
|
||||
## 交回前必跑
|
||||
|
||||
- `tests/test_pyjhora_annual_method_reference.py`、`tests/test_calculation_profile_contract.py`、`tests/test_report_reference_perf.py` 与原任务书第 7 节列出的文件。
|
||||
- 200 张英文扫描(屏蔽 PyJHora)。
|
||||
- 全量 pytest、快速门、前端由 Claude 复验。
|
||||
Reference in New Issue
Block a user