Skip to content

docs(pm): add the triage seat's lane reference and its ratchet rows - #15958

Draft
claude[bot] wants to merge 1 commit into
mainfrom
claude/issue-15671-triage-lane-reference
Draft

docs(pm): add the triage seat's lane reference and its ratchet rows#15958
claude[bot] wants to merge 1 commit into
mainfrom
claude/issue-15671-triage-lane-reference

Conversation

@claude

@claude claude Bot commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

Fixes #15671

What this lands

Two files, exactly as the card rules them.

New .claude/skills/pm-dispatch/references/lanes/triage.md — 7 lines: the H1 the sibling lane files open with, the pointer line naming the SKILL.md section it details (〈分诊座位职责〉), then the three ruled rules, one per line. Nothing else lives in the file today. SKILL.md and the eight existing lane files are untouched.

scripts/pm/check-skill-line-ratchet.mjs — two added rows and nothing else: CEILINGS gains lanes/triage.md at 7, the landed line count read from the gate's own run (headroom 0, the map's convention for a new file), and MAX_TABLE_ROW_BYTES gains it at 0, the file carrying no table row. No other row of either map moves; the diff on this file is 8 added lines and 0 removed.

Byte widths

Measured with LC_ALL=C awk. The widest line is line 3, the pointer line, at 119 bytes against the 120-byte budget; the three rule lines are 113 / 110 / 101 bytes.

That pointer line takes the seat wording of lanes/director.md with the shorter tail the six domain lane files use (⛔ 不迁入本文。): director's own spelling with 〈分诊座位职责〉 substituted measures 122 bytes and would have been red.

Gates

Union re-run on head 32945f93f1, after the final commit.

  • node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack derived 36 commands from the 2-path change set. All 36 were run; the reconcile agrees: ✓ dispatch-gates --ran: 36 derived famil(ies) accounted for — 36 run, 0 NOT-MEASURED.
  • ✓ check-skill-line-ratchet self-test: 155 cases pass. (155 on main too — no case added or removed.)
  • ✓ check-skill-line-ratchet: .claude/skills/pm-dispatch/references/lanes/triage.md is 7 lines (ceiling 7; headroom 0).
  • ✓ check-skill-line-ratchet: .claude/skills/pm-dispatch/references/lanes/triage.md: widest table row is 0 bytes (pin 0; headroom 0). Every other ceiling line in that run is unchanged.
  • ✓ check-skill-id-lint: 25 file(s) clean (pattern /#[0-9]{3,}/g). — the new file is one of the 25; it carries no card number and no date.
  • check-skill-frame-sync: binding sentence present in all 2; 4 count mention(s) agree; 74 markdown files scanned for undeclared copies. The decision frame does not appear in the new file, and its anti-dormancy scan agrees.
  • ✓ check-governed-prose: 2 instruction surface(s) name all 5 registered governed surfaces … and claim no others.
  • check-nul-bytes: OK (scanned 7694 text file(s) … no raw ASCII control bytes).
  • Whole-repo pnpm lint (eslint . --no-inline-config) green through scripts/pm/os-verify-lock.sh, slot issue-15671: VERDICT command-exit 0 · held the lock 82s.
  • One derived command first returned exit 3 — PREREQUISITE NOT MET, nothing measured, not a finding: pnpm --filter @objectstack/lint run check:doc-formula-expressions. Built @objectstack/formula and @objectstack/lint through the same lock, re-ran it, green.
  • node scripts/pm/check-governed-merges.mjs --test on the two paths exits 3 — GOVERNED (.claude/** hit). Draft PR, human merge; no seat flips it ready, enqueues it, or arms auto-merge. skip-changeset applies: nothing here publishes from a package.

One roster note — reported, not taken

The ratchet's self-test case labelled all eight lane/seat job descriptions are covered enumerates the eight pre-existing lane files and is an .every over that list, so a ninth file keeps it green. This file's coverage is therefore pinned by its two map rows and by the map-wide every ceilinged file carries a pin case, but not by that roster. Extending the roster would also rename a label pinned in the self-test's expectation table — beyond the two map rows this card rules, so it is reported to the seat rather than taken here.

维护者速读(草稿)

改了什么 — 新增一个分诊席的岗位说明文件,把已裁定的取卡纪律写成三条规则:每轮只取一个仓、两仓轮替、仓内最旧优先;任一仓最旧未路由卡超过 4 小时时该仓插队;不回退到跨仓全局最旧优先,也不因积压加席或改频率。同时在行数棘轮里给这个新文件登记一行上限。不动任何既有指令文件。

为什么改 — 这套纪律此前只存在于一次裁决记录里,分诊席每轮开工靠记忆执行,偏离了没人指得出来。写进版本化的岗位说明后,规则跟着仓库走。原本设想的落点(SKILL.md 的分诊座位职责一节)已经顶到行数上限,且有两张卡在它上面串行,所以按卡的判断另起一个车道文件。

风险与代价(含回滚) — 纯文档增量,不改任何可执行行为;派生的 36 个门禁族与全仓 lint 全绿。代价是常读指令面多了 7 行,且棘轮上限钉死在 7、没有余量:以后要往这个文件加规则,得先删同等行数或走裁决。回滚就是 revert 这一个提交,无残留。

席位意见

你要做的(一个动作) — 读一遍文件里那三条规则,确认就是你要的分诊取卡纪律;是的话合并这个 PR。


Generated by Claude Code

The triage seat had no file under `references/lanes/`: its standing duties live
in SKILL.md 〈分诊座位职责〉, which sits at its ceiling. This adds the seat's own
lane reference, holding today only the ruled pickup discipline — one repo per
fire alternating between the two multi-lane repos, oldest-first inside a repo,
the 4-hour starvation guard, and the two prohibitions (no fallback to a global
oldest-first across repos, no second triage seat and no fire-frequency change
for backlog).

The ratchet gains the new file's two rows: `CEILINGS` at the landed line count
read from the gate's own run (7 lines, headroom 0, the map's convention for a
new file) and `MAX_TABLE_ROW_BYTES` at 0, the file carrying no table row. No
other row of either map moves and no other instruction file is touched.

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

os-steve commented Sep 5, 2026

Copy link
Copy Markdown
Collaborator

ACCEPT — lands #15671 as ruled. Governed (.claude/** in the diff, predicate exit 3), so this PR stays draft at the governed terminal: both approvers requested; needs-user-decision goes on the PR with the final 「维护者速读」 posted beneath this verdict.

What the seat verified, at head 32945f93f1, in its own compare worktree

  • Two files, +15/−0. The new references/lanes/triage.md is seven lines: the seat-form H1, the pointer line to SKILL.md 〈分诊座位职责〉 with the six domain lane files' tail (119 bytes), then the three ruled rules verbatim in substance — alternating-repo pickup with oldest-first inside a repo (113 B), the 4-hour starvation guard (110 B), the two prohibitions (101 B). No dates, no quotations, no card numbers, no decision-frame fingerprint.
  • The ratchet map gains exactly two rows — CEILINGS at 7 and MAX_TABLE_ROW_BYTES at 0 — and no other row moves; the seat's own live run prints the new file's line at 7/7 and exits 0; --self-test 155 cases (unchanged). check-skill-id-lint 25 files clean; check-governed-prose green; SKILL.md and the eight sibling lane files untouched.
  • CI, seat's read 16:4xZ: 37 check runs, 26 success, 11 skipped, none failing, none pending.
  • Body line 1 Fixes #15671; skip-changeset present; the 草稿 section is in the body.

Open question answered: A. A seat gets the seat form of H1, and the pointer takes the tail eight files already share where the director's spelling would cross the byte cap.

Follow-up graded: #15965 (the self-test's hand-written lane roster pins no case for a ninth lane file) — same file, so it waits behind this PR.

Implemented-by: os-dev executor, flight #15671, branch claude/issue-15671-triage-lane-reference
Reviewed-by: pm-dispatch skills seat, https://claude.ai/code/session_019RfFHiRCSs3JXLK4cwcfox


Generated by Claude Code

@claude
claude Bot requested review from hotlong and os-zhuang September 5, 2026 16:44

os-steve commented Sep 5, 2026

Copy link
Copy Markdown
Collaborator

维护者速读

改了什么:新增分诊席的岗位说明文件(references/lanes/triage.md,7 行),把你在 #15476 上裁定的取卡纪律写成三条规则:每轮只取一个仓、两仓轮替、仓内最旧优先;任一仓最旧未路由卡超过 4 小时,该仓本轮插队;不回退到跨仓全局最旧优先,也不因积压加第二分诊席或改 fire 频率。行数棘轮给新文件登记上限 7(无余量,新文件惯例)。不动 SKILL.md 和其他八个车道文件。

为什么改:这套纪律此前只存在于裁决记录里,分诊席每轮靠记忆执行,偏离了没人指得出来;原设想的落点(手册的分诊座位职责一节)已顶到 811 行上限,所以按裁决的执行说明另起车道文件,让规则跟仓库走。

风险与代价(含回滚):纯文档,不改任何可执行行为;36 个派生门禁 + 全仓 lint 全绿,席位复跑棘轮(7/7、自测 155 例不变)、编号 lint、受管面判定。代价:常读指令面多 7 行,且上限钉死在 7,以后加规则须先删等量或走裁决。回滚 = revert 一个提交。

席位意见:建议批准。四轴:业务——分诊两仓饥饿是实测过的问题,裁决已在;长远——规则住版本化文件、单源;防 AI 错——三条都是闭合规则,含两条明确禁令;创业阶段——7 行、零新机制。附带:dev 发现棘轮自测的车道名单是手写八项,新文件的上限行没有用例钉住,已立 #15965 排在本 PR 之后。

你要做的:批准并入队,或人工直合。一字:是/否。


Generated by Claude Code

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 needs-user-decision size/s skip-changeset PR has no user-facing published change; bypasses the changeset gate

Projects

None yet

2 participants