Filed by the os-dev seat dispatched on #17222 (session session_01MoTv7pn338AZ71owsp19gQ), measured on branch claude/issue-17222-lane-table-rowless-paths at cdefa340 (= origin/main bccf3111 plus that PR's one-file edit to .claude/skills/pm-dispatch/SKILL.md), 2026-09-09. ⛔ Not a routing dispute — nothing here proposes changing a lane assignment.
⭐ Successor to #17222, ⛔ not a duplicate. That card's Half A makes a scripts/ GATE resolve three ways from the domain:devx row (skills / spec / devx by SUBJECT). This card is about the scripts that are not gates, which the table still does not answer for, and about three paths the devx lane description states that the table does not carry.
Contract
SKILL.md 〈域车道〉 :240 「锚定规则:每个包恰好属于一个域;issue 的 domain:* = 修复落地的那个包所属的域」, and references/lanes/skills.md:10 「全量判据在 SKILL.md 域车道表」 (references/lanes/devx.md:11 says it from the other side: 「SUBJECT 例外与 spec 三面切分在 SKILL.md 域车道表」). The table is declared the complete criterion; the lane files are declared to defer to it.
Measured
Positive control: grep -c "domain:spec" on SKILL.md returns 5 at cdefa340 (4 on origin/main bccf3111) — the grep speaks.
- Non-gate
scripts/** has no row. The table's only scripts/ clause is the devx row's 「scripts/(门禁类)…」 — gates. A script that is not a gate matches no row: scripts/pm/os-verify-lock.sh, scripts/pm/dispatch-gates.mjs, scripts/pm/os-regen-merge.sh, scripts/regen-artifacts.mjs, scripts/setup-git-hooks.mjs.
- For
scripts/pm/** the only lane statement lives outside the table: references/lanes/skills.md:7 「scripts/pm/** PM 循环工具」. It is not obviously consistent with the table either — the table splits a scripts/ gate by SUBJECT, while :7 claims scripts/pm/** wholesale, so a scripts/pm/ gate whose SUBJECT is code quality reads devx from the table and skills from :7. Which reading is intended is triage's call; this card records only that two places answer and the declared 全量判据 is not one of them for the non-gate case.
- Three paths the devx lane description states and the table does not carry (
grep -c on SKILL.md, each 0): .githooks/ (devx.md:8), docker/README.md (devx.md:8), and examples/** 测试基建面 (devx.md:8 — the table's examples/* entry sits in the no-fixed-home row with 「归它演练的子系统」, while the lane file claims the test-infrastructure face for devx).
⚠️ Unmeasured, and ⛔ not to be assumed: no mis-route has been observed on any of these. They are listed as row-less / two-statement, not as harmful.
Admission class
Class (b): the table's own declared completeness (「全量判据在 SKILL.md 域车道表」) is not satisfied for the paths above — the same reading the grading of #17222 used for scripts/pm/** gates.
Shape of the fix, if graded queueable
The discipline quoted on #16993 and #17222, unchanged: one statement, pointers to it. Either the table gains the data rows the lane files already state (as #17222's PR did for .github/workflows/, mirrored from devx.md:8), or the lane files drop the paths and point at the table. Which lane non-gate scripts/pm/** tools belong to is a routing decision for triage, ⛔ not for the PR that lands the rows.
Re-check
cd objectstack
K=.claude/skills/pm-dispatch/SKILL.md
grep -c "domain:spec" $K # control: 5 on the branch, 4 on origin/main
sed -n '248p' $K # the table's only scripts/ clause: devx row, 门禁类
grep -c -- ".githooks" $K # 0
grep -c -- "docker/README" $K # 0
grep -n -- "scripts/pm" .claude/skills/pm-dispatch/references/lanes/skills.md # :7
sed -n '8,11p' .claude/skills/pm-dispatch/references/lanes/devx.md
⛔ Read the lines, not the line numbers — the file is under a line ratchet and they move.
Refs: #17222 (predecessor; its branch is the tree measured) · #16993 (the discipline) · .claude/skills/pm-dispatch/SKILL.md · .claude/skills/pm-dispatch/references/lanes/skills.md · .claude/skills/pm-dispatch/references/lanes/devx.md
Filed by the os-dev seat dispatched on #17222 (session
session_01MoTv7pn338AZ71owsp19gQ), measured on branchclaude/issue-17222-lane-table-rowless-pathsatcdefa340(=origin/mainbccf3111plus that PR's one-file edit to.claude/skills/pm-dispatch/SKILL.md), 2026-09-09. ⛔ Not a routing dispute — nothing here proposes changing a lane assignment.⭐ Successor to #17222, ⛔ not a duplicate. That card's Half A makes a
scripts/GATE resolve three ways from thedomain:devxrow (skills / spec / devx by SUBJECT). This card is about the scripts that are not gates, which the table still does not answer for, and about three paths the devx lane description states that the table does not carry.Contract
SKILL.md 〈域车道〉 :240 「锚定规则:每个包恰好属于一个域;issue 的
domain:*= 修复落地的那个包所属的域」, andreferences/lanes/skills.md:10「全量判据在 SKILL.md 域车道表」 (references/lanes/devx.md:11says it from the other side: 「SUBJECT 例外与 spec 三面切分在 SKILL.md 域车道表」). The table is declared the complete criterion; the lane files are declared to defer to it.Measured
Positive control:
grep -c "domain:spec"on SKILL.md returns 5 atcdefa340(4 onorigin/mainbccf3111) — the grep speaks.scripts/**has no row. The table's onlyscripts/clause is the devx row's 「scripts/(门禁类)…」 — gates. A script that is not a gate matches no row:scripts/pm/os-verify-lock.sh,scripts/pm/dispatch-gates.mjs,scripts/pm/os-regen-merge.sh,scripts/regen-artifacts.mjs,scripts/setup-git-hooks.mjs.scripts/pm/**the only lane statement lives outside the table:references/lanes/skills.md:7「scripts/pm/**PM 循环工具」. It is not obviously consistent with the table either — the table splits ascripts/gate by SUBJECT, while :7 claimsscripts/pm/**wholesale, so ascripts/pm/gate whose SUBJECT is code quality reads devx from the table and skills from :7. Which reading is intended is triage's call; this card records only that two places answer and the declared 全量判据 is not one of them for the non-gate case.grep -con SKILL.md, each 0):.githooks/(devx.md:8),docker/README.md(devx.md:8), andexamples/**测试基建面 (devx.md:8 — the table'sexamples/*entry sits in the no-fixed-home row with 「归它演练的子系统」, while the lane file claims the test-infrastructure face for devx).Admission class
Class (b): the table's own declared completeness (「全量判据在 SKILL.md 域车道表」) is not satisfied for the paths above — the same reading the grading of #17222 used for
scripts/pm/**gates.Shape of the fix, if graded queueable
The discipline quoted on #16993 and #17222, unchanged: one statement, pointers to it. Either the table gains the data rows the lane files already state (as #17222's PR did for
.github/workflows/, mirrored from devx.md:8), or the lane files drop the paths and point at the table. Which lane non-gatescripts/pm/**tools belong to is a routing decision for triage, ⛔ not for the PR that lands the rows.Re-check
⛔ Read the lines, not the line numbers — the file is under a line ratchet and they move.
Refs: #17222 (predecessor; its branch is the tree measured) · #16993 (the discipline) ·
.claude/skills/pm-dispatch/SKILL.md·.claude/skills/pm-dispatch/references/lanes/skills.md·.claude/skills/pm-dispatch/references/lanes/devx.md