Skip to content

docs(pm-dispatch): enter the maintainer's 插队 and 契约面卡 tiers into the 取卡全序 (SKILL.md + core-rules twin) - #19506

Merged
os-steve merged 1 commit into
mainfrom
claude/issue-19127-contract-surface-take-order
Sep 21, 2026
Merged

os-steve merged 1 commit into
mainfrom
claude/issue-19127-contract-surface-take-order

Conversation

@os-steve

Copy link
Copy Markdown
Collaborator

Fixes #19127
Clause-②: no

What lands

The maintainer's ruling on the card, verbatim (裁决引文照抄不译):

契约面卡 = 修完之后,同一份输入的接受/拒绝结果会变
一句话测试:拿一份作者写的元数据,改动前后喂进去,接受还是拒绝的结果变了吗? 变 ⇒ 契约面。一个字节都不变 ⇒ 辅助面。
命中任一即契约面
应该优先处理 契约面卡 卡

and the maintainer's direct order that put this card at the head of the seat's queue, verbatim: 「19127 插队」 (recorded with the 出处三件 on the seat's claim of record, comment 5755214464).

Two tiers enter the 取卡全序 above the priority ladder, in SKILL.md and its references/core-rules.md twin as ONE order in the same words:

  1. 维护者直派插队卡 — a card the maintainer directly ordered to jump. Recognised by the existing 维护者直派通道 rule (SKILL.md :226–:227: 「当面指挥的 PM 会话直接路由,只对明示指挥的卡成立」 / 「直派的审计评论逐字引用授权指令」) and recorded on the card with the 出处三件 of :149 (谁的指令、原话、在哪说).
  2. 契约面卡 — the tier the ruling names, with the maintainer's word. Its test is NOT restated: the line points at the test's home references/lanes/spec.md :17–:18 (「契约面 = 「改动前后同一份输入的接受/拒绝结果变了」;判定逐字节不变 ⇒ 辅助面。」 plus the five hit-any forms), which this PR reads and does not touch.
  3. 标签序 — the existing ladder, now on its own line, content unchanged.

A level of the 全序 sits above 卡龄 by construction (the ladder's final tiebreak) — the 「优先处理」 = tier-not-tiebreak reading.

Before / after

Byte counts are content bytes (trailing newline excluded); the cap is the ratchet's MAX_LINE_BYTES = 120. The dispatch's 120 / 119 figures counted the newline.

SKILL.md :464 at base 4045781 (119 B):

  • 取卡全序:priority:p0 > pm:blocking > target: 板上项 > p1 > p2 > p3 > 无级;同级先 Bug 再卡龄。

becomes :464 (119 B) + :465 (116 B):

  • 取卡全序:维护者直派插队卡(出处三件)> 契约面卡(判据见 references/lanes/spec.md)> 标签序。
  • 标签序:priority:p0 > pm:blocking > target: 板上项 > p1 > p2 > p3 > 无级;同级先 Bug 再卡龄。

references/core-rules.md :108 at base (118 B):

  • 取卡全序:插队卡、有下游依赖者的卡、板上项、p1、p2、p3、无级;同级缺陷卡先再卡龄。

becomes :108 (119 B) + :109 (116 B), byte-identical to the SKILL.md pair.

The retired duplicate and its surviving home

The added line in each file is paid by one retirement (net 0: SKILL.md 813 → 813, core-rules.md 151 → 151):

  • SKILL.md :578 (61 B), retired: 「45 分钟是发探针的门槛,⛔ 不是判死的门槛。」 Every clause survives in the same 收集 section: :574 「派发后 ~45 分钟无远程产出即到门槛」 (the ~45-minute reading IS the probe threshold), :579 「判死只有三类依据:探针回包表明已死;宿主明确回报 stopped;超过本车道基线且连续静默」 (the death bases — none is a minute count) and :580 「⛔ 非本文任何常数」 (the baseline is no constant in this file). Proof on origin/main 4045781: git grep -n '45 分钟' origin/main -- .claude/skills/pm-dispatch/ hits SKILL.md :573 / :574 / :578 and core-rules :118 only; git grep -n '判死' origin/main -- .claude/skills/pm-dispatch/SKILL.md hits :493 / :494 / :569 / :578 / :579 / :581 / :583; git grep -n '非本文任何常数' hits :580 only.
  • references/core-rules.md :118 (111 B), retired as that line's twin under 「一条规则在本文与核心条款一处改动,另一处同 PR 同改」: 「45 分钟是发探针的门槛而非判死门槛,判死只认探针回包、宿主信号或超实测基线。」 Its SKILL.md home (:574 / :579 / :580) is unchanged. Inside core-rules this demotes a collection-cadence detail out of the core subset to make room for the take order, a core rule of the execution seat — a judgment, stated for the reviewer rather than dressed as a dedupe.

Pre-existing twin divergence — measured

At base the two lines did NOT encode different orders; they encoded the same ladder in different vocabulary. core-rules :36 「插队标签可超 batch 立即派发」 is the twin of SKILL.md :120 (priority:p0 | 插队:…), so :108's 插队卡 was priority:p0; 有下游依赖者的卡 is pm:blocking by SKILL.md :114 (「有 open 下游依赖者」); 板上项 is target: 板上项; 缺陷卡 is Bug. PM mechanism assumption 2 ("a DIFFERENT order … has no p0 / pm:blocking") is therefore refuted on the order and confirmed on the words. What let the words drift: no gate compares the twins' content — grep -rl core-rules scripts/ hits only check-skill-line-ratchet.mjs (a line count) and dispatch-gates.mjs (a tier lookup); pnpm check:pm-skill-id-lint and pnpm check:pm-governed-prose exit 0 on the unchanged tree and say nothing about it. This PR lands the two lines byte-identical so the next twin edit is mechanical.

Two decisions, on the four axes(四维分析)

(a) 修法辅助、题材是契约的卡(卡上的例子 #19085:表单漏列两个已声明键,schema 照收,同一份元数据的判定不变)— 不入契约面卡一级。判据只有一条:字节测试;这句已在 references/lanes/spec.md :17 「判定逐字节不变 ⇒ 辅助面」,本 PR 用指针接上,不复述(复述正是棘轮要防的重复)。

(b) 插队卡的识别 — 维护者当面点名本卡的指令,走既有 :226–:227 直派通道,并按 :149 出处三件记在卡上;本席认领 5755214464 即活样本。

  • 实际业务需求:维护者的原话 「19127 插队」 真实发生过,并已按三件记录。
  • 项目长远合理性:不造新标签;直派通道本就是维护者直接指挥的既有规则,取卡序只是点名它。
  • 防 AI 写错:共享身份下标签可由任何席伪造(:96、:139 「一个标签存在当且仅当有具名读者」);出处三件 + 逐字引用可审计,席位无法自封插队。
  • 创业阶段不扩散:零新面。

One point for the seat's speed-read: the dispatch ruling places 契约面卡 above the whole ladder, priority:p0 included. Since :120 dispatches p0 immediately (可超 batch、破轮次), the relative order is load-bearing only when a p0 waits for a slot; if the maintainer prefers p0 and pm:blocking above 契约面卡, it is a one-token move on :464 and :108.

Verification (head de581d0)

  • pnpm check:pm-skill-ratchet :: exit 0 — SKILL.md is 813 lines (ceiling 813; headroom 0), widest table row is 342 bytes (pin 342); core-rules.md is 151 lines (ceiling 151; headroom 0), widest table row is 0 bytes (pin 0). Identical readings on the unchanged tree. The gate prints no per-line "longest line" reading (its 120 B cap passes silently); the longest changed line is 119 B by direct measurement.
  • pnpm check:pm-skill-id-lint :: exit 0 (27 files clean) and pnpm check:pm-governed-prose :: exit 0 (2 surfaces name all 6 governed surfaces) — both also exit 0 on the unchanged tree.
  • pnpm check:nul-bytes :: exit 0.
  • Derived union: node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack (no paths; change set = 2 paths vs merge base 4045781) → 21 commands, every exit captured before any pipe; --ran reconciliation: 21 derived, 21 run, 0 NOT-MEASURED, 0 UNRUN. One of them, pnpm --filter @objectstack/lint run check:doc-formula-expressions, first exited 3 — its declared PREREQUISITE NOT MET shape (formula / lint unbuilt; "Nothing was measured"), not a red; after turbo run build --filter=@objectstack/formula --filter=@objectstack/lint under the verify lock (VERDICT command-exit 0, held 13 s) it exits 0 (22 record-scoped examples judged clean).
  • No package touched ⇒ no dependency-closure build and no package test owed; no ablation applies (charter prose, no runtime).
  • node scripts/pm/check-governed-merges.mjs --pr N (expected exit 3 GOVERNED, Tier S) is recorded in the os-dev-report comment on the card, since the number does not exist before this body is written and the body is written once.

维护者速读(草稿)

改了什么:PM 派发章程的「取卡全序」那一行,前面多了两级:你当面点名插队的卡最先,其次是契约面卡(判是不是契约面的一句话测试不重抄,指向它原来的家 references/lanes/spec.md),然后才是原来的标签阶梯(p0、blocking、板上项、p1 到 p3)。核心条款里的孪生行同改成一模一样的两行。为了不涨行数,删掉了一条别处已经说过的重复句(45 分钟探针门槛那句),两个文件各净 0 行。

为什么改:你 9 月 18 日说 「应该优先处理 契约面卡」,这条规则当时只活在一张席位帖里;新开的席位读章程读不到它,而且两个席位同时按它重排队列,同一分钟撞上了同一张卡。写进章程,席位各自按自己的节奏重排,不再撞。

风险与代价(含回滚):纯章程文本,不碰代码、不碰标签、不碰任何卡的定级。唯一要你看一眼的措辞:契约面卡按派发裁决排在 p0 之上,但 p0 本来就是立即派发不排队,所以只在 p0 等槽位时才有差别。回滚 = revert 这一个 commit。

席位意见:(留空,席位定稿时填)

你要做的:一个动作——若契约面卡应排在 p0 与 blocking 之下而不是之上,回一个字「下」;否则不用动,席位按契约复审 PASS 落地。

Acceptance notes (observations, no card filed)

  • SKILL.md :462 says pm:blocking 「在其车道排最前」 while the ladder (now :465) ranks priority:p0 above it — a pre-existing wording tension, unchanged here. carrier: none (承接者:无).
  • SKILL.md :120 describes priority:p0 with the word 插队; the new top tier is 维护者直派插队卡. The ladder line names priority:p0 as its own rung, so the two are structurally distinct; the shared word is noted, not changed. carrier: none.
  • No gate compares the SKILL.md / core-rules twins' content (the ratchet only counts core-rules lines). A 可机械化项 for the skills seat's own channel (换班报告 三类 → 门禁/脚本卡), not a dev finding. carrier: the domain:skills seat.

Generated by Claude Code

…face tiers into the take order

The 取卡全序 line in SKILL.md and its core-rules twin now carry two tiers above the label ladder: a card the maintainer directly ordered to jump (recorded on the card with the three provenance items) first, then a contract-surface card (criterion: references/lanes/spec.md), then the existing priority ladder, now on its own 标签序 line. Both files land the same two lines, paying the added line by retiring the 45-minute probe-threshold restatement (SKILL.md) and its twin (core-rules); its surviving home is the collection section's probe-threshold, death-basis and baseline lines. Net 0 lines in both files, every changed line under the 120-byte cap.

Claude-Session: https://claude.ai/code/session_017ETYWqMQD4qMtZzAGovWNi
Co-authored-by: Claude <noreply@anthropic.com>
@os-steve os-steve added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Sep 21, 2026 — with Claude
@github-actions github-actions Bot added size/xs documentation Improvements or additions to documentation labels Sep 21, 2026

Copy link
Copy Markdown
Collaborator Author

Contract review

Served-tier: CONTRACT_REVIEW_TIER
Head-sha: de581d0a1da2b796b1f3336eba6071eb08047e4a

① Derived judgments

  • Published accept set / public surface: none moves — two charter files, +4 / −4, net 0 at 813 / 813 and 151 / 151; the four landed lines are 119 / 116 B (SKILL.md :464–:465) and byte-identical twins in core-rules :108–:109, all under the 120 B cap; no package, no export.
  • The fix, read line by line against the maintainer's ruling quoted on the card (「应该优先处理 契约面卡 卡」) and his order in this seat's session (「19127 插队」): :464 「取卡全序:维护者直派插队卡(出处三件)> 契约面卡(判据见 references/lanes/spec.md)> 标签序。」 puts the two ruled tiers above the whole ladder, names the test's home instead of restating it (lanes/spec.md :17–:18 read and untouched), and :465 「标签序:…」 carries the old ladder verbatim. 维护者直派插队卡 composes the charter's existing 直派 term (:226–:227) with the maintainer's word 插队, so recognition needs no new clause and the 插队 wording at :120 (priority:p0) is not shadowed; (出处三件) pins the :149 record form — this seat's own claim 5755214464 is the live specimen. The added line is paid by retiring :578 「45 分钟是发探针的门槛,⛔ 不是判死的门槛。」, provably derivable from :574 (the ~45 min probe threshold) + :579 (判死只有三类依据) + :580 (⛔ 非本文任何常数) — grep proof quoted in the PR body; core-rules :118, the twin of the retired line, retired with it (a twin of a retired rule would be the stale copy).
  • Mechanism assumption 2 refuted publicly by the dev and accepted: core-rules :108's old order was a vocabulary variant of the same ladder (插队卡 ≡ priority:p0, 有下游依赖者的卡 ≡ pm:blocking), not a different order; and no gate compares the twins' content — recorded below as a seat item.
  • Evidence, seat-run on this head in a detached worktree: git merge-tree --write-tree origin/main HEAD clean, and clean against PR fix(pm): the claim HANDOVER protocol — one comment, four items, provenance instead of a liveness test; the reader accepts it and C9 keeps one red #19502's head 7a66ffe (the seat's other in-flight SKILL.md edit at :492–:497 — the two land in either order); check-skill-line-ratchet.mjs exit 0 (813 / 813 · 151 / 151); check-skill-id-lint.mjs exit 0; check-governed-prose.mjs exit 0; check-governed-merges.mjs --pr 19506 exit 3 GOVERNED, Tier S. The dev's union: 21 / 21 derived commands exit 0 at de581d0, reconciled with --ran.

② Semver level

None — nothing published; skip-changeset on the PR is the correct declaration. Judged correct.

③ Boundary flags

  • open_questions[0] — 契约面卡 above priority:p0: A, as landed — the ruling as dispatched, and :120 dispatches p0 at once (可超 batch、破轮次), so the relative order is observable only when a p0 waits for a slot; B (one token, below p0 and pm:blocking) is the maintainer's to say — flagged to him in the seat's session, ⛔ not the decision box.
  • The pre-existing tension the dev noted (:462 「pm:blocking 在其车道排最前」 vs the ladder ranking p0 above it) is unchanged by this PR — a rider on the seat's next SKILL.md touch.
  • Seat item recorded: no gate compares the SKILL.md / core-rules twins' content (the ratchet counts core-rules lines only) — a 可机械化项 for the 换班报告 channel, ⛔ not a card under 🔗 Broken links detected in documentation #202 B.

Implemented-by: claude/issue-19127-contract-surface-take-order
Reviewed-by: session_017ETYWqMQD4qMtZzAGovWNi

VERDICT: PASS


Generated by Claude Code

@os-steve
os-steve marked this pull request as ready for review September 21, 2026 04:32
@os-steve
os-steve enabled auto-merge September 21, 2026 04:32
@os-steve
os-steve added this pull request to the merge queue Sep 21, 2026
Merged via the queue into main with commit ea64bbc Sep 21, 2026
32 checks passed
@os-steve
os-steve deleted the claude/issue-19127-contract-surface-take-order branch September 21, 2026 05:10
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/xs skip-changeset PR has no user-facing published change; bypasses the changeset gate

Projects

None yet

2 participants