Repository navigation
Commit 1685cd5
pm-dispatch filing-gate: a protocol change's consumer follow-up is p1 only when its absence breaks users, and rides the consumer's first-release card; ceiling 61 → 64 by ruling (#23465)
Fixes #23431
Clause-②: no
This is the second half of the protocol-first grading rule. It adds the
consumer-follow-up principle from the maintainer's scope amendment
(comment 6164667370, item 2, 「同意 A + C」) to the same 〈定级判据〉 rule that
the first half (#23449, `Part of`, now on `main` as `08ea7e368e`)
opened. The ceiling it needs is ruled. Related cards, none of them ended
by this PR: #6015 (the triage rule records), #23396 and #23417 (the
first relay leg on this file), #23449 (this card's first half), #23423
and #23445 (sibling skills-lane cards on neighbouring text).
## What changes
- `.claude/skills/pm-dispatch/references/filing-gate.md`, section
〈定级判据(北极星「优先级」的执行说明)〉: three lines directly after the release-side line
(N4), new L40–L42. 61 → 64 lines. Nothing else in the file moves.
- `scripts/pm/check-skill-line-ratchet.mjs`: the `CEILINGS` row for that
file, 61 → 64, with the ruling recorded beside it. No other row and no
logic changes.
## The rulings, verbatim
- The order (filing gate ③, quoted on the card): 「spec
车道待办任务中,哪些是会导致元数据协议变更的,这一类应该提高优先级」 ·
「我的意思是元数据的协议变更应该优先处理,避免每个版本应用都要做复杂的升级」 · 「协议变更还经常会影响 objectui
项目的开发,相关任务经常等 spec 发版本」 · 「所有元数据协议变更一律 p1,是否建议修改分诊skills」 ·
「立卡,规则扩到所有车道,REST 收窄也算」
- First ceiling raise, 58 → 61, which landed with #23449: 「23431 同意。」
(maintainer, live chat, 2026-10-14). Ruling record: comment 6164802336
on the card.
- Second ceiling raise, 61 → 64, this PR. The ratchet header requires
the maintainer's ruling quoted in the raising PR: 「23431 同意」
(maintainer, live chat, 2026-10-14), adopting letter A. The principle is
written into the same rule, funded by an ordinary raise. Ruling record:
comment 6166489573 on the card.
- The scope amendment (comment 6164667370): item 1,
「原则不要写具体的版本号,比如后面我们要开发 v19的时候还得改原则」, is honoured. The three lines say
「新大版」 and name no version. Item 2, 「同意 A + C」, is what this PR writes.
## Before / after — `filing-gate.md`
Before (N4, then the first checklist-triad line, adjacent on
`08ea7e368e`):
```text
- 分诊轮的维护者清单点名等下个 `next.N` 的 objectui 卡数,堆积即请切版。
- 清单项三态 ①:项会 fail ⇒ 断,继承其 `priority`;⛔「有人在等」不是定级判据。
```
After: the three lines sit between them (bytes against the 120-byte
cap):
```text
- 分诊轮的维护者清单点名等下个 `next.N` 的 objectui 卡数,堆积即请切版。
- 此类的消费方跟进卡(objectui 类型镜像、渲染器、Studio)缺它即坏用户才 p1,余者守本档。
- 坏用户 = 设计器系统性写出协议拒收的元数据,或协议声明的块/键渲染为空;纯镜像不算。
- 此类的跟进卡全部列入消费方新大版的首发卡,赶在该版发布前落地。
- 清单项三态 ①:项会 fail ⇒ 断,继承其 `priority`;⛔「有人在等」不是定级判据。
```
(116 / 119 / 93 B.) Content map:
- Option A, the p1 criterion and the rest keeping their grade: the first
line.
- The two "breaks users" conditions, as the amendment words them (the
designer systematically writes metadata the protocol refuses; a
protocol-declared block or key renders nothing): the second line.
- Option C, every follow-up listed on the consumer's first-release card
for the new major: the third line.
The amendment's two examples of a follow-up that keeps its grade (a pure
mirror, a type gap) do not both fit. The second line carries 「纯镜像不算」,
which ties back to the first line's 「类型镜像」; with both examples the line
measures 128–134 B. No two-line spelling exists: 328 B of rule content
against two lines' 240.
## The ceiling row — `scripts/pm/check-skill-line-ratchet.mjs`
```diff
@@ -1251,7 +1251,17 @@ export const CEILINGS = new Map([
// rule beside it), so +4 −1 leaves +3. This file is not a CROSS_FILE_MOVES
// destination, so no `ruledRaises` record applies. Landed count, headroom 0,
// same convention.
- ['.claude/skills/pm-dispatch/references/filing-gate.md', 61],
+ // Raised 61 → 64 by the same rule's second half — an ORDINARY raise
+ // (maintainer, 2026-10-14, live chat, verbatim and untranslated: 「23431 同意」,
+ // adopting letter A on the consumer-follow-up principle; ruling record
+ // 6166489573 on #23431). A consumer repo's follow-up card of a protocol change
+ // is p1 only when its absence breaks users, and every such follow-up is listed
+ // on the consumer's first-release card for the new major: three rule lines at
+ // their measured floor (116/119/93 bytes; no two-line spelling fits the
+ // 120-byte cap), with no restatement left in the section to pay with. Not a
+ // CROSS_FILE_MOVES destination, so no `ruledRaises` record applies. Landed
+ // count, headroom 0, same convention.
+ ['.claude/skills/pm-dispatch/references/filing-gate.md', 64],
// The app-vs-platform boundary — the deciding question (could this be written
// from the metadata alone, with no knowledge of this company?), the publication
// test (one consumer is a use, two is a contract) and the two anti-patterns.
```
An ordinary raise, recorded as a comment beside the row in the map's
"Raised X → Y" convention, the same reading as the 58 → 61 raise.
`ruledRaises` records belong to a `CROSS_FILE_MOVES` destination, and
`filing-gate.md` is not one. No other row moves.
## Merge reading
This branch was cut fresh from `main` `08ea7e368e`, which carries
#23449, so no merge was needed. The diff is the three lines and the one
row; it touches no line in 〈立卡门〉 or any line that #23449 landed.
## Gates — exit codes captured before any pipe
- Derived: `node scripts/pm/dispatch-gates.mjs --commands --repo
objectstack-ai/objectstack` on this tree, which is current with `main`
(no stale-tree warning). 36 commands, the same list as the first half.
- 35 run in the foreground, exit 0 each: `check-ci-filter-parity`;
`check-closing-keyword-parity`; `check-closing-keyword-parity
--self-test`; `check-comment-mask-corpus`; `check-declaration-mirrors`;
`check-declaration-mirrors --self-test`; `check-scripts-symbol-anchors`;
`check-scripts-symbol-anchors --self-test`; `check-self-test-wired`;
`check-self-test-wired --self-test`;
`check-self-test-workflow-commands`; `check-self-test-workflow-commands
--self-test`; `check-whole-set-label-write`;
`check-whole-set-label-write --self-test`; `pm/bare-root-worklist
--self-test`; `pm/check-harness-current --self-test`; `--filter
@objectstack/lint run check:doc-formula-expressions`;
`check:agent-test-spelling`; `check:bash32-floor`;
`check:cli-command-ids`; `check:cross-package-test-inputs`;
`check:doc-authoring`; `check:driver-memory-census`;
`check:entry-guard`; `check:gitlink-declared`; `check:nul-bytes`;
`check:parse-guard`; `check:pm-governed-merges`;
`check:pm-skill-id-lint`; `check:pm-skill-ratchet`;
`check:pnpm-filter-targets`; `check:ratchet-remedy-authority`;
`check:refd-timer-probe`; `check:skill-frame-sync`;
`check:watch-hint-literal`.
- `check:doc-formula-expressions` ran after its prerequisite build under
`os-verify-lock` (VERDICT command-exit 0).
- `check:pm-skill-ratchet` printed `filing-gate.md is 64 lines (ceiling
64; headroom 0)`; its self-test passed 157 cases.
- `check:pm-dispatch-gates` (the battery) ran detached and was read
after it exited: exit 0, fast tier 1841 cases.
- `--ran` reconciliation: 36 derived, 36 run, 0 NOT-MEASURED. The zero
is derived: every exit was recorded, and none is 3.
- Acceptance-named, individually: `pnpm -s check:pm-skill-ratchet` exit
0 (64/64); `node scripts/pm/check-skill-line-ratchet.mjs --self-test`
exit 0; `check:pm-skill-id-lint` exit 0; `check:pm-governed-prose` exit
0.
- The edited script's readers by name: `check:merged-result` 0,
`check-published-list-mirrors` 0, `check-skills-token-ratchet` 0. No
`*.test.*` names the script.
- Scans over the diff found no control bytes, no model identifiers and
no version number.
- No ablation: text and a data row.
## Acceptance notes
- Four other texts can still cap the class. They are outside this card's
surface, noted under #23449 and not filed (carrier: `domain:skills`
seat): `triage-duties.md` L90–L92 (the binary `target:` criterion),
`docs/NORTH-STAR.md` 〈阶段姿态〉 (migration windows default p3),
`triage-duties.md` 「无则关」, and `SKILL.md` L213.
- CI check-runs are read by the seat at landing. This body was written
before CI concluded.
## 维护者速读(草稿)
**改了什么**:在分诊定级手册「定级判据」一节,上次加的四行规则后面再加三行。协议变更引出的消费方跟进卡(objectui
的类型镜像、渲染器、Studio)只有「缺了它用户就坏」时才
p1:设计器会成批写出协议拒收的元数据,或协议声明的块/键渲染为空。纯镜像之类的跟进卡保持原档。所有跟进卡都挂到消费方新大版的首发卡上,赶在那一版发布前落地。手册行数上限按你的第二个「23431
同意」从 61 抬到 64。
**为什么改**:你同意了 A + C。协议改了以后,objectui 等消费方的跟进不能一律抢
p1,只有真会坏用户的才抢;其余的也不能掉队,要随新大版首发一起落地。这样规则一处写全。上半部分(四行)已随上一个 PR
合入,这次补齐,合并后这张卡关闭。
**风险与代价(含回滚)**:只改给 agent 读的内部手册和一行行数上限,不碰产品代码与对外契约。代价是手册再多 3
行,每次分诊定级都要读。回滚就是撤销本 PR,上限回到 61,上半部分不受影响。
**席位意见**:
**你要做的**:看一眼这三行是否符合你「同意 A + C」的原意,尤其是「纯镜像不算」这个例子是否够用(另一个例子「类型缺口」放不进 120
字节一行)。
---
_Generated by [Claude
Code](https://claude.ai/code/session_013zGKMG1cRedVzWtqGGGZW9)_
Co-authored-by: Claude <noreply@anthropic.com>1 parent b60eb78 commit 1685cd5
2 files changed
Lines changed: 14 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
37 | 37 | | |
38 | 38 | | |
39 | 39 | | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
40 | 43 | | |
41 | 44 | | |
42 | 45 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1251 | 1251 | | |
1252 | 1252 | | |
1253 | 1253 | | |
1254 | | - | |
| 1254 | + | |
| 1255 | + | |
| 1256 | + | |
| 1257 | + | |
| 1258 | + | |
| 1259 | + | |
| 1260 | + | |
| 1261 | + | |
| 1262 | + | |
| 1263 | + | |
| 1264 | + | |
1255 | 1265 | | |
1256 | 1266 | | |
1257 | 1267 | | |
| |||
0 commit comments