Filed by the skills seat (session session_01DAcomhvR9kKizeYgg89Vo8) as a bare card on the maintainer's question 「18085 是不是 objectui 也需要处理」 (chat, 2026-09-14T03:4xZ): ⛔ not routed, not graded — triage grades (objectstack#17942 ruling ③; the filer attaches keywords). References tier only (lanes/ui.md), so the in-seat record lands it.
Dedupe keywords: label-write.mjs --repo, objectui label channel, lanes/ui.md, issue_write deny objectui, PR #9448.
What
objectui PR #9448 (approved 2026-09-14T03:35Z, in the queue) lands lock 1's objectui half: mcp__github__issue_write is denied in objectui sessions too. #18085 (PR #18099 → 82d8942ec) gave objectstack seats the channel — scripts/pm/label-write.mjs (four steps, read-back) — and rest-channel.md :37–:39 name it. objectui seats read lanes/ui.md and objectui AGENTS.md, neither of which says how a label/assignee write is made under lock 1. The script already takes --repo owner/name and was exercised on objectui PR #9448 at 03:37Z (--remove needs-user-decision, directed DELETE, read-back match) — per lanes/ui.md :23 (scripts/pm/** 单写手恒在 objectstack 侧) there is no second implementation in objectui.
Shape (not ruled here)
One line in .claude/skills/pm-dispatch/references/lanes/ui.md (38/38 — density payment): objectui 卡的标签/assignee 写用 objectstack 检出里的 node scripts/pm/label-write.mjs --repo objectstack-ai/objectui …(四步内建、回读),⛔ 永不 MCP issue_write(锁 1 两仓皆拒);分类器拒改动 ⇒ 交有通道席位. ⛔ objectui AGENTS.md untouched (rules layer; its §9 is the landing rule, not the channel).
Out of scope, waiting on the maintainer's word
The permissions.allow rules for the PM scripts (asked on #18085's ACCEPT and in chat). If opened, the objectui-session spelling differs: a prefix rule Bash(node scripts/pm/label-write.mjs:*) matches only the objectstack-cwd spelling; an objectui session spells node ../objectstack/scripts/pm/label-write.mjs … or an absolute path — the rule (or a thin wrapper script in objectui) must match what those sessions actually type. That decision rides the allow-rule ruling, not this card.
Generated by Claude Code
Filed by the skills seat (session
session_01DAcomhvR9kKizeYgg89Vo8) as a bare card on the maintainer's question 「18085 是不是 objectui 也需要处理」 (chat, 2026-09-14T03:4xZ): ⛔ not routed, not graded — triage grades (objectstack#17942 ruling ③; the filer attaches keywords). References tier only (lanes/ui.md), so the in-seat record lands it.Dedupe keywords:
label-write.mjs --repo,objectui label channel,lanes/ui.md,issue_write deny objectui,PR #9448.What
objectui PR #9448 (approved 2026-09-14T03:35Z, in the queue) lands lock 1's objectui half:
mcp__github__issue_writeis denied in objectui sessions too. #18085 (PR #18099 →82d8942ec) gave objectstack seats the channel —scripts/pm/label-write.mjs(four steps, read-back) — andrest-channel.md:37–:39 name it. objectui seats readlanes/ui.mdand objectuiAGENTS.md, neither of which says how a label/assignee write is made under lock 1. The script already takes--repo owner/nameand was exercised on objectui PR #9448 at 03:37Z (--remove needs-user-decision, directed DELETE, read-back match) — perlanes/ui.md:23 (scripts/pm/**单写手恒在 objectstack 侧) there is no second implementation in objectui.Shape (not ruled here)
One line in
.claude/skills/pm-dispatch/references/lanes/ui.md(38/38 — density payment): objectui 卡的标签/assignee 写用 objectstack 检出里的node scripts/pm/label-write.mjs --repo objectstack-ai/objectui …(四步内建、回读),⛔ 永不 MCPissue_write(锁 1 两仓皆拒);分类器拒改动 ⇒ 交有通道席位. ⛔ objectuiAGENTS.mduntouched (rules layer; its §9 is the landing rule, not the channel).Out of scope, waiting on the maintainer's word
The
permissions.allowrules for the PM scripts (asked on #18085's ACCEPT and in chat). If opened, the objectui-session spelling differs: a prefix ruleBash(node scripts/pm/label-write.mjs:*)matches only the objectstack-cwd spelling; an objectui session spellsnode ../objectstack/scripts/pm/label-write.mjs …or an absolute path — the rule (or a thin wrapper script in objectui) must match what those sessions actually type. That decision rides the allow-rule ruling, not this card.Generated by Claude Code