Skip to content

feat: centralize organization label policy#5

Merged
lzm0x219 merged 8 commits into
mainfrom
agent/centralize-label-policy
Jul 11, 2026
Merged

feat: centralize organization label policy#5
lzm0x219 merged 8 commits into
mainfrom
agent/centralize-label-policy

Conversation

@lzm0x219

Copy link
Copy Markdown
Member

变更摘要

新增独立的 label-policy.yml,将组织级标签的所有权边界、历史受管名称和仓库同步范围从 Ruby 实现中提取为可审查配置,并将同步范围改为显式仓库 Allowlist。

主要修改

  • 新增 .github/label-policy.yml
    • 定义组织拥有的标签前缀;
    • 定义无前缀的组织级标签;
    • 定义仍需清理的历史标签名称;
    • 明确列出当前参与同步的 6 个仓库:.githubecosystemepheonmathartsskillsziwei
  • 重构标签同步器:
    • 删除 Ruby 中硬编码的标签前缀与精确名称;
    • 不再枚举组织中的全部仓库;
    • 逐一解析 Allowlist 仓库;
    • 手动指定仓库时禁止绕过 Allowlist;
    • Allowlist 中仓库若被归档、禁用或变为 Fork,工作流失败并要求更新策略;
    • 只删除策略声明为组织所有的标签,保留仓库扩展标签。
  • 增加配置一致性校验:
    • labels.yml 的每个正式标签必须属于策略的受管前缀或精确名称;
    • 每个 aliases 必须同时登记在 legacy_names
    • 正式标签不得同时被登记为历史名称;
    • 策略版本、字段、重复值、仓库名称和前缀格式均会被验证。
  • 扩充单元测试,覆盖 Allowlist、历史名称所有权、越权仓库拒绝和当前策略清单。
  • 更新 Preview、Apply、验证工作流与 README。

职责边界

  • .github/labels.yml:目标标签的名称、颜色、描述,以及当前需要执行的一对一迁移别名;
  • .github/label-policy.yml:组织拥有的标签范围、仍需清理的历史名称、仓库 Allowlist;
  • docs/label-governance.md:标签使用语义、流程和维护责任。

这避免把当前实现常量当成标准来源,也避免新增仓库未经审查就自动获得组织级写操作。

行为变化

  • 新增 MathArts 仓库不会自动进入标签同步范围;
  • 从 Allowlist 移除仓库后,预览和 Apply 都不再访问该仓库;
  • repository 手动参数只能选择 Allowlist 中的仓库;
  • labels.ymlaliases 移除迁移映射后,只要名称仍在 legacy_names,同步器仍会清理遗留旧标签;
  • 现有 6 个仓库的预期标签结果不变。

验证

  • Ruby 单元测试:6 runs、28 assertions,全部通过;
  • YAML 结构已完成本地解析;
  • 分支基于最新 main 提交 014a321,无落后提交;
  • PR CI 将运行策略测试、不可变 Action 引用检查、Markdown/链接检查和真实的只读 Allowlist 预览。

风险与约束

  • 创建、归档或改变仓库用途时,需要同步审查 repositories.include
  • 删除 legacy_names 前,必须确认所有 Allowlist 仓库已完成旧标签清理;
  • 本 PR 不执行 Apply,也不改变 GitHub App 权限或安装范围。

审查重点

  • 当前 6 个仓库是否都应纳入组织级标签治理;
  • aliaseslegacy_names 的生命周期划分是否清晰;
  • Allowlist 仓库处于不可同步状态时选择失败而非静默跳过是否符合治理预期。

Copy link
Copy Markdown
Member Author

自动验证结果

本 PR 的 GitHub Actions 已全部通过:

  • Validate documentation:成功;
  • Preview organization labels:成功;
  • 标签策略、Allowlist 与迁移名称单元测试:6 runs / 28 assertions;
  • 不可变 Action 引用、Issue Form 标签、文档引用、Markdown 与链接检查:全部成功。

只读 Preview 使用 Contents: readIssues: readMetadata: read 权限完成,没有读取 GitHub App 私钥,也没有执行任何标签写入。

@lzm0x219
lzm0x219 marked this pull request as ready for review July 11, 2026 06:51
@lzm0x219
lzm0x219 merged commit be9afe9 into main Jul 11, 2026
5 checks passed
@lzm0x219
lzm0x219 deleted the agent/centralize-label-policy branch July 11, 2026 06:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant