Repository navigation
Closed
Labels
domain:devxDomain lane — seat card indexed by label:pm:seatDomain lane — seat card indexed by label:pm:seattoolingFix lands in tooling, not a product package — enters pm:queue only with Unblocks: or a named surfaceFix lands in tooling, not a product package — enters pm:queue only with Unblocks: or a named surfacetrackingGenerated anchor/tracker issue — not dispatchable; exempt from the half-state sweep's findingsGenerated anchor/tracker issue — not dispatchable; exempt from the half-state sweep's findings
Description
分诊 #5095(补全 pm-dispatch 域分类表)时发现,随 PR #5468 一并核出。#5468 只补了包的归属,这两条是标签词表层面的问题,需要 PM/维护者拍板,故单独立单,不在那个 PR 里替两条活跃车道定边界。
Follows-up: #5095 / PR #5468(该 PR 的「刻意未做的一件事」一节记了同样的理由)
1. domain:spec-tooling 在运行,但不在域分类表内 —— 且其登记文件面与 domain:devx 行完全重叠
- 该标签是登记在册的车道(program card C 包 program card:协议工具链/门禁车道(
domain:spec-tooling)—— 整包移交待接收 #5163,登记表 [PM] 分片分工登记表 — 谁在管哪个仓库的队列 #4604 有完整登记/注销记录),当前有一批 issue 挂着它; - 但
.claude/skills/pm-dispatch/SKILL.md的域分类表没有这一行,读表的 PM 看不到它的存在; - 更要紧的是,C 包 program card:协议工具链/门禁车道(
domain:spec-tooling)—— 整包移交待接收 #5163 卡上声明的文件面是scripts/**、packages/spec/scripts/**、packages/lint/**、content/docs/**(⛔ 除releases/),而表内domain:devx行现在写的是packages/lint、skills/**、content/docs/**、scripts/(门禁类)——packages/lint、content/docs/**、scripts/三处被两条车道同时声明,与本节的锚定规则「每个包恰好属于一个 domain」直接矛盾。devx 车道当前有在册 PM,spec-tooling 的 14 单也在队列里,所以这不是纸面问题:落在这三处的 issue 今天就可能被两条车道各自认领。
需要的裁定(任选其一,然后由一个 PR 更新表):
- A. spec-tooling 收窄为「生成物门禁族」:
packages/spec/scripts/**+scripts/中与生成物/基线相关的那部分 +content/docs/references/**生成面;packages/lint、skills/**、content/docs/**其余部分留给 devx。(评论区在 pm-dispatch 域分类表漏掉约 20 个包 —— 未列包按协议「不可被任何 PM 认领」 #5095 提这条时的原始建议) - B. 按 C 包 program card:协议工具链/门禁车道(
domain:spec-tooling)—— 整包移交待接收 #5163 卡面照收,devx 行相应让出packages/lint、content/docs/**、scripts/,devx 只剩skills/**等。 - C. 判定 spec-tooling 是临时 program 车道而非常设域,不进包家族表,改在表下用一句说明它是 C 包 program card:协议工具链/门禁车道(
domain:spec-tooling)—— 整包移交待接收 #5163 存续期间的临时切分。
三条的取舍取决于「spec-tooling 是长期车道还是 C 包存续期的临时切分」,这一点 #5163 与 #4604 的记录里没有明说 —— 属维护者/两条车道 PM 的口径,不由 dev 猜。
2. domain:ui 出现一例(#5236),与 repo:objectui 语义重复
objectui / cloud 是仓库级分片,routing 一直用 repo:* 表达;域车道按协议是「同仓多 PM 并发」的切法。#5236 上的 domain:ui 是目前唯一一例,再放任下去就会长出第三种写法。
PR #5468 已把文本半边写进表的说明段(「本表只覆盖本仓的包;objectui/cloud 用 repo:* 分片表达,不另打 domain:*」),剩下的是标签动作:#5236 上的 domain:ui 是摘掉换 repo:objectui,还是正式宣布为 repo:objectui 的别名并写进表。二选一,别让第三种写法自然生长。
Metadata
Metadata
Assignees
Labels
domain:devxDomain lane — seat card indexed by label:pm:seatDomain lane — seat card indexed by label:pm:seattoolingFix lands in tooling, not a product package — enters pm:queue only with Unblocks: or a named surfaceFix lands in tooling, not a product package — enters pm:queue only with Unblocks: or a named surfacetrackingGenerated anchor/tracker issue — not dispatchable; exempt from the half-state sweep's findingsGenerated anchor/tracker issue — not dispatchable; exempt from the half-state sweep's findings
Activity
os-zhuang commentedon Aug 5, 2026
分诊(devx 车道 PM,
session_01GX3sL71LFq8m2usg6VqTSE,2026-08-05):两项分开处置。第 1 项(spec-tooling 边界)→ 加
needs-user-decision,交维护者。 这是两条车道的领地裁定,且对方车道(C 包 / #5163)在登记表 08-05 01:38Z 注销交班后当前无在册属主 —— 本 PM 是利益相关方(devx 行是被重叠的一侧),单方面切边界正是登记表要防的事。三轴呈报补充如下(方案 A/B/C 见正文):packages/spec/scripts/**+scripts/生成物/基线部分 +references/**生成面)。A 是唯一让两边各拿一段可判定文件面、且不动 devx 既有认领的切法;B 整体搬走一条在册车道的领地;C 把在用标签留在表外,复现 pm-dispatch 域分类表漏掉约 20 个包 —— 未列包按协议「不可被任何 PM 认领」 #5095 刚修掉的死角。若维护者判定 spec-tooling 是 C 包存续期的临时车道,则 A+C 组合(收窄定义 + 表下注明临时性与到期回收条件)最诚实。第 2 项(
domain:ui)→ 本 PM 直接执行,否决窗口。 按 PR #5468 已合入的表文(objectui/cloud 用repo:*,不另打domain:*):#5236 摘domain:ui,其repo:objectui已在、语义完整,不设别名 —— 一种写法,不留第三种。已执行。Generated by Claude Code
os-zhuang commentedon Aug 5, 2026
同族观察两条,来自 #5472 的施工现场(不另立单,归挂本单)
实施 #5472(PR #5522,协调模型改版)时在同一片区域看到两条与本单同族的事实,按「查重先行、归挂已排队父题」的纪律记在这里,不开新 issue:
1.
.claude/skills/pm-dispatch/SKILL.md的 one-time setup 块从不创建任何domain:*标签。 它只创建pm:queue/pm:dispatched/needs-user-decision/pm:on-hold/pm:blocked/finding/pm:epic与repo:*。而同文件的 label discipline 规定「未打标签的 issue 任何 PM 都不得认领」,#5472 落地后domain:*更进一步成为分诊座位唯一生产的机器判据 —— 也就是说这套词表现在是承重的,却没有任何一处可执行文本负责把它创建出来,现存的几个域标签都是历史上手工点出来的。这正好解释了本单发现的两个未入表条目:表与实际标签集没有任何机械对账,两边各自漂移。修法与本单同一处(词表 ↔ 表 ↔ 创建脚本三者对齐),因此归挂而不是另立。2. #5472 的 engine 拆分会给这份对账再加两个新条目 + 一次存量迁移。 PR #5522 已把 SKILL 域表里的
domain:engine拆为domain:engine-core(objectql / metadata* / platform-objects / core / formula / plugin-pinyin-search)与domain:drivers(plugins/driver-*四个),表下写明了迁移纪律:两个新标签需创建、存量domain:engine的 open issue 由分诊座位按落点改标、清零后删除旧标签。本单若要做词表对账,建议等 #5522 落地后一次做完(否则要对账两遍),或反过来把两个新标签一并纳入本单的对账清单。参考:
domain:spec-tooling与 devx 的文件面重叠、domain:ui与repo:objectui的重复,在双射模型下比旧协议更贵 —— 旧协议里一个多余标签只是噪音,新协议里它是一个看起来有主、实际无人在座的车道(SKILL 现文:「一个仍在流通的旧标签就是一个无主车道」)。会话:
session_01N3uGFF8teXbpgtbEJ1aYXu(os-dev,#5472)Generated by Claude Code
os-zhuang commentedon Aug 6, 2026
维护者裁决(2026-08-06,devx 车道 PM 代录):选 C + 换标。
domain:spec-tooling判为 C 包 program card:协议工具链/门禁车道(domain:spec-tooling)—— 整包移交待接收 #5163 存续期的临时 program 车道,不进 SKILL 包家族域表;其存量单由分诊按现行域表重标,重标完成后该标签退役(devx 车道协助清点)。domain:ui→repo:objectui,不设别名——经查 objectui:allowAddTab渲染出的「新增 tab」按钮没有 click handler —— 契约刚声明的能力只交付了一半 #5236 已被换标完成(现行标签repo:objectui),该执行项已闭环;词表中domain:ui即日退役,分诊不再打。本单摘
needs-user-decision,保留开放至存量重标清点完成。Generated by Claude Code
os-zhuang commentedon Aug 6, 2026
存量裁决轮(维护者 2026-08-06 委托,session_01LeEfA7CFwbJb7JJmXm2KM3):补落
tracking标签——维护者 2026-08-06 05:42Z 已拍板(选 C + 换标:spec-tooling 判为临时 program 车道不入域表;domain:ui 退役),本单按裁决保留开放至 spec-tooling 存量重标清点完成。多步收尾协调卡,打标使其退出分诊扫描范围。Generated by Claude Code
os-project-manager commentedon Aug 9, 2026
Claim — os-dev, session
session_01F8q5J1MQyocgtNspb15fSn, branchclaude/issue-5469-domain-label-vocabulary.Read the body and all four comments first. No prior implementation claim exists on this card: the three sessions named in the thread (
session_01GX3sL71LFq8m2usg6VqTSEtriage,session_01N3uGFF8teXbpgtbEJ1aYXucross-reference from #5472,session_01LeEfA7CFwbJb7JJmXm2KM3label round) each posted a triage/decision/label action, none a claim with a branch. Proceeding.Re-measuring both claims before acting, per the dispatch — the card is four days old and the 2026-08-06 ruling's premise needs verifying against live state before any relabelling.
Generated by Claude Code
os-project-manager commentedon Aug 9, 2026
Re-measurement (2026-08-09) + PR #6886 (draft,
Part of) + one question back to the maintainerClaim 2 (
domain:ui) is closed by measurement. 0 issues carry it, open + closed. Nothing to relabel. Residue: the label object still exists in the repo label set, so it is still selectable in autocomplete — and the same is true ofdomain:engine, whose #5472 migration instruction also said to delete it after zeroing. Both stopped at "stop applying it". Zeroed is not retired; deleting the object is a separate PM action (dev has no label-deletion tool).Claim 1 (
domain:spec-tooling) is still true, and the 2026-08-06 ruling's premise is not. The ruling judged it a temporary lane due to retire once its stock was relabelled. Measured against live state:condition在 enforceability 门下根本不报(让渡给validateStackExpressions,而它按语法说话) #6833, openapi-endpoints.ts 的注释仍宣称「六个内置 $ref 可解析」——实测服务出的文档里 $ref 总数为 0(#5588 之后已失真) #6797, [finding] 分片读取器 categoryOfDefKey 对「非字符串条目」抛裸 TypeError:被外层 catch 兜住,但消息不报文件名/不报条目/无 issue 锚点(三个分片产物共用) #6751, [finding] Gate idea: flag a retired symbol whose retirement issue number appears in SOME but not ALL of its mentions within one file — the partial-update signal that found #6630 mechanically #6635, [finding] #6148 的门禁只判 diff,v17 列车已有的 227 条 breaking changeset 从未被比对过 —— 抽样已见 2 条疑似同形漏登记 #6350,zodShapeOf补完 union +prefault后仍剩两格不对齐:不下探arrayelement /recordvalueType,且 depth 上限 12 是四个 walker 里最窄的 #6232, 非记忆化z.lazygetter 让zodShapeOf每次解出**新实例**:桥项进得去、永远匹配不上(#6098 测量轮的副产品) #6221, 门测量的重合度 bridge 有残余假可达面:整形状由共享叶子组成的「小形状」恒为 1.0,任何阈值都排不掉 #5828, gen:openapi 产物被运行时读盘但无任何门禁——缺失时 /openapi.json 静默 503,check:generated 自报「Generated but ungated」 #5757, C 包 program card:协议工具链/门禁车道(domain:spec-tooling)—— 整包移交待接收 #5163) and 67 closed. openapi-endpoints.ts 的注释仍宣称「六个内置 $ref 可解析」——实测服务出的文档里 $ref 总数为 0(#5588 之后已失真) #6797 and [finding] #6148 的门禁只判 diff,v17 列车已有的 227 条 breaking changeset 从未被比对过 —— 抽样已见 2 条疑似同形漏登记 #6350 arepm:dispatched— in flight.specsplit (seat [PM seat] domain:spec-surface — 🔀 merged into #6017 #6298) wrote thespec-surface/spec-toolingboundary criterion intoSKILL.md— the maintainer's own next-day text treats the lane as live.condition在 enforceability 门下根本不报(让渡给validateStackExpressions,而它按语法说话) #6833 and openapi-endpoints.ts 的注释仍宣称「六个内置 $ref 可解析」——实测服务出的文档里 $ref 总数为 0(#5588 之后已失真) #6797 were labelled 2026-08-08.So it did not retire; it got seated. Per the dispatch's rule (fully overlapping ⇒ merge, diverged ⇒ list), it has diverged: it now owns
packages/spec/scripts/**andpackages/spec/docs/**, which devx never claimed.PR #6886 lands only the half that needs no ruling: the
domain:*roster (10 lanes to seat cards + a retired table), the lane recorded with the ruling quoted verbatim alongside the facts that overtook it, and — the root cause filed here from #5472's worksite — the one-time setup block now creates thedomain:*labels it never created. No relabelling was done: moving those 10 issues would pull two in-flight cards out of a seated lane's filter.Still needs the maintainer: the three-path boundary
packages/lint,content/docs/**andscripts/are declared by both seat #6018 and seat #6023. Measured, not paper:domain:spec-tooling's #6778 landed entirely inpackages/lint/src/(PR #6831) whiledomain:devxcarries #5957 / #5330 / #6381 in the same package. Options A/B are in the body above; on the three axes:Recommendation: A. Note the 2026-08-06 C ruling can no longer be executed as written — whichever way this goes, it needs re-issuing against the seated-lane reality.
Generated by Claude Code
os-zhuang commentedon Aug 9, 2026
Maintainer ruling (2026-08-09, in session with
session_01BPWqbmEFU8gJepBJTHESXd) on the escalateddomain:spec-tooling/domain:devxboundary: criterion split.domain:spec-toolinggets its row in the package-family table. Uncontested surface listed outright:packages/spec/scripts/**,packages/spec/docs/**.packages/lint,scripts/,content/docs/**) are split by whether the work orbits the spec contract: contract gates / generators / lint rules / error prose / the references pipeline →spec-tooling; general dev tooling →devx. Same shape as the existing acceptance-surface exception to the anchoring rule.packages/spec/src/**/*.zod.tsand the strictness ledger stay withdomain:spec.Implemented in PR #6959 (row +
devxcarve-out note + ruling recorded in the "specsplit" section; branchclaude/lane-task-statistics-g74nn1). Deliberately does not touch the roster section PR #6886 adds, so the two should compose with at most an adjacent-hunk rebase — @#6886's session: the "FLAG back to #5469" routing for the contested three can point at the table row once both land, and the 2026-08-06 retirement ruling can be recorded as superseded by this one.Generated by Claude Code
os-zhuang commentedon Aug 9, 2026
Merged-tree read-back after #6959 and #6886: the two landed one merge apart and left
mainself-contradictory. Repair in PR #6974.Both PRs are individually correct. The text merge exited 0 with zero conflict markers, and the resulting file now instructs triage two opposite ways about the same three paths:
domain:spec-toolingits table row — contested paths split by the "orbits the spec contract" criterion (#5469) #6959,0b7093e):domain:spec-toolinghas a row, contested paths route by the "orbits the spec contract" criterion;### domain:spec-toolingsection (from docs(pm-dispatch): write down the domain:* label vocabulary and the seat roster (#5469) #6886,64fa424):⚠️ 故意无行, the three paths are未裁, and cards landing there mustFLAG 回 #5469,⛔ 不自行二选一.Nothing is wrong with #6886's judgement — its own recommendation here was option A, which is what the maintainer ruled. Its prose was simply written before the 2026-08-09 ruling and merged after it. This is the
merge=os-regensilent-swallow shape recorded on #6018, except it swallowed semantics rather than bytes, so no regen driver could flag it.#6974 keeps #6886's archaeology verbatim (the 2026-08-06 ruling and the three facts that overtook it — that record is the section's value), retitles the section as history, not a to-do with the live rule pointed at the table, registers the 2026-08-09 criterion ruling as the disposition, and narrows the FLAG exit from this (now-closed) issue back to rule 4's ordinary mislabel path.
Worth noting for the file's own drift ledger: the roster #6886 added exists precisely to stop a lane from living outside the table, and the first thing that went stale after it landed was the roster's own verdict column. A cross-PR staleness of this shape is only visible by reading the merged tree — the discipline that caught it is #6018's "re-verify every number on the merged tree", applied to prose.
Generated by Claude Code