From 8c0a24c5194abcf7e4468193ea81ba793f40d03a Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 22 Aug 2026 17:35:55 +0000 Subject: [PATCH 1/2] docs(agents): make the additive label POST the prescribed write in os-dev.md The skip-changeset paragraph taught the whole-set read -> union -> write as what the label write IS. The additive POST endpoint is the mechanism: named executably (curl + Bearer token, measured working from an agent seat), with read-back after the bots settle kept as the closing step, a vanished label re-applied rather than read as your own error, and the whole-set union demoted to a declared fallback for a seat where the additive call is refused. The objectui half is unchanged. 392 -> 395 lines, ceiling 399. Fixes #10902 Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01MsbKEG4LtERSLaDrbehM3e --- .claude/agents/os-dev.md | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/.claude/agents/os-dev.md b/.claude/agents/os-dev.md index 00b677a0d9..ce7cd2599e 100644 --- a/.claude/agents/os-dev.md +++ b/.claude/agents/os-dev.md @@ -269,12 +269,15 @@ dispatch prompt 只携带每单增量(裁决引文、裁决 / PM-机制假设分 缺口,⛔ 不自行扩写、不自行抬预算 —— 预算是 PM 的,抬它是维护者裁决。 - **`skip-changeset` 标签按仓库分流——先认清目标仓库有没有这个机制。** 仅含 tests/ workflow/`.claude/` 的 PR 不发布任何东西,但「不发布」的声明方式因仓库而异。**本仓库**: - 标签是真实机制,打标签是你的步骤、不是 CI 的,PR 一建立就打;**先读回、再写并集**——标 - 签写入是整组 PUT(裸集合会抹掉机器人刚打的标签,CI 的写入也可能抹掉你的;changeset 门的 - 首轮可能与你的写入竞态),等机器人稳定后读一次、把清单引进报告:关闭此步骤的是读回,不 - 是写入;口头声明不算打上。**objectui:该标签不存在**——tests/docs-only 的声明方式是空 - frontmatter 的 changeset;⛔ 永不在那边创建或施加该标签——一次 label add 会静默铸出一 - 个仓库标签,被下一个 agent 读成真实机制。 + 标签是真实机制,打标签是你的步骤、不是 CI 的,PR 一建立就打;写入走**加法端点**——不碰 + 已有标签、无并集可算、无读写窗口(实测从 dev 座位可达;权限集已放行此拼写,别改写): + `curl -sS -X POST https://api.github.com/repos/objectstack-ai/objectstack/issues//labels -H "Authorization: Bearer $GITHUB_TOKEN" -d '{"labels":["skip-changeset"]}'` + 加法写必要但**不充分**:实测 size-labeler 的整组 PUT 曾在 ~1 秒内抹掉一次正确的加法写。 + 所以收尾仍是**读回**,且在机器人稳定之后——读一次、把清单引进报告;标签消失读作被抹, + **重新加上**,不是你的错。仅当加法调用被拒才用回退:读→并集→整组写,**申报**用了回退 + 并报告其读回。关闭此步骤的是读回,不是写入;口头声明不算打上。**objectui:该标签不存 + 在**——tests/docs-only 的声明方式是空 frontmatter 的 changeset;⛔ 永不在那边创建或施 + 加该标签——一次 label add 会静默铸出一个仓库标签,被下一个 agent 读成真实机制。 - **报告在 draft PR 时点交付 —— CI 收敛等待归 PM,不归你**(维护者 2026-08-10 拍板)。 分支一推上、draft PR 一开出,立刻交报告;门禁状态如实记录 —— `in_progress` 是诚实 值。⛔ draft PR 开出后永不 sleep、定时等待或空转轮询 CI(实测:空转轮询烧掉的恰是一个 From f6d61c9b76fd0cff5083a9ff90bcd365401bc24f Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 22 Aug 2026 17:35:55 +0000 Subject: [PATCH 2/2] chore(claude): allow the additive label POST in the dev-agent permission set The auto-mode permission classifier was measured blocking a dev agent's additive POST /repos/{owner}/{repo}/issues/{n}/labels while permitting the whole-set labels write - the inversion that pushes agents into the clobbering shape. Direction A: pre-approve exactly the additive POST spelling that os-dev.md now prescribes (objectstack + objectui twins), strictly narrower than the whole-set write already permitted. Fixes #10686 Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01MsbKEG4LtERSLaDrbehM3e --- .claude/settings.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.claude/settings.json b/.claude/settings.json index bbfa2904ef..50f3f81675 100644 --- a/.claude/settings.json +++ b/.claude/settings.json @@ -26,7 +26,9 @@ "mcp__Claude_Code_Remote__list_sessions", "mcp__Claude_Code_Remote__create_trigger", "Bash(agent-browser snapshot *)", - "Bash(agent-browser skills *)" + "Bash(agent-browser skills *)", + "Bash(curl -sS -X POST https://api.github.com/repos/objectstack-ai/objectstack/issues/*/labels *)", + "Bash(curl -sS -X POST https://api.github.com/repos/objectstack-ai/objectui/issues/*/labels *)" ] }, "hooks": {