change-impact · git:20261011.856328d · 2026-10-11 · sha256 a7121e559a06beeb
change-impact git:20261011.856328dA
Immutable. This exact content never changes and is served at /api/v1/blob/a7121e559a06beeb.
--- name: change-impact description: >- 在改代码、数据、接口或治理文档前做有证据的影响分析,并在实施后把计划影响与实际 diff 对照;覆盖代码调用、数据/Schema、API 契约、测试、文档、ADR、部署、迁移和回滚。用于跨模块修改、高风险变更、数据库迁移、认证、公共接口、用户问“会影响哪里”“改之前检查一下”或实施后需要反思偏差时。English triggers: change impact analysis, blast radius, pre-change analysis, migration impact, rollback plan, post-implementation alignment. --- # 变更影响分析 默认只读。先用真实依赖与现有文档证明影响面,再实施;未知项明确标“未验证”。 ## 修改前 依次回答: 1. **代码**:入口、直接调用方、下游消费者、生成物和兼容层会受什么影响? 2. **数据**:Schema、迁移、历史数据、序列化、缓存和幂等键是否变化? 3. **接口**:API、消息、文件格式或 CLI 是否改变?消费者和提供者分别是谁? 4. **测试**:哪些成功标准、TEST-ID、契约测试和回归命令应证明变更正确? 5. **文档**:是否影响 MAP、ARCHITECTURE、STATUS、LOG、CONTEXT、ADR、CONTRACT、Spec/Plan、TESTS 或 REGRESSION? 6. **发布**:部署顺序、兼容窗口、数据恢复、回滚命令和不可逆部分是什么? 证据优先取自真实 import/调用、路由、Schema、配置、生成脚本、`git grep`、`git diff` 和可执行测试。不要凭目录名猜依赖。 ## 路由规则 - 架构、数据库、认证、部署拓扑或长期技术策略:检查 `context-and-decisions` / ADR。 - 跨端接口:先更新 `contract-first` 管理的唯一契约源,再规划消费者、提供者和联调证据。 - 需求、业务规则、风险或 Bug:让成功标准保留在 Spec/Issue,并用 `test-collaboration` 关联 TEST-ID。 - Module 行为或下游依赖变化:实施后运行 `module-regression`;若权责、状态归属、Interface、依赖方向或核心流转改变,调用 `architecture-docs` 判断必要性并维护实际架构主记录,确保 MAP 能导航;无需创建或证据不足时说明依据与缺口。 - 数据库迁移、破坏性接口、认证和生产发布:必须写回滚条件、恢复步骤、兼容期和不可逆部分;缺任何一项就标为阻塞,不代替人执行回滚。 ## 输出 小改动在回复中给出:影响对象、证据、所需验证、文档同步和未知项。只有跨模块、高风险或用户明确要求留档时,才把报告写入 `docs/impacts/`;写文件前先确认,避免制造一次性文档。 ## 按事实核对文档 解决“AI 改完功能或接口,用户还得自己找漏改文档,下一轮又被旧说明误导”的问题。候选检索由 Agent 执行并完成判读,向用户交付具体冲突、依据和处理结果,不把原始候选清单当成完成。 变更后的语义审查与阶段同步共用此流程。先通过现有确定性审计,再由当前 Agent 执行;路径映射、文件修改时间、Markdown 已产生 diff 或扫描退出码 0 都不能代替内容核对。 先单独运行 `python3 <插件目录>/scripts/audit-docs.py --root <项目根> --scope full` 并检查退出码;非零就停止候选检索、语义核对及据此进行的文档同步。即使判断是原有问题或误报,也须修复并复跑通过后再继续;超出授权或无法修复时报告阻塞。不用分号或忽略失败的命令串绕过此步骤。已提交审查须对受检快照审计,可复用同一 base/head 的 PR 检查结果。 先自动收集候选,再执行下方判读;输出是线索,不是过期结论: ```bash # 已提交变更:比较共同祖先与 head,只读提交快照 python3 <插件目录>/scripts/find-doc-impact.py --root <项目根> --base <基线> --head <受检提交> # 日常维护:比较任务开始时的提交与当前文件,含未提交及非忽略的未跟踪文件 python3 <插件目录>/scripts/find-doc-impact.py --root <项目根> --base <任务起点> --worktree ``` 检索合并 `change_rules`、变更路径引用、diff 中的标识符,返回候选路径、行号、原文和命中依据。功能变化补充 `--term '功能名'` 或旧流程术语,重点核对 Spec、使用说明与相关流程;契约变化重点核对机器契约引用、API 说明、调用示例与接入指南。架构、MAP、STATUS、LOG 按实际影响核对,不要求每次全改。 候选包括历史与无关同名内容,须读上下文排除;标识符未变的行为变化、同义表达和外部资料仍需 Agent 补查。无命中不能判无影响;报告跳过文件、不可访问资料及检索范围。退出 0 仅表示检索完成,退出 2 表示执行失败。没有可靠基线时列出缺口并按文档当前声明核对,不伪造变更范围。需求与实现冲突分别报告,不自动改写已确认 Spec。 1. **固定范围和版本。** 记录实际 base/head 提交及其共同祖先,以共同祖先为比较起点,读取该起点与 head 的 diff 和旧/新正文;不要把当前工作区修复当作已提交内容。审查未提交修改时另列暂存/未暂存/未跟踪范围及相关文件哈希。基线或来源缺失时标未验证,不猜旧规则。 2. **提取改变的事实。** 从代码、机器契约、配置及已确认需求中核对旧值、新值和原因,覆盖接口输入输出、流程步骤/条件、职责、依赖和外部副作用。契约删除一个字段并新增另一个字段,只能先记为删除/新增;有确认来源或实现证据才称重命名。内部修复若未改变对外事实,记录依据后结束相应同步检查。 3. **找到主记录与引用。** 从项目地图、契约入口、需求主记录及 `change_rules` 命中项开始,再用 `rg`/`git grep` 查变更对象的路径、旧标识和相关术语,沿链接补读映射外的说明。已提交审查应对 head 快照检索。无链接但描述同一事实的说明也要核对;检索无结果不证明没有遗漏,记录实际检索范围及不可访问对象。 4. **逐条判读候选。** 阅读命中位置的上下文,确认是否属于同一接口/流程、是否仍作为当前操作依据。当前正文与新事实冲突时给出具体位置、旧表述和对照证据,文件本次改过也不能跳过。历史记录、引用和无关同名字段不因关键词命中而要求改写;历史内容仍被当作当前指引时,报告误用它的入口。纯引用且目标有效时说明无需同步正文。 5. **核对重复与证据。** 同一生效规则若有可独立编辑的多份正文,列出主记录与副本,建议其余位置改引用;主源不明先待核实,不自行选一份覆盖。机器契约、实现和历史各自承担职责,不按相同词句数量判重复。测试结果引用原始回执及对应版本/输入哈希,结果缺失或已过期时标未验证,不重抄结果补齐表格。 6. **交付并按变化失效。** 在现有回复、PR 或审查记录中输出下表,绑定范围与版本。相关契约、代码或文档变化后重核受影响项,旧结论不自动沿用。不新建同步台账,不因普通待复核项一律阻断提交;沿用项目已有风险与合并要求。 | 事实变化及依据 | 文档位置与原表述 | 结论与下一步 | |---|---|---| | 旧/新事实,来源路径与版本 | 路径、行号/条款、必要短引文;重复项另指主记录 | 已核对:需要更新/无需更新及理由;待复核:候选尚未判读;未验证:缺少何种来源或执行证据 | 先报告需要更新的当前说明,再列无需更新的反例和剩余缺口。没有实际运行文档中的步骤时,不声称已复现失败;未知项不能计入通过。治理成本只记录本轮实际核对、修改的文档及原始回执位置,耗时未测就注明未知,不预设节省比例。 可复跑的接口字段样例及审查验收见 [接口变更场景](examples/interface-change.md)。它只验证这一切片,不代表所有事实类型或业务项目都已覆盖。 ## 实施后对照 完成实现后检查: 1. 实际改动是否解决 Spec/Issue 中的原始问题。 2. 实际 diff 是否超出已声明范围;超出项是否获得授权并补充影响分析。 3. 测试和人工证据是否真正覆盖成功标准,而非只证明命令运行过。 4. CONTEXT、ADR、CONTRACT、TESTS、REGRESSION、MAP、ARCHITECTURE、STATUS 和 LOG 是否按实际变化同步。 5. 是否遗留临时代码、兼容逻辑、迁移尾项或后续 Issue。 默认在交付回复中报告对照结论。只有高风险变更或用户要求正式评审时,才保存到 `docs/reviews/`。不要创建通用 `REFLECTION.md`。