docs(pm-dispatch): write down the domain:* label vocabulary and the seat roster (#5469) - #6886
Merged
Merged
Conversation
…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
|
The latest updates on your projects. Learn more about Vercel for GitHub. 1 Skipped Deployment
|
hotlong
marked this pull request as ready for review
August 9, 2026 06:34
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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 — thedomain:spec-tooling/domain:devxboundary — 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
domain:ui— one instance, duplicatesrepo:objectuidomain:spec-tooling— in use, unlisted, file surface fully overlapping devxOpen issues carrying
domain:spec-tooling: #6833, #6797, #6751, #6635, #6350, #6232, #6221, #5828, #5757, #5163. Two of them (#6797, #6350) arepm: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 inpackages/lintin the same week:domain:spec-tooling's #6778 landed entirely inpackages/lint/src/(PR #6831), whiledomain:devxcarries #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/mainand the live backlog say that premise did not hold:specsplit (seat card [PM seat] domain:spec-surface — 🟢 os-project-manager #6298) wrote thespec-surface/spec-toolingboundary criterion into this very file. 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 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
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.domain:spec-toolingrecorded 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.domain:*labels. It previously createdpm:*/finding/needs-user-decision/repo:*and zerodomain:*— while label discipline in the same file makesdomain:*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:uineeds none (0 issues). Thedomain:spec-toolingstock 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 nodomain:uiand nodomain:engineamong them.Generated by Claude Code