feat: P1-21 ADR 变更级联失效 — 架构变更自动失效已完成任务

- TaskNode 新增 adr_refs 字段(ADR→任务溯源链)
- 新增 INVALIDATED 状态,允许覆盖 DONE/DISPATCHED
- TaskGraph.invalidate_by_adr() 级联失效 + BFS 下游传播
- PlanDelta 新增 rollback_ref(回滚快照引用)
- CascadeReport 数据结构(失效统计 + 任务ID列表)
- Eng dispatch_frozen 冻结调度,ready_tasks() 返回空
- handle_adr_invalidation() 10步处理流程(含 git revert)
- unfreeze_after_replan() Arc 重新规划后解冻
- AirRvr check_invalidated_cleanup() 检查旧代码残留
- INV-15 + L1 保障项 15 写入 SKILL.md
- 11 项功能测试全通过,含 ffmpeg→gstreamer 完整场景

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
AirLongDian
2026-06-11 11:13:53 +08:00
parent 19a4550830
commit f2f49d0094
6 changed files with 709 additions and 5 deletions

View File

@@ -90,6 +90,14 @@ AirDo 处理 UI 任务时必须使用 frontend-design Skill
- frontend-design Skill 不存在则自动安装
- 安装失败时阻止任务执行
### INV-15 ADR 变更级联失效
架构方案变更(如 ffmpeg → gstreamer基于旧 ADR 已完成的任务必须自动失效:
- TaskGraph 维护 ADR→任务溯源链adr_refs
- ADR 变更时级联失效所有相关任务(含已完成和下游依赖)
- 调度冻结直到 Arc 重新生成受影响部分的任务
- 自动 git revert 已合并的旧代码
- AirRvr 终审检查 INVALIDATED 任务代码是否已清理
## L1 代码级保障(不依赖 LLM 自觉)
以下功能由引擎代码强制执行SKILL.md 指令仅作辅助:
@@ -108,6 +116,7 @@ AirDo 处理 UI 任务时必须使用 frontend-design Skill
12. **边界测试强制**`air_runtime/modes/arc_mode.py:_inject_boundary_tests()` 为每个模块注入测试任务
13. **block-release 阻止派发**`air_runtime/modes/eng_mode.py:dispatch_worker_group()` 检查 deliveryVerdict
14. **UI Skill 路由**`air_runtime/modes/do_mode.py:route_ui_task()` 检测并确保 frontend-design Skill
15. **ADR 级联失效**`air_runtime/task_graph.py:invalidate_by_adr()` ADR 变更时级联失效 + `air_runtime/modes/eng_mode.py:handle_adr_invalidation()` 调度冻结 + git revert
## 使用示例