# 进度 · 绑定排除集字面量锁 + timezone 缺口入账(2026-09-15) ## 范围 - 分支:`codex/report-binding-scope-lock-20260915`(基于 `origin/staging` @ `10b463b9`) - 任务单:`docs/tasks/TASK-report-binding-scope-lock-20260915.md` - 不新增 BUG 编号;只补强 BUG-694 防复发条 - 生产代码一行未改(`calculation_profile_contract.py` / `full_report_quality_gate.py` / `jyotish_engine.py`) - `CHANGELOG.md` 不写(D5) ## 完成 - T1:`test_binding_exclusion_allowlist_is_the_literal_d2_set` 钉死两个常量的完整字面量与顺序。注释写明三类归属,以及改这里要先改任务书并在 BUG-694 补记。 - T2:`BLOCKED.md` 记 timezone 缺口;本机复现同一条测试红,warning 原文一致。未改该断言。未装 `timezonefinder`(仓内已声明,本机 Anaconda 没有;装上只绿本机,不改变验收机缺口)。 - T3:BUG-694 防复发条补了一句字面量合同测试守门。 ## 任务 1 红 / 绿 在 `ALLOWED_BINDING_EXCLUDED_PATHS` 临时加 `"**.generated_by"`: ``` FAILED tests/test_calculation_profile_contract.py::test_binding_exclusion_allowlist_is_the_literal_d2_set AssertionError: assert ('ai_and_audi...generated_by') == ('ai_and_audi...e_expires_at') Left contains one more item: '**.generated_by' RED_EXIT 1 ``` 恢复常量后: ``` . [100%] GREEN_EXIT 0 ``` `git diff scripts/calculation_profile_contract.py` 为空。 ## 定向测试 `tests/test_calculation_profile_contract.py` + `tests/test_full_report_quality_gate.py`:全绿(既有 3 skipped)。 ## `--profile quick` 失败清单 验收机(任务书 §1.2):`739 passed, 1 failed`。 ``` FAILED tests/test_api_server_security.py::test_shadbala_endpoint_returns_ranked_planet_strength WARNING [api_server] shadbala advanced layer failed: timezone inference dependency unavailable assert ['core_sixfold'] == ['core_sixfold', 'advanced_evidence'] ``` 本机隔离复现同一条,warning 原文相同。本机没有项目 `.venv`,Anaconda 还缺 `mcp`,完整 `run_quality_gate.py --profile quick` 会先在 `interpretation_source_inventory_gate` 红掉,跑不到 739 那条汇总;timezone 缺口以隔离命令为准,见 `BLOCKED.md`。