Contract-test the D2 exclusion tuples so widening them cannot silently pass. Record the timezonefinder quality-gate gap in BLOCKED.md.
2.3 KiB
2.3 KiB
进度 · 绑定排除集字面量锁 + 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。