# Qwen3.7-Max 开发阶段全量审计报告

**审计模型:** Qwen3.7-Max  
**审计日期:** 2026-06-03  
**审计范围:** V1.0.0 Alpha 全部代码实现 vs 原始需求/基线/设计文档/UML类图  
**审计分支:** GLM5-Achieve  
**代码规模:** 7 个包, 137 个 TypeScript/TSX 源文件, 4 个根配置文件

---

## 0. 审计总览

| 严重程度 | 数量 | 说明 |
|---|---|---|
| CRITICAL | 31 | 架构性缺陷，阻塞核心不变量或导致运行时崩溃 |
| HIGH | 22 | 功能性缺陷，子系统与设计断连或关键逻辑缺失 |
| MEDIUM | 19 | 部分实现偏差，影响完整性但不阻塞骨架 |
| LOW | 12 | 命名/结构偏差、多余类型、文档注释问题 |

**总体评估:** 代码骨架覆盖了 V1.0.0 Alpha 的 8 个阶段目标，monorepo 结构、包分层、SQLite schema、事件注册表均存在。但实现与设计文档之间存在大量结构性偏差，核心子系统（Scheduler 状态机、IPC 协议、安全模型、上下文装配）与冻结基线的匹配度不足 40%。当前代码属于 **Phase 0-1 骨架 + Phase 2-7 桩代码** 状态，多数子系统有类无逻辑或有逻辑但语义不匹配。

---

## 1. 需求覆盖度审计 (requirements.md → 代码)

### 1.1 功能需求 (FR) 覆盖矩阵

| FR ID | 需求 | 覆盖状态 | 说明 |
|---|---|---|---|
| FR-001 | CLI 启动与项目初始化 | PARTIAL | CLI 命令齐全 (11 个)，但 `init` 不创建 17 个规范子目录 |
| FR-002 | 项目本地状态 `.air/` | PARTIAL | ProjectInitializer 存在，但 `.air/shared/plan/docs/` 等子目录缺失 |
| FR-003 | 会话持久化 SQLite | PASS | 17 表、38 索引、WAL/NORMAL/FK-OFF 全部正确 |
| FR-004 | 事件驱动运行时 | PARTIAL | EventStore/EventBus/EventIngestor 存在，但事务边界违反 (F-04) |
| FR-005 | 主代理对话 | PARTIAL | MainAgent 存在但缺 7/13 个状态，分类用正则而非 LLM |
| FR-006 | 架构设计师 | PARTIAL | ArchitectureDesigner 存在但不产出 BlockerReport，不发事件 |
| FR-007 | 调度器与 TaskGraph | FAIL | Scheduler 缺 BLOCKED/CANCELLED 状态，3 个方法缺失，接口不匹配 |
| FR-008 | 独立 Worker 进程 | PARTIAL | 5 个角色均存在，但 WorkerResult 形状不匹配，IPC 协议偏差大 |
| FR-009 | Claude Code 级执行原语 | FAIL | read-before-edit 未强制，工具 schema 字段名大量偏差 |
| FR-010 | ToolRegistry 与内置工具 | FAIL | 28 个 MVP 工具中 16 个缺失 |
| FR-011 | 权限与安全模型 | FAIL | 0/10 cut line 项完全满足；profile/action/grant_scope 类型不匹配 |
| FR-012 | 插件与能力基础 | PARTIAL | CapabilityRegistry 存在但 manifest schema、trust level、依赖模型全部偏差 |
| FR-013 | Provider 层 | PARTIAL | AnthropicAdapter 和 OpenAICompatibleAdapter 存在，能力矩阵仅实现 ~20% |
| FR-014 | 上下文装配与压缩 | FAIL | L6-L9 层缺失，输出非 Anthropic canonical 格式，无冲突检测 |
| FR-015 | 工件与证据管理 | PARTIAL | ArtifactStore 正确实现 temp-rename 流程，EvidenceStore 用内存 map |
| FR-016 | TUI 与 HUD | PARTIAL | 9 个组件齐全，无 OpenTUI renderer，ProjectionStore.rebuild() 为桩 |
| FR-017 | 完整 C++ 开发工作流 | FAIL | CppToolRegistrar 注册工具但 6 个 cpp.* 工具未注册到 ToolRegistry |
| FR-018 | Doctor | PARTIAL | DoctorService 存在但无 provider 检查和平台检测 |
| FR-019 | 日志与诊断 | PARTIAL | Logger 存在但与 DeveloperLogEncryptor 完全断连 |
| FR-020 | 发布门禁 | FAIL | release 命令为桩，无 fixture 项目 |

