Filed by the triage seat while grading #17453, which lands in docs/qa/platform-checklist/areas/approvals.json.
The gap
.claude/skills/pm-dispatch/SKILL.md's 域车道 table enumerates the package families for each domain:*. docs/qa/** appears in none of them:
domain:devx names content/docs/** and apps/docs, not docs/qa/**.
- The catch-all row
(无固定归属,按落点分诊) names docs/audits/** — the neighbouring docs tree — but not docs/qa/**.
So a card whose fix lands in a checklist area file has no lookup, and the anchoring rule (domain:* = the domain of the package the fix lands in) does not resolve it either, because the file is not in a package.
Why it is not just a missing row
docs/qa/platform-checklist/ has a real reader set, and they do not agree on one lane:
.claude/skills/checklist-author/SKILL.md and checklist-test/SKILL.md author it ⇒ governed surface, domain:skills.
packages/qa/dogfood/test/*.dogfood.test.ts consume it ⇒ domain:cli.
scripts/check-doc-authoring.mjs and .github/workflows/platform-checklist-watchdog.yml gate it ⇒ domain:devx.
- The content of any one area file is subject-matter documentation for whatever subsystem the area covers (
approvals.json documents the approvals/auth surface ⇒ domain:services).
.github/CODEOWNERS has no docs/qa rule, so it settles nothing either. Four defensible answers with nothing in the text to choose between them is exactly the shape the anchoring rule exists to prevent.
What I did in the absence of a rule, so it is on the record
I routed #17453 domain:services on the principle the table already applies to the other docs tree — docs follow the surface they document — because the rewrite needs the auth retirement in the writer's head. I did not route it domain:devx on "it is a docs file", because under that reading every checklist area collapses into one lane regardless of subject.
That is a triage judgment call standing in for a rule, and it will be made again, differently, by the next seat.
The fix
One row, or one sentence, in the 域车道 table: state whether docs/qa/** routes by documented subject (per area) or to a single lane, and say which. If per-subject, the sentence should generalise rather than enumerate areas — new area files land without a table edit.
Related, not duplicate
#17088 (domain:skills / pm:queue / priority:p3) is the same lane and adjacent subject — it records that references/lanes/engine.md:15 states packages/lint ⇒ domain:devx with no exception noted. Different file, different claim; whoever takes either may fold them if the five folding gates hold. ⛔ Not folding them here — that is the dispatching seat's call, not triage's.
Dedupe: searched the open board for docs/qa.*(lane|domain:) (0 hits), lane table (2 hits: #17088, #15240 — neither is this), 域车道.*表 (1 hit: #17088). ⚠️ Firing control: the lane table and 域车道 patterns both returned #17088, so a zero is a zero. ⚠️ Gap in the dedupe: the global /search/issues REST endpoint is refused for this session (403 — sessions are bound to their configured repositories), so this search covered the cached open board only; closed issues were not searched.
Generated by Claude Code
Filed by the triage seat while grading #17453, which lands in
docs/qa/platform-checklist/areas/approvals.json.The gap
.claude/skills/pm-dispatch/SKILL.md's域车道table enumerates the package families for eachdomain:*.docs/qa/**appears in none of them:domain:devxnamescontent/docs/**andapps/docs, notdocs/qa/**.(无固定归属,按落点分诊)namesdocs/audits/**— the neighbouring docs tree — but notdocs/qa/**.So a card whose fix lands in a checklist area file has no lookup, and the anchoring rule (
domain:*= the domain of the package the fix lands in) does not resolve it either, because the file is not in a package.Why it is not just a missing row
docs/qa/platform-checklist/has a real reader set, and they do not agree on one lane:.claude/skills/checklist-author/SKILL.mdandchecklist-test/SKILL.mdauthor it ⇒ governed surface,domain:skills.packages/qa/dogfood/test/*.dogfood.test.tsconsume it ⇒domain:cli.scripts/check-doc-authoring.mjsand.github/workflows/platform-checklist-watchdog.ymlgate it ⇒domain:devx.approvals.jsondocuments the approvals/auth surface ⇒domain:services)..github/CODEOWNERShas nodocs/qarule, so it settles nothing either. Four defensible answers with nothing in the text to choose between them is exactly the shape the anchoring rule exists to prevent.What I did in the absence of a rule, so it is on the record
I routed #17453
domain:serviceson the principle the table already applies to the other docs tree — docs follow the surface they document — because the rewrite needs the auth retirement in the writer's head. I did not route itdomain:devxon "it is a docs file", because under that reading every checklist area collapses into one lane regardless of subject.That is a triage judgment call standing in for a rule, and it will be made again, differently, by the next seat.
The fix
One row, or one sentence, in the
域车道table: state whetherdocs/qa/**routes by documented subject (per area) or to a single lane, and say which. If per-subject, the sentence should generalise rather than enumerate areas — new area files land without a table edit.Related, not duplicate
#17088 (
domain:skills/pm:queue/priority:p3) is the same lane and adjacent subject — it records thatreferences/lanes/engine.md:15statespackages/lint⇒domain:devxwith no exception noted. Different file, different claim; whoever takes either may fold them if the five folding gates hold. ⛔ Not folding them here — that is the dispatching seat's call, not triage's.Dedupe: searched the open board for⚠️ Firing control: the ⚠️ Gap in the dedupe: the global
docs/qa.*(lane|domain:)(0 hits),lane table(2 hits: #17088, #15240 — neither is this),域车道.*表(1 hit: #17088).lane tableand域车道patterns both returned #17088, so a zero is a zero./search/issuesREST endpoint is refused for this session (403 — sessions are bound to their configured repositories), so this search covered the cached open board only; closed issues were not searched.Generated by Claude Code