Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion docs/plans/backlog.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,8 @@
| B17 | 选定重复出现的任务类别,用干净环境多次运行同一任务集;分开统计 `pass^k`、人审无需修改率、自动合并抽审纠错率、逃逸缺陷、人工时间与 harness 误拦和 CI 等待成本 | 先定口径,同类任务积累到 5 个以上再执行 | 评审方 | Codex 复评问题 5,全链路审计 3.1 |
| B18 | 下次实质修订调研报告时,在 Claude 编辑源补 METR 样本与时间视界版本、`pass^k` 在异质任务上的限定、自动合并下「无修改合并率」的口径,再重新导出快照 | 随报告下次修订 | 评审方 | Codex 复评「调研文章」部分 |
| B23 | 停机演练:按规范 §8 停机 → R0 测试 PR 不被自动合并 → 恢复 → 重跑后被自动合并,结果记入规范 §6(步骤已在 P2 写入) | 进入无人值守前一次,之后每季度 | 用户演练,评审方记录 | 全链路审计 G4、1.5,设计第十七节 |
| B27 | 独立评审试行:工具与校准集随阶段二 P7 合并;剩在 3 个 R2 PR 上试行(`bin/dispatch review <PR>`),再与用户判断对照,由用户决定是否常态化 | 小;P7 合并后,随出现的 R2 PR 进行 | 评审方执行,用户决定 | 全链路审计 G5、2.4,设计 8.3 |
| B27 | 独立评审试行:工具与校准集随阶段二 P7 合并;剩在 3 个 R2 PR 上试行(`bin/dispatch review <PR>`)。试行 1/3:#62(2026-09-28,OpenCode,需用户验收,4 条一般发现;首次因工具缺陷材料为空,已修复并重评),再与用户判断对照,由用户决定是否常态化 | 小;P7 合并后,随出现的 R2 PR 进行 | 评审方执行,用户决定 | 全链路审计 G5、2.4,设计 8.3 |
| B33 | Swift 质量棘轮解析的两处已知限制(#62 独立评审发现):协议中的计算属性声明(`var x: T { get }`)被计为函数,与规范「协议要求不算函数」的表述不一致;字符串插值内嵌字符串(`"\("x")"`)会让解析提前结束字符串、漏算同行大括号。对当前基线无影响 | 小;R3 | 评审方 | PR #62 独立评审(2026-09-28) |

## 3. 持续进行或暂缓

Expand Down
53 changes: 53 additions & 0 deletions docs/plans/task-007-review-background.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
---
task: T007
class: K7
risk: R3
designer: claude-code
size: medium
architecture: false
spec_refs: []
no_spec_reason: 护栏与流程改动,验收写在 docs/specs/delivery-harness.md 的约定与验证状态中,没有产品规格验收编号
budget:
wall_clock_min: 240
ci_rounds: 3
retries: 2
tokens: null
rollback: git revert(评审方回到 PR #63 合并时的状态)
---

# 任务:独立评审补齐、只读锁定与后台自动评审

状态:设计评审方自行实现(2026-09-29,方案 B)。来源:PR #63 合并时漏掉的提交 `87acfcf`;#62 试行中发现的评审方可执行 bash;用户 2026-09-29 同意「只读锁定 + 撤回材料写进提示词 + 后台自动评审」。

## 目标终态

- PR #63 合并的是 `83972c9`,此后推送的 `87acfcf`(OpenCode 评审方、已合并 PR 的评审基点、CI 材料、B33、试行 1/3 记录)未进入 main;本任务把它补上。
- OpenCode 评审方真正只读:关掉 bash、子代理、网页与写入类工具(`plan` 代理本身只禁止编辑,2026-09-28 实测它在评审中运行了 PR 的测试与 `gh`)。
- 评审移到后台:`bin/dispatch review --pending` 逐个评审「带 needs-independent-review、CI 已全部通过、当前 head 尚无独立评审结论」的开着的 PR;`--watch` 每隔若干分钟评审一轮,派发的停机标记存在时退出。不并行(多个 OpenCode 同时运行会冲突)。
- 材料仍由评审方按文件读取(「材料写进提示词」实测没有变快,已撤回)。

## 非目标与禁止动作

- 不把评审放进 GitHub Actions(评审方与模型账号在本机);不在本任务中安装 launchd 常驻(持久的本机配置,需用户另行决定)。
- 不改变评审结论的地位:仍只供用户参考。

## 前置条件(不满足就停下报告)

- OpenCode 能在本机无界面运行(标准输入关闭时,2026-09-28 实测可用)。

## 验收

| 编号 | 验收内容 | 证据类型 | 覆盖(测试名或验证步骤) |
|---|---|---|---|
| 不挂规格:护栏 | OpenCode 评审方关掉命令与写入类工具 | 单测 | `tests.test_harness_review_independent.ReviewerTest.test_opencode_tools_are_locked_to_read_only` |
| 不挂规格:护栏 | 待评审的判定:CI 全部通过、当前 head 未评过;逐个评审;停机标记即退出 | 单测 | `tests.test_harness_review_independent.BackgroundTest` |
| 不挂规格:护栏 | 已合并 PR 的评审基点与 CI 材料(随 87acfcf 补上) | 单测 | `tests.test_harness_review_independent.ReviewBaseTest` |
| 不挂规格:护栏 | 实际查询线上待评审 PR | 真实数据 | `bin/dispatch review --pending` |

## 步骤与提交顺序

| # | 改动 | 涉及文件 | 验证方式 | 对应验收 |
|---|---|---|---|---|
| 1 | 补上 87acfcf | `harness/review.py`、`harness/review_prompt.md`、`harness/rules.toml`、`harness/dispatch.py` | `bin/verify` | 第 3 行 |
| 2 | 只读锁定与后台评审 | `harness/review.py`、`harness/dispatch.py` | `bin/verify` | 第 1、2、4 行 |
| 3 | 规范、README、待办同步 | `docs/specs/delivery-harness.md`、`harness/README.md`、`docs/plans/backlog.md` | `bin/verify` | — |
Loading
Loading