fix: Windows兼容性修复 + P1-24弱模型优化 + 3.2.9b禁止降级方案 + AirRvr三层审查放行标准
- lock.py: 跨平台进程锁(Unix fcntl / Windows msvcrt / O_CREAT|O_EXCL降级)
- eng_mode.py/eng_orchestrator.py: hasattr(os, "getloadavg") Windows防护
- arc_mode.py: 路径分隔符 replace("\\", "/") Windows兼容
- deploy_runtime.py: 修复语法错误(清理 import tempfile 残留)
- P1-24(3.2.18): AMBIGUOUS_VERBS歧义词检测 + SAFE_VERBS安全动词 + validate_task_description()
- TaskNode.keep_constraints 保留约束字段 + JSON序列化
- _build_graph_from_todo 返回歧义警告 + Arc自检集成
- 3.2.9b: FORBIDDEN_DEGRADATION_PATTERNS + check_forbidden_degradation()
- AirRvr三层审查放行标准: ReviewVerdict + evaluate_review_pass() + is_forbidden_pass_reason()
- commands/arc.md: 弱模型安全重写(操作类型拆分+保留约束+自检)
- commands/do.md/eng.md/rvr.md: 禁止降级方案 + 三层审查标准
- 测试: 7个新测试 + 74全量通过
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -56,14 +56,35 @@ ArcPhaseGate 控制 execution-plan.json 写入权限。phase 默认 `discussing`
|
||||
|
||||
**推进方式**:用户说"确认"/"可以"/"同意"后,`ArcPhaseGate.confirm_architecture()` 自动推进。不丢失(已修复)。
|
||||
|
||||
## 弱模型安全(INV-16)
|
||||
## 弱模型安全(INV-16)+ 任务描述弱模型优化(P1-24 / 3.2.18)
|
||||
|
||||
Do Worker 可能是廉价模型/本地小模型,字面理解任务无推断能力。产出每个任务时必须:
|
||||
Do Worker 可能是廉价模型/本地小模型,字面理解任务无推断能力。真实案例中"清理旧产品实现"被弱模型理解为"删除整个 src/"。产出每个任务时必须:
|
||||
|
||||
1. **禁止歧义词** — 不用"清理"、"重构"、"优化"等宽泛动词,指明具体改什么
|
||||
2. **否定约束显式化** — 写明**不做什么**(如"不删除 src/ 下现有模块")
|
||||
3. **文件范围精确化** — `files_dirs` 精确到文件级,不写 `src/` 目录级
|
||||
4. **完成标准可验证** — `done_when` 能用 `grep`/`diff`/`cmake --build` 客观验证
|
||||
### 操作类型拆分(按动词分类)
|
||||
|
||||
**禁止歧义词**:不使用"清理"、"优化"、"整理"、"更新"等宽泛动词。必须用具体动词:
|
||||
- `重构` — 修改实现但保持外部接口不变
|
||||
- `新增` — 添加新功能,不修改现有代码
|
||||
- `删除` — 移除指定文件或函数(必须列出具体目标)
|
||||
- `修改` — 修改指定文件的具体部分(必须指明改什么)
|
||||
- `保留` — 明确标记为不可修改的文件/目录
|
||||
|
||||
### 保留约束机制
|
||||
|
||||
每个任务必须包含:
|
||||
1. **操作指令**: 用具体动词描述要做什么(重构/新增/删除/修改)
|
||||
2. **保留约束**: 明确列出不可修改的文件、目录或函数
|
||||
3. **变更边界**: 精确到文件级别,每个文件标注"新建|修改|删除|保留"
|
||||
4. **完成标准**: 可验证的条件,避免主观判断
|
||||
|
||||
### 禁止的写法
|
||||
|
||||
- "清理旧实现" → 改为 "重构 CMakeLists.txt 去掉 sipclient 依赖,保留 src/ 下所有现有模块"
|
||||
- "优化模块结构" → 改为 "将 auth/login.py 中的 validate() 函数提取到 auth/validator.py"
|
||||
|
||||
### Arc 自检
|
||||
|
||||
生成任务后执行 `validate_task_description()` 自检。发现歧义词时自动拆分任务或补充保留约束,不将歧义任务传递给 Eng。
|
||||
|
||||
## Logging Standard
|
||||
|
||||
|
||||
@@ -13,6 +13,11 @@ AirDo 是任务执行器。运行单个任务,强制执行全专家插件路
|
||||
1. **UI Task Handling (P1-20)** — 当任务涉及 UI/前端/界面时,检测并确保 frontend-design Skill 可用。不可用时阻止执行
|
||||
2. **Evidence Gate (INV-4)** — GUI 任务需截图,网络任务需抓包,代码任务需静态分析/测试
|
||||
3. **全专家插件强制路由** — finish 时按任务类型和状态强制路由到对应专家插件,不可跳过
|
||||
4. **禁止降级实现 (3.2.9b)** — 必须严格遵循 AirArc 设计方案,禁止以下行为和语言模式:
|
||||
- 禁止使用"兜底方案"、"先这样做"、"以后再补"、"临时方案"等降级语言
|
||||
- 禁止自行发明替代方案绕过设计约束
|
||||
- 禁止以"能跑就行"为标准降低实现质量
|
||||
- 设计方案无法执行时:报 blocked 并说明原因,等待 Eng 协调
|
||||
|
||||
## 子命令
|
||||
|
||||
|
||||
@@ -21,6 +21,7 @@ AirEng 是调度引擎,不是执行器。它派发隔离 Worker、监控、合
|
||||
- 验证失败但非关键 → 记录问题继续下一任务
|
||||
- 波次间衔接 → 自行启动下一波次
|
||||
7. **仅以下情况才询问用户**:修复预算耗尽且任务仍 blocked;需求歧义无法继续;系统资源耗尽;用户显式暂停。
|
||||
8. **禁止降级方案 (3.2.9b)** — 派发任务时不得建议 Worker 使用降级方案。任务 blocked 时分析根因并协调解决,不得让 Worker "先这样跑通"。禁止使用"兜底方案"、"先这样做"、"以后再改"、"临时方案"、"quick fix"等降级语言。必须遵循 AirArc 产出方案,无法推进时报 blocked 等待重规划,不自行发明替代方案。
|
||||
|
||||
## 子命令
|
||||
|
||||
|
||||
@@ -12,8 +12,15 @@ AirRvr 是需求审查器。基于原始需求文档对已完成任务进行独
|
||||
|
||||
1. **code-to-design 对照** — 每次审查必须逐行对照代码实现与设计文档(ADR、C4、需求)
|
||||
2. **高风险审计** — 终审必须包含 lifecycle/nullPointer/danglingPointer/exceptionSafety/concurrency 五项检查
|
||||
3. **verdict 控制合并** — fail 阻止合并,conditional-pass 记录遗留项,pass 正常合并
|
||||
4. **deliveryVerdict = block-release** — eng dispatch 阻止所有后续派发
|
||||
3. **审查放行标准(三层,不可降级)**:
|
||||
- **第一层(最高优先级)**: Code-to-Design 逐行对照 — codeToDesignTable 中不得有 status=divergent 或 status=missing 的条目,任何 divergent/missing 必须修复后才能放行
|
||||
- **第二层(必选)**: 静态分析通过 — AirSDB 报告无 critical/high severity finding,生命周期/空指针/悬垂指针/异常安全专项审计通过
|
||||
- **第三层(必选)**: 测试通过 — 单元测试全部通过,接口测试全部通过,GUI 任务需 AirXDB 截图证据与设计稿一致
|
||||
- 三层全部通过 → verdict=pass;第一层有 divergent/missing → verdict=fail(即使测试全绿);第一层通过但第二/三层有问题 → verdict=conditional-pass
|
||||
4. **禁止表面理由判定 pass** — 以下理由不得单独作为 pass 依据:"测试 pass"/"测试全绿"、"实现存在"/"函数存在"、"编译通过"/"无报错"、"能跑通"/"功能可用"。以上仅为必要不充分条件。
|
||||
5. **verdict 控制合并** — fail 阻止合并,conditional-pass 记录遗留项,pass 正常合并
|
||||
6. **deliveryVerdict = block-release** — eng dispatch 阻止所有后续派发
|
||||
7. **降级语言检测 (3.2.9b)** — 在 code-to-design 审查中检测 Worker 是否使用了降级语言("兜底方案"、"先这样做"、"临时方案"等),检测到则 verdict 直接判定 fail,要求按原始设计重新实现
|
||||
|
||||
## 审查模式
|
||||
|
||||
|
||||
Reference in New Issue
Block a user