### 1.2 非功能需求 (NFR) 覆盖矩阵

| NFR ID | 需求 | 覆盖状态 | 说明 |
|---|---|---|---|
| NFR-001 | 本地优先 | PASS | 所有状态在 `.air/` 下 |
| NFR-002 | 可恢复性 | FAIL | Recovery 的 scanOrphanReferences 和 checkPidLiveness 均为桩 |
| NFR-003 | 可扩展性 | PARTIAL | toolchain-* 包模式存在但能力注册不完整 |
| NFR-004 | Provider 灵活性 | PARTIAL | 适配器模式存在但能力矩阵验证不完整 |
| NFR-005 | UI 响应性 | PASS | ProjectionStore 架构正确隔离了 UI 与 DB |
| NFR-006 | 基于证据的完成 | FAIL | 完成门禁未强制，验证桩代码 |
| NFR-007 | Linux 优先 | PASS | 代码无平台特定障碍 |
| NFR-008 | 安全边界保持 | FAIL | PathClassifier 类别错误，无 credential_store 检测 |

---

## 2. 契约包审计 (packages/contracts vs interface-contracts-v1.md)

### 2.1 缺失的契约接口 (15 个)

| # | 契约名 | 设计位置 | 严重程度 |
|---|---|---|---|
| 1 | `EventBus` | SS7 | CRITICAL |
| 2 | `EventStore` | SS7 | CRITICAL |
| 3 | `EventIngestor` | SS7 | CRITICAL |
| 4 | `ContextAssembler` | SS16 | CRITICAL |
| 5 | `EventSchemaRegistry` | SS7 | HIGH |
| 6 | `EventAppendOptions` | SS7 | HIGH |
| 7 | `SessionRecord` | SS6 | HIGH |
| 8 | `MessageRecord` | SS6 | HIGH |
| 9 | `PersistedEventRecord` | SS6 | HIGH |
| 10 | `PersistedEventInsert` | SS6 | HIGH |
| 11 | `EventRepository` | SS6 | HIGH |
| 12 | `ContextAssembleInput` | SS16 | HIGH |
| 13 | `AssembledContext` | SS16 | HIGH |
| 14 | `CompactionPolicy` | SS16 | HIGH |
| 15 | `CompactionResult` | SS16 | HIGH |

### 2.2 字段级偏差

| 契约 | 字段 | 设计 | 代码 | 文件:行 |
|---|---|---|---|---|
| `ProviderCapabilityMatrix` | `supports` | `JsonObject` | `ProviderSupports` (强类型) | provider.ts:70 |
| `ProviderCapabilityMatrix` | `conversion` | `JsonObject` | `ProviderConversion` (强类型) | provider.ts:71 |
| `ProviderCapabilityMatrix` | (额外字段) | 不存在 | `display_name?`, `limits?`, `default_use?`, `notes?` | provider.ts:64,72-74 |
| `ModelRequirement` | `required` | `JsonObject` | `Partial<ProviderSupports>` | provider.ts:146 |
| `ProviderManager` | (额外方法) | 不存在 | `load_config(): Promise<void>` | provider.ts:277 |
| `DoctorIssueSeverity` | (缺失值) | 包含 `"error"` | 缺少 `"error"` | platform.ts:41 |
| `TaskGraph` | `dependencies` | `TaskDependencyRecord[]` | 内联结构等价物 | task.ts:147 |
| `PromptLayerLoader` | 参数类型 | `ProjectContext`, `TaskSpec` | 内联结构子集 | runtime.ts:94-104 |

### 2.3 多余契约 (需 ADR)

`ProviderIdentity`, `ProviderConversionReport`, `ProviderLimits`, `ProviderDefaultUse`, `DoctorIssue`, `DoctorIssueCategory`, `ToolErrorOutput` (来自 error-taxonomy-v1.md 但未实现) 等均为代码中新增但设计文档中不存在的契约。

---

## 3. 存储层审计 (packages/runtime/src/storage/ vs db-schema-v1.md)

### 3.1 会话 DB Schema: 完整 (PASS)

17 个表、38 个索引、3 个 PRAGMA、5 个 schema_meta 种子键全部正确匹配。

### 3.2 CRITICAL 发现

