Files
Jyotisha/docs/tasks/PROGRESS-api-server-service-extract-fix-20261016.md
T
jesse-uxandGrok (agent loop) a7fe7e9dd5 修复拆类金样换机器就对不齐的问题,避免测试删掉共用排盘缓存。
指纹不再包含仓库绝对路径;采集时关闭缓存而不是删除目录。基线与本分支 8 个哈希一致,定向 pytest 11 通过。

Co-Authored-By: Grok (agent loop)
2026-10-16 11:48:27 +08:00

54 lines
5.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# PROGRESS · API 拆类金样修复(2026-10-16)
- 分支:`codex/api-server-service-extract-20261013`
- 修复单:`docs/tasks/TASK-api-server-service-extract-fix-20261016.md`(来自 `origin/staging` `187fa375`)
- 被打回的提交:`c7350bcafbff64d3c526c2dbf3995c9845b3b66e`
- 基线(金样 `fixtureProvenance.baselineSha`):`fbf04f0b5f31cd8421bc4546840b1c833aaed810`
- 先把只含修复单的 `origin/staging` 合并进本分支(合并提交 `14ad076f`)。没有带进别的代码。
## 做了什么
- 拆类没有重做。没有改 `scripts/jyotish_api_server.py`,也没有改 `tests/test_api_server_security.py`。
- 金样规范化对所有字符串值去掉仓库根目录绝对路径(反斜杠、正斜杠,以及 Windows 的 `\\?\` 前缀),换成 `<ROOT>`,其后的分隔符统一成 `/`。不按字段名挑选。
- 采集不再删除 `scratch/local/api_chart_cache`。采集期间把 `JYOTISH_API_CHART_CACHE_TTL_SECONDS` 设为 `0`,结束恢复原值。有效期为 0 时,现有读函数直接返回空,写函数不落盘。
- 在基线提交上用同一套规范化重新采集,再在本分支采集。8 个哈希与键路径类型逐个相同。金样文件按这份结果覆盖。
- `JYOTISH_API_HANDLER_METHOD_COUNT_BASELINE` 上方恢复原来的三行:
- 原值:218(删占位回退之前)
- 新值:217
- 原因:BUG-1341 删除 `JyotishAPIHandler._fallback_dasha_periods`,类方法少 1 个,没有新增方法
- 本单「数值未变」另起一行写在这三行后面,没有盖住历史。
- 没有改断言。`check_golden()` 仍要求 sha256 和键路径类型全等,没有改成只比键或字节数。上一轮在改代码之前就失败的校正测试没有放宽。
- 记了 BUG-1359。修复单写的是无编号;这次是验收打回的测试失败,按 `AGENTS.md` §5 记。开工时本分支最大已用编号是 BUG-1358。BUG-1351、1352、1353 已有条目,没有重用。
## 两次采集的 8 个哈希
基线与本分支打印的是同一组数。六条咨询路径都比上一份金样短 122 字节:上一份还含本机绝对路径,并且排盘缓存有效期字段是默认的 900 秒。这次两边都按「缓存不生效」采集,有效期字段是 0。`repairs` 与 `evidence` 的哈希和字节数与上一份相同。没有再跑「删除缓存目录」那条旧采集。
| 案例 | 基线 sha256 | 基线字节 | 本分支 sha256 | 本分支字节 |
| --- | --- | ---: | --- | ---: |
| evidence | `27975ba40a9ee89fc19543a18cb2ee60fb2477b8a6e8f14004ad411adfc408a2` | 2092 | `27975ba40a9ee89fc19543a18cb2ee60fb2477b8a6e8f14004ad411adfc408a2` | 2092 |
| http.career | `81a0c8429fdec0c7d5ad2ac768c0d2a0d1361c46a299fb79cdfbfa46459492a8` | 420433 | `81a0c8429fdec0c7d5ad2ac768c0d2a0d1361c46a299fb79cdfbfa46459492a8` | 420433 |
| http.relationship | `db4e04f76c016cd9e44263329b4a763fc11a1573ed1910414c369f5e3f696525` | 414350 | `db4e04f76c016cd9e44263329b4a763fc11a1573ed1910414c369f5e3f696525` | 414350 |
| http.wealth | `d75e8036c05ff36b10e7c53dad4203d1c819f60abfe8d6473ab347810fe0a1ab` | 419194 | `d75e8036c05ff36b10e7c53dad4203d1c819f60abfe8d6473ab347810fe0a1ab` | 419194 |
| mcp.career | `14aca344f395106c761a785e22f9cbda1282f79bd81d6e4d3bde9ffd9a839196` | 543746 | `14aca344f395106c761a785e22f9cbda1282f79bd81d6e4d3bde9ffd9a839196` | 543746 |
| mcp.relationship | `625b532ce57966f2decbb8b67ee9f8b3a2809834026ae8ed4047a13f720b786e` | 537663 | `625b532ce57966f2decbb8b67ee9f8b3a2809834026ae8ed4047a13f720b786e` | 537663 |
| mcp.wealth | `1ad98c778ed2360e782fc8e61a20ffc34dcc07698207a6801c756b09699f6220` | 542507 | `1ad98c778ed2360e782fc8e61a20ffc34dcc07698207a6801c756b09699f6220` | 542507 |
| repairs | `41d48a453fbd5d616de083fe07bb8d318c3f60ad2e127764237ef6ae50cc6175` | 74700 | `41d48a453fbd5d616de083fe07bb8d318c3f60ad2e127764237ef6ae50cc6175` | 74700 |
## 命令和结果
| 检查 | 命令 | 结果数字 |
| --- | --- | --- |
| 有效期为 0 时不读不写 | 调用现有的缓存读、写函数 | 读取结果为空;目录里的文件 2 个,调用前后相同;写回的有效期字段是 0,未命中 |
| 两次采集时缓存目录 | 基线采集、本分支采集各看一次目录 | 两次都是采集前 2 个文件、采集后 2 个文件,名单相同 |
| 金样、增长合同、上次并行变红的那一条 | `.venv\Scripts\python.exe -m pytest tests/test_api_service_extract_golden.py tests/test_api_server_growth_contract.py tests/test_capture_commercial_astrology_e2e_contexts.py::test_capture_writes_runtime_contexts_without_required_layer_echo -q --tb=line` | **11 通过,0 失败**,退出码 0,约 132 秒。其中金样 1、增长合同 9、上下文那一条 1 |
| 历史三栏是否还在删除行里 | `git diff origin/staging -- tests/test_api_server_growth_contract.py` | 原来的三行没有出现在删除行里 |
| 全量 pytest、Python 快速门、前端 `npm test` | 没跑 | 修复单的全量对照由验收方复跑 |
| `npm run test:db` | 没跑 | 没改数据库 |
## 偏离
- 修复单写「无 BUG 编号」。本轮按仓库规则补了 BUG-1359,原因见上。
- 没有把「删除共用缓存」和「有效期为 0」再各采一次来拆开那 122 字节。删除共用目录会再次打到别的测试,修复单不允许。金样以「缓存不生效」为准。
- 没跑全量 `pytest -n 4`,所以不能在这里声称失败清单已与基线逐名一致。