1fa91cf73d
Five tasks, with the ARCHITECTURE section 6.1 revision first so the code never contradicts the single source of truth, and the reparenting kept atomic because scope is a required keyword argument and any split would leave an unrunnable tree. The Codex review caught that the planned test evidence pointed at the wrong stubs: the ones at test_backpressure.py:176-186 cover accounting-side degradation, not the three gate paths that actually leak to callers, and try_acquire and try_enter have no stub at all.
2.8 KiB
2.8 KiB
type, node_id, title, date
| type | node_id | title | date |
|---|---|---|---|
| plan | plan:governance-backend-error | 实现计划: 治理后端故障归位为 scope 级不可用(Issue #7) | 2026-08-06 |
实现计划: 治理后端故障归位为 scope 级不可用(Issue #7)
全文见 2026-08-06-governance-backend-error-plan.md。实现设计 governance-backend-error(已批准 2026-08-06)。
五个任务
| # | 任务 | 关键约束 |
|---|---|---|
| T1 | ARCHITECTURE.md §6.1 回补两行 + reason 值域扩为 6 值 |
必须先行——单一事实源纪律,先改代码后补文档等于让实现与事实源脱节(设计 §8.1) |
| T2 | errors.py 纯增量: 新常量、新 reason、SourceNotConfiguredError + 顶层导出 |
刻意不动 GovernanceBackendError,故全套件保持通过,可独立提交 |
| T3 | GovernanceBackendError 归位 + 22 处构造点 + gate scope 注入 + 全部受影响测试 |
必须原子: scope 是必填 keyword,分批提交的中间状态会 TypeError |
| T4 | README 公开错误面两列表 + 迁移文档补注 | issue #7 的第二诉求,作者认为比第一条更值得改 |
| T5 | 版本 1.1.0 + CHANGELOG + Wiki 同步 | 加父类是扩大不是破坏,故 minor 而非 major |
保真校验(适用)
触及 ARCHITECTURE §1.4 的移植蓝本(CHS app/domain/errors.py 与 app/coordination/)。本次有意变更的语义仅一条(GovernanceBackendError 的类型归属);retry_after_s 非可选语义、两个 reason 值域、fail-closed 方向、记账/闸门分工、RedisPermit 释放侧降级五条不得被顺带改动,每任务完成前逐条自查。
独立审查修正(2026-08-06, Codex)
4 条意见全部核实属实并已折回:
- T3 测试证据定位错误(重要)——原写"复用
test_backpressure.py:176-186的注入桩"覆盖三条泄漏路径,实测那三个桩是record_success/record_failure/mark_progress的记账侧降级,与闸门路径无关;try_acquire/try_enter全无覆盖。已改为"三条桩都要新增"并写明现状。 - T3 漏了既有测试构造点(重要)——新签名 keyword-only 必填,
test_backpressure.py:176/181/186、test_errors.py:89的裸GovernanceBackendError("...")与:255/:257的QuotaGate(_L())漏改即TypeError。已补一张同批更新清单。 __all__插入位置写反(次要)——按字母序应在SourceDeadError之后而非之前。已改。- 设计中 telemetry 行号过时(次要)——
:210→:250,系本分支加_AttemptUsage造成的漂移。设计与摘要页已同步更新。
Codex 同时独立核实了计划的可执行性锚点: 22 处构造点、三处 gate 装配、后端层 self._scope 位置、README/ARCH 章节行号,均与 src/ 现状相符。