**F-01: DebugKnowledgeStore schema 完全不匹配 db-schema-v1.md §20.1**
- DB 路径: 代码 `.air/shared/debug-records.db` vs 设计 `.air/local/debug-records.db`
- 7 个列名/语义不匹配: `failure_signature` → `signature`, `fix_ref` → `fix_applied`, 缺失 `summary`/`evidence_json`/`verification_json`/`updated_at`/`metadata_json`
- 多余列: `session_id`, `error_kind`, `status`, `resolved_at`
- 索引名不匹配

**F-02: LearnedMemoryStore schema 完全不匹配 db-schema-v1.md §20.2**
- DB 路径: 代码 `.air/shared/learned-memory.db` vs 设计 `.air/local/learned-memory.db`
- 表名: 代码 `learned_memory` vs 设计 `learned_memories`
- 6 个列名/语义不匹配
- 枚举值完全不匹配: 设计 `project_rule|toolchain_rule|skill_update|debug_experience` vs 代码 `pattern|rule|skill|experience`
- 状态枚举不匹配: 设计 `candidate|promoted|archived|rejected` vs 代码 `draft|promoted|archived`

**F-04: EventStore.project() 未将事务句柄传递给仓库**
- `append()` 正确开启事务，但 `project()` 方法接收 `_tx` 参数后从不传给仓库方法
- 违反 db-schema-v1.md §1 规则 8: "持久事件插入与域表更新必须在同一事务中"
- 影响: 域表写入失败时事件行仍会提交，造成不一致状态

**F-05: EventStore 写入无效的 workspace status 值**
- `workspace.created` 写入 `status: 'created'`，但有效枚举为 `active|merged|conflicted|abandoned|cleaned`
- `workspace.merge.started` 写入 `status: 'merging'`，不在枚举中
- 导致 `assertEnumValues` 抛出 AirError，**首次 workspace 创建即崩溃**

**F-06: TaskAttemptRepository.update() 列映射 bug**
- 检查 `patch.failure_signature` 但更新 `failure_summary` 列
- 导致 `failure_signature` 永远不会被更新，`failure_summary` 被静默覆盖

**F-07: EventRepository 路由前缀过滤器使用错误分隔符**
- 过滤用 `.` 拼接，但存储用 `/` 分隔
- 所有路由前缀查询返回零结果

### 3.3 HIGH 发现

**F-08: Recovery.scanOrphanReferences() 为桩** — FK-off 孤儿扫描未实现  
**F-09: Recovery.checkPidLiveness() 为桩** — PID 存活检查未实现  
**F-10: Workspace GC SQL 逻辑错误** — AND/OR 缺少括号，`session_id` 过滤被绕过  
**F-11: EvidenceStore 使用内存 Map** — 重启后证据查询为空  
**F-12: SessionManager.close_session() 不刷新 ui_state** — 违反退出时刷新不变量

### 3.4 MEDIUM 发现

**F-13:** `command.completed` 投影传递 `diagnostic_ids` 但 `command_runs` 表无此列  
**F-14:** EventStore 单例用空 `DatabaseHandle` 初始化  
**F-15/F-16:** 多个仓库在 insert 时硬编码 status，与 EventStore 传递值冲突

---

## 4. 安全模型审计 (packages/runtime/src/security/ vs security-model-v1.md)

### 4.1 路径分类器 (CRITICAL 偏差)

| 设计 PathRiskCategory | 实现 | 状态 |
|---|---|---|
| `project` | `project_source`, `project_config` | 拆分为二 |
| `project_air_shared` | — | **缺失** |
| `project_air_local` | — | **缺失** |
| `credential_store` | — | **完全缺失** (`~/.ssh`, `~/.gnupg` 等均不检测) |
| `unknown` | — | **缺失**; 默认为 `project_config` (过于宽松) |

### 4.2 命令风险分析器 (CRITICAL 偏差)

| 设计 CommandRisk | 实现 | 状态 |
|---|---|---|
| `build_or_test` | — | **缺失** |
| `dependency_install` | — | **缺失** |
| `privilege_escalation` | — | **缺失** |
| `unknown` | — | **缺失** |

**运行时 Bug:** `'sudo_likely' in trimmed` — `in` 操作符在字符串上检查 String 原型属性，永远为 `false`。

### 4.3 权限引擎 (CRITICAL 偏差)

