Skip to content

adversary verdict 跨仓写回缺口:App 无 checks:write + relay 只服务治理仓——产品仓 spec PR 被永久阻断 #365

Description

@randypanding

现象

产品仓(QW_Arena1)spec PR 的 adversary verdict 跨仓写回失败:

check run 写回失败:API POST .../repos/Cloudbird-Software/QW_Arena1/check-runs 失败 HTTP 403
"Resource not accessible by integration"

(CI-Workflows adversary run 32823570871,2026-08-25 07:51 UTC;令牌为 cloudbrid-agent App 单仓作用域,身份确认有效、唯独 checks:write 403。)

归因

  1. adversary.yml 写回步:同仓 PR 走 GITHUB_TOKEN(job 级 checks:write)可用;跨仓走 App 令牌——但 cloudbrid-agent App 无 checks:write 权限(工作流注释中 2026-08-24 已实测记录该 403,与本次一致)。
  2. adversary-relay.yml(.github 仓,W4-C2 补件)用本仓 GITHUB_TOKEN 写 check——但它写回的目标是 github.repository = 治理仓自身,只服务 .github 仓内的 spec PR,产品仓无对应通道。

影响

产品仓任何 specs/** PR 的 survived verdict 无法机械写回——org-required adversary check(adversary-gate fail-closed)永远红,产品仓 spec PR 无法合并。IR-0005/ADR-0085 后产品仓接入 spec 流程(QW_Arena1 为首个实弹)即撞此缺口。

建议(C1 面)

三选一或组合:

  1. 给 cloudbrid-agent App 增加 checks:write(最小改动,覆盖全部产品仓);
  2. adversary-relay 增加 pr_repo 入参 + 以目标仓 App 令牌写回(仍受 1 制约);
  3. adversary-gate 在产品仓上下文内自跑判定(判定逻辑下沉 org required workflow,无需跨仓写回)。

临时补位(本次 QW_Arena1 PR #5 采用)

survived 后由 owner 通道按 adversary-relay 同款机械核证逻辑(run 存在且 success + workflow=adversary + 判定行 survived + head SHA 一致)写回 check run,全程留痕于 PR body 与本 issue。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions