Files
Agent-System-Dev/policy/platform-admission.md
T
weichen 501c727620 Prepare exact required CI settings for the platform owner
Why: the observed main protection does not require status checks, so platform admission must be verified before activating the delivery queue.

Evidence: SELF read-only configuration and actual PR context names recorded in the task card; protection changes and negative-case replay remain NOT_RUN.

Impact: owner instructions and six-field configuration proposal only; no remote protection, approval count or workflow is changed.

Refs: U5; policy/platform-admission.md; .task/feature-merge-queue-policy-draft.md
2026-10-13 08:21:58 +00:00

5.2 KiB
Raw Blame History

平台准入的所有者操作

状态:待所有者执行;本次仅准备,不修改远端分支保护。 依据:根 AGENTS.md「高后果操作双钥匙」要求分支保护变更由用户确认并亲手执行。

已核实的差距

本轮读取结果见 .task/feature-merge-queue-policy-draft.md 的原始 SELF 收据(2026-10-13; 命令 python3 /tmp/mq-read-platform-20261013.py)。观察对象 main 为 ff3fb4a7ebe432ab21c6b9668abc9823aca2fdd1:禁直推/强推、陈旧分支阻断开启, 必需状态检查关闭,管理员强制合入覆盖未阻断。此为配置观察,不是拒绝路径通过证明。 PR #513 的固定 head 9a3c205b0b93185172cb6b31f6793b3a4d71ea58 状态列表实际包含以下三个上下文; 该次记录未核验它们的最终通过结果,不能据此合入该 PR。

ci / test (pull_request)
ci / test-pg (pull_request)
ci / svc-realcombo (pull_request)

仓级 runner 查询为空,不代表实例/组织共享 runner 不存在;总体容量与预算仍待核验。 执行以下操作前重查 main、保护配置和当次 PR/运行,不把本次读配置当长期授权或能力保证。

2026-10-05 读取 Dev 的 main 分支保护 API,观察到禁直推与陈旧分支拦截开启, 必需状态检查关闭、批准数为 0。读取历史 PR head 的状态 API,实际检查名为 ci / test (pull_request)。完整命令与输出由 evidence 工具记录在 .task/feature-governance-reliability.md,来源 SELF(只读配置观察,不是门禁负例)。 执行以下步骤前再次读取配置,不能把本记录当长期有效的平台事实。

所有者执行

  1. 在 Gitea 的 Agent-System-Dev 仓库设置中打开 main 的分支保护,先保留当前配置截图或导出。
  2. 确认本次修复 PR 的固定 head 已实际运行 CI,并在提交状态中核对完整检查名。
  3. 启用必需状态检查,逐项选择当次核验的 test、test-pg、svc-realcombo 三个完整 PR 上下文;保持禁直推、禁强推及陈旧分支拦截。 不用仅在合入后运行的 ci / test (push) 替代 PR 检查。 建议同时启用“管理员遵守分支保护”,关闭管理员强制合入覆盖;该配置也由所有者亲手执行。
  4. 批准数暂不随此修复自动调整。若另行启用非作者批准,先确认有可用且符合权限要求的 独立审核账号;不能把切换 Agent 角色当独立账号,也不能盲设阈值使单账号仓库无法交付。
  5. 在隔离的测试 PR 上验证:无检查、检查失败和陈旧候选均不可合入;合法且检查通过的 PR 可由智能体完成 Review 并按 迭代交付 执行合入。 记录 head/base、运行链接及实际拒绝结果,标 GATE/REPLAY。

任一判据未满足时暂停合入并保留测试对象。配置调整失败由所有者对照保存的配置恢复; 不把“配置 API 返回成功”写成“门禁已有效”。其他组合仓分别核验,不外推 Dev 的结果。

可评审配置与恢复

以下是待所有者执行的最小字段变更,不是已经执行的 API 请求;批准数、白名单和其他策略保持原值。 在 Gitea 仓库设置 → Branches → main 对照这些字段保存即可。 API 使用 PATCH /api/v1/repos/weichen/Agent-System-Dev/branch_protections/main,只改变指定字段, 语义依据 官方 API 和 分支保护说明。

{
  "enable_push": false,
  "enable_force_push": false,
  "block_on_outdated_branch": true,
  "enable_status_check": true,
  "status_check_contexts": [
    "ci / test (pull_request)",
    "ci / test-pg (pull_request)",
    "ci / svc-realcombo (pull_request)"
  ],
  "block_admin_merge_override": true
}

所有者先通过 GET 同一资源保存完整旧配置到仓外受保护文件;恢复只写回本次涉及的这六类字段, 使用保存时的实际值,避免覆盖同时发生的其他配置调整。根 AGENTS.md 的双钥匙边界对恢复同样适用,Agent 不自行恢复保护。 凭据只从环境或受保护文件引用,不放请求 URL、日志或提交;不生成带 token 字面量的 curl 示例。

验证对象由所有者和协调者在动作前指定:优先隔离保护规则/测试 PR,记录实际 head/base 和预期副作用。 需要作用于 Dev 时单独确认该测试对象及合入/撤回安排;不为构造测试直推 main、发布或改写历史。 临时仓的 fixture CI 只证明保护机制,Dev workflow 的仓库 allowlist 和完整业务 CI 仍需在实际 Dev 候选核验。 缺检查/失败/陈旧/无权推进的拒绝与合法路径全部有 GATE/REPLAY 后,再更新能力矩阵并判断是否可切换调度模式。

CI 信任前提

本次 workflow 修复减少 checkout token 对候选代码的暴露;仍须由平台维护者核验 workflow 来源策略、runner 隔离/销毁及 token 最小权限。仅要求一个可由候选自行修改的 绿色检查,不能证明测试定义或执行身份可信。平台验证结果回填任务主记录与能力矩阵。