Document independent review workflow
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
---
|
||||
name: review-changes
|
||||
description: 仅用户指定 review-changes 时启用;对比当前分支与最新远程 master,审查原始目标达成、行为偏差及旧功能回归,输出报告,不自动修复。
|
||||
---
|
||||
|
||||
# 审查分支变更
|
||||
|
||||
完成条件:固定审查基线,检查主要行为变化与回归风险,对候选问题完成反证核查,保存包含目标判断、问题和验证缺口的报告。不能在首次浏览或发现第一个问题后结束,也不为凑数找问题、无新证据反复检查。
|
||||
|
||||
仅审查,不修复、不提交、不推送,不修改被审代码、原计划或质量门禁。允许获取远程引用、运行必要验证及写入外部报告;实验或需写入文件的验证在隔离快照中进行,避免影响用户工作区,不执行有实际外部副作用的验证。不要求先运行其他 skill,不自动调用规划或实施流程,不强制多代理编排。
|
||||
|
||||
## 原始目标与信息边界
|
||||
|
||||
- 用户可直接提供原始需求,或指定含目标的文档。从原始需求、已确认验收、保留行为和不做事项判断应该发生什么;不从实现或同次新增测试反推目标。
|
||||
- 需要从 `plan.md` 提取目标时,先仅定位 Markdown 标题,再定向读取目标相关章节或片段,不整份加载。只提取需求、行为契约及必要约束,不读取实施步骤、文件修改清单、执行记录、实施总结或既有审查结论。目标与实施内容混排且无法可靠分离时,请用户提供目标摘录,不为找目标展开整份资料。
|
||||
- 可从 `.agent/MEMORY.md` 读取资产定位,按需读取适用的项目规范及 `CONTEXT.md` 中当前有效的业务、技术约束;不扫描历史计划或执行资产。约束与原始需求冲突时报告冲突,不用实施后更新的约束替代原始目标。
|
||||
- 目标缺失或冲突时询问,期间可继续独立代码检查;没有可靠目标时标为无法判断,不编造需求、改动原因或达成结论。
|
||||
- 推荐用户在新会话调用。若当前上下文已有实施过程或结果,说明无法清除,不能将其作为审查证据或假称独立隔离。
|
||||
|
||||
## 固定 Git 范围
|
||||
|
||||
- 记录仓库、当前分支、HEAD,以及暂存、未暂存、未跟踪状态。默认只审查固定 HEAD 的已提交内容,列明排除的工作区修改;从提交快照读取代码、配置和测试,避免把工作区内容混入判断。
|
||||
- 使用用户指定远程,否则使用 `origin`;不存在或指向不明确时询问,不猜其他远程。获取该远程的最新 `refs/heads/master`,成功后立即固定其提交 ID 与获取时间。例如可用 `git fetch --no-tags <远程> refs/heads/master`,随即以 `git rev-parse FETCH_HEAD` 固定远程提交;后续均使用固定 ID,不依赖会变化的引用。
|
||||
- 找出远程提交与 HEAD 的共同祖先,以共同祖先到 HEAD 的 diff(含重命名识别)审查分支增量;另检查共同祖先到远程 master 的后续变化与本次变更的交集、调用契约和兼容影响。不能把远程新增而分支未同步的内容误报为本分支删除。
|
||||
- 获取失败、远程无 master、历史不足或共同祖先不唯一/不可确定时,明确受限范围;可继续不依赖该信息的检查,但不得静默改用缓存、其他分支或任意祖先,也不得声称已比较最新基线。不为审查执行 pull、merge 或 rebase。
|
||||
- 必要测试使用固定 HEAD 的隔离快照,尤其不能在存在未提交修改的工作区测试后声称 HEAD 已通过。涉及远程后续变化的集成验证也在隔离环境进行;未做集成验证则注明证据限制。结束时核对 HEAD 是否变化,变化后报告仍明确针对原固定提交。
|
||||
|
||||
## 行为变化与回归
|
||||
|
||||
以变更为中心,沿具体风险扩展到调用方、被调用方、配置、注册、数据和相关测试,不进行无关全仓库审计。
|
||||
|
||||
- **既有逻辑优先**:对既有文件中的修改、删除、移动和插入的新增行,比较改动前后行为,分析与目标的关系、必要性、旧行为及错误路径是否保持。不能只看 diff 中的加号行,也不能把纯移动误当成新功能。原因有需求或契约依据才作结论,否则标为待确认。
|
||||
- **新增实现**:检查真实入口和调用链是否接入,注册、配置和依赖是否有效,不能用“文件存在”或直接调用新函数的单测代替集成证据。
|
||||
- **正确性与维护风险**:按实际变化核查边界、状态迁移、错误传播和资源生命周期;关注同一业务规则的独立实现是否产生偏差、替换后是否留下可达的旧实现或无用配置。先查真实引用、动态注册和兼容用途,不因名字陈旧或一次搜索无引用判定死代码。
|
||||
- **规范与依赖**:核实符号、配置和第三方 API 是否存在,按实际解析版本核查契约;本地证据不足时查对应版本的官方文档,不凭记忆或用最新版语义否定旧版合法行为。规范和设计问题须有明确适用规则或具体后果,不报告个人风格偏好。
|
||||
- 只将本次引入、加重或变得可达的问题列为本次发现,包括被本次替换遗留的实现;无关历史债务不展开。
|
||||
|
||||
## 测试证据与候选问题裁决
|
||||
|
||||
- 从原始目标和保留行为选择正常、边界、异常、旧功能回归场景;并发、重试、部分成功、恢复等只在相关时检查,不机械遍历清单或追求覆盖率数字。
|
||||
- 阅读测试真实调用与关键断言,判断有意义的实现错误是否会使测试失败。关注复制生产算法计算预期值、只断言 mock 返回值、关键业务语义被替换、仅覆盖成功路径及无依据更新快照。
|
||||
- 核查本次是否弱化断言、扩大 skip/exclude、改变测试发现范围或让 CI 忽略失败。声称已有覆盖须指出具体测试和断言;声称通过须有本次实际执行结果,并确认目标测试确实运行。既有实施记录不作为执行证据。
|
||||
- 报告候选问题前,核对具体触发条件、真实可达路径、违反的契约、后果及与变更的因果关系,主动检查调用方保护、其他层处理、有意设计和合法例外。静态证据链充分时不强制制造失败;需要复现时在隔离环境做最小反例,不自动修复。
|
||||
- 合并同一根因。区分已复现、静态确认、待验证;未证实的怀疑不能进入已确认问题。测试缺口说明具体未保护的行为和已有断言为何不足,不能冒充已发生的运行时缺陷。
|
||||
|
||||
## 保存报告与交付
|
||||
|
||||
复用用户指定的外部位置或已知资产定位;已有本次计划目录则将报告放在其中,否则用已知资产根目录,不从计划父目录猜测根目录,不扫描目录内的执行结果。位置缺失时询问,同时继续只读调查。位置不可用时报告保存阻碍,不回退代码库、不宣称已保存,也不因写入失败隐去已确认问题。
|
||||
|
||||
保存独立的 `review-YYYYMMDD-HHmmss.md`,避免覆盖既有报告,使用用户当地审查时间。顶部沿用元数据,未知字段留空,特殊值加引号:
|
||||
|
||||
```yaml
|
||||
---
|
||||
系统: 系统名称
|
||||
时间: YYYY-MM-DD
|
||||
目标: 本次审查对应的原始目标
|
||||
---
|
||||
```
|
||||
|
||||
正文保持紧凑,包含:
|
||||
|
||||
1. **目标达成与偏差**:按原始行为要求说明已满足、未满足或无法判断及证据,列明越界行为、旧功能影响和目标来源;不评价实施步骤是否照做。
|
||||
2. **已确认问题**:按严重程度排序。每条给出类型(行为缺陷、规范违例或重要设计问题)、严重度、证据状态、文件与最小相关行范围、触发条件、依据、后果、证据和最小修正方向。删除内容标注旧侧位置及基线,不能编造 HEAD 行号。
|
||||
3. **关键验证缺口**:具体未证明的行为、已有验证不足的原因、待核实条件及建议验证方式,与已确认缺陷分开。
|
||||
4. **范围与实际验证**:仓库、远程、获取时间、远程 master/HEAD/共同祖先 ID、排除的工作区内容、远程后续变化影响、实际命令和结果、未验证部分及上下文限制。
|
||||
|
||||
使用代码围栏表示命令和多行配置,来源引用注明出处;不粘贴完整日志。无发现时明确“在已审查范围和已执行验证中未发现需要报告的问题”,不等同于目标全部达成或可放心上线。确认报告可读后,对话给出目标判断、重要问题与验证限制的简短摘要及文件绝对路径链接。
|
||||
|
||||
修复后的复审聚焦修复 delta、原问题和受影响行为;重新获取并固定基线,若远程或目标变化则核查其影响,不自动沿用旧通过结论,不读取旧报告作为新结论依据。
|
||||
Reference in New Issue
Block a user