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
17 changes: 14 additions & 3 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,17 @@

## Code Review Rules

- 优先识别会造成错误放行、错误阻断、权限扩大、secret 暴露、供应链漂移或发布/回滚证据失真的具体问题,并核对新增公共 MUST 是否确实跨项目通用。
- 审计器变更必须同时具有能复现旧缺口的失败 fixture 和保持合法项目通过的正例;只增加字符串匹配而不能证明约束时应指出误报或漏报路径。
- 修改 Action 或公共规则时,核对模板、审计器已知映射、契约和 fixture 是否同步;不重复报告 lint、格式化或纯风格问题,不要求与当前风险无关的重构。官方 Review 当前不是 required check,且 GitHub 对有写权限者推送新提交不保证自动关闭 Auto-merge;v1 暂不允许对单个 PR 开启 Auto-merge,只在 Review 当前 HEAD、全部 review thread 已解决后人工合并。
### 阻塞边界

- 只提交 P0/P1 finding:问题必须由当前 PR 引入、存在当前可达的触发路径,并会造成明确的正确性、安全、权限、数据、兼容性或发布后果;评论必须说明触发条件、实际影响和最小安全路径,证据不足则不报告。
- P2/P3、纯防御性加固、需要未来维护者同时修改规则与测试才成立的假设、测试还可增加更多 fixture、lint/格式/措辞/命名或无当前影响的重构默认不报告,也不得仅因建议有价值就阻塞合并。

### 本仓重点

- 重点检查会造成审计错误放行或错误阻断、权限扩大、secret 暴露、供应链漂移、发布/回滚证据失真,或把单项目细节误升格为公共 MUST 的改动;机械一致性继续交给确定性 CI。

### Few-shot

正例:缺少 `dev` Environment 时审计仍返回 `PASS`,使发布 secret 绕过审批;这是当前可达的权限后果,应提交 P1。

反例:还可以增加嵌套列表、另一种措辞或更多 fixture,让测试覆盖更全面;这属于 P2/P3 加固,不提交 finding。
16 changes: 11 additions & 5 deletions MAINTENANCE.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
## 新项目接入

1. 在独立 worktree 中复制 `templates/AGENTS.md`,替换占位符并补齐项目内部规则;项目规则不得降低公共 MUST,根文件必须保留精确 `## Code Review Rules` 标题。
2. 在官方 GitHub/Codex 设置中启用 Code Review 与 `Automatic reviews`,并用真实 PR 验证自动审查;未触发或需要重审时使用 `@codex review`。
2. 在官方 GitHub/Codex 设置中启用 Code Review 与 `Automatic reviews`,并用真实 PR 验证自动审查;未触发时先排查设置和事件,确认没有结果或在途信号后才使用 `@codex review`。
3. 保持 Auto-merge 关闭;官方 Review 尚非 required check 时不得为单个 PR 开启 Auto-merge。只有仓库仅使用临时 PR head 分支,或所有长期 head 分支受保护时,才启用合并后自动删除远端分支。
4. 复制并按项目实际情况改造 `templates/` 下的 PR、release workflow、`release-safety.yml` 与 `release-safety-contract.sh`;把后两者分别安装为 `.github/release-safety.yml` 与 `.github/scripts/release-safety-contract.sh`,保持 wrapper 的 Git mode 为 `100755`,并映射项目真实 job/step 拓扑。
5. 通过真实 PR 证明 `PR container validation` 成功,随后原子迁移 master required check。
Expand Down Expand Up @@ -54,16 +54,22 @@ prepare 存在时,publish、migration 与 deploy 必须使用 `needs.<prepare>
## 官方 Codex Code Review 维护

- 只采用官方 Codex Code Review,不自建 Reviewer、GitHub Action、Bot、Webhook 服务、模型调用或平行评论协议。
- 自动触发依赖官方 `Automatic reviews`;`AGENTS.md` 只定义审查规则,不能代替设置。自动审查未出现或需要重审时使用 `@codex review`。
- v1 保持观察模式,不把官方 Review 增加为 required check,不修改现有 branch protection,也不要求官方输出自定义批准口令或严重级别。
- 官方设置和审查行为通过真实 PR 验收;中央审计只检查根 `AGENTS.md` 是普通文件,且固定 `markdown-it-py==3.0.0` CommonMark parser 产生源码行精确等于 `## Code Review Rules` 的真实 h2。不得恢复手写 Markdown 状态机,也不抓取页面或调用私有接口。
- 自动触发依赖官方 `Automatic reviews`;`AGENTS.md` 只定义审查规则,不能代替设置。自动审查未出现时先按官方说明排查仓库开关、Codex cloud 和触发事件,确认没有结果或在途信号后才使用 `@codex review`。
- 非平凡 PR 先保持 Draft,完成实现、测试、内部交叉审查和范围冻结后再进入官方 Review;多个独立架构边界必须拆分,跨仓变更先冻结共享协议,最终集成 PR 才使用 `Closes #xx`。
- `## Code Review Rules` 保持两到三条简洁、项目特有的高后果规则,并提供安全路径或正反 few-shot;机械一致性、lint 和格式交给确定性 CI。
- 只提交 P0/P1 finding:必须证明问题由当前 PR 引入、存在当前可达路径并造成明确正确性、安全、权限、数据、兼容性或发布后果。若产品仍输出 P2/P3,则默认不阻塞;只有维护者给出可复现证据并明确升级后才按阻塞项处理。
- 等一轮 findings 返回后统一分类。阻塞项按根因批量修复;非阻塞项回复处置依据后解决 thread,不修改代码、不自动建 Issue,也无需重新 Review。
- 只有阻塞修复显著改变原风险面时才做一次定向 Review;定向 Review 再出现非阻塞建议时直接记录处置并停止,再出现新的阻塞 P0/P1 时先拆分、收窄或重新设计 PR。
- 官方 Reviewer 给出未发现重大问题的文字结论,或全部 finding 完成阻塞分类与处置,即视为闭环;不追求 emoji、reaction、固定口令或零评论。
- v1 保持建议模式,不把官方 Review 增加为 required check,不修改现有 branch protection;required checks 仍是确定性门禁。
- 官方设置和审查行为通过真实 PR 验收;中央审计只检查根 `AGENTS.md` 是普通文件,且固定 `markdown-it-py==3.0.0` CommonMark parser 产生源码行精确等于 `## Code Review Rules` 的真实 h2。不得恢复手写 Markdown 状态机,也不抓取页面、调用私有接口或伪称验证同一 HEAD 请求次数、在途 Review 和审查预算。
- 官方功能演进时先更新接入说明和精简规则;若官方补齐缺口,优先删除临时流程,不维护平行实现。

## Auto-merge 维护

- GitHub 只保证无写权限者推送新提交时关闭 Auto-merge;有写权限者推送后不保证自动关闭。官方 Review 当前不是 required check,因此 v1 暂不允许仓库或单个 PR 开启 Auto-merge。
- 不建立 HEAD 监听器、自动合并 Bot、Action 或定时任务来补这个能力缺口;未来等官方 Review 可成为当前 HEAD required gate,或 GitHub 保证任意新提交都会撤销 Auto-merge 后再评估。
- 人工合并前确认官方 Review 当前 HEAD、全部 review thread 已解决、required checks 成功且风险已分类;新提交必须重新 Review。
- 人工合并前确认 required checks 成功、阻塞 finding 已修复或有明确风险接受、全部 review thread 已完成处置且依赖与发布风险已分类;非阻塞项不要求修改代码或重复审查。
- Dependabot PR 不能只凭 CI 绿灯自动合并;运行时依赖、跨大版本和会触发生产发布的仓库必须另做兼容性与发布授权判断。
- 分支自动删除不是公共强制项。只有仓库仅使用临时 PR head 分支,或所有长期 head 分支受保护时,才启用 GitHub 的合并后自动删除;存在未保护且需要复用的长期 head 分支时必须关闭。
- 本地 worktree/分支只在已合并、干净、没有独有提交且相关发布验收完成后删除。
Expand Down
14 changes: 10 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,15 +24,21 @@

## 官方 Codex Code Review

基线只接入和治理官方 Codex Code Review,不自建 Reviewer、GitHub Action、Bot、Webhook 服务、模型调用或评论协议。自动唤醒使用官方 `Automatic reviews`;没有自动触发或需要重审时,在 PR 评论使用 `@codex review`。
基线只接入和治理官方 Codex Code Review,不自建 Reviewer、GitHub Action、Bot、Webhook 服务、模型调用或评论协议。自动唤醒使用官方 `Automatic reviews`;未触发时先按官方说明排查设置和事件,确认没有结果或在途信号后才使用 `@codex review` 人工兜底。

