Repository navigation
Commit e167956
feat(pm): the governed register gains the six nested ui/ workspace rows (#25834)
<!-- claude-projects-attribution: {"github_login":"os-tesla"} -->
_Requested by **Tesla** · [project
thread](https://claude.ai/code/project/chan_01AXsQkLFKRdQCqQ3RTr6Jao?thread=cmsg_01AXsQkLFKRdQCqQ3RTr6JaoAqVfFyhsxKuFcEP9YTBj25)_
Part of #25712 (4b PR 2b: the governed register learns the `ui/`
workspace).
Part of objectstack#25677.
Clause-②: no
Metadata-protocol: none
## 维护者速读(草稿)
- **改了什么:** 受管面登记表新增 `ui/`
工作区的六行(`ui/docs/adr/**`、`ui/.claude/**`、`ui/skills/**`、`ui/AGENTS.md`、`ui/CLAUDE.md`、`ui/.github/workflows/**`),全部
Tier H,只管 objectstack;CODEOWNERS 同加六行;`AGENTS.md` 第 14 条与 pm-dispatch
技能的路径分叉段写上这六个面。
- **为什么改:** objectui 合进 `ui/` 之后,它原来自己的受管面不能落空;第 16 项裁决(`ui/.claude/**`
在并入根 `.claude/**` 之前保持 Tier H)。
- **风险与代价(含回滚):** 两个指令文件都在行数上限,本 PR 不加行、不抬上限,靠原地压缩措辞付账;回滚 = revert 本
PR。`main` 上还没有 `ui/`,这六行在 cutover 之前不命中任何路径。
- **席位意见:**(留空)
- **你要做的:** 批准本 PR(Tier H,因为改了 `AGENTS.md`)。
## What changes
- `scripts/pm/check-governed-merges.mjs`: six rows on
`GOVERNED_SURFACES`. They are objectui's own register (every root row
except the North Star) prefixed with `ui/`, scoped `repos:
['objectstack']`, and all Tier H. `ui/.claude/**` is included, because
it stays Tier H until it folds into the root `.claude/**` (Tesla,
2026-10-25, director item 16).
- The self-test's `UI_SPECIMENS` rows from PR 1 (#25732) now pin the
live rows. The flipped pin is `today-the-register-does-not-know-ui-…`,
which becomes `the-register-knows-ui-the-rows-are-live`.
- The register seam stays covered by the one register that does not
carry the rows.
- The counts that read the register move from 7 to 13 for objectstack
only. cloud and objectui stay at 7, objectos and hotcrm at 6.
- `scripts/pm/check-governed-queue-guard.mjs`: the CODEOWNERS mirror
pins move to the live rows. With the `/ui/` lines removed, the file on
disk is short exactly one line per row. The "13 surfaces govern
objectstack" head is pinned.
- `.github/CODEOWNERS`: six `/ui/…` lines routed to every
`GOVERNED_APPROVERS` account.
- `AGENTS.md` Prime Directive #14 and
`.claude/skills/pm-dispatch/SKILL.md` (the ACCEPT path fork) name the
six globs, as `check:pm-governed-prose` requires.
- Both files are at their ceiling (1117/1117 and 319/319 lines). No
ceiling was raised; both stay at those line counts, every line at most
120 bytes.
- In AGENTS.md the paragraph is re-wrapped over its own ten lines. To
make room, four clauses come out, quoted as they stood:
1. ` — this file is one —` after `` `CLAUDE.md` `` (`AGENTS.md` is
already in the list).
2. `; a mixed diff is governed whole on one path hit.` (the next
paragraph says it again).
3. `When it reds, name the surface here.` (the gate's own message says
it).
4. `the` and `table` around `` `GOVERNED_SURFACES` ``: "The register is
the `GOVERNED_SURFACES` table in" now reads "The register is
`GOVERNED_SURFACES` in".
- In SKILL.md, one line is paid by joining the install-surface probe
line onto the cross-repo unblock criterion two lines above it, which
leaves that line's quoted wording intact.
## Verification
| Gate | `main` + this PR | sitting tree + PR 2a + this PR |
|---|---|---|
| `pnpm check:pm-governed-merges` (534 assertions) | 0 | 0 |
| `node scripts/pm/check-governed-queue-guard.mjs --self-test` (345
cases) | 0 | 0 |
| `pnpm check:pm-governed-prose` (13 surfaces, both regions) | 0 | 0 |
| `pnpm check:pm-skill-ratchet` (AGENTS.md 1117/1117, SKILL.md 319/319)
| 0 | 0 |
- Derived gates (`node scripts/pm/dispatch-gates.mjs --commands --repo
objectstack-ai/objectstack`): 54 families, all exit 0 at this head on
`main` `e2aaaf1c07` (after PR 2a #25833). `--ran` reconciles 54 run, 0
NOT-MEASURED, 0 UNRUN. `check:doc-formula-expressions` needs
`@objectstack/lint` built first.
- `node scripts/pm/dispatch-gates.mjs --self-test` (both tiers, run by
hand because CI runs the slow tier only on push and schedule): 0, 2182
cases (fast 1917 in 291 s, slow 265 in 875 s), measured on `b00fc55c7d`
+ this change; the one commit between that and this base is PR 2a, whose
three files this PR does not touch.
- On `main` the six rows are inert, because no `ui/` path exists there
yet.
- On the sitting tree (cutover `c326d2fdf1` + 4a `50bd417d30` + `main` +
PR 2a), `node scripts/pm/check-governed-merges.mjs --test`:
- exits 3 (governed, landing tier H) for `ui/.claude/x`, `ui/AGENTS.md`,
`ui/CLAUDE.md`, `ui/docs/adr/0001-x.md`, `ui/skills/objectui/SKILL.md`
and `ui/.github/workflows/ci.yml`;
- exits 0 (0 of 1 path governed) for `ui/packages/x/src/y.ts`.
- On the sitting tree, `check:pm-governed-merges`, the queue-guard
self-test, `check:pm-governed-prose` and `check:pm-skill-ratchet` all
exit 0.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
https://claude.ai/code/session_01A6SEitNngAMugGbuJHWsDS
Co-authored-by: Claude <noreply@anthropic.com>1 parent 90a34e2 commit e167956
5 files changed
Lines changed: 73 additions & 60 deletions
File tree
- .claude/skills/pm-dispatch
- .github
- scripts/pm
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
135 | 135 | | |
136 | 136 | | |
137 | 137 | | |
138 | | - | |
| 138 | + | |
139 | 139 | | |
140 | | - | |
141 | 140 | | |
142 | 141 | | |
143 | 142 | | |
| |||
183 | 182 | | |
184 | 183 | | |
185 | 184 | | |
| 185 | + | |
186 | 186 | | |
187 | 187 | | |
188 | 188 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
46 | 46 | | |
47 | 47 | | |
48 | 48 | | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
49 | 58 | | |
50 | 59 | | |
51 | 60 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
265 | 265 | | |
266 | 266 | | |
267 | 267 | | |
268 | | - | |
269 | | - | |
270 | | - | |
271 | | - | |
272 | | - | |
273 | | - | |
| 268 | + | |
| 269 | + | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
274 | 274 | | |
275 | 275 | | |
276 | 276 | | |
| |||
0 commit comments