以下为对 .github 治理仓所做的静态推演中,可被本仓文件与代码客观证明的事实。仅陈述行为与证据位置,不给出处置建议。
A. 同一 GitHub App 在仓库内存在两种拼写
scripts/create-cloudbird-agent-app.html L12:manifest "name": "cloudbird-agent"
scripts/new-repo-init.sh L30-31:select(.app_slug == "cloudbrid-agent")
governance/expected-state.json L37:"name": "cloudbrid-agent"
governance/GOVERNANCE.yaml L90:App(cloudbrid-agent)
scripts/gh-app-token.sh L2/L7/L14/L19/L51/L69 注释:cloudbird-agent
→ 同一对象在本仓内同时出现 cloudbird-agent 与 cloudbrid-agent。
B. gate 不校验 ADR 存在性,也不覆盖 expected-state.json
.github/workflows/gate.yml L19-28:仅 yaml.safe_load 解析 yaml;L29-32:仅 jq -e . 校验 rulesets/*.json 语法;L37-44:仅查 REPOS.yaml 重名。
governance/GOVERNANCE.yaml L194-195:C1 要求 ADR(新建或引用编号) 并注明“无 ADR 不合并”。
jq 遍历范围仅为 governance/rulesets/*.json(gate.yml L32);governance/expected-state.json 为 JSON,既非 *.yaml 也非被遍历的 ruleset。
→ 变更 GOVERNANCE.yaml / expected-state.json 且不含 ADR 时,gate 仍通过。
C. 治理“语义”削弱无法被机器检出,仅能与现状自洽
governance/drift-check.sh L42-45:把线上 ruleset 与“落盘文件本身”做同构裁剪后 diff,期望值取自被测文件;不对 GOVERNANCE.yaml 的 intent/strength 字段做任何比对。
→ 将 enforcement 由 active 改为 evaluate,或从 required_status_checks 移除 gate,只要落盘与线上一致,drift-check 判定 OK。
D. 治理变更分级(C1/C2/C3)无机器强制
governance/GOVERNANCE.yaml L191-200 定义 C1/C2/C3 及各自 scope。
.github/workflows/gate.yml 无任何“按文件路径判定某次变更属哪一级”的逻辑。
→ 以 C3(文档)提交实际改动 C1 范围文件(如 expected-state.json、GOVERNANCE.yaml),gate 无感知。
E. org admin 令牌被注入公开仓 workflow,且其存在未登记于期望状态
- 本仓为 public:
profile/README.md L3;governance/REPOS.yaml L20-25(visibility: public)。
.github/workflows/governance-drift.yml L21/L27:GH_TOKEN=${{ secrets.GOVERNANCE_TOKEN }}。
governance/drift-check.sh L8/L19-22:注明需“org admin GH_TOKEN”,api() 以其鉴权访问 org 全部 rulesets / actions / code-security / repos / collaborators。
governance/expected-state.json L32-35:org_secrets_required 仅 [CB_APP_ID, AGENT_APP_SECRET],不含 GOVERNANCE_TOKEN。
→ org admin 级令牌被用于公开仓 workflow,且治理期望状态未登记该令牌。
F. 三个 ruleset 的 bypass 均为 OrganizationAdmin(always)
governance/rulesets/main-protection.json L21-27、codeql-gate.json L9-14、release-tags.json L9-14:bypass_actors = [OrganizationAdmin, always]。
→ 任一 OrganizationAdmin 可绕过 BP-1/BP-3/SC-1 对应 ruleset。
G. 漂移 issue 只创建/追加,无自动关闭
.github/workflows/governance-drift.yml L29-47:仅 if: failure() 时,按固定标题在同一 open issue 上幂等 comment(L43-45)或 create(L47);body L42 硬编码 @randypanding;没有任何关闭 issue 的步骤。
→ 漂移被修复后,已存在的漂移 issue 不会被自动关闭。
H. 若干漂移类别无 apply.sh 修复路径
governance/apply.sh 仅覆盖:step1 ruleset(L20-34)、step2 actions(L36-41)、step3 workflow 权限(L43-45)、step4 code-security default(L48-59)、step5 仓基线(L61-69)。
governance/drift-check.sh 会检出的部分类别在 apply.sh 中无对应修复操作:§5 org secrets 缺失(L93-98)、§6 App 权限出现禁用项/App 缺失(L101-114)、§7 REPOS.yaml 未申报(L131-134)、§8 直推(L150-158)、§9 admin 数量≠1(L180-188)。
→ 上述漂移被检出时,apply.sh 存在不可修复的类别。
I. §8 直推检测以 commit 消息后缀为唯一判据
governance/drift-check.sh L150-151:将“不匹配字面模式 [(]#[0-9]+[)]$((#数字) 结尾)”的 commit 判为直推漂移;即把 squash 合并产生的 (#N) 结尾当作“已走 PR”的唯一证据。
→ 直推 commit 的消息若以 (#数字) 结尾,不会被识别为漂移。
J. 治理审批与 admin 唯一性全部唯一依赖单一人,且写死在代码里
CODEOWNERS L4-10、.github/CODEOWNERS L3:全部路径仅 @randypanding。
governance/rulesets/main-protection.json L43 require_code_owner_review: true,L41 required_approving_review_count: 0。
governance/drift-check.sh L163:OWNER_LOGIN="${OWNER_LOGIN:-randypanding}";L180-184:强制每仓 admin 数量==1 且 == OWNER_LOGIN。
→ 治理变更审批与 admin 唯一性校验唯一依赖 randypanding;drift-check 将其硬编码为默认值。
K. 新仓挂载失败不会中断脚本
scripts/new-repo-init.sh L37-42:挂载返回非 204 时仅 echo 手动路径,不触发非零退出(脚本 L8 set -euo pipefail);随后 L44-50 继续执行“验证”,L51-57 打印“完成”。
→ App 挂载失败时脚本仍以退出码 0 结束并输出“完成”。
L. 新仓标准流程从公开 main 未固定拉取脚本并在 admin 上下文中执行
scripts/new-repo-init.sh L54-56:bash <(curl -sS https://raw.githubusercontent.com/$ORG/.github/main/scripts/new-repo-init.sh) <name>,未 pin commit/tag,且 .github 为 public(见 E)。
→ 脚本内容随 main 变化,未固定的远端脚本在持有 admin 凭据的上下文中被执行。
M. 本仓缺少其自身声明的契约/机制文件
governance/GOVERNANCE.yaml L138(CG-1)声明 AGENTS.md 契约;本仓根目录无 AGENTS.md。
standards/agent/agent.schema.yaml L23-24 注明六机制原型“声明于 standards/archetype-profiles.yaml”;该文件在本仓不存在。
→ 上述被本仓引用的文件不存在。
以下为对
.github治理仓所做的静态推演中,可被本仓文件与代码客观证明的事实。仅陈述行为与证据位置,不给出处置建议。A. 同一 GitHub App 在仓库内存在两种拼写
scripts/create-cloudbird-agent-app.htmlL12:manifest"name": "cloudbird-agent"scripts/new-repo-init.shL30-31:select(.app_slug == "cloudbrid-agent")governance/expected-state.jsonL37:"name": "cloudbrid-agent"governance/GOVERNANCE.yamlL90:App(cloudbrid-agent)scripts/gh-app-token.shL2/L7/L14/L19/L51/L69 注释:cloudbird-agent→ 同一对象在本仓内同时出现
cloudbird-agent与cloudbrid-agent。B.
gate不校验 ADR 存在性,也不覆盖expected-state.json.github/workflows/gate.ymlL19-28:仅yaml.safe_load解析 yaml;L29-32:仅jq -e .校验rulesets/*.json语法;L37-44:仅查 REPOS.yaml 重名。governance/GOVERNANCE.yamlL194-195:C1 要求ADR(新建或引用编号)并注明“无 ADR 不合并”。jq遍历范围仅为governance/rulesets/*.json(gate.yml L32);governance/expected-state.json为 JSON,既非*.yaml也非被遍历的 ruleset。→ 变更
GOVERNANCE.yaml/expected-state.json且不含 ADR 时,gate仍通过。C. 治理“语义”削弱无法被机器检出,仅能与现状自洽
governance/drift-check.shL42-45:把线上 ruleset 与“落盘文件本身”做同构裁剪后 diff,期望值取自被测文件;不对GOVERNANCE.yaml的 intent/strength 字段做任何比对。→ 将
enforcement由active改为evaluate,或从required_status_checks移除gate,只要落盘与线上一致,drift-check 判定 OK。D. 治理变更分级(C1/C2/C3)无机器强制
governance/GOVERNANCE.yamlL191-200 定义 C1/C2/C3 及各自 scope。.github/workflows/gate.yml无任何“按文件路径判定某次变更属哪一级”的逻辑。→ 以 C3(文档)提交实际改动 C1 范围文件(如
expected-state.json、GOVERNANCE.yaml),gate 无感知。E. org admin 令牌被注入公开仓 workflow,且其存在未登记于期望状态
profile/README.mdL3;governance/REPOS.yamlL20-25(visibility: public)。.github/workflows/governance-drift.ymlL21/L27:GH_TOKEN=${{ secrets.GOVERNANCE_TOKEN }}。governance/drift-check.shL8/L19-22:注明需“org admin GH_TOKEN”,api()以其鉴权访问 org 全部 rulesets / actions / code-security / repos / collaborators。governance/expected-state.jsonL32-35:org_secrets_required仅[CB_APP_ID, AGENT_APP_SECRET],不含GOVERNANCE_TOKEN。→ org admin 级令牌被用于公开仓 workflow,且治理期望状态未登记该令牌。
F. 三个 ruleset 的 bypass 均为 OrganizationAdmin(always)
governance/rulesets/main-protection.jsonL21-27、codeql-gate.jsonL9-14、release-tags.jsonL9-14:bypass_actors = [OrganizationAdmin, always]。→ 任一 OrganizationAdmin 可绕过 BP-1/BP-3/SC-1 对应 ruleset。
G. 漂移 issue 只创建/追加,无自动关闭
.github/workflows/governance-drift.ymlL29-47:仅if: failure()时,按固定标题在同一 open issue 上幂等 comment(L43-45)或 create(L47);body L42 硬编码@randypanding;没有任何关闭 issue 的步骤。→ 漂移被修复后,已存在的漂移 issue 不会被自动关闭。
H. 若干漂移类别无
apply.sh修复路径governance/apply.sh仅覆盖:step1 ruleset(L20-34)、step2 actions(L36-41)、step3 workflow 权限(L43-45)、step4 code-security default(L48-59)、step5 仓基线(L61-69)。governance/drift-check.sh会检出的部分类别在apply.sh中无对应修复操作:§5 org secrets 缺失(L93-98)、§6 App 权限出现禁用项/App 缺失(L101-114)、§7 REPOS.yaml 未申报(L131-134)、§8 直推(L150-158)、§9 admin 数量≠1(L180-188)。→ 上述漂移被检出时,
apply.sh存在不可修复的类别。I. §8 直推检测以 commit 消息后缀为唯一判据
governance/drift-check.shL150-151:将“不匹配字面模式[(]#[0-9]+[)]$((#数字)结尾)”的 commit 判为直推漂移;即把 squash 合并产生的(#N)结尾当作“已走 PR”的唯一证据。→ 直推 commit 的消息若以
(#数字)结尾,不会被识别为漂移。J. 治理审批与 admin 唯一性全部唯一依赖单一人,且写死在代码里
CODEOWNERSL4-10、.github/CODEOWNERSL3:全部路径仅@randypanding。governance/rulesets/main-protection.jsonL43require_code_owner_review: true,L41required_approving_review_count: 0。governance/drift-check.shL163:OWNER_LOGIN="${OWNER_LOGIN:-randypanding}";L180-184:强制每仓 admin 数量==1 且 == OWNER_LOGIN。→ 治理变更审批与 admin 唯一性校验唯一依赖
randypanding;drift-check 将其硬编码为默认值。K. 新仓挂载失败不会中断脚本
scripts/new-repo-init.shL37-42:挂载返回非 204 时仅echo手动路径,不触发非零退出(脚本 L8set -euo pipefail);随后 L44-50 继续执行“验证”,L51-57 打印“完成”。→ App 挂载失败时脚本仍以退出码 0 结束并输出“完成”。
L. 新仓标准流程从公开
main未固定拉取脚本并在 admin 上下文中执行scripts/new-repo-init.shL54-56:bash <(curl -sS https://raw.githubusercontent.com/$ORG/.github/main/scripts/new-repo-init.sh) <name>,未 pin commit/tag,且.github为 public(见 E)。→ 脚本内容随
main变化,未固定的远端脚本在持有 admin 凭据的上下文中被执行。M. 本仓缺少其自身声明的契约/机制文件
governance/GOVERNANCE.yamlL138(CG-1)声明 AGENTS.md 契约;本仓根目录无AGENTS.md。standards/agent/agent.schema.yamlL23-24 注明六机制原型“声明于 standards/archetype-profiles.yaml”;该文件在本仓不存在。→ 上述被本仓引用的文件不存在。