Skip to content

pm-dispatch(lanes): the skills, spec and ui charters point at the lane self-triage exception instead of restating the old absolute - #27358

Merged
objectstack-fleet[bot] merged 3 commits into
mainfrom
claude/issue-27326-lane-charters-self-triage
Oct 29, 2026
Merged

objectstack-fleet[bot] merged 3 commits into
mainfrom
claude/issue-27326-lane-charters-self-triage

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

Fixes #27326
Clause-②: no
Metadata-protocol: none

维护者速读

  • 改了什么:skills、spec、ui 三份车道岗位说明各改一行,不再重述「车道席绝不自分诊」的旧绝对句,改为指向 triage-duties.md 车道席自分诊例外。
  • 为什么改:例外已写进 triage-duties.md,只读自己岗位说明的席位仍会读到旧规则,与技能本体自相矛盾;规则文字仍只写一处。
  • 风险与回滚:仅内部指令文本(.claude/**,Tier S),不发布任何包;回滚即 revert 本 PR,三行恢复原文。
  • 先看:references/lanes/ui.md L8(为挤进 120 字节删了「同笔」二字与指针两侧空格,见下);其次 lanes/skills.md L22、lanes/spec.md L29。
  • 两分钟验证:pnpm check:pm-skill-ratchet,预期三文件行数 32/42/23 不变、全绿。
  • 需要你做的:无,席位落地(Tier S 契约复核)。

What changes

Three in-place line edits, net 0 lines per file, each line within the 120-byte budget. Each line keeps its lane content and names the exception's home (triage-duties.md, 自分诊) instead of restating the absolute; no new rule text.

file:line before (bytes) after (bytes)
lanes/skills.md L22 「- 本车道 finding 同走分诊席首触,⛔ 不自分诊;席位可附证据与「仪器为车队服务」的答案。」 (119) 「- 本车道 finding 归分诊首触,自分诊见 triage-duties.md;可附证据与「仪器为车队服务」答案。」 (119)
lanes/spec.md L29 「- findings 首触定级归分诊席,本席只供证据。」 (57) 「- findings 首触定级归分诊席,本席只供证据;例外见 triage-duties.md 车道席自分诊。」 (105)
lanes/ui.md L8 「- ⛔ 不产 domain:*、type 与定级,分诊唯一生产;误标 pm:retriage+异议同笔,整树归本席除外。」 (118) 「- ⛔ 不产 domain:*、type,定级仅triage-duties.md自分诊;误标 pm:retriage+异议,整树归本席除外。」 (120)

Line counts: skills.md 32 to 32 (ceiling 33), spec.md 42 to 42 (ceiling 43), ui.md 23 to 23 (ceiling 23). Headroom not spent.

Tests

No code, no published surface (.claude/** only), so no unit tests and no changeset (skip-changeset). The gate union derived by node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack (17 families) ran green on head f65fff31; see Verification.

Acceptance notes

  • ui.md L8 byte budget: the dispatch hypothesis gave this line 2 B of room once 「分诊唯一生产」 is displaced. Measured, every wording that keeps 「定级」, 「自分诊」 and the full file name plus the untouched remainder lands at 128 B or more (the remainder alone is 89 B; the grade clause with the pointer is 39 B). To fit 120 B without spending the 0-line headroom, two things went: the spaces around the pointer's code span, and 「同笔」 in the mislabel clause (the same-stroke rule keeps its general home in references/cross-repo-coordination.md L32, 「误标挂 pm:retriage+异议同笔」). domain:* and type stay absolute and the pointer attaches to 定级 alone, so it does not read as a domain:* exception (triage-duties L32: 不改 domain:*). 「整树归本席除外」 is unchanged. If the seat prefers keeping 「同笔」, the alternative is dropping .md and 「归」 from 「整树归本席除外」, which the dispatch said stays.
  • skills.md L22 keeps 「仪器为车队服务」; to fit, 「同走分诊席」 became 「归分诊」 and 「席位…的答案」 became 「…答案」.
  • Out of scope, not edited (single-file-surface claim): references/cross-repo-coordination.md L31 still says 「执行席永不定级或路由裸卡」, the same absolute this card retires, in the multi-lane-repo section. Same family as this card; reported to the seat, not filed.
  • skills.md L23 (「…⛔ 不自入队;定级归分诊。」) covers findings that cannot answer the instrument question (p3 or drop), outside the exception's p1/p2 own-in-flight scope, so no contradiction; left as is.

Verification

Gate union on head f65fff3 (exit captured before any pipe)
node scripts/check-closing-keyword-parity.mjs :: exit 0
node scripts/check-closing-keyword-parity.mjs --self-test :: exit 0
node scripts/check-comment-mask-corpus.mjs :: exit 0   (18850 files, 0 disagree)
node scripts/pm/check-harness-current.mjs --self-test :: exit 0
pnpm --filter @objectstack/lint run check:doc-formula-expressions :: exit 0   (first run exit 3 PREREQUISITE NOT MET; built formula + lint under the verify lock, VERDICT command-exit 0, then green)
pnpm check:agent-test-spelling :: exit 0
pnpm check:cross-package-test-inputs :: exit 0
pnpm check:doc-authoring :: exit 0
pnpm check:driver-memory-census :: exit 0
pnpm check:gitlink-declared :: exit 0
pnpm check:nul-bytes :: exit 0
pnpm check:pm-governed-merges :: exit 0
pnpm check:pm-skill-id-lint :: exit 0   (105 file(s) clean)
pnpm check:pm-skill-ratchet :: exit 0   (skills.md 32/33, spec.md 42/43, ui.md 23/23)
pnpm check:refd-timer-probe :: exit 0
pnpm check:skill-frame-sync :: exit 0
pnpm check:watch-hint-literal :: exit 0
extra, outside the derivation: pnpm check:pm-settings-deny-roster :: exit 0, pnpm check:pm-governed-prose :: exit 0
dispatch-gates --ran: 17 derived, 17 run, 0 NOT-MEASURED (a DERIVED zero, all 17 recorded an exit code)

Families the dispatch expected but the derivation does not name for these paths (check:pm-half-states, check:pm-dispatch-gates, check:pm-record-recognisers) are left to CI's Lint & Repo Gates.


Generated by Claude Code

…lf-triage exception

Each charter line keeps its lane content and names the exception's home
(`triage-duties.md`, 自分诊) instead of restating the old absolute. In
place, net 0 lines per file, every line within 120 bytes.

Claude-Session: https://claude.ai/code/session_01QSeKYmhU5KEj1nukYhp1Tg
Co-authored-by: Claude <noreply@anthropic.com>
…and point cross-repo-coordination at the self-triage exception

ui.md L8 lists 定级 under the prohibition again and attaches the
self-triage pointer as an exception. cross-repo-coordination.md L4 and
L31 stop stating the grading absolute: L4 carries the pointer, L31
defers to L4 for grading. In place, net 0 lines, within 120 bytes.

Claude-Session: https://claude.ai/code/session_01QSeKYmhU5KEj1nukYhp1Tg
Co-authored-by: Claude <noreply@anthropic.com>
@github-actions github-actions Bot added size/s and removed size/xs labels Oct 29, 2026
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

domain:skills#2 · os-justin · session_01QSeKYmhU5KEj1nukYhp1Tg

Contract-review-claim: session_01QSeKYmhU5KEj1nukYhp1Tg · head 7e6b3c6 · 2026-10-29T02:49Z

@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

domain:skills#2 · os-justin · session_01QSeKYmhU5KEj1nukYhp1Tg

Contract review

Served-tier: CONTRACT_REVIEW_TIER
Head-sha: 7e6b3c6839ed3fd1ee73920d51728d9c4087eb1f
Local-runs: probe — the seat ran, in a detached read-only worktree of the head (no edit, no build, no network): check-skill-line-ratchet.mjs → lanes/skills.md 32 / 33, lanes/spec.md 42 / 43, lanes/ui.md 23 / 23, cross-repo-coordination.md 47 / 47, exit 0; check-skill-id-lint.mjs ✓ 105; pnpm check:pm-governed-prose ✓; the five edited lines measured 119 / 105 / 120 / 119 / 117 B (wc -c, no newline); grep -rn "永不定级|唯一生产者|不自分诊" .claude/skills/pm-dispatch/ → 0 hits on the head
Scope: .claude/skills/pm-dispatch/references/lanes/skills.md L22, lanes/spec.md L29, lanes/ui.md L8, cross-repo-coordination.md L4 + L31 (the two folded by claim amendment 6486317298) + references/triage-duties.md L30–33 (cited: the exception's home, read on the head) + cross-repo-coordination.md L32 (cited: the home of the dropped 「同笔」)

Claim line 6486526471 on this head (2026-10-29T02:52Z); no earlier record on this PR (the seat's round-1 REWORK was sent before any record, on the dev's report). Read at 2026-10-29T02:52Z by the domain:skills#2 seat on the fetched head (three commits on merge-base 73725c20): four files, +5/−5 (10 ≤ 3000; check-governed-merges --pr 27358: .claude paths ⇒ Tier S). The claim 6485748946 served TIER_DEFAULT; this review is served at CONTRACT_REVIEW_TIER (governed rules text).

① Derived judgments

  • lanes/skills.md L22 「本车道 finding 归分诊首触,自分诊见 triage-duties.md;可附证据与「仪器为车队服务」答案。」 (119 B) — first touch stays triage's, the exception is named by its home, the lane's own answer kept. Holds.
  • lanes/spec.md L29 「findings 首触定级归分诊席,本席只供证据;例外见 triage-duties.md 车道席自分诊。」 (105 B). Holds.
  • lanes/ui.md L8 「⛔ 不产 domain:*、type、定级,除 triage-duties 自分诊;误标 pm:retriage+异议,整树归本席除外。」 (120 B) — 定级 is back inside the ⛔ and the pointer reads as an exception (round 1's 「定级仅…自分诊」 inverted it; must-fix met); domain:* and type stay absolute (triage-duties L32); 「同笔」 dropped, its home cross-repo-coordination.md L32 read. Holds.
  • cross-repo-coordination.md L4 「中央分诊唯一生产 domain:*/type/定级,定级例外见 triage-duties 自分诊。」 (119 B) and L31 「分诊唯一生产路由/type/查重/shadow/duplicate_of;执行席永不路由裸卡,定级见上。」 (117 B) — the pointer shape on L31 measured 151 B (dev), so grading moved to L4 in the same file and L31 defers to it; 路由/type/查重/shadow/duplicate_of and 「执行席永不路由裸卡」 stay absolute. The fold the claim amendment named, in place, net 0 lines. Holds.
  • The rule text now lives once (triage-duties L30–33); every former absolute in the skill tree points at it (grep 0 hits for the old spellings). The card's acceptance (no charter contradicts the skill) met.

② Semver level

  • None owed: .claude/** publishes nothing; skip-changeset correct; Clause-②: no, Metadata-protocol: none line-initial, matching the claim.

③ Boundary flags

  • The order's hypothesis 1 (2 B of room on ui.md L8) and the REWORK's suggested spellings (127 B / 151 B) were falsified by measurement; the dev's fitted spellings accepted.
  • No origin/main merge in the rework round (one commit as ordered); merge base 73725c20, origin/main since touched nothing under these paths — the queue arbitrates.
  • The dev did not PATCH the PR body (os-dev.md); its corrections (the ui.md L8 after-cell, the two cross-repo rows, the acceptance-note bullets, the head) are carried by this record and the ACCEPT, not by an edit.
  • lanes/skills.md L23 (non-instrument findings ⇒ p3 or drop, 定级归分诊) is outside the exception's p1/p2 own-in-flight scope — no contradiction, unchanged (dev's note; the seat agrees).
  • Author objectstack-fleet[bot] through the relay; mcp_calls: 0; api_writes 3 across two rounds (all relay); draft, no flip by anyone.

④ Design judgment

  • Against the ruling behind the exception (「照此执行,并立卡更新 skills」) and the four-axis frame: the exception is written once and pointed at from five places; nothing restated, nothing widened (domain:*, type, 路由 stay triage's alone); a reader of any one charter or the cross-repo file now finds the same rule the skill carries. Holds. Residual: none.

Implemented-by: claude/issue-27326-lane-charters-self-triage
Reviewed-by: session_01QSeKYmhU5KEj1nukYhp1Tg

VERDICT: PASS

@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

domain:skills#2 · os-justin · session_01QSeKYmhU5KEj1nukYhp1Tg

维护者速读 — 席位终稿 · PR #27358 · head 7e6b3c68 · domain:skills#2 · 2026-10-29T02:52Z

  • 改了什么:技能树里五处仍写着「车道永不定级 / 不自分诊」绝对句的地方(lanes/skills.md L22、lanes/spec.md L29、lanes/ui.md L8,以及同族并入的 cross-repo-coordination.md L4、L31)原地改一行,各自保留车道内容、把例外指向 triage-duties.md 车道席自分诊(你 03:20Z 裁的那条,PR pm-dispatch(triage): a lane seat may self-triage at p1/p2 a card that blocks its own in-flight work on clear evidence, in triage's format, and triage reviews it each round #27320 已落地)。四文件行数不变(32/42/23/47),五行各 ≤120 B;domain:*、type、路由仍是分诊独产,只有「定级」带例外指针。
  • 为什么改:例外落进 triage-duties 之后,只读自己章程的席位仍会读到旧绝对句,规则与规则相悖;改完后旧拼法在整个技能树里零命中。
  • 风险与回滚:纯协议文本,无脚本无门禁;回滚 = revert 本 PR 两个 commit。
  • 先看:lanes/ui.md L8(首轮拼法把例外写成常规,返工已纠)、cross-repo-coordination.md L4/L31(L31 放不下指针,定级并到 L4 一处)、lanes/skills.md L22、lanes/spec.md L29。
  • 两分钟验证:pnpm check:pm-skill-ratchet 四文件 32/42/23/47;grep -rn "永不定级\|不自分诊\|唯一生产者" .claude/skills/pm-dispatch/ → 无。
  • 需要你做的:无 —— Tier S,契约复核 PASS(6486567500)后席位按你今天的落地授权落地。
  • 席位意见:ACCEPT。首轮 dev 的 ui.md 拼法方向反了,席位返工纠正;dev 发现的 cross-repo 两行同族漂移按「同族并入收口卡」并进本 PR(认领修正 6486317298);五行字节与四处之家席位实读。

席位核对 — ACCEPT · domain:skills#2 · session_01QSeKYmhU5KEj1nukYhp1Tg · 2026-10-29T02:52Z

  1. 形态:draft → main,首行 Fixes #27326,Clause-②: no、Metadata-protocol: none 行首在;四文件 +5/−5(10 行 ≤ 3000);assignee os-justin;skip-changeset 正确;三 commit(首轮 + 合 main + 返工);作者 objectstack-fleet[bot] 经中继,mcp_calls: 0;dev 两份报告首行带署名。
  2. 前提实测:席位在 head 的 detached worktree 复跑 ratchet ✓(32/33、42/43、23/23、47/47)、id-lint ✓ 105、governed-prose ✓;五行 119/105/120/119/117 B;旧拼法 grep 零命中;triage-duties.md L30–33 与 cross-repo-coordination.md L32(「同笔」之家)在 head 上读到;check-governed-merges --pr 27358 ⇒ Tier S。
  3. 门禁 check-runs(head 7e6b3c68,本笔读数 2026-10-29T02:52Z):40 check-runs,22 success · 18 skipped · 0 in progress · 0 failure;18 个 skip 由 check-expected-skips.mjs --check-runs-json 判定全部在册,exit 0;dev 本地派生 17 族全绿(--ran 17/17)。
  4. 接受的偏差:① 首轮 ui.md L8 语义反向,REWORK 一轮纠正(必修);② 令中「L8 还有 2 B 余量」与 REWORK 建议拼法(127 B / 151 B)皆被实测证伪,采 dev 的拼法;③ cross-repo L31 的定级并到 L4(同文件一处);④ 返工轮未合 main(按令一个 commit),merge-base 73725c20,其后 main 未碰这些路径;⑤ PR 正文未 PATCH(角色文件禁止),改法由本记录承接。
  5. 范围外去向:none filed;Acceptance notes:lanes/skills.md L23(非仪器 finding ⇒ p3 或不做,定级归分诊)在例外的 p1/p2 自有在飞范围之外,无矛盾,不动。Skills-docs: 不欠(kind none)。
  6. 落地条款:Tier S;契约复核 PASS 评论 6486567500(head 7e6b3c68,认领行 6486526471 先落);全绿即席位经中继 pr_ready + automerge_enable 落地(本班维护者「你应该按照 pm-dispatch 技能审核并落地pr」在案);MERGED 后关卡摘 pm:dispatched。

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

Development

Successfully merging this pull request may close these issues.

pm-dispatch(lanes): the skills, spec and ui lane charters still state the old no-self-triage absolute — point each at the triage-duties exception

2 participants