现象
产品仓(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。)
归因
adversary.yml 写回步:同仓 PR 走 GITHUB_TOKEN(job 级 checks:write)可用;跨仓走 App 令牌——但 cloudbrid-agent App 无 checks:write 权限(工作流注释中 2026-08-24 已实测记录该 403,与本次一致)。
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 面)
三选一或组合:
- 给 cloudbrid-agent App 增加 checks:write(最小改动,覆盖全部产品仓);
- adversary-relay 增加
pr_repo 入参 + 以目标仓 App 令牌写回(仍受 1 制约);
- 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。
现象
产品仓(QW_Arena1)spec PR 的 adversary verdict 跨仓写回失败:
(CI-Workflows adversary run 32823570871,2026-08-25 07:51 UTC;令牌为 cloudbrid-agent App 单仓作用域,身份确认有效、唯独 checks:write 403。)
归因
adversary.yml写回步:同仓 PR 走GITHUB_TOKEN(job 级 checks:write)可用;跨仓走 App 令牌——但 cloudbrid-agent App 无 checks:write 权限(工作流注释中 2026-08-24 已实测记录该 403,与本次一致)。adversary-relay.yml(.github 仓,W4-C2 补件)用本仓GITHUB_TOKEN写 check——但它写回的目标是github.repository= 治理仓自身,只服务 .github 仓内的 spec PR,产品仓无对应通道。影响
产品仓任何 specs/** PR 的 survived verdict 无法机械写回——org-required
adversarycheck(adversary-gate fail-closed)永远红,产品仓 spec PR 无法合并。IR-0005/ADR-0085 后产品仓接入 spec 流程(QW_Arena1 为首个实弹)即撞此缺口。建议(C1 面)
三选一或组合:
pr_repo入参 + 以目标仓 App 令牌写回(仍受 1 制约);临时补位(本次 QW_Arena1 PR #5 采用)
survived 后由 owner 通道按 adversary-relay 同款机械核证逻辑(run 存在且 success + workflow=adversary + 判定行 survived + head SHA 一致)写回 check run,全程留痕于 PR body 与本 issue。