Repository navigation
Commit 543b3d1
fix(pm): drop the cross-account review rule — the queue guard accepts a same-account Tier S record again, and contract-review.md stops requiring Reviewed-by-account (#25585)
<!-- claude-projects-attribution: {"github_login":"os-elon-musk"} -->
_Requested by **Elon** · [project
thread](https://claude.ai/code/project/chan_01WedDzV26nniwxv7jC88B9D?thread=cmsg_01WedDzV26nniwxv7jC88B9DBL6AwZ2QMFJXP8AgTHhhKF)_
Fixes #25568
Clause-②: no
Metadata-protocol: none
## 维护者速读(草稿)
- **改了什么**:按您 2026-10-24 01:16
的话「守卫在合并队列里只认「另一账户复审」,这个没必要,去掉这条规则」「立skills卡」,把「项目线程 Tier S 的复审记录须来自 PR
作者以外的账户」这条规则整条去掉,执行与文本一起。① 队列守卫
`scripts/pm/check-governed-queue-guard.mjs` 回退 #25436
加的账户支路:`accountIndependence`、`not-independent` 拒绝(exit
3)、拒绝与放行文案里的账户行、attribution 接线、头部段落与该自测电池(floor 28 →
27);另加一条回归用例,钉住「同账户记录放行,不比对也不打印账户」。② `scripts/pm/record-recognisers.mjs`
回退
`readReviewedByAccount`、`readAttributionLogin`、`REVIEWED_BY_ACCOUNT_LINE`
与定位器的 `account` 字段(floor 13 → 12),全仓无其它调用方。③ 规则文 `contract-review.md`
删六行:「须属 PR 作者外的账户」「`Reviewed-by-account:` 行」「散文面同欠另一账户一条 `TIER_DEFAULT`
记录」「① 在项目席另加…队列守卫同判」与「过渡」两行(55 → 49 行)。会话独立性(`Implemented-by:` ≠
`Reviewed-by:`)不属于这条规则,保留。
- **为什么改**:您的原话(卡 #25568 正文、PR #25552 评论
6378076465)。每个项目一个账户,项目线程的复审记录必然同账户;#25436 于 2026-10-24 00:25Z
合入后,三条车道的项目线程 Tier S PR 全部过不了合并队列,首例 #25552 于 00:44Z 被踢出(run
40046346946),退回 draft。
- **风险与代价(含回滚)**:守卫回到 #25436 之前的判定:Tier S 记录只看档位(`Served-tier:
CONTRACT_REVIEW_TIER`、当前 head、`Reviewed-by:`)与 CI 全绿。两脚本的改动是 #25436
的干净反向补丁(对 #25436 前一提交 `git diff` 为零)加一条用例;规则文净减 6 行,棘轮上限 60 不动(headroom
11,席位可另行下调)。回滚 = revert 本 PR。Tier H 人批、3000 行人工合并线与复审记录的其它要求都不动。「散文面同欠
`TIER_DEFAULT` 记录」一行随规则一起删:它在 #25422 里只为「另一账户」服务,删后散文面回到 #25422
之前的读法(派发席 ACCEPT 逐句核)。
- **席位意见**:(席位填)
- **你要做的(一个动作)**:无。本 PR 为 Tier S(仅 `.claude/**` 一处命中),席位复核 PASS、CI 全绿后按您
2026-10-23 14:14Z 在席位线程的长期授权落地;merge_group 检出的是合并组提交,由本 PR
自带的新守卫判定。若仍被踢出,席位会来请您从批准账户 Approve 一次。合入后 #25552 由席位重新 ready、入队。
## What changed
| File | Change |
|:--|:--|
| `scripts/pm/check-governed-queue-guard.mjs` | The #25436 account leg
is reverted hunk for hunk: `accountIndependence`, the `not-independent`
record state and its exit-3 refusal, `independenceRefusalLines`, the
`accounts compared` clear line, the `attributionLogin` recogniser
wiring, the header paragraph, and the account-independence self-test
battery (10 cases; `SELF_TEST_BATTERY_FLOOR` 28 → 27). `recordVerdict`
takes no `attribution` again. One assertion is added to the existing
Tier S battery: a project-thread PR (body carries the attribution login)
whose record was written from the SAME account — the record even still
carries a `Reviewed-by-account:` line naming that login — CLEARS,
`record.state === 'stands'`, and the rendering prints no account
comparison. Self-test: 335 cases pass (344 before, minus the 10 removed,
plus this one). |
| `scripts/pm/record-recognisers.mjs` | `readReviewedByAccount`,
`readAttributionLogin`, `REVIEWED_BY_ACCOUNT_LINE`, the locator's
`account` field and the #25415 battery are removed (7 cases; floor 13 →
12). `git grep` over the whole tree finds no other caller of any of
them. Self-test: 201 cases pass (208 before). `--template` never printed
an account line, so the copyable record is unchanged. |
| `.claude/skills/pm-dispatch/references/contract-review.md` | Six lines
deleted (55 → 49; ceiling 60): the Tier S other-account requirement, the
`Reviewed-by-account:` line, the prose-face
`TIER_DEFAULT`-from-another-account record, the 「① 在项目席另加 … 队列守卫同判」
condition, and the two-line 「过渡」 substitute (moot once ① owes no second
account). The session-independence line (`Implemented-by:` ≠
`Reviewed-by:`) stays, as do 「轮次报告设复审清单专节」 and 「落地前检两条」. |
After the edit, `git grep -n 'Reviewed-by-account\|另一账户\|25415' --
.claude scripts` names nothing; a whole-tree grep for the same words and
for the removed symbol names names nothing either. The prose-face
`TIER_DEFAULT` line goes with the rule: #25422 added it only as the
vehicle for the other account's review, and without the account
requirement the prose face falls back to the reading the file already
states (the dispatching seat's ACCEPT, sentence by sentence against the
diff).
Not in scope, unchanged: the Tier H landing leg (authorized approval),
the human-merge size line, the record shape otherwise, and every Tier H
file.
## Acceptance (card #25568)
- `node scripts/pm/check-governed-queue-guard.mjs --self-test`: exit 0,
335 cases. `node scripts/pm/record-recognisers.mjs --self-test`: exit 0,
201 cases.
- `pnpm check:pm-skill-ratchet`, `pnpm check:pm-skill-id-lint`, `pnpm
check:skill-frame-sync`, `pnpm check:skill-frame-freshness`: all exit 0.
Ratchet row for `contract-review.md`: 49 lines, ceiling 60, headroom 11.
- Same-account Tier S record on a project-thread PR reads CLEAR, two
readings: (a) the new self-test assertion above, on the tier harness;
(b) a one-off replay (not committed) of PR #25552 itself — its nine
paths, head `c9dae4256c4ed54964695bf0ec8ce9354a1a8f83`, the body
attribution `os-elon-musk`, and the key lines of record 6377468190
verbatim including `Reviewed-by-account: os-elon-musk` — driven through
`runGuard` on `merge_group`: `exitCode = 0`, `record.state = stands`, no
`independence` field. On `main` the same record was refused (run
40046346946: 「written from the SAME account that built the pull
request」).
- Ablation (one-off, restored byte-identical afterwards): re-applying
the #25436 hunks on top of this branch reds the new assertion (`state:
not-independent`, `independence.state: same-account`; 1 of 345 cases
failed), so the assertion measures the leg and not itself.
## Gates
`node scripts/pm/dispatch-gates.mjs --commands --repo
objectstack-ai/objectstack --paths` (the three paths) derived 42
families (23 pnpm, 19 direct node; 32 matched by path, 2 by change kind,
8 whole-tree). Every command was run with the capture idiom and its exit
code recorded beside it; `--ran` reconciles **42 derived, 42 run, 0
NOT-MEASURED, 0 UNRUN**. One family, `pnpm --filter @objectstack/lint
run check:doc-formula-expressions`, exited 3 (prerequisite not met:
`@objectstack/formula` and `@objectstack/lint` unbuilt in a fresh
install) on the first pass and 0 after `pnpm exec turbo run build
--filter=@objectstack/formula --filter=@objectstack/lint`. Not
measurable locally and left to CI, as the tool prints them:
`check-closing-target-claim`, `check-shard-attestation`,
`check-test-completeness` (values from the workflow), the Test Core
shard job, and the 16 changeset-scoped families (no changeset:
`skip-changeset`).
`node scripts/pm/check-governed-merges.mjs --test` on the three paths:
GOVERNED, Tier S — `.claude/**` ×1 (`contract-review.md`); the two
scripts are off the register. Size 24 additions / 264 deletions, far
under the 3000-line human-merge line. `skip-changeset` declared on the
`pr_create` stroke: `.claude/**` and `scripts/pm/**` ship in no
published package.
---
_Generated by [Claude
Code](https://claude.ai/code/session_018UunQYGRd5yu6puARCJBk9)_
Co-authored-by: Claude <noreply@anthropic.com>1 parent ea6fe00 commit 543b3d1
3 files changed
Lines changed: 24 additions & 264 deletions
File tree
- .claude/skills/pm-dispatch/references
- scripts/pm
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
33 | 33 | | |
34 | 34 | | |
35 | 35 | | |
36 | | - | |
37 | | - | |
38 | | - | |
39 | 36 | | |
40 | 37 | | |
41 | | - | |
42 | | - | |
43 | | - | |
44 | 38 | | |
45 | 39 | | |
46 | 40 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
266 | 266 | | |
267 | 267 | | |
268 | 268 | | |
269 | | - | |
270 | | - | |
271 | | - | |
272 | | - | |
273 | | - | |
274 | | - | |
275 | | - | |
276 | | - | |
277 | | - | |
278 | 269 | | |
279 | 270 | | |
280 | 271 | | |
| |||
569 | 560 | | |
570 | 561 | | |
571 | 562 | | |
572 | | - | |
573 | 563 | | |
574 | 564 | | |
575 | 565 | | |
| |||
579 | 569 | | |
580 | 570 | | |
581 | 571 | | |
582 | | - | |
583 | | - | |
| 572 | + | |
584 | 573 | | |
585 | 574 | | |
586 | 575 | | |
| |||
826 | 815 | | |
827 | 816 | | |
828 | 817 | | |
829 | | - | |
830 | 818 | | |
831 | 819 | | |
832 | 820 | | |
833 | 821 | | |
834 | | - | |
| 822 | + | |
835 | 823 | | |
836 | 824 | | |
837 | 825 | | |
| |||
896 | 884 | | |
897 | 885 | | |
898 | 886 | | |
899 | | - | |
| 887 | + | |
900 | 888 | | |
901 | 889 | | |
902 | 890 | | |
| |||
956 | 944 | | |
957 | 945 | | |
958 | 946 | | |
959 | | - | |
960 | | - | |
961 | | - | |
962 | | - | |
963 | | - | |
964 | | - | |
965 | | - | |
966 | | - | |
967 | | - | |
968 | | - | |
969 | | - | |
970 | | - | |
971 | | - | |
972 | | - | |
973 | | - | |
974 | | - | |
975 | | - | |
976 | | - | |
977 | | - | |
978 | | - | |
979 | | - | |
980 | | - | |
981 | | - | |
982 | | - | |
983 | | - | |
984 | | - | |
985 | | - | |
986 | | - | |
987 | | - | |
988 | | - | |
989 | | - | |
990 | | - | |
991 | | - | |
992 | | - | |
993 | | - | |
| 947 | + | |
994 | 948 | | |
995 | 949 | | |
996 | 950 | | |
| |||
1309 | 1263 | | |
1310 | 1264 | | |
1311 | 1265 | | |
1312 | | - | |
1313 | | - | |
1314 | | - | |
1315 | | - | |
1316 | | - | |
1317 | | - | |
1318 | | - | |
1319 | | - | |
1320 | | - | |
1321 | | - | |
1322 | | - | |
1323 | | - | |
1324 | | - | |
1325 | | - | |
1326 | | - | |
1327 | | - | |
1328 | | - | |
1329 | | - | |
1330 | | - | |
1331 | | - | |
1332 | | - | |
1333 | | - | |
1334 | | - | |
1335 | | - | |
1336 | | - | |
1337 | | - | |
1338 | | - | |
1339 | | - | |
1340 | | - | |
1341 | | - | |
1342 | | - | |
1343 | | - | |
1344 | | - | |
1345 | | - | |
1346 | | - | |
1347 | 1266 | | |
1348 | 1267 | | |
1349 | 1268 | | |
| |||
1476 | 1395 | | |
1477 | 1396 | | |
1478 | 1397 | | |
1479 | | - | |
1480 | | - | |
1481 | | - | |
1482 | | - | |
1483 | | - | |
1484 | | - | |
1485 | 1398 | | |
1486 | 1399 | | |
1487 | 1400 | | |
| |||
1521 | 1434 | | |
1522 | 1435 | | |
1523 | 1436 | | |
1524 | | - | |
1525 | | - | |
1526 | 1437 | | |
1527 | 1438 | | |
1528 | 1439 | | |
| |||
1854 | 1765 | | |
1855 | 1766 | | |
1856 | 1767 | | |
1857 | | - | |
1858 | | - | |
1859 | | - | |
1860 | | - | |
1861 | | - | |
1862 | | - | |
| 1768 | + | |
1863 | 1769 | | |
1864 | 1770 | | |
1865 | 1771 | | |
| |||
4245 | 4151 | | |
4246 | 4152 | | |
4247 | 4153 | | |
| 4154 | + | |
| 4155 | + | |
| 4156 | + | |
| 4157 | + | |
| 4158 | + | |
| 4159 | + | |
| 4160 | + | |
| 4161 | + | |
| 4162 | + | |
| 4163 | + | |
| 4164 | + | |
| 4165 | + | |
| 4166 | + | |
| 4167 | + | |
| 4168 | + | |
| 4169 | + | |
| 4170 | + | |
| 4171 | + | |
4248 | 4172 | | |
4249 | 4173 | | |
4250 | 4174 | | |
| |||
4328 | 4252 | | |
4329 | 4253 | | |
4330 | 4254 | | |
4331 | | - | |
4332 | | - | |
4333 | | - | |
4334 | | - | |
4335 | | - | |
4336 | | - | |
4337 | | - | |
4338 | | - | |
4339 | | - | |
4340 | | - | |
4341 | | - | |
4342 | | - | |
4343 | | - | |
4344 | | - | |
4345 | | - | |
4346 | | - | |
4347 | | - | |
4348 | | - | |
4349 | | - | |
4350 | | - | |
4351 | | - | |
4352 | | - | |
4353 | | - | |
4354 | | - | |
4355 | | - | |
4356 | | - | |
4357 | | - | |
4358 | | - | |
4359 | | - | |
4360 | | - | |
4361 | | - | |
4362 | | - | |
4363 | | - | |
4364 | | - | |
4365 | | - | |
4366 | | - | |
4367 | | - | |
4368 | | - | |
4369 | | - | |
4370 | | - | |
4371 | | - | |
4372 | | - | |
4373 | | - | |
4374 | | - | |
4375 | | - | |
4376 | | - | |
4377 | | - | |
4378 | | - | |
4379 | | - | |
4380 | | - | |
4381 | | - | |
4382 | | - | |
4383 | | - | |
4384 | | - | |
4385 | | - | |
4386 | | - | |
4387 | | - | |
4388 | | - | |
4389 | | - | |
4390 | | - | |
4391 | | - | |
4392 | | - | |
4393 | | - | |
4394 | | - | |
4395 | | - | |
4396 | | - | |
4397 | | - | |
4398 | | - | |
4399 | | - | |
4400 | | - | |
4401 | | - | |
4402 | | - | |
4403 | | - | |
4404 | | - | |
4405 | | - | |
4406 | | - | |
4407 | | - | |
4408 | | - | |
4409 | | - | |
4410 | 4255 | | |
4411 | 4256 | | |
4412 | 4257 | | |
| |||
0 commit comments