Skip to content

域标签词表有两个未入表条目:domain:spec-tooling(在用,文件面与 devx 完全重叠)与 domain:ui(一例,与 repo:objectui 重复) #5469

Closed

Description

@os-zhuang

分诊 #5095(补全 pm-dispatch 域分类表)时发现,随 PR #5468 一并核出。#5468 只补了包的归属,这两条是标签词表层面的问题,需要 PM/维护者拍板,故单独立单,不在那个 PR 里替两条活跃车道定边界。

Follows-up: #5095 / PR #5468(该 PR 的「刻意未做的一件事」一节记了同样的理由)

1. domain:spec-tooling 在运行,但不在域分类表内 —— 且其登记文件面与 domain:devx 行完全重叠

需要的裁定(任选其一,然后由一个 PR 更新表):

三条的取舍取决于「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 的别名并写进表。二选一,别让第三种写法自然生长。

Activity

  1. os-zhuang commented on Aug 5, 2026

    @os-zhuang
    ContributorAuthor

    分诊(devx 车道 PM,session_01GX3sL71LFq8m2usg6VqTSE,2026-08-05):两项分开处置。

    第 1 项(spec-tooling 边界)→ 加 needs-user-decision,交维护者。 这是两条车道的领地裁定,且对方车道(C 包 / #5163)在登记表 08-05 01:38Z 注销交班后当前无在册属主 —— 本 PM 是利益相关方(devx 行是被重叠的一侧),单方面切边界正是登记表要防的事。三轴呈报补充如下(方案 A/B/C 见正文):

    • 实际业务需求:spec-tooling 标签下有 14 单在飞/排队,是真实在用的路由;裁定拖着,这三处重叠面上的单今天就可能被两条车道各自认领 —— 有真实拉动,不是纸面整洁。
    • 项目长远合理性:建议 A(spec-tooling 收窄为生成物门禁族:packages/spec/scripts/** + scripts/ 生成物/基线部分 + references/** 生成面)。A 是唯一让两边各拿一段可判定文件面、且不动 devx 既有认领的切法;B 整体搬走一条在册车道的领地;C 把在用标签留在表外,复现 pm-dispatch 域分类表漏掉约 20 个包 —— 未列包按协议「不可被任何 PM 认领」 #5095 刚修掉的死角。若维护者判定 spec-tooling 是 C 包存续期的临时车道,则 A+C 组合(收窄定义 + 表下注明临时性与到期回收条件)最诚实。
    • 防 AI 犯错:边界未定的表行 = 消费侧靠临场判断消化的模糊位,即本仓禁止的 lenient-consumer 形状;任一裁定都优于现状。

    第 2 项(domain:ui)→ 本 PM 直接执行,否决窗口。 按 PR #5468 已合入的表文(objectui/cloud 用 repo:*,不另打 domain:*):#5236 摘 domain:ui,其 repo:objectui 已在、语义完整,不设别名 —— 一种写法,不留第三种。已执行。


    Generated by Claude Code

  2. os-zhuang commented on Aug 5, 2026

    @os-zhuang
    ContributorAuthor

    同族观察两条,来自 #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

  3. os-zhuang commented on Aug 6, 2026

    @os-zhuang
    ContributorAuthor

    维护者裁决(2026-08-06,devx 车道 PM 代录):选 C + 换标。

    1. domain:spec-tooling 判为 C 包 program card:协议工具链/门禁车道(domain:spec-tooling)—— 整包移交待接收 #5163 存续期的临时 program 车道,不进 SKILL 包家族域表;其存量单由分诊按现行域表重标,重标完成后该标签退役(devx 车道协助清点)。
    2. domain:ui → repo:objectui,不设别名——经查 objectui: allowAddTab 渲染出的「新增 tab」按钮没有 click handler —— 契约刚声明的能力只交付了一半 #5236 已被换标完成(现行标签 repo:objectui),该执行项已闭环;词表中 domain:ui 即日退役,分诊不再打。
    3. SKILL 域表无需改动(现行 fallback 行已覆盖)。

    本单摘 needs-user-decision,保留开放至存量重标清点完成。


    Generated by Claude Code

  4. os-zhuang commented on Aug 6, 2026

    @os-zhuang
    ContributorAuthor

    存量裁决轮(维护者 2026-08-06 委托,session_01LeEfA7CFwbJb7JJmXm2KM3):补落 tracking 标签——维护者 2026-08-06 05:42Z 已拍板(选 C + 换标:spec-tooling 判为临时 program 车道不入域表;domain:ui 退役),本单按裁决保留开放至 spec-tooling 存量重标清点完成。多步收尾协调卡,打标使其退出分诊扫描范围。


    Generated by Claude Code

  5. os-project-manager commented on Aug 9, 2026

    @os-project-manager
    Collaborator

    Claim — os-dev, session session_01F8q5J1MQyocgtNspb15fSn, branch claude/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_01GX3sL71LFq8m2usg6VqTSE triage, session_01N3uGFF8teXbpgtbEJ1aYXu cross-reference from #5472, session_01LeEfA7CFwbJb7JJmXm2KM3 label 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

  6. os-project-manager commented on Aug 9, 2026

    @os-project-manager
    Collaborator

    Re-measurement (2026-08-09) + PR #6886 (draft, Part of) + one question back to the maintainer

    Claim 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 of domain: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:

    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/** and packages/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 the domain:* 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/** and scripts/ are declared by both seat #6018 and seat #6023. Measured, not paper: domain:spec-tooling's #6778 landed entirely in packages/lint/src/ (PR #6831) while domain:devx carries #5957 / #5330 / #6381 in the same package. Options A/B are in the body above; on the three axes:

    • Real business need — measured, not asserted: both lanes are landing in the contested paths in the same week, and both have queues. This is live routing, not tidiness.
    • Long-term soundness — A (narrow spec-tooling to the artifact/gate family) is the only option giving both sides a decidable file surface without moving an occupied lane's territory. The 2026-08-07 split already wrote half of A's criterion ("tooling changes the machine around the contract"); A extends the same criterion to the three paths instead of inventing a second rule. B relocates a seated lane's territory wholesale.
    • AI-authoring safety — any ruling beats the status quo. An undecided row is a surface consumers resolve by on-the-spot judgement, which is the lenient-consumer shape this repo forbids. Until it is ruled, docs(pm-dispatch): write down the domain:* label vocabulary and the seat roster (#5469) #6886 routes contested-path cards to a FLAG back here rather than a triage coin flip — honest, but a holding pattern, not a fix.

    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

  7. os-zhuang commented on Aug 9, 2026

    @os-zhuang
    ContributorAuthor

    Maintainer ruling (2026-08-09, in session with session_01BPWqbmEFU8gJepBJTHESXd) on the escalated domain:spec-tooling / domain:devx boundary: criterion split.

    • domain:spec-tooling gets its row in the package-family table. Uncontested surface listed outright: packages/spec/scripts/**, packages/spec/docs/**.
    • The three contested paths (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.
    • Red lines unchanged: ⛔ packages/spec/src/**/*.zod.ts and the strictness ledger stay with domain:spec.

    Implemented in PR #6959 (row + devx carve-out note + ruling recorded in the "spec split" section; branch claude/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

  8. os-zhuang commented on Aug 9, 2026

    @os-zhuang
    ContributorAuthor

    Merged-tree read-back after #6959 and #6886: the two landed one merge apart and left main self-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:

    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-regen silent-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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions