docs: 测试政策决策记录 - #4
Merged
Merged
Conversation
37 种测试手法:7 项立即上,5 项重写落地时上,6 项 LLM 产品化时上, 8 项触发式(含触发器),6 项明确否决(含理由与替代)。
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
📝 WalkthroughWalkthrough新增测试政策文档。文档按风险敞口定义快速 gate、发布前测试、LLM 产品测试、触发式测试、否决项和已有能力清单。 Changes测试政策
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
randypanding
added a commit
that referenced
this pull request
Aug 18, 2026
drift-check.sh: - §8 直推检测去掉消息后缀预筛(qodo #1:后缀可伪造——直推挂 "(#N)" 假 后缀即绕过预筛被报 clean)。唯一权威判据 = 关联 PR API,窗口内每个 commit 都复核 - §8 fail-closed(qodo #2):关联 PR 查询改用全 SHA;响应须为数组 (error 对象此前被 length>0 读作 has-pr、传输失败读作非 none—— 均静默放行)。查询失败 = 无法验证 = 判漂移,绝不静默放行 - §8 分页(qodo #7):commit 列表全分页;超 MAX_COMMITS=300 显式报 漂移而非静默截断 - §4 fail-closed:org 仓库清单拉取失败时此前 REPOS 为空 → 全部循环 静默跳过 → 检测整体假绿;现显式 exit 2 - §10 新增 ADR 引用存在性后验(qodo #5):窗口内合并 PR 的 ADR-NNNN 引用须真实存在于 agent-registry/decisions/——gate 的存在性校验受 私有仓跨读权 + PR 上下文 secret 暴露面约束(见 gate.yml 注释), 后验防线与其互补 apply.sh:前置 GET 参与失败计数(qodo #3)——ruleset 清单/CS 清单/ org 仓库清单拉取失败时此前静默跳过或走错误分支,违反 loud-failure 契约;现显式计 FAIL 并在汇总中 exit 1 gate.yml:adr-required 的 PR 文件清单 --paginate(qodo #4:>100 文件 的 C1 变更不再漏检);正则词边界(防 NOTADR-0013junk 子串绕过); 存在性校验后移至 drift-check §10 的原因记录在案(org secret 不可进 PR 触发的 workflow——PR 控制的代码 + secret = zizmor secret-exposure) governance-drift.yml:issue 归属判定改用专属 label auto-drift-report (qodo #8:标题搜索会把人工开的同名 issue 误评论/误关闭;label 幂等 创建,创建/评论/关闭全部 label-scoped) GOVERNANCE.yaml:C1 scope 补 scripts/、.github/、CODEOWNERS、profile/ (qodo #6:机器可读声明与 gate adr-required 实际执法路径一致—— 声明与执行不得互斥) Refs: ADR-0013, #17, #18
randypanding
added a commit
that referenced
this pull request
Aug 18, 2026
…19) * feat: 红队修复批次——gate 硬化、每日漂移+自动关闭、apply loud-failure、App 名统一(ADR-0013) - gate.yml:timeout-minutes=10;JSON 校验覆盖 expected-state.json(此前只验 rulesets); adr-required 实装——C1 路径变更 PR 必须引用 ADR-NNNN(flows "无 ADR 不合并"的机器执行) - governance-drift.yml:周检→每日(盲区 7 天→1 天);漂移消除自动关闭 issue(防陈旧报告噪音) - drift-check.sh §8 重写:消息后缀快速筛 + associated-PR API 复核(防伪造/漏报); 超 24h 未回填直推标记 P0 - apply.sh:loud failure(HTTP 非 2xx 计数汇总 exit 1,防检测→修复死循环); 头部显式声明不可自动修复类别(§5-§9)及人工路径 - new-repo-init.sh:environment/app 挂载失败 exit 1(此前静默"完成");引导改 pin commit - App 名统一 cloudbrid-agent(线上真实 slug id=4632704;cloudbird-agent 404) - GOVERNANCE.yaml:governance-core→team:stewardship(ADR-0004 规划名的落地形态); C1 scope 纳入 template-service(供应链入口);GM-1 每日+自动关闭;frequency 对齐 - expected-state.json:org_secrets_required 登记 GOVERNANCE_TOKEN(drift workflow 实际依赖) - languages.yaml:依赖审批 approver+SLA(防永久挂起);SECURITY.md:响应 SLA/接收人/披露 - AGENTS.md 创建(CG-1 声明的契约文件,此前缺失);agent.schema.yaml profiles 指向 agent-registry * fix: 评审修复——直推检测去后缀预筛、fail-closed、分页;幽灵 ADR 后验;C1 scope 对齐(ADR-0013) drift-check.sh: - §8 直推检测去掉消息后缀预筛(qodo #1:后缀可伪造——直推挂 "(#N)" 假 后缀即绕过预筛被报 clean)。唯一权威判据 = 关联 PR API,窗口内每个 commit 都复核 - §8 fail-closed(qodo #2):关联 PR 查询改用全 SHA;响应须为数组 (error 对象此前被 length>0 读作 has-pr、传输失败读作非 none—— 均静默放行)。查询失败 = 无法验证 = 判漂移,绝不静默放行 - §8 分页(qodo #7):commit 列表全分页;超 MAX_COMMITS=300 显式报 漂移而非静默截断 - §4 fail-closed:org 仓库清单拉取失败时此前 REPOS 为空 → 全部循环 静默跳过 → 检测整体假绿;现显式 exit 2 - §10 新增 ADR 引用存在性后验(qodo #5):窗口内合并 PR 的 ADR-NNNN 引用须真实存在于 agent-registry/decisions/——gate 的存在性校验受 私有仓跨读权 + PR 上下文 secret 暴露面约束(见 gate.yml 注释), 后验防线与其互补 apply.sh:前置 GET 参与失败计数(qodo #3)——ruleset 清单/CS 清单/ org 仓库清单拉取失败时此前静默跳过或走错误分支,违反 loud-failure 契约;现显式计 FAIL 并在汇总中 exit 1 gate.yml:adr-required 的 PR 文件清单 --paginate(qodo #4:>100 文件 的 C1 变更不再漏检);正则词边界(防 NOTADR-0013junk 子串绕过); 存在性校验后移至 drift-check §10 的原因记录在案(org secret 不可进 PR 触发的 workflow——PR 控制的代码 + secret = zizmor secret-exposure) governance-drift.yml:issue 归属判定改用专属 label auto-drift-report (qodo #8:标题搜索会把人工开的同名 issue 误评论/误关闭;label 幂等 创建,创建/评论/关闭全部 label-scoped) GOVERNANCE.yaml:C1 scope 补 scripts/、.github/、CODEOWNERS、profile/ (qodo #6:机器可读声明与 gate adr-required 实际执法路径一致—— 声明与执行不得互斥) Refs: ADR-0013, #17, #18 * fix: CodeRabbit 评审修复——权限下沉 job 级、仓库枚举分页、C1 路径三处统一、App 令牌最小作用域(ADR-0013) - gate.yml:permissions 下沉 gate job(顶层 permissions: {}——防后续 新增 job 继承 workflow 级权限,对齐 agent-registry validate.yml 同款防御) - apply.sh/drift-check.sh §4:org 仓库枚举改全分页(>100 仓的 org 不再 漏应用/漏检基线);apply 侧空清单同样计 FAIL(loud-failure) - GOVERNANCE.yaml/AGENTS.md/gate.yml:C1 路径定义三处统一——GOVERNANCE C1 scope 改 governance/ 整目录并补 tests/(agent-registry 元验证); AGENTS.md 硬规则补 profile/;与两个仓的机器执法路径集完全一致 - gh-app-token.sh:REPO 改必填(此前不设=令牌作用域为全部已安装仓库, 违反最小权限);用法注释禁止交互 shell 内联 PEM(history+子进程 环境双暴露面),本地走 AGENT_APP_SECRET_FILE、CI 走 Actions secret - new-repo-init.sh:远端脚本 pin 指引改为"审阅过的合并提交 SHA" (gh pr view mergeCommit),不再建议运行时取 main HEAD Refs: ADR-0013, #17, #18 --------- Co-authored-by: randypanding <randypanding@users.noreply.github.com>
This was referenced Aug 19, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
加法穷举 + 减法裁决的完整决策记录。以后引入任何测试先查此文件:待定的有触发器,否决的有理由和替代。
Summary by CodeRabbit