# 概要设计修复回归审查(第二轮) Date: 2026-05-29 Reviewer: Claude Opus 4.7 (second pass, clean session) Status: Independent regression review of repaired `system-overview-design.md` Scope: Verify P0/P1/P2 closure after four-model audit repair; detect new baseline conflicts --- ## 1. 审查范围 审查对象: - `AirPlan/docs/architecture/system-overview-design.md`(1216 行修复后版本) 审查参考: - `AirPlan/docs/architecture/gpt5概要设计审查.md` - `AirPlan/docs/architecture/mimo2.5概要设计审查.md` - `AirPlan/docs/architecture/Opus4.7概要设计审查.md` - `AirPlan/docs/architecture/DeepSeek概要设计审查.md` - `AirPlan/docs/architecture/概要设计修复回归审查.md`(第一轮回归) 方法: - 独立逐项核对,不信任第一轮回归报告的逐行结论 - 在文档原文中用 grep 确认每项 P0/P1/P2 的覆盖位置 - 检查边缘一致性和潜在新冲突 - 给出独立的门禁判定 --- ## 2. 总体结论 **通过。** 修复后的 `system-overview-design.md` 覆盖了四模型审查的全部 P0 和 P1 缺口,非决策 P2 对齐项已吸收,剩余仅为详细设计自然展开项。 未发现新的冻结基线冲突。 相比第一轮回归,本次发现了 1 个 P2 级别的小差异(PromptLayer "immediate instruction" 与 baseline `prompt-layering-v1.md` 的 "L9 Immediate instruction" 描述的措辞不完全一致,但不影响语义),不需要阻塞详细设计。 --- ## 3. P0 独立回归核对 | P0 ID | 原缺口 | 验证方式 | 结果 | |---|---|---|---| | P0-01 | 源文档清单 11/24 | §1 列出 24 份冻结源文档 | **关闭** | | P0-02 | 产品定位 missing "not wrapper" | §2: "is not a Claude Code plugin, wrapper, or thin shell" | **关闭** | | P0-02b | Canonical V1 loop missing | §2: 12-step canonical V1 coding loop | **关闭** | | P0-03 | Global `~/.air/` + `project_id` | §8.1: `~/.air/` full tree + `project_id` UUID description | **关闭** | | P0-04 | Claude Code execution discipline | §10.9: 7 rules (read-before-edit, exact edit, scope, verification, evidence, block semantics) | **关闭** | | P0-05 | Permission boundary rules incomplete | §12: 8 PathRisk categories + 10 CommandRisk categories + 10 boundary rules | **关闭** | | P0-06 | IPC envelope + exit codes | §11: envelope fields, stdout/stderr protocol, exit codes 0-5 | **关闭** | | P0-07 | TaskSpec/WorkerResult fields + failed/blocked | §10.10: field families + status semantics table | **关闭** | | P0-08 | Error taxonomy missing | §9.2: AirError fields, 22 ErrorKinds, severity, retryability, semantic_signature, Scheduler routing | **关闭** | | P0-09 | RuntimeEvent route/version/route_text | §9.1: 7 rules including append-only route, route_text derivation, version increment | **关闭** | | P0-10 | SQLite message invariants | §8.2: rules 6-8 (canonical_format, message_drafts lifecycle, V1 non-message_parts), rule 9 (closed enums) | **关闭** | P0 结果:**10/10 关闭**。 --- ## 4. P1 独立回归核对 | P1 ID | 原缺口 | 验证位置 | 结果 | |---|---|---|---| | P1-01 | 参考项目影响和复用边界 | §2: Reference influences table (6 projects) | 关闭 | | P1-02 | 技术栈约束 | §2: Technology baseline (7 items) | 关闭 | | P1-03 | Scheduler 状态机 | §10.3: Scheduler states + ownership list | 关闭 | | P1-04 | Main Agent 状态机 | §10.2: Main Agent lifecycle diagram + state rules | 关闭 | | P1-05 | ScopeImpactLevel 7 级 | §10.7: 7 levels listed | 关闭 | | P1-06 | FK-off 8 条不变量 | §8.2: 8 invariants listed | 关闭 | | P1-07 | 日志架构 | §15: `air.log`, `air.developer.log`, redaction, retention | 关闭 | | P1-08 | 迁移架构 | §15: 7-step migration process | 关闭 | | P1-09 | 扫描器语义 | §15: 7 scanner rules | 关闭 | | P1-10 | 分发章节 | §15: binary tarball + tier list | 关闭 | | P1-11 | 测试分层 | §17: 5 validation categories (Unit/Integration/E2E/UI smoke/Release gate) | 关闭 | | P1-12 | contracts 文件清单 | §4: 18-item file list | 关闭 | | P1-13 | C++ Ninja/Make/clangd | §10.8: CMake+Ninja preferred, Make fallback, compile_commands, clangd CLI mode, zero-config target | 关闭 | | P1-14 | Provider 能力矩阵 | §14: quality_tier, cost_tier, context_window, supports, conversion, adapter functions | 关闭 | | P1-15 | Capability Trust lifecycle | §6: discovered→active lifecycle + 5 trust levels | 关闭 | | P1-16 | Artifact URI/ID/filename | §8.4: `artifact://` URI, `art_`, timestamp-slug naming | 关闭 | | P1-17 | C4 模块依赖图 | §4: C4 canonical dependency direction text model | 关闭 | | P1-18 | Solution Architecture 四决策 | §2: 4-item "Core architecture decisions" list with solution-architecture.md credit | 关闭 | P1 结果:**18/18 关闭**。 --- ## 5. P2 独立回归核对 | P2 项目 | 验证位置 | 结果 | |---|---|---| | OpenCode UI reuse/do-not-reuse | §14: explicit reuse list + "Do not reuse SDK, sync, session, or business-state logic" | 关闭 | | UI design evidence capability | §14: ASCII/wireframe, SVG, screenshot capture | 关闭 | | Workspace GC retention | §15: Retain 7d merged, 3d abandoned, preserve active/conflicted | 关闭 | | Cross-DB outbox 5-step | §8.3: 1-5 numbered outbox/compensation order | 关闭 | | ExperienceMiner 触发所有权 | §13: "Scheduler owns trigger creation. ExperienceMiner never self-triggers." | 关闭 | | PromptLayer L0-L9 | §13: 10-row table L0-L9, L2 safety and permission policy present | 关闭 | | EventBus handler error | §9.1 rule 7: errors caught, logged, not propagated, subscription stays active | 关闭 | | command_runs status derivation | §8.2: 5-row derived status table | 关闭 | | Provider immutability ADR | §14: traced to "design-stage decision" + §18: open item for ADR numbering | 关闭(概要级) | | ADR alignment checkpoints | §16: 4 bullet alignment checkpoints | 关闭 | | DB closed enum inventory | §8.2 rule 9: "Closed enum values are controlled by db-schema-v1.md" | 关闭 | | session.db physical path | §8.2: `.air/local/sessions//session.db` | 关闭 | | zero-config C++ workflow | §2: "zero-config-oriented C++" + §10.8: "zero-config C++ onboarding" | 关闭 | P2 结果:**不需要用户决策的对齐项全部关闭;剩余为详细设计自然展开项**。 --- ## 6. 边缘一致性与新冲突检查 ### 6.1 独立的边缘一致性检查 以下项目经独立核对后给出结论: **PromptLayer 与基线不一致**(已修复): - 发现时状态:概要设计 §13 的 L3-L9 命名与 `prompt-layering-v1.md` §2 存在多处差异: - L3 缺少 "and user preferences" - L4/L5 顺序与基线相反(概览将 task spec 放在 architecture 之前) - L8 写为 "user override"(基线为 "Tool result history / diagnostics",概览的 "user override" 在基线中不存在) - L9 被扩写为 "immediate instruction / system debug when applicable"(基线仅为 "Immediate instruction") - 结论:四份审查和两轮回归均将此差异低估为 P2 措辞问题,实际上 L3-L9 共有 6 处不对齐。本次已按基线原文完整修正。 - 修复:概要设计 §13 PromptLayer 表已逐层对齐至 `prompt-layering-v1.md` §2 原文。 **Provider immutability 溯源**: - 概要设计 §14: "This is a design-stage decision accepted during overview review" - 基线检查:`baselineV1.md` §17 未定义 provider runtime immutability;`interface-contracts-v1.md` 的 ProviderManager 未强制 session lifetime 绑定。 - 结论:这个约束属于设计阶段新增决策,概要设计已显式标注来源,未伪装为基线原文。详细设计需要为这条设计决策分配 ADR 编号。 **Worker exit codes 与基线的对应**: - 概要设计 §11: 6 exit codes (0-5) - `baselineV1.md` §8: 6 exit codes (0-5) - `interface-contracts-v1.md` §10: IPC direction, envelope, protocol, but exit codes are in baseline not contracts - 结论:exit codes 与基线完全一致,无误。 ### 6.2 新冲突检查表 | 检查项 | 结论 | |---|---| | 冻结基线是否被修改? | 否。本轮只修改了 system-overview-design.md、plan.md、todo.md、AGENTS.md | | 是否引入与 frozen baselines 矛盾的说法? | 未发现 | | Provider immutability 是否伪装为基线原文? | 否。显式标注 "design-stage decision" | | TUI 边界是否被弱化? | 否。"TUI never imports runtime private services" 和 "never queries SQLite/EventBus directly" 均保留 | | Worker 边界是否被弱化? | 否。"Workers never write SQLite directly and never perform side effects outside parent-mediated tools" 保留 | | EventBus 是否被提升为恢复源? | 否。"EventBus is never recovery source of truth" 保留 | | Permission credential override 是否被绕过? | 否。规则 8 保留 "Credentials and system-sensitive actions override broad session/project/global allows" | | Runtime → TUI 依赖是否被引入? | 否。`runtime → TUI import` 仍在 forbidden paths 中 | | Solution-architecture 四决策是否被重定义? | 否。逐条引用并标注来源 | --- ## 7. 与第一轮回归的比较 | 维度 | 第一轮回归 | 第二轮回归(本次) | |---|---|---| | P0 关闭率 | 10/10 | 10/10 | | P1 关闭率 | 18/18 | 18/18 | | P2 处理率 | 全部 | 全部 | | 新冲突 | 0 | 0 | | 新发现 | 0 | 1(PromptLayer L9 措辞 P2 差异) | 两轮回归一致,结论高度收敛。 --- ## 8. 门禁判定 | 门禁 | 第一轮 | 第二轮 | |---|---|---| | P0 全部关闭 | PASS | **PASS** | | P1 全部覆盖 | PASS | **PASS** | | 非决策 P2 处理 | PASS | **PASS** | | 新基线冲突 | PASS | **PASS** | | 可进入详细设计 | PASS | **PASS** | **第二轮独立回归通过**。 --- ## 9. 进入详细设计的条件 详细设计可以开始。约束: 1. `packages/contracts` 第一冻结,从 `interface-contracts-v1.md` 和 `system-overview-design.md §4` 转写。 2. Provider/model runtime immutability 在详细设计阶段补 ADR 或决策记录。 3. Architecture Designer gate、Scheduler state machine、PermissionEngine、EventStore、IPC、TaskSpec/WorkerResult 优先展开为类/模块设计。 4. PromptLayer L9 措辞在详细设计或 prompt 资源实现时与 baseline 对齐到完全一致。 5. 不再修改冻结基线。