Skip to content

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

Merged
objectstack-fleet[bot] merged 1 commit into
mainfrom
claude/issue-23431-protocol-first-grading-rule
Oct 14, 2026
Merged

objectstack-fleet[bot] merged 1 commit into
mainfrom
claude/issue-23431-protocol-first-grading-rule

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

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 pm-dispatch filing-gate: metadata-protocol changes and REST/data-door narrowings grade p1 in every lane; ceiling 58 → 61 by ruling #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):

- 分诊轮的维护者清单点名等下个 `next.N` 的 objectui 卡数,堆积即请切版。
- 清单项三态 ①:项会 fail ⇒ 断,继承其 `priority`;⛔「有人在等」不是定级判据。

After: the three lines sit between them (bytes against the 120-byte cap):

- 分诊轮的维护者清单点名等下个 `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

@@ -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

维护者速读(草稿)

改了什么:在分诊定级手册「定级判据」一节,上次加的四行规则后面再加三行。协议变更引出的消费方跟进卡(objectui 的类型镜像、渲染器、Studio)只有「缺了它用户就坏」时才 p1:设计器会成批写出协议拒收的元数据,或协议声明的块/键渲染为空。纯镜像之类的跟进卡保持原档。所有跟进卡都挂到消费方新大版的首发卡上,赶在那一版发布前落地。手册行数上限按你的第二个「23431 同意」从 61 抬到 64。

为什么改:你同意了 A + C。协议改了以后,objectui 等消费方的跟进不能一律抢 p1,只有真会坏用户的才抢;其余的也不能掉队,要随新大版首发一起落地。这样规则一处写全。上半部分(四行)已随上一个 PR 合入,这次补齐,合并后这张卡关闭。

风险与代价(含回滚):只改给 agent 读的内部手册和一行行数上限,不碰产品代码与对外契约。代价是手册再多 3 行,每次分诊定级都要读。回滚就是撤销本 PR,上限回到 61,上半部分不受影响。

席位意见:

你要做的:看一眼这三行是否符合你「同意 A + C」的原意,尤其是「纯镜像不算」这个例子是否够用(另一个例子「类型缺口」放不进 120 字节一行)。


Generated by Claude Code

…ts absence breaks users, and rides the consumer's first-release card; filing-gate ceiling 61 -> 64 by ruling

The second half of the protocol-first grading rule in
references/filing-gate.md, three lines after the release-side line: a
consumer repo's follow-up card of a protocol change (types mirror,
renderers, Studio) is p1 only when its absence breaks users (the
designer systematically writes metadata the protocol refuses, or a
protocol-declared block or key renders nothing), the rest keep their own
grade; every follow-up is listed on the consumer's first-release card
for the new major so it lands before that release. Version-free, as the
first half.

The line ratchet's ceiling for the file rises 61 -> 64 by the
maintainer's second ruling (ruling record 6166489573), recorded beside
the row in the file's existing raise convention.

Claude-Session: https://claude.ai/code/session_013zGKMG1cRedVzWtqGGGZW9
Co-authored-by: Claude <noreply@anthropic.com>
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

Contract review

Served-tier: CONTRACT_REVIEW_TIER
Head-sha: 114d6b7c701d9893e54a1a94f96a9aaa59d7ab75
Local-runs: none

Reviewed in seat by the dispatching skills seat (served tier read from get_session last_served_model this fire, equal to the constant's value), on the PR diff (two files, +14/−1, one commit on 08ea7e368e; check-governed-merges --pr 23465: .claude/** ×1 governed, scripts/pm/** ungoverned, Tier S), card #23431 (filing gate ③, the maintainer's five sentences verbatim; the triage seat's scope amendment 6164667370, item 2; ruling A 6166489573 on the maintainer's 「23431 同意」; the first half's landing 6166601451), the dev's report 6166851496, the file as it stands on the head (64 lines, read raw at 114d6b7c70), and the head's check-runs. The governed face is the same grading rule the first half (PR #23449, 08ea7e368e) opened; the judgment is whether the three lines say what the amendment's item 2 orders and whether the ceiling raise is the ruled one. Written 2026-10-14T11:08Z. This PR is Fixes #23431: it lands the card's second and last half.

① Derived judgments

② Semver level

None owed: .claude/** and scripts/pm/** ship in no package; skip-changeset on the PR is correct.

③ Boundary flags

  • Dev flag — the local ref claude/issue-23431-protocol-first-grading-rule still pointed at the squash-merged first-half head; the dev re-pointed it to origin/main with git worktree add -B after showing its two files blob-identical to main's (a local ref only; the remote branch had been deleted at the merge; nothing force-pushed, nothing rebased). The PR's one commit is on 08ea7e368e. Accepted.
  • Dev flag — one Bash call was refused by the session's safety check (an rm -f of a not-yet-existing scratch file beside a bash -c loop) and re-issued without the removal; no file needed deleting; not a route around a refusal. Accepted.
  • Dev flag — L41 carries one of the amendment's two keeps-its-grade examples; flagged in the PR body's 维护者速读 for the maintainer's eye. Accepted as the cap's arithmetic (above); the maintainer may re-word on main at the cost of a line.
  • Observations carried from the first half, unchanged (carrier: domain:skills seat, noted on PR pm-dispatch filing-gate: metadata-protocol changes and REST/data-door narrowings grade p1 in every lane; ceiling 58 → 61 by ruling #23449 and in this PR's Acceptance notes, not filed): triage-duties.md L90–L92 (binary target: criterion), docs/NORTH-STAR.md 〈阶段姿态〉 (migration windows default p3), triage-duties.md 「无则关」, SKILL.md L213 — each can still cap the class from outside this file; the maintainer's ruling ranks above, and N3's 「本节余条不压」 reaches only this section. Not this PR's.
  • open_questions: none.

Implemented-by: claude/issue-23431-protocol-first-grading-rule
Reviewed-by: session_013zGKMG1cRedVzWtqGGGZW9

VERDICT: PASS


Generated by Claude Code

@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

席位核对 · PR #23465 at 114d6b7c70 (Fixes #23431) — Tier S, landing by the seat; the card closes at the merge

Skills seat 1 (session_013zGKMG1cRedVzWtqGGGZW9, huangyiirene), written 2026-10-14T11:12Z. Report 6166851496 read; everything below is verified on GitHub and the tree, not on the report.

  1. 形态: draft PR against main; line 1 Fixes #23431 is the body's only closing keyword ([PM seat] triage (objectstack-wide) — 🟢 Routine · session_01AavokzJ5DndAwitDXvKy4U · trig_01NcnCtMS2tH46nUg1a5TaMJ (hourly) · state = body + the round records newer than it #6015, [Decision] 收班流程修法:清单补「释放认领 / 决策挂 needs-user-decision / 欠账必带卡号」,哪几步做成脚本检查 #23396, pm: the handover checklist names release, the decision inbox and carded obligations; two local handover checks #23417, pm-dispatch filing-gate: metadata-protocol changes and REST/data-door narrowings grade p1 in every lane; ceiling 58 → 61 by ruling #23449, pm-dispatch twins after PR #23417: os-dev.md's carrier: definition (将碰该文件的 PR 或人) and seat-post-protocol.md:29's list of what post-stamped --body intercepts restate what the handover PR changed #23423, pm-dispatch SKILL.md 〈路径分叉〉: the under-tier route for a skills-face hunk is one route — an isolated review at the face's tier (#23352 ruling B′), not "hand it to the skills seat" beside it #23445 are named with no closing verb); Clause-②: no at line start; two files, +14/−1, one commit on 08ea7e368e (the first half's merge commit); skip-changeset (nothing published); check-governed-merges --pr 23465 → .claude/** governed, scripts/pm/** beside it, Tier S; assignee huangyiirene.
  2. 前提实测: ruling A is recorded (6166489573, 「23431 同意」) and the amendment's item 2 is on the card (6164667370); filing-gate.md read raw at the head: 64 lines, the three new lines at L40–L42 measure 116 / 119 / 93 bytes, no version number in them, the N1–N4 block and 〈立卡门〉 unchanged from 08ea7e368e; the ratchet header's raise rule and the ruledRaises scope re-read on main. Judged line by line in the ## Contract review PASS record above for this head.
  3. 门禁 check-runs: 43 runs on 114d6b7c70, read 2026-10-14T11:10Z — by newest run per name 29 success, 10 skipped, none failing or in progress; Lint & Repo Gates (the ratchet reading 64/64), Lint · PM dispatch-gates, TypeScript Type Check and Governed Surface Queue Guard success; every skipped name is on the expected-skips roster (scripts/pm/check-expected-skips.mjs, read from source on main). The dev's local subset (36 derived families, exit 0, --ran 36/36, on the head tree itself, current with main) is its own evidence; the farm's is these check-runs.
  4. 接受的偏差: the local branch ref re-pointed to origin/main after the first half's squash merge deleted the remote branch (local ref only, two files shown blob-identical to main; nothing force-pushed or rebased); L41 carries one of the amendment's two keeps-its-grade examples (「纯镜像不算」, tying back to L40's 「类型镜像」) because both do not fit the 120-byte cap (128–134 B measured) and no two-line spelling exists (328 B against 240) — flagged for the maintainer in the PR body's 维护者速读; one Bash call refused by the session's safety check (an rm -f of a not-yet-existing file beside a loop) was re-issued without the removal, nothing routed around.
  5. 范围外去向: the four grading-text observations carried from the first half (triage-duties.md L90–L92 and 「无则关」, docs/NORTH-STAR.md 〈阶段姿态〉, SKILL.md L213) stay noted on PR pm-dispatch filing-gate: metadata-protocol changes and REST/data-door narrowings grade p1 in every lane; ceiling 58 → 61 by ruling #23449 and in this PR's Acceptance notes, carrier: domain:skills seat, not filed — each can cap the class from outside this file and is triage's own text or the North Star's. No open question from the dev.
  6. 落地条款: Tier S — PASS record on this head, every check green, roster-expected skips ⇒ the seat flips pr_ready, reads mergeable_state until it settles, then arms automerge_enable as a second relay stroke; MERGED is confirmed from the queue ref and origin/main; Fixes #23431 closes the card at the merge, then pm:dispatched leaves it with a probe-table landing comment, and the pointer on the card moves from 6166167947 to this record.

Generated by Claude Code

@objectstack-fleet
objectstack-fleet Bot marked this pull request as ready for review October 14, 2026 11:16
@objectstack-fleet
objectstack-fleet Bot enabled auto-merge October 14, 2026 11:17
@objectstack-fleet
objectstack-fleet Bot added this pull request to the merge queue Oct 14, 2026
Merged via the queue into main with commit 1685cd5 Oct 14, 2026
44 checks passed
@objectstack-fleet
objectstack-fleet Bot deleted the claude/issue-23431-protocol-first-grading-rule branch October 14, 2026 11:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation size/s skip-changeset PR has no user-facing published change; bypasses the changeset gate

Projects

None yet

2 participants