docs(pm-dispatch): give the domain:ui lane its versioned job description - #17243
Conversation
`references/lanes/` held nine job descriptions and `domain:ui` — the one lane the multi-repo charter itself adds, with the widest residual scope of the three objectui streams — had none, while SKILL.md rules that 范围与常设承诺 are versioned in `references/lanes/<lane>.md`. Adds `references/lanes/ui.md` in the directory's own shape (形态 / 范围 / 常设承诺 / 席内判断), written as pointers to the rules already stated in SKILL.md 〈多仓协调〉 and objectui's AGENTS.md §9 — no rule is restated, so no concept gains a second source of truth. 席内判断 are the seat's own standing tests, taken from the live `domain:ui @ objectui` seat post. Registers the new file in the line ratchet: one `CEILINGS` row seeded at the landed count of 38 (headroom 0) and one table-row pin at 0 (the file carries no table). Registration only — no existing ceiling or pin moves. Claude-Session: https://claude.ai/code/session_01MoTv7pn338AZ71owsp19gQ Co-authored-by: Claude <noreply@anthropic.com>
维护者速读改了什么 — 新增一个文件 为什么改 — 派发协议规定「每个车道的范围与常设承诺版本化在 风险与代价(含回滚) — 纯文档,不改路由、不改 SKILL.md、不动 objectui 仓;主要风险是写重复造成两份真理,本 PR 逐行做成指针,PR 正文有逐行指向表可核。多一个每次座位会话都要读的 38 行文件,已按零余量登记。回滚 = 删文件并撤两行登记,无其它依赖。 席位意见 — 本席以契约复审档复核通过:逐行核过指向、门禁与自测在该提交上全绿、CI 30 项全绿、合并无冲突。建议合并。dev 顺手发现 你要做的 — 看两点:① 席内判断六条是否都值得作为该席常设判据(全部取自现任座位贴);② 半状态巡查那三行的记录方式是否是你要的。认可即人工合并本 PR(受管面,席位不合)。 Generated by Claude Code |
Fixes #17236
.claude/skills/pm-dispatch/SKILL.mdrules that a lane's 范围与常设承诺 are a jobdescription, not state, and are versioned in
references/lanes/under the lane's ownname. The directory held nine such files;
domain:ui— the one lane the multi-repocharter itself ADDS beyond the domain table, and the one given the widest residual
scope of objectui's three streams — had none. This PR writes it. ⛔ No lane assignment
changes, ⛔ no SKILL.md edit: the rule is satisfied by the file existing.
The file —
.claude/skills/pm-dispatch/references/lanes/ui.md(38 lines, widest line 117 bytes, no table)Where each line points — ⛔ no rule is restated
The directory exists to prevent 「同一概念两份真理」, so every line that touches a rule
stated elsewhere is a POINTER plus, at most, the one-clause consequence for this seat.
domain:*/ type / 定级pm:retriage@object-ui/*与apps/*domain:devx/domain:spec归各自跨仓车道pnpm objectui:refresh产物回流packages/spec一律转domain:specscripts/pm/**单写手在 objectstackBlocked-by:AGENTS.md§9(受管面段 + 版本号策略);⛔ 本文不复述清单domain:ui @ objectui座位贴自己记录的常设判据,⛔ 无一条自创The one measured claim, and how it was measured
lanes/hotcrm.mdrecords its repo's patrol carrier as a fact, so this file does the samefor objectui. Measured on objectui
maintoday, not assumed:.github/workflows/half-state-patrol.yml— present (adopted copy of objectstack's).scripts/pm/check-half-states.mjs— present, and it is the ONLY file in objectui'sscripts/pm/(so ⛔ nodispatch-gates.mjsthere; that reading is a per-repo gate factand belongs to
references/platform-readings.md, ⛔ not to a lane charter).success, stepUpdate the pinned anchor issue→ skipped,step
Publish the rendered body to the run summary→ success.⇒ the carrier EXISTS and the run is green, but no anchor issue is configured, so the read-anchor
leg is empty and the findings only reach the run summary. The file states exactly that, names the
manual half (the
hotcrm.mdclause), and requires the seat to RE-MEASURE the anchor each roundrather than inherit this reading.
half-state-patrol.yml」)and it also corrects the live seat post, which still records the patrol as DEAD here — that was
true until earlier today; the degrade-gracefully fix has since landed and the last two scheduled
runs are green.
Ratchet registration — ⛔ not a raise
Two rows added to
scripts/pm/check-skill-line-ratchet.mjs, placed and commented the way thesibling lane rows are (the
triage.mdrow is the model: a NEW file, an added row, no other rowmoves):
CEILINGS:.claude/skills/pm-dispatch/references/lanes/ui.md→ 38 (the landed count, headroom 0)MAX_TABLE_ROW_BYTES: same key → 0 (the file carries no table)⛔ No existing ceiling or pin moves; the map-wide total rises by exactly the new file's own count.
The gate's own verdict lines:
The self-test does NOT pin a
CEILINGSkey COUNT and does NOT pin a lanes-directory file list —it DERIVES the roster from disk (
laneFilesOnDisk()+laneRosterVerdict), and an empty roster isred rather than vacuously green. So there is no count to move in this PR; the new file simply had
to carry a row or that derived assertion would have gone red.
--self-test: 157 cases pass.维护者速读(草稿)
改了什么
给
domain:ui(objectui 前端执行席)补上它的岗位说明文件,并把该文件登记进技能行数棘轮。没有改任何路由规则、没有改 SKILL.md、没有动 objectui 仓的任何文件。
为什么改
派发协议里写着「每个车道的范围与常设承诺版本化在车道文件里」,但九个车道文件里恰恰缺
domain:ui这一个 —— 而它是协议自己新增、且承接面最宽的那个车道。规则有、载体无,新座位上任只能靠口口相传和
翻座位贴,容易把「现值状态」当成「岗位说明」继承下去。
风险与代价(含回滚)
代价是多一个每次座位会话都要读的文件(38 行,已按 headroom 0 登记,之后再长必须先删内容)。
风险主要是「写重复」—— 若把 SKILL.md 已有的规则再抄一遍,就制造了第二份真理,以后两边会漂移。
本 PR 的写法是逐行指针,上面「Where each line points」表可逐条复核。回滚 = 删文件 + 撤两行登记,
无其它依赖,不影响任何运行时行为。
席位意见
你要做的
确认两点即可合并:①「半状态巡查」那三行是本文件唯一的实测事实,读起来是否是你要的记录方式;
② 席内判断六条是否都值得作为该席的常设判据(它们全部取自现任座位贴,⛔ 无一条自创)。
Acceptance notes
.claude/**)⇒ 本 PR 停在 draft 等人合;⛔ 未 ready、未入队、未 auto-merge、未留批准。skip-changeset:.claude/**与scripts/pm/**都不在任何包的files[]发运面内,不发布任何东西;⛔ 未创建 changeset,也没有任何门禁要求一个。
dispatch-gates.mjs --commands推导出 37 条,全部前台跑绿(check:pm-dispatch-gates因超前台上限改 detach +
tail --pid)。一条check:doc-formula-expressions首次以 exit 3= PREREQUISITE NOT MET 返回(它自己印明「Nothing was measured … NOT a finding」),按它给的
命令建好
@objectstack/formula+@objectstack/lint后重跑,exit 0。check:pm-skill-id-lint机械强制),所以本文件对姊妹卡与事故一律不引号。.claude/agents/os-dev.mdstates sibling repos have noscripts/pm/— objectui has one, and a dispatch built on that premise reached a governed file this shift #17244:.claude/agents/os-dev.md有一行写「姊妹仓(objectui / cloud)没有scripts/pm/」,实测 objectui 有
scripts/pm/check-half-states.mjs与它的定时 workflow。该行的操作性结论(objectui 没有dispatch-gates.mjs,门禁族要手工推)仍然成立,错的是它给出的前提面 —— 而本次派发词的假设 C 正是同一个前提,差一步就被版本化进受管文件。⛔ 本 PR 不修它:不同文件、不同卡。
domain:ui座位贴仍记「半状态巡查在本仓 DEAD」,已被今日两次绿跑推翻;座位贴是现值状态、由在任座位 PM 单写,⛔ 不是本 PR 能碰的东西。承接者:该席下一轮刷新。
Generated by Claude Code