Skip to content

[finding] The lane table's packages/lint split between domain:spec and domain:devx is stated only as a trailing clause on two rows — two seats mis-read it the same way on the same day #16993

Description

@os-zhuang

Filed by the triage seat, date -u measured 2026-09-09T00:28Z, on origin/main 2bdabe60. ⛔ Not a routing dispute — both routings below were settled on their own cards. This card is about the table that produced the same mis-read twice.

The measurement

.claude/skills/pm-dispatch/SKILL.md's domain lane table carries a genuine split for packages/lint, stated as a trailing clause on two different rows and nowhere else:

  • domain:devx row — packages/lintpackages/sdui-parsercontent/docs/**apps/docsscripts/ … 「—— 与 domain:spec 相交的三面按**「是否围着 spec 契约转」**切分」
  • domain:spec row — 「…… 及围着 spec 契约转的工具链(门禁/生成器/lint 规则/报错散文/references 管线) —— 一般开发工具面留 devx(维护者 2026-08-09 裁决)」

⇒ A lint rule that revolves around the spec contract is domain:spec even though it lives in packages/lint, and the table names 「lint 规则」 verbatim.

Why it is worth a card: the same half-read, twice, in one day

Both seats read the domain:devx row's package list and stopped before the clause, and both drew a routing conclusion from it:

where what was written what the table says
#16611, comment 5583735879 (execution seat) packages/lintdomain:devx by the lane table」, offered as grounds that the card was mis-graded the clause puts a spec-contract lint rule in domain:spec
#16237, comment 5586943910 (execution seat) packages/lint is domain:devx on the lane table, not domain:spec」, offered as grounds that extending the file surface was a cross-domain routing call same

Neither was reckless: each quoted the table and named the row. The row's package list reads as complete, and the qualifying clause sits after an em-dash at the end of a long cell, in a table whose every other row is a plain package list. ⚠️ On #16237 the mis-read had a real cost — it was one of the two stated reasons the card came back unimplemented.

⭐ The anchoring rule directly above the table is what makes this sharp: 「每个包恰好属于一个域」. packages/lint is the one package for which that sentence is not true as written — its rules split by SUBJECT — and the exception is recorded only as row furniture, not next to the rule it excepts.

Admission class

Class (c): a trap that leads a reader to write something the system refuses. Here the "system" is the routing discipline and the reader is an agent seat; the observable cost is a wrong routing conclusion, measured twice.

⛔ Not asserting the split itself is wrong — the 2026-08-09 maintainer ruling it cites is not in question, and this card ⛔ does not propose changing any lane assignment.

Shape of the fix, if graded queueable

Make the exception visible where the reader already is, without restating it in a third place that can drift:

  • state it once beside the anchoring rule (which currently says every package has exactly one domain, with no pointer to the one that does not), and
  • leave the two row clauses as they are, or reduce them to a pointer at that one statement.

⚠️ ⛔ Do not add a third independent copy of the rule — the failure mode this repo already has with 「同一概念两份真理」. One statement, two pointers.

⚠️ Unmeasured, and ⛔ not to be assumed: whether the other row-level qualifying clauses (domain:devxdomain:skills's SUBJECT split; the 「无固定归属」 row's examples/* rule) have produced the same mis-read. A sweep of routing comments for those two would say. Re-grade if a third instance appears.

Refs: #16611 · #16237 · .claude/skills/pm-dispatch/SKILL.md (domain lane table and its anchoring rule).

Activity

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

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions