feat: 3.2.17中途变更处理(git驱动) + 3.2.9a Worker git强制 + 3.2.5 Phase7 squash merge + Arc git初始化检测

- 新增 ChangeClassifier(爆炸半径分类:IMPLEMENTATION/INTERFACE/GLOBAL_CONSTRAINT)
- 新增 ImpactPropagator(BFS影响传播:IMPACTED/BOUNDARY/SAFE差异化标记)
- task_graph.py:invalidate_by_adr()差异化失效 + CascadeReport扩展字段(向后兼容)
- eng_mode.py:三阶段差异化流程(分类→传播→失效→git操作→验证任务→重规划)
- eng_mode.py:_git_squash_merge_and_tag() + Phase 7 集成
- do_mode.py:_ensure_all_committed() Worker git操作强制
- adr_watcher.py:内容快照 + get_content_for_classification()
- events.py:ADR_CLASSIFIED/IMPACT_PROPAGATED/BOUNDARY_VERIFICATION_GENERATED
- partial_replanner.py:replan_with_constraints() + generate_verification_tasks()
- project_bootstrap.py:ensure_git_initialized() Arc规划前检测
- test_p1_21_phase2.py:21个新测试,95个全量测试0失败

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
AirPlan
2026-06-15 14:45:41 +08:00
parent a60d1a0c04
commit 9702f1b186
11 changed files with 1351 additions and 82 deletions

View File

@@ -228,7 +228,7 @@ def test_eng_monitor_detects_adr_change():
from air_runtime.modes.eng_mode import _paths
paths = _paths(project_root)
state = safe_json_load(paths["state"]) or {}
changes = _detect_adr_changes(project_root, state)
changes, _watcher = _detect_adr_changes(project_root, state)
assert len(changes) == 0 # 首次只初始化,无变更
# 保存 hash 到 state
@@ -240,7 +240,7 @@ def test_eng_monitor_detects_adr_change():
# 第二次检测
state = safe_json_load(paths["state"]) or {}
changes = _detect_adr_changes(project_root, state)
changes, _watcher = _detect_adr_changes(project_root, state)
assert len(changes) == 1
assert changes[0].adr_id == "ADR-0005"
assert changes[0].kind == "superseded"