|
1 | | -# .github/CODEOWNERS — governance routing (#6785; ruling #6741). |
| 1 | +# .github/CODEOWNERS — governance routing: every Tier H governed surface to |
| 2 | +# every authorized approver. |
2 | 3 | # |
3 | 4 | # The ruling this file helps enforce (maintainer, verbatim): |
4 | 5 | # 「adr 只能由维护者自己确认,人工合并,ai 不得擅自合并。」 |
5 | 6 | # |
6 | | -# Routing docs/adr/ to the maintainer does two things: every PR touching an |
7 | | -# ADR requests his review automatically, and a ruleset / branch-protection |
8 | | -# rule "require review from Code Owners" has an entry to bind to (Half 2 of |
9 | | -# #6785 — a repo-settings change only the maintainer can apply; the |
10 | | -# button-by-button instructions are in the PR that added this file). |
| 7 | +# The owner list on EVERY row mirrors `GOVERNED_APPROVERS` in |
| 8 | +# scripts/pm/check-governed-queue-guard.mjs — the one list of accounts whose |
| 9 | +# APPROVED review lands a Tier H surface (「os-zhuang hotlong 批准算数」). The |
| 10 | +# rows mirror the Tier H rows of `GOVERNED_SURFACES` in |
| 11 | +# scripts/pm/check-governed-merges.mjs. This file is static and can import |
| 12 | +# neither, so the two stay in step the only way a static file can: |
| 13 | +# `node scripts/pm/check-governed-queue-guard.mjs --self-test` reads this file |
| 14 | +# (`codeownersMirrorVerdict`) and reds when a Tier H row has no line here, when |
| 15 | +# any line names fewer or other owners than that constant, or when a Tier S row |
| 16 | +# (`.claude/**`, which lands on a seat's review of record) is routed here. |
| 17 | +# Change the constant or the register first; this file follows in the same PR. |
11 | 18 | # |
12 | | -# The per-PR CI half that used to sit beside this file (`ADR maintainer |
13 | | -# approval`) retired under the 2026-08-18 ruling (#9495): a human merge IS |
14 | | -# the review record for a governed surface, the pre-merge line of defense is |
15 | | -# seat discipline (no AI seat flips ready / enqueues / arms auto-merge on a |
16 | | -# governed PR — AGENTS.md Prime Directive #14), and detection moved to the |
17 | | -# report-only post-merge audit, scripts/pm/check-governed-merges.mjs, whose |
18 | | -# header carries the incident history that used to live in the gate script. |
| 19 | +# What routing buys, and what it does not: GitHub requests a code owner's |
| 20 | +# review when a pull is opened READY or marked ready for review. A DRAFT open |
| 21 | +# requests nobody — measured on this repository's own Tier H pulls, where the |
| 22 | +# request arrived at `ready_for_review` and never at the draft create. Every |
| 23 | +# seat-driven Tier H pull is opened draft and stays draft until the approval, |
| 24 | +# so the fleet relay requests the same accounts itself at `pr_create` and |
| 25 | +# `pr_ready` (scripts/pm/fleet-write/ops.mjs, "The governed-review follow-up"); |
| 26 | +# this file is the platform half — for a pull opened ready or readied by hand — |
| 27 | +# and the entry a ruleset's "require review from Code Owners" can bind to. A |
| 28 | +# code owner without write access is ignored by GitHub without a word: |
| 29 | +# `GET /repos/{owner}/{repo}/codeowners/errors` reads this file's own verdict. |
19 | 30 | # |
20 | | -# `hotlong` is verified against the repo history, not assumed: 2,153 commits |
21 | | -# on main are authored as 50353452+hotlong@users.noreply.github.com — GitHub's |
22 | | -# {id}+{login} noreply address form ties the login to the account. |
| 31 | +# Both logins are verified, not assumed: `hotlong` authors the bulk of main's |
| 32 | +# history as 50353452+hotlong@users.noreply.github.com (GitHub's {id}+{login} |
| 33 | +# noreply form ties the login to the account); `os-zhuang` is named by the |
| 34 | +# ruling above and has readied and reviewed this repository's pulls. |
23 | 35 | # |
24 | | -# The enforcement chain itself is routed the same way, deliberately: a PR |
25 | | -# that edits the audit script or this file is a governance change — without |
26 | | -# these entries the docs/adr/ rule could be lifted by editing the enforcers |
27 | | -# instead of the ADRs. |
| 36 | +# The enforcement chain is routed the same way, deliberately: a PR that edits |
| 37 | +# the audit script, the approver constant or this file is a governance change — |
| 38 | +# without these entries the rule could be lifted by editing the enforcers |
| 39 | +# instead of the surfaces. |
28 | 40 |
|
29 | | -/docs/adr/ @hotlong |
30 | | -/.github/CODEOWNERS @hotlong |
31 | | -/scripts/pm/check-governed-merges.mjs @hotlong |
| 41 | +# Tier H governed surfaces — the register's rows with tier H |
| 42 | +/docs/adr/ @os-zhuang @hotlong |
| 43 | +/skills/ @os-zhuang @hotlong |
| 44 | +/AGENTS.md @os-zhuang @hotlong |
| 45 | +/CLAUDE.md @os-zhuang @hotlong |
| 46 | +/docs/NORTH-STAR.md @os-zhuang @hotlong |
| 47 | +/.github/workflows/ @os-zhuang @hotlong |
| 48 | + |
| 49 | +# The enforcement chain |
| 50 | +/.github/CODEOWNERS @os-zhuang @hotlong |
| 51 | +/scripts/pm/check-governed-merges.mjs @os-zhuang @hotlong |
| 52 | +/scripts/pm/check-governed-queue-guard.mjs @os-zhuang @hotlong |
0 commit comments