| 设计要素 | 实现 | 状态 |
|---|---|---|
| 4 个 Profile (`low/normal/high/developer`) | 按 agent 类型的 profile | **完全不匹配** |
| 6 个 Action (`allow/deny/ask_user/block/refuse/announce_then_run`) | 7 个 Action (3 个不同) | **缺失 `block/refuse/announce_then_run`** |
| `PermissionGrantScope` (5 级) | **完全缺失** | 无授权范围追踪 |
| `risk_level` 字段 | **缺失** | |
| `backup_required` 字段 | **缺失** | 无写入前备份逻辑 |
| 策略违规 `refuse` | **缺失** | 无拒绝检测 |

**Cut line 合规: 0/10 项完全满足, 4 项部分满足, 6 项不满足。**

### 4.4 SecretRedactor: 良好但有缺口

14 个模式类别覆盖良好。缺失: `.env` 文件路径级检测、云凭证目录模式、`auth_ref` 引用系统、Provider 适配器集成。

---

## 5. 工具注册表审计 (ToolRegistry vs tool-registry-v1.md)

### 5.1 MVP 工具缺失 (16/28 缺失)

| 缺失工具 | 类别 |
|---|---|
| `fs.stat` | 文件系统 |
| `process.kill` | 进程 |
| `git.worktree.create` | Git |
| `git.merge_workspace` | Git |
| `project.scan` | 项目 |
| `project.profile.write` | 项目 |
| `cpp.detect` | C++ 工具链 |
| `cpp.cmake.configure` | C++ 工具链 |
| `cpp.build` | C++ 工具链 |
| `cpp.test` | C++ 工具链 |
| `cpp.static.cppcheck` | C++ 工具链 |
| `cpp.clangd.query` | C++ 工具链 |
| `debug.run` | 调试 |
| `debug.parse_logs` | 调试 |
| `gui.screenshot` | GUI 证据 |
| `network.capture` | 网络证据 |

### 5.2 多余工具 (10 个不在 MVP 索引中)

`git.commit`, `git.branch`, `project.rules`, `project.context`, `artifact.read`, `context.compact`, `permission.check`, `permission.prompt`, `doctor.check`, `doctor.fix`

### 5.3 工具 Schema 偏差 (主要工具)

| 工具 | 设计字段 | 代码字段 | 偏差 |
|---|---|---|---|
| `fs.edit` | `old_string`, `new_string`, `expected_existing_sha256?` | `find`, `replace` | 字段名全部不同，缺安全校验和 |
| `shell.run` | `cwd` (required), `timeout_ms?`, `stdin?`, `capture_mode?`, `purpose?` | `workdir` (optional), `timeout?`, `env?` | 名称/必需性/字段均不匹配 |
| `artifact.create` | `type`, `original_name?`, `content?`, `source_path?`, `associated_entity_type?`, `associated_entity_id?`, `metadata?` | `name`, `type`, `content`, `metadata` | 缺 5 个字段 |
| `context.assemble` | `purpose` (required enum), `refs?`, `token_budget?` | `max_tokens?` | 缺必需 `purpose` 枚举和 `refs` |

### 5.4 ToolRegistry 运行时 Bug

**CRITICAL:** `this.downgrade_to_readonly()` 和 `this.apply_sandbox_restrictions()` 在模块作用域 `ACTION_BRANCHES` 对象中被调用，`this` 不是 ToolRegistry 实例，运行时将抛出异常。

---

## 6. 能力系统审计 (CapabilityRegistry vs capability-trust-v1.md)

### 6.1 Manifest Schema (CRITICAL 偏差)

| 设计字段 | 实现 | 状态 |
|---|---|---|
| `capability_id` | `name` | 重命名 |
| `display_name` | — | **缺失** |
| `source` (CapabilitySource) | — | **完全缺失** |
| `trust_level` (5 级) | `trust_level` (3 级) | **不匹配**: 设计 `built_in/project_local/user_installed/verified_publisher/untrusted` vs 代码 `core/trusted/untrusted` |
| `publisher?` | — | **缺失** |
| `events?` | — | **缺失** |
| `config_schema?` | — | **缺失** |
| `entrypoint?` | — | **缺失** |

### 6.2 依赖模型

设计: 富 `CapabilityDependency` 对象 (7 种 kind、检测器、安装器策略)。  
实现: 简单 `string[]`。所有结构信息丢失。

### 6.3 工具命名空间验证

设计要求 `<capability-id>.<tool-name>` 命名空间，保留内置命名空间。`CapabilityManifestValidator` 无命名空间验证。

---

## 7. 调度器审计 (Scheduler vs scheduler-state-machine-v1.md)

