REA CI 和测试审计
确定哪些检查仍能捕获真正的回归,以及哪些成本可以在不失去该保护的情况下被移除。结果可能是一个经过验证的修复、一个基于证据的建议,或一个明确的停止决策。
遵循代码仓库的 AGENTS.md、测试指南 和贡献规则。使用它们当前的命令和固定工具链,而不是从早期审计中记住的命令。保留请求的范围:仅调查本身不授权编辑;此技能不授予发布问题、推送或合并的权限。现有的用户授权仍然适用。将审计笔记和原始结果保留在跟踪树之外,通常放在特定任务的 /tmp 目录中。
建立执行的基线
当用户要求获取最新的主分支时进行获取。固定基线 SHA 和已检查的工作流修订版本;在更改或比较代码时使用隔离的工作树。不要修改另一个任务的代码检出。记录脏改动的状态以及确切的命令、工具链、主机、选定的测试、检测和先决条件。旧运行是其执行修订版本的证据,即使主分支已经推进。
追溯工作流触发器、更改路径选择、作业依赖关系、可重用操作、包脚本、测试发现、工件生产者和报告门控,一直到实际执行的命令。包括脚本、生成的数据、运行时注册以及导入图中缺失的子进程边界。检查正向和负向选择路径:每个预期的测试配置必须至少发现一次所需文件;故意的平台/配置重复是独立的覆盖范围。缺失的显式测试或缺失的必需报告不得显示绿色通过。可选通道可以跳过;保留其声明的先决条件。
使用现有的计时和失败工件选择可疑的系列。运行相关检查以建立基线;将完整的本地套件保留用于广泛的 CI 诊断或聚焦检查无法解决的不确定性。不要在每个文档编辑后重建或重新运行未更改的完整套件。
证明故障或保护
对于每个候选,陈述预期的可观察行为及其所有者,然后针对生产行为构建最小的重现。在决定在哪里修复之前,遵循生产者和受影响的消费者。
- 对于漂移:将 fixtures 与当前的准入要求、协议回复、命名契约、工具版本和实际的公共入口点进行比较。一个看似合理的 mock 可能在测试声称覆盖的行为之前失败。搜索整个受影响的 fixture 系列,包括其他版本字符串。保留故意格式错误的 fixture 并测试其预期的拒绝。
- 对于可疑的绿色测试:在隔离副本中扰动相关行为或注入可控故障。验证现有断言或门控是否能检测到它。一个测试可能仅仅重复其 mock、导入废弃的代码或隐藏子进程/检查器失败。实验后恢复变异。
- 对于共享设置或剪枝:将不同的断言映射到它们保留的场景。保留格式错误的输入、取消、清理失败、权限、容量、身份和有意义并发交互。一个跳过案例或削弱其 oracle 的更快运行不是改进。
- 对于提供者覆盖范围:分离假生产者、边界和实际引擎的证据。检查命名的跳过和先决条件;fixtures 不能建立真实的 Ghidra、LLDB、浏览器或其他提供者行为。
将发现分类为:已重现的缺陷、支持的成本、假设或不可用的证据。记录基线命令、观察到的输出/退出状态、预期结果、受影响的范围和竞争性解释。主分支上的失败可能预先存在;但这本身并不使其与 CI 审计无关。使用执行的修订版本和干净基线归因 PR 失败,而不仅仅是它们与先前失败的相似性。仅重试以测试特定的瞬时解释;保留原始失败,并在重复添加无证据时停止。通过的重试并不建立根本原因或修复。
在不失去门控的情况下评估效率
在调查缓慢、缓存、运行器等待、共享工件或日志噪音时,阅读测量和 CI 检查。在声称加速之前,比较等效的已完成工作。区分设置/构建时间、测试执行、覆盖率检测、依赖等待和运行器调度;说明哪些成本仍未测量。
在缩少正确性覆盖范围之前,优先移除已证明的重复准备、重用不可变设置以及减少重复的子进程工作。在生命周期或并发是 oracle 的地方保留独立的会话。保持实时测试的新鲜度;缓存的先前通过无法验证当前主机、已安装的提供者内容、权限或外部状态。
在范围内修复、验证和交接
如果实施被授权,在最所有权的边界进行最小的结构性更改,并添加一个在基线上因正确原因失败的回归。重新测试受影响的消费者和有意义的负向路径;当缓存失效或发现机制更改时验证它们。在更改其配置或命令之前阅读已安装的 Turbo 文档。
在授权的合并之前,运行代码仓库的适用检查并检查完整的当前 HEAD CI 结果。保留所需的覆盖范围和发现门控。不要仅仅为了使 CI 绿色而抑制失败、添加全面重试、提高超时或删除不同的断言。对这些控制的更改需要其自身经过论证的理由并保留故障检测。
报告每个确认的问题,包括确切的修订版本、重现步骤、后果、建议的修正和验证限制。使用工作负载和测量结果报告性能,而不仅仅是百分比。在要求时使用英文问题/PR 记录;遵循用户的分配、提交身份、审查和合并偏好,但不假定其他用户也采用。仅当该生命周期被授权时才开放准备就绪的 PR。解决必要的审查结果,并在合并后对照测试树检查最终的主分支。
当授权工作已验证、剩余收益未证实,或者进一步更改将牺牲正确性以换取推测性速度时停止。列出真正的不确定性,而不将其转化为额外的优化轮次。