Skip to content

docs(pm-dispatch): write down the domain:* label vocabulary and the seat roster (#5469) - #6886

Merged
hotlong merged 1 commit into
mainfrom
claude/issue-5469-domain-label-vocabulary
Aug 9, 2026
Merged

docs(pm-dispatch): write down the domain:* label vocabulary and the seat roster (#5469)#6886
hotlong merged 1 commit into
mainfrom
claude/issue-5469-domain-label-vocabulary

Conversation

@os-project-manager

Copy link
Copy Markdown
Collaborator

Part of #5469

Not Fixes: this card stays open by the maintainer's own instruction ("本单摘 needs-user-decision,保留开放至存量重标清点完成"), and the half that would close it — the domain:spec-tooling / domain:devx boundary — is escalated, not implemented. This PR lands the half that needed no ruling: the vocabulary, written down where a PM reads it.

Re-measurement first (2026-08-09) — the card is four days old and both claims moved

Claim in #5469 Measured now Verdict
domain:ui — one instance, duplicates repo:objectui 0 issues, open + closed Executed. Nothing left to relabel.
domain:spec-tooling — in use, unlisted, file surface fully overlapping devx 10 open / 67 closed, seated PM, still being applied 2026-08-08 Still true, and diverged — see below

Open issues carrying domain:spec-tooling: #6833, #6797, #6751, #6635, #6350, #6232, #6221, #5828, #5757, #5163. Two of them (#6797, #6350) are pm:dispatched — in flight right now.

The overlap has diverged, so this is a listing problem, not a merging problem. The lane now has a file surface devx never claimed (packages/spec/scripts/**, packages/spec/docs/**, per seat card #6018), which is why it cannot simply be folded into devx. But the three contested paths are still contested, and no longer only on paper — both lanes are landing in packages/lint in the same week: domain:spec-tooling's #6778 landed entirely in packages/lint/src/ (PR #6831), while domain:devx carries #5957 / #5330 / #6381 in the same package.

Why the 2026-08-06 ruling could not simply be executed

The ruling (recorded verbatim in the file, untranslated) judged the lane temporary and due for retirement after its stock was relabelled. Three facts measured against origin/main and the live backlog say that premise did not hold:

  1. Seat card [PM seat] domain:spec-tooling — 🟢 在任 (session_01AZgRyPVwi1jLb1mNNuUQ9o) #6018 was opened at 15:03Z on 2026-08-06 — about 9 hours after the 05:42Z ruling — and the seat is still occupied, through one handover, with 9 PRs landed in a single term.
  2. The maintainer-approved 2026-08-07 spec split (seat card [PM seat] domain:spec-surface — 🟢 os-project-manager #6298) wrote the spec-surface / spec-tooling boundary criterion into this very file. The maintainer's own next-day text treats the lane as live.
  3. Triage kept applying the label: 分享侧:GA 翻转后越界的 sharing condition 在 enforceability 门下根本不报(让渡给 validateStackExpressions,而它按语法说话) #6833 and openapi-endpoints.ts 的注释仍宣称「六个内置 $ref 可解析」——实测服务出的文档里 $ref 总数为 0(#5588 之后已失真) #6797 were labelled on 2026-08-08, two days after the "retires" ruling.

So the file now records the ruling and the facts that overtook it, rather than reporting an execution that never happened. Per the dispatch's own rule — diverged means list it, not merge it — the lane is listed as an in-circulation lane, and the package-family table deliberately still gives it no row, because giving it one while the three paths are unruled would break the anchoring rule ("every package belongs to exactly one domain") on the spot.

What changed

  1. A domain:* roster under "Domain lanes": 10 in-circulation lanes mapped to their seat cards, plus a retired table (domain:engine, domain:ui) that triage must never apply again. The package-family table answers "which domain owns this package"; nothing answered "which labels exist and who is seated" — that gap is what let two entries grow outside the table for four days.
  2. domain:spec-tooling recorded as an in-circulation lane with the ruling quoted verbatim, the three overtaking facts, its two uncontested paths, and its three contested ones. Cards landing in the contested three now route to FLAG back to 域标签词表有两个未入表条目:domain:spec-tooling(在用,文件面与 devx 完全重叠)与 domain:ui(一例,与 repo:objectui 重复) #5469, explicitly not to a triage-side coin flip.
  3. The one-time setup block now creates the domain:* labels. It previously created pm:* / finding / needs-user-decision / repo:* and zero domain:* — while label discipline in the same file makes domain:* the triage seat's only machine-readable output and forbids claiming an unlabelled issue. The vocabulary was load-bearing with no executable text producing it, so the roster and the real label set drifted independently. That root cause was filed onto 域标签词表有两个未入表条目:domain:spec-tooling(在用,文件面与 devx 完全重叠)与 domain:ui(一例,与 repo:objectui 重复) #5469 from pm-dispatch 协调模型改版:纵向拆分(分诊/执行)+ 一人一车道双射 + 登记表正文即真相 + 座位 Routine 化(维护者 2026-08-05 拍板) #5472's worksite; this closes it. Retired labels are deliberately excluded from the loop.

Residue the PM has to execute (dev has no label-deletion tool)

Both retired labels are at 0 issues but both label objects still exist in the repo label set, so both are still selectable in GitHub's autocomplete. Both retirement instructions said to delete ("清零后删除旧标签" for #5472; "即日退役" for domain:ui) and both stopped at "stop applying it". Zeroed is not retired — deleting the label object is a separate step.

Relabelling: none done, and why

domain:ui needs none (0 issues). The domain:spec-tooling stock was not relabelled: those 10 issues belong to a seated lane (#6018) with two cards in flight, and moving them would pull work out of another seat's filter mid-flight — flagged rather than done, per the dispatch.

Gates

check:nul-bytes, check:doc-authoring, check:skill-frame-sync, check:skill-compatibility-version, check:role-word — all pass; control-byte self-scan clean. Docs-only change under .claude/, so no changeset (skip-changeset).

Roster verified against reality: the 100 most-recently-updated open issues carry exactly 10 distinct domain:* labels, matching the roster row for row, with no domain:ui and no domain:engine among them.


Generated by Claude Code

…eat roster (#5469)

The domain table answered "which domain owns this package" but nothing
answered "which domain labels exist and who is seated" — so two entries grew
outside it for four days. Add the roster (10 lanes + seat cards, 2 retired
labels), record the measured state of domain:spec-tooling, and make the
one-time setup block create the domain:* labels it never created.

The maintainer's 2026-08-06 ruling on domain:spec-tooling is recorded verbatim
along with the three facts that overtook its premise: the seat card was opened
9 hours after the ruling, the maintainer-approved 2026-08-07 spec split writes
the lane into this file as a live boundary partner, and triage was still
applying the label on 2026-08-08. The three-path overlap with domain:devx
stays explicitly unruled and now routes to a FLAG rather than a guess.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01F8q5J1MQyocgtNspb15fSn
@vercel

vercel Bot commented Aug 9, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
objectstack Ignored Ignored Aug 9, 2026 2:44am

Request Review

@github-actions github-actions Bot added the size/s label Aug 9, 2026
@os-project-manager os-project-manager added skip-changeset PR has no user-facing published change; bypasses the changeset gate and removed size/s labels Aug 9, 2026 — with Claude
@github-actions github-actions Bot added the documentation Improvements or additions to documentation label Aug 9, 2026
@hotlong
hotlong marked this pull request as ready for review August 9, 2026 06:34
@hotlong
hotlong added this pull request to the merge queue Aug 9, 2026
Merged via the queue into main with commit 64fa424 Aug 9, 2026
27 checks passed
@hotlong
hotlong deleted the claude/issue-5469-domain-label-vocabulary branch August 9, 2026 06:49
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 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.

3 participants