### 7.1 缺失状态 (CRITICAL)

| 设计状态 | 实现 | 状态 |
|---|---|---|
| `BLOCKED` | — | **缺失** |
| `CANCELLED` | — | **缺失** |
| `TERMINATED` | — | **多余** (非设计规范) |

### 7.2 Scheduler 接口不匹配

| 设计方法 | 实现 | 状态 |
|---|---|---|
| `create_tasks(session_id, specs: TaskSpec[])` | `create_tasks({id,type,title,depends_on}[])` | 签名不匹配，缺 `session_id` |
| `add_dependency(session_id, task_id, dep)` | — | **完全缺失** |
| `load_graph(session_id)` | — | **完全缺失** |
| `run_until_idle(session_id): SchedulerRunResult` | `run_until_idle(): SchedulerState` | 返回值类型不匹配 |
| `cancel_task(task_id, reason)` | — | **完全缺失** |

### 7.3 状态逻辑空洞

| 状态 | 设计要求 | 实现 |
|---|---|---|
| DISPATCHING | 4 个动作 (workspace, events, control message, attempt) | 仅标记 running |
| COLLECTING_RESULTS | 5 个动作 (validate, persist, terminal, classify, unblock) | 直通到 MERGING |
| MERGING | 策略选择 (main/worktree/isolated_copy) | 直通到 REVIEWING_WAVE |
| REVIEWING_WAVE | 调度 review 任务 | 直通到 REPAIRING_OR_CONTINUING |

### 7.4 TaskGraph 偏差

- 缺失 `serialization` 依赖类型 (4 种中缺 1 种)
- `soft` 依赖对调度无任何影响
- 冲突依赖不阻止同波次并发
- TaskNode 缺少 `spec`, `assigned_agent_id`, `retry_count`, `workspace_id`

### 7.5 WavePlanner 偏差

- 所有任务分配到 `'default'` write area — write-area 串行化无效
- `wave_id` 为 `number` (Date.now()) 而非设计要求的 `string`
- 无 `workspace_assignments`, `model_assignments`, `reason` 字段
- 8 条波次规划规则中仅 1 条部分实现

### 7.6 RetryPlanner: 死代码

逻辑正确 (重复失败签名升级)，但从未被 Scheduler 调用。

---

## 8. IPC 协议审计 (WorkerProtocol vs interface-contracts-v1.md §10)

### 8.1 缺失 IPC 类型

| 设计 IpcKind | 实现 | 状态 |
|---|---|---|
| `control` | — | **缺失** (个别控制消息存在但无 `control` 信封) |
| `log` | — | **完全缺失** |
| `tool.stream` | — | **完全缺失** |
| `protocol.error` | — | **缺失** (用非标准 `worker.error` 替代) |

### 8.2 信封形状不匹配

设计 `IpcEnvelope` 有 9 个字段: `id, direction, kind, timestamp, session_id, agent_id, correlation_id?, protocol_version, payload`  
实现 `WorkerMessage` 有 5 个字段: `id, type, direction, timestamp, payload`  
**缺失:** `kind`, `session_id`, `agent_id`, `correlation_id`, `protocol_version`

### 8.3 握手顺序反转

设计: 父进程先发 `agent.start`，worker 回 `worker.ready`  
实现: worker 先发 `worker.ready`，父进程后发 `agent.start` — **顺序相反**

---

## 9. 主代理状态机审计 (MainAgent vs main-agent-state-machine.md)

### 9.1 缺失状态 (7/13)

| 设计状态 | 实现 | 状态 |
|---|---|---|
| `CLASSIFYING` | — | **缺失** |
| `SCHEDULING` | — | **缺失** |
| `ARCHITECTURE_DESIGNING` | — | **缺失** |
| `CONFIRMING` | — | **缺失** (用 `AWAITING_CONFIRMATION` 替代，语义不同) |
| `EXECUTING` | — | **缺失** |
| `INTERRUPTING` | — | **缺失** |
| `ARCHITECTURE_REVISING` | — | **缺失** |

### 9.2 其他偏差

- 分类用正则而非 LLM
- Direct Mode `/direct`/`/done` 不完整
- SUMMARIZING 不触发 ExperienceMiner
- 无 `requirement.changed` 处理

---

## 10. Worker 角色审计 (packages/workers/ vs 设计)

### 10.1 结果形状不匹配

所有 5 个角色均返回局部结果类型而非设计要求的 `WorkerResult<T>` 信封:

| 角色 | 设计要求 | 实际返回 |
|---|---|---|
| Executor | `WorkerResult<ExecutorResult>` (12 字段) | `{status, changes?, verification?, error?}` (4 字段) |
| Reviewer | `WorkerResult<ReviewerResult>` + `verdict` 枚举 | `{status, findings[], summary}` |
| Debugger | `WorkerResult<DebuggerResult>` + `BlockerReport?` | `{status, root_cause, fix_applied?, evidence_refs}` |
| Compactor | `WorkerResult<CompactorResult>` + `summary_id` | `{status, summary_content, tokens_freed}` |
| ExperienceMiner | `WorkerResult<ExperienceMinerResult>` + `MemoryCandidate[]` | `{status, entries[], summary}` |

### 10.2 执行纪律缺失

- read-before-edit 未强制
- 完成门禁 (verification pass or explicit skip) 未强制
- DebuggerRole 不查 DebugKnowledgeStore
- ExperienceMiner 触发路径未接入 Scheduler

---

## 11. LLM Provider 层审计 (packages/llm/ vs provider-capability-matrix-v1.md)

### 11.1 能力矩阵覆盖度: ~20%

缺失:
- `quality_tier`, `cost_tier` 字段未在矩阵中使用
- 17 个 `supports` 字段中仅 5 个实现
- 整个 `conversion` 块、`limits` 块、`default_use` 块缺失
- `ProviderKind` 分类未使用
- Fallback 策略、调度器分配模式缺失

### 11.2 Provider 配置安全

代码直接存储 `api_key` 原始值，设计要求 `auth_ref` 间接引用，密钥永不进入 session DB/events/artifacts。

### 11.3 LLM 包未引用 contracts

`packages/llm` 在本地定义所有类型而非从 `packages/contracts` 导入，违反了基线 §4 依赖方向规则。

---

## 12. 上下文装配审计 (ContextAssembler vs prompt-layering-v1.md)

### 12.1 层级缺失 (4/10)

| 层 | 设计 | 实现 | 状态 |
|---|---|---|---|
| L0 System | 系统身份 | 硬编码字符串 | PARTIAL |
| L1 Capability | 能力声明 | 存在 | PASS |
| L2 Safety | 安全规则 | 硬编码 | PARTIAL |
| L3 Project Rules | 项目规则 | 存在但路径错误 | PARTIAL |
| L4 Architecture | 架构上下文 | 存在 | PASS |
| L5 Plan/Task | 计划/任务 | 存在 | PASS |
| L6 Evidence | 证据上下文 | — | **缺失** (TODO) |
| L7 Conversation | 对话历史 | — | **缺失** (TODO) |
| L8 Tool Output | 工具输出 | — | **缺失** (TODO) |
| L9 Immediate | 即时指令 | — | **缺失** (TODO) |

### 12.2 输出格式

设计要求输出 Anthropic canonical messages。实现输出自定义 `PromptLayer[]` 结构，未转换为 canonical 格式。

### 12.3 冲突检测: 缺失

设计要求层间冲突报告 (如安全规则与项目规则矛盾)。实现无任何冲突检测。

### 12.4 CompactionPolicy: 无 copy-on-write

设计要求 copy-on-write 压缩，保留回溯引用。实现仅有阈值检查，无工件持久化，无回溯保留。

---

## 13. TUI/HUD 审计 (packages/tui/ vs 设计)

### 13.1 组件覆盖: 完整

9 个视图组件全部存在: SessionView, TaskListView, AgentStatusView, ToolRunView, DiffView, PermissionPrompt, BlockerReport, HudView + TuiApp。

### 13.2 缺口

- 无 OpenTUI renderer 集成 (组件定义但无渲染引擎)
- 无对话消息渲染表面
- PermissionPrompt/BlockerReport 无路由连接
- ProjectionStore.rebuild() 为桩 — 仅处理 5 种事件类型
- HUD 预设 (Full/Essential/Minimal) 未实现

---

## 14. C++ 工具链审计 (packages/toolchain-cpp/ vs FR-017)

### 14.1 组件存在但断连

- `CppProjectDetector`, `CppBuilder`, `CMakeConfigurator`, `CppTestRunner`, `DiagnosticParser`, `ClangdClient`, `CppcheckRunner` 均存在
- `CppToolRegistrar` 注册了工具定义但 **未注册到 ToolRegistry** (与 FR-010 的 16 个缺失工具一致)
- `ClangdClient` 方法全部为桩
- 源文件发现返回空数组

