feat: AirPlan V2 — 全专家插件强制路由 + 事件系统规范化

P0-8 扩大: do_mode.py finish_worker 全专家插件强制路由
- GUI→XDB, network→NDB, C/C++→SDB, done→Rvr, blocked/failed→Dbg
- 证据去重: 已有 xdbSessions/ndbSessions/sdbReports/rvrReviewed 则跳过

P1-GAP17: 事件 emit 规范化
- 新增 7 个事件常量 (TASK_ENTERED, TASK_FINISHED, ENGINE_ENTERED 等)
- 全部 emit 调用替换字符串字面量为常量,零残留
- 30 个事件类型常量全部定义且唯一

P1-GAP18: 事件日志原子轮转
- emit 计数器每 128 次检查轮转,避免每次 emit 读文件
- 清除未使用的 _emit_with_completion/_pending_merge_complete
- 原子轮转: tempfile+os.replace 保证不损坏

eng 极端接管: 强制调用全部专家插件 (Dbg/XDB/NDB/SDB/Rvr)
commands/do.md: 更新为全专家插件路由文档

全量测试: 69 通过, 0 失败

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
AirPlan
2026-06-12 15:56:44 +08:00
commit 6130478c96
73 changed files with 10622 additions and 0 deletions

20
lib/air_runtime/__init__.py Executable file
View File

@@ -0,0 +1,20 @@
# air_runtime — AirPlan V2 核心运行时库
from air_runtime.io import atomic_json_write, safe_json_load
from air_runtime.lock import FileLock
from air_runtime.utils import ordered_unique, session_stamp, normalize_policy, sanitize_task_id, sanitize_marker
from air_runtime.events import EventLog
from air_runtime.task_graph import TaskGraph, PlanDelta
from air_runtime.worktree import WorktreeIsolation, RegionConflictDetector, ConflictLevel
from air_runtime.evidence_gate import EvidenceGatePolicy, EvidenceClass
from air_runtime.contracts import now_iso, WorkerResult, TaskRecord, DeploymentRecord
from air_runtime.paths import (
airplan_root, todo_path, plan_path,
state_root, engine_state_path, worker_state_path,
arc_state_path, dbg_state_path, xdb_state_path,
sdb_state_path, ndb_state_path, ctx_state_path,
dep_state_path, tst_state_path, sec_state_path, rvr_state_path,
required_project_artifacts,
)
__version__ = "2.0.0"