diff --git a/docs/tasks/PROGRESS-consult-evidence-card-research-20260927.md b/docs/tasks/PROGRESS-consult-evidence-card-research-20260927.md index 15fcbbe9..fba7805b 100644 --- a/docs/tasks/PROGRESS-consult-evidence-card-research-20260927.md +++ b/docs/tasks/PROGRESS-consult-evidence-card-research-20260927.md @@ -36,3 +36,7 @@ - 复跑:Linux 临时工作树、`PYTHONHASHSEED=0` 重跑 `consult_evidence_card_run.py --skip-timing`,30 次里卡体量与逐字核对结果 30/30 与提交的库存 JSON 完全一致;10 次 Obama 问法的模型可见字符比提交值多 12 个(约 0.01%,推测为 Windows/Linux 环境差异),不影响任何结论。 - BUG-1054 我核对了代码:`consultation-workflow.ts` `timingKeys` 没有 `md`/`ad`/`pd` 与 `pratyantardashatimeline`,`projectAllowlistedTree` 按键白名单丢弃,结论成立。 - 结论:调研验收通过;7 项拍板清单交产品。门禁 run 2958(`d8d03b5a`)部署结果另行核对。 + +### 门禁补修(Claude,2026-09-27) + +门禁 run 2958(`d8d03b5a`)红在 `tests/test_api_server_growth_contract.py` 两条:调研脚本 `consult_evidence_card_run.py` 新增了两处 handler 伪造点(全仓 33 > 上限 31;scripts/ 4 > 上限 2)。改为复用 `capture_report_blocked_repairs_golden._handler()`,伪造点回到 31 / 2。复核:growth contract + 调研测试通过;Python 门禁集 948 passed / 1 skipped;`steve_jobs × 父母` 重跑的投影、分类、卡体量、逐字核对、样例卡与提交的库存 JSON 逐项相同。验收时我只跑了调研相关的 3 个测试文件、没跑全量 Python 门禁集,是漏检;以后含 `scripts/**` 的调研提交一律跑全量门禁集再放行。 diff --git a/scripts/research/consult_evidence_card_run.py b/scripts/research/consult_evidence_card_run.py index 7d009d6b..bf7a8aab 100644 --- a/scripts/research/consult_evidence_card_run.py +++ b/scripts/research/consult_evidence_card_run.py @@ -83,10 +83,11 @@ def _workflow_body(chart: dict[str, Any], question: dict[str, str]) -> dict[str, def _run_workflow(body: dict[str, Any]) -> dict[str, Any]: - from jyotish_api_server import JyotishAPIHandler + # Reuse the existing golden-capture handler instead of adding another + # handler-forgery site (tests/test_api_server_growth_contract.py). + from capture_report_blocked_repairs_golden import _handler - handler = JyotishAPIHandler.__new__(JyotishAPIHandler) - return handler._compute_consultation_workflow(body) + return _handler()._compute_consultation_workflow(body) def _project(jobs: list[dict[str, str]], summary_path: Path) -> list[dict[str, Any]]: @@ -111,15 +112,15 @@ def _project(jobs: list[dict[str, str]], summary_path: Path) -> list[dict[str, A def _time_layers(chart_body: dict[str, Any]) -> dict[str, float]: """Time local layers on one birth payload. VedAstro stays blocked.""" + from capture_report_blocked_repairs_golden import _handler from jyotish_api_server import ( - JyotishAPIHandler, _attach_local_consultation_layers, _build_consultation_varga_spectrum, _custom_research_dn_chart, _planet_longitudes, ) - handler = JyotishAPIHandler.__new__(JyotishAPIHandler) + handler = _handler() timings: dict[str, float] = {} def elapsed(name: str, fn, *args, **kwargs):