### 14.2 安全风险

`CppBuilder.build()` 和 `CppTestRunner.run()` 使用 `execSync` 字符串拼接，存在命令注入风险。

---

## 15. CLI 命令审计 (packages/cli/ vs 设计)

### 15.1 命令覆盖: 完整 (PASS)

所有 11 个必需命令存在: `init`, `run`, `doctor`, `provider`, `resume`, `compact`, `history`, `session`, `restore`, `e2e`, `release`。

### 15.2 init 命令偏差

- 不创建 17 个规范 `.air/` 子目录
- 直接写文件系统，绕过 ToolRegistry/PermissionEngine (违反 INV-3)

### 15.3 额外包

代码中存在 `packages/workers/` 包，不在基线 §4 的规范包列表中。这是一个合理的分离 (worker 入口点独立于 runtime)，但需要 ADR 记录。

---

## 16. 运行时语义合规审计 (vs runtime-semantics-v1.md)

| 不变量 | 合规 | 说明 |
|---|---|---|
| INV-1: 持久事件+域表同事务 | FAIL | F-04: EventStore.project() 不传事务 |
| INV-2: EventIngestor 不创建调度任务 | PASS | |
| INV-3: 副作用经 ToolRegistry/PermissionEngine | FAIL | init 直接写 FS |
| INV-4: EventBus handler 错误不中断订阅 | PASS | |
| INV-5: 临时事件合并 | PASS | 5 秒窗口正确 |
| INV-6: 工件 temp-rename 原子写 | PASS | |
| INV-7: Workspace GC 策略 | PARTIAL | GC 逻辑正确但 SQL 有 bug (F-10) |
| INV-8: Agent heartbeat 持久化 | FAIL | 仅内存，不写 DB |
| INV-9: ExperienceMiner 4 种触发路径 | FAIL | 0 种实现 |
| INV-10: read-before-edit 强制 | FAIL | 未实现 |
| INV-11: 完成门禁强制 | FAIL | 未实现 |

---

## 17. 正面发现 (代码与设计匹配的部分)

1. **Monorepo 结构正确:** Bun workspace + Turborepo，7 个包分层清晰
2. **SQLite Schema 完整:** 17 表、38 索引、PRAGMA、schema_meta 完全匹配
3. **事件注册表完整:** 54 个持久事件 + 7 个临时事件全部注册
4. **Enum 验证完整:** 18 个闭枚举全部覆盖
5. **ArtifactStore 原子写入正确:** temp → sha256 → rename → event 流程完整
6. **EventBus 错误隔离正确:** handler 异常不中断订阅
7. **临时事件合并正确:** 7 种临时事件类型全部识别，5 秒窗口
8. **EventIngestor 分离正确:** 持久/临时路径分离，不创建调度任务
9. **SecretRedactor 覆盖良好:** 14 种凭证模式
10. **CLI 命令完整:** 11/11 必需命令
11. **WorkspaceManager GC 保留策略正确:** merged 7 天, abandoned 3 天
12. **Heartbeat 合并窗口正确:** 5 秒
13. **RetryPlanner 失败签名升级逻辑正确:** (但未接入)
14. **所有 16 个仓库 CRUD 操作完整:** get/insert/update + 领域查询方法

---

## 18. 修复优先级建议

### P0 (立即修复 — 阻塞核心不变量)

1. **F-04: EventStore 事务边界** — 将 `_tx` 传递给所有仓库方法
2. **F-05: Workspace status 枚举值** — `'created'` → `'active'`, `'merging'` → metadata
3. **F-06: TaskAttemptRepository 列映射** — `failure_summary` → `failure_signature`
4. **F-07: EventRepository 路由分隔符** — `.` → `/`
5. **ToolRegistry `this` 绑定 bug** — 重构 ACTION_BRANCHES 为方法调用
6. **CommandRiskAnalyzer `in` 操作符 bug** — `'sudo_likely' in trimmed` → `trimmed.includes('sudo')`

### P1 (短期修复 — 功能性缺陷)