根 `AGENTS.md` 的 `## Code Review Rules` 只告诉官方 Reviewer 应优先检查哪些项目风险,不能开启 Automatic reviews,也不能证明自动审查已经触发。v1 保持观察模式,不增加 required check,不改变现有 branch protection;官方设置通过真实 PR 验收,中央审计只验证仓库内可稳定读取的规则文件。完整边界见 [官方治理契约](contracts/codex-code-review.md)。
根 `AGENTS.md` 的 `## Code Review Rules` 只告诉官方 Reviewer 应检查哪些高后果项目风险,不能开启 Automatic reviews,也不能证明自动审查已经触发。按照[官方建议](https://learn.chatgpt.com/docs/third-party/github#customize-what-codex-reviews),规则保持两到三条简洁约束,提供安全路径与正反 few-shot,把 lint、格式和机械一致性留给 CI。v1 保持建议模式,不增加 required check,不改变现有 branch protection;完整边界见[官方治理契约](contracts/codex-code-review.md)。

阻塞边界以影响证据为准:只提交由当前 PR 引入、存在当前可达路径并会造成明确正确性、安全、权限、数据、兼容性或发布后果的 P0/P1。若产品仍输出 P2/P3,则默认不阻塞;测试还能增加 fixture、理论加固、未来同时修改规则与测试、lint/措辞/命名或纯重构无需修改,也无需重新 Review。

非平凡 PR 在 Draft 阶段完成实现、测试、内部交叉审查与范围冻结,再让官方 Review 检查稳定变更。一轮 findings 返回后统一分类:阻塞项按根因批量修复;非阻塞项回复处置依据后解决 thread,不修改代码、不自动建 Issue,也不触发新 Review。只有阻塞修复显著改变原风险面时才进行一次定向 Review;若再次出现新的阻塞 P0/P1,先拆分或收窄 PR,而不是自动循环。

官方 Reviewer 给出未发现重大问题的明确文字结论,或全部 finding 已完成阻塞分类与处置,即视为闭环;不追求 emoji、reaction、固定批准口令或零评论。包含多个独立架构边界的大型需求应拆成阶段 PR,跨仓变更先冻结共享协议,只有最终集成 PR 使用 `Closes #xx`。

## Auto-merge 与分支清理

GitHub 只保证无写权限者推送新提交时关闭 Auto-merge;有写权限者推送后不保证自动关闭。由于官方 Review 当前不是 required check,纳管产品仓库在 v1 暂不允许开启 Auto-merge,也不为单个 PR 启用它。

人工合并前必须确认官方 Review 当前 HEAD、全部 review thread 已解决且 required checks 成功;新提交必须重新 Review。Dependabot PR 不会自动合并;尤其是运行时依赖、跨大版本升级、构建行为变化,以及合并即触发生产发布的仓库,仍需兼容性判断和明确发布授权。
人工合并前必须确认 required checks 成功、阻塞 finding 已修复或有明确风险接受、全部 review thread 已完成处置,且依赖或发布风险已分类;非阻塞项不要求代码修改或重复审查。Dependabot PR 不会自动合并;尤其是运行时依赖、跨大版本升级、构建行为变化,以及合并即触发生产发布的仓库,仍需兼容性判断和明确发布授权。

分支自动删除不是公共强制项。只有仓库仅使用临时 PR head 分支,或所有长期 head 分支受保护时,才启用 GitHub 的合并后自动删除;存在未保护且需要复用的 `dev`、`release` 等长期 head 分支时必须关闭。本地 worktree 和分支始终只在确认已合并、工作区干净且没有独有提交后清理。

Expand Down Expand Up @@ -75,7 +81,7 @@ GitHub 只保证无写权限者推送新提交时关闭 Auto-merge;有写权
- `master` branch protection 和 required check。
- 纳管产品仓库关闭 Auto-merge;分支自动删除按项目真实分支模型配置,不由公共审计强制。人工合并前的 Review/thread/风险分类仍由真实 PR 验收。

中央审计明确不解释任意 shell 的控制流,也不尝试从注释、`echo`、here-doc、字符串或脚本名证明 ref/内容 ID 比对、容器内 smoke、回滚命令及实际 `DEPLOY_TARGET_SHA`。它也不抓取官方页面或私有接口来判断 Automatic reviews 设置和模型审查质量;这些事实分别由项目可执行契约测试、真实发布验收和真实 PR Review 负责。模板只是一种可复制 profile,`.github/release-safety.yml` 才是每个项目拓扑的声明式适配层。
中央审计明确不解释任意 shell 的控制流,也不尝试从注释、`echo`、here-doc、字符串或脚本名证明 ref/内容 ID 比对、容器内 smoke、回滚命令及实际 `DEPLOY_TARGET_SHA`。它也不抓取官方页面或私有接口来判断 Automatic reviews 设置、模型审查质量、同一 HEAD 请求次数、在途 Review 或审查轮次预算;这些事实分别由项目可执行契约测试、真实发布验收和真实 PR 时间线负责。模板只是一种可复制 profile,`.github/release-safety.yml` 才是每个项目拓扑的声明式适配层。

本地 fixture 自测:

Expand Down
Loading