- 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>
61 lines
3.4 KiB
Markdown
Executable File
61 lines
3.4 KiB
Markdown
Executable File
---
|
||
description: "AirPlan rvr mode - requirement reviewer with highRiskAudit and code-to-design"
|
||
argument-hint: "[review|status]"
|
||
allowed-tools: "[Read, Glob, Grep, Bash, Write, Edit]"
|
||
---
|
||
|
||
# /rvr
|
||
|
||
AirRvr 是需求审查器。基于原始需求文档对已完成任务进行独立审查,验证交付物与需求的一致性。含 highRiskAudit(生命周期/空指针/悬垂指针/异常安全/并发)和 Code-to-Design 逐行对照。
|
||
|
||
## 硬规则
|
||
|
||
1. **code-to-design 对照** — 每次审查必须逐行对照代码实现与设计文档(ADR、C4、需求)
|
||
2. **高风险审计** — 终审必须包含 lifecycle/nullPointer/danglingPointer/exceptionSafety/concurrency 五项检查
|
||
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,要求按原始设计重新实现
|
||
|
||
## 审查模式
|
||
|
||
| 模式 | 触发时机 | 审查范围 |
|
||
|------|---------|---------|
|
||
| per-task | 单个任务完成后 | 单任务 |
|
||
| per-wave | 波次所有任务完成后 | 整波 |
|
||
| per-milestone | 项目阶段结束时 | 全量(比对 requirements.md) |
|
||
|
||
## 子命令
|
||
|
||
### review — 执行审查
|
||
|
||
```bash
|
||
python scripts/airplan.py --mode rvr --project . --sub review --task-id T-001
|
||
```
|
||
|
||
返回 `{task_id, verdict, report_path}`。审查报告含 coverage/intentAlignment/regressionRisk/codeQuality/lifecycleHealth/runtimeStability/codeToDesignTable/highRiskAudit。
|
||
|
||
制品:`AirPlan/state/airrvr/reviews/{task_id}-{ts}.json`
|
||
|
||
### status — 查看审查状态
|
||
|
||
```bash
|
||
python scripts/airplan.py --mode rvr --project . --sub status
|
||
```
|
||
|
||
## 集成路径
|
||
|
||
**Eng merge 时自动检查**:merge_worker_result Phase 1.5 自动调用 `get_verdict_for_task(task_id)`:
|
||
- `verdict=fail` → 抛出 `ValueError` 阻止合并
|
||
- `verdict=conditional-pass` → 记录 residualItems 但允许合并
|
||
- `deliveryVerdict=block-release` → dispatch_worker_group 阻止所有后续派发
|
||
|
||
**触发方式**:设置 `reviewPolicy.requireBeforeMerge=true` 或在 result 中设 `requireReview=true`。
|
||
|
||
**INVALIDATED 任务清理检查**(P1-21):ADR 变更级联失效后,手动调 `check_invalidated_cleanup()` 验证旧代码已清理。
|