7. **F-01/F-02: 项目级 DB schema** — 对齐 DebugKnowledgeStore 和 LearnedMemoryStore
8. **补全 15 个缺失契约接口** — EventBus/EventStore/EventIngestor/ContextAssembler 等
9. **PathClassifier 类别对齐** — 添加 `credential_store`, `project_air_shared/local`, `unknown`
10. **PermissionEngine 类型对齐** — 4 profile, 6 action, grant scope
11. **Scheduler 状态机补全** — BLOCKED/CANCELLED 状态, cancel_task, load_graph
12. **IPC 信封补全** — 添加 5 个缺失字段, 修正握手顺序
13. **注册 16 个缺失 MVP 工具** — fs.stat, process.kill, cpp.*, debug.*, gui.*, network.*
14. **Main Agent 状态机补全** — 7 个缺失状态

### P2 (中期修复 — 完整性)

15. **ContextAssembler L6-L9** — 补全 4 个缺失层
16. **Provider 能力矩阵** — 补全 ~80% 缺失字段
17. **Worker 结果形状对齐** — 统一为 `WorkerResult<T>` 信封
18. **Capability manifest 对齐** — 5 级 trust, 富依赖模型, 命名空间验证
19. **Recovery 实现** — 孤儿扫描、PID 存活检查
20. **EvidenceStore 持久化** — 从 EvidenceRepository 查询而非内存 Map

### P3 (长期 — 质量与文档)

21. **ADR 记录** — workers 包、Provider 类型强化、Doctor 扩展等设计偏差
22. **DoctorIssueSeverity** — 添加缺失的 `"error"` 值
23. **工具 Schema 对齐** — fs.edit, shell.run, artifact.create 等字段名/类型
24. **Scope Escalation 实现** — ScopeImpactLevel, BlockerReport 集成
25. **TUI renderer 集成** — OpenTUI/Solid 渲染引擎接入

---

## 19. 与设计文档冻结基线的一致性总结

| 基线文档 | 一致性 | 主要偏差 |
|---|---|---|
| interface-contracts-v1.md | 65% | 15 个契约缺失，Provider 字段偏差 |
| db-schema-v1.md | 85% | 2 个项目级 DB 完全不匹配，事务边界违反 |
| event-registry-v1.md | 95% | 事件计数注释偏差 1，其余完整 |
| tool-registry-v1.md | 40% | 16/28 MVP 工具缺失，schema 字段名偏差 |
| security-model-v1.md | 20% | 分类器/权限/Profile 类型全面偏差 |
| capability-trust-v1.md | 30% | Manifest schema、trust level、依赖模型不匹配 |
| scheduler-state-machine-v1.md | 35% | 缺 2 状态、3 方法、3 空状态、依赖类型缺失 |
| main-agent-state-machine.md | 45% | 缺 7/13 状态 |
| prompt-layering-v1.md | 50% | L6-L9 缺失，输出格式不匹配 |
| provider-capability-matrix-v1.md | 20% | 能力矩阵仅实现 ~20% |
| runtime-semantics-v1.md | 40% | 11 个不变量中 5 个违反 |
| error-taxonomy-v1.md | 90% | ErrorKind/AirError 匹配，ToolErrorOutput 缺失 |
| artifact-naming-v1.md | 80% | ArtifactStore 路径正确，命名规范部分偏差 |
| scope-escalation-v1.md | 10% | ScopeImpactLevel/BlockerReport 未实现 |
| cross-platform-matrix-v1.md | 80% | 平台检测类型存在但 Doctor 未使用 |
| C4 module.md | 85% | 包结构匹配，workers 包为额外添加 |
| C4 code-view.md | 90% | contracts 文件结构匹配 |
| solution-architecture.md | 55% | 分层架构存在，Agent 交互链不完整 |
| system-overview-design.md | 50% | 子系统存在但连接断 |
| system-detailed-design.md | 45% | 类存在但方法签名/状态机偏差大 |

---

## 20. 结论

当前 V1.0.0 Alpha 代码实现处于 **骨架基本就位、语义大面积偏差** 的状态。monorepo 结构、SQLite schema、事件注册表等基础设施质量较高，但核心运行时子系统（Scheduler、IPC、Security、Context）与冻结基线之间存在结构性分歧。

**最高风险项** 是 EventStore 事务边界违反 (F-04)，它会导致每个持久事件的域表更新在事务外执行，破坏数据一致性不变量。其次是 workspace status 枚举错误 (F-05) 会导致首次 workspace 创建即崩溃。

建议在继续 Phase 2-8 实现之前，先完成 P0 和 P1 修复，确保核心不变量和接口契约与设计文档对齐。

---

*审计完毕。本报告由 Qwen3.7-Max 独立生成，可与其他模型审计报告进行交叉比对。*
