Skip to content

Commit ee610fb

Browse files
docs(pm-dispatch): a private repository's security issue belongs to that repository's lane (#31457)
<!-- claude-projects-attribution: {"github_login":"zhuangjianguo"} --> _Requested by **Steedos** · [project thread](https://claude.ai/code/project/chan_018ETKaNwMZCNRYD7D8Q9Ubb?thread=cmsg_018ETKaNwMZCNRYD7D8Q9UbbPGCxPMFpX9b9DDYv3BRXH5)_ Fixes #31301 Clause-②: no Metadata-protocol: none ## 维护者速读 - 改了什么:安全席 `security#1` 只管公开仓 objectstack 的安全公告;私有仓(如 cloud)的 `security` 卡改归该仓车道分诊、派修、复核与落地。 - 为什么改:维护者裁定「这里的任务 security/advisories 才归安全席位」,原文让 cloud 安全卡同时归安全席与 cloud PM,两处都声称归属。 - 风险与回滚:只改 pm-dispatch 规则文字六处,每文件行数不变,无代码、无门禁、无标签变化;回滚即 revert 本 PR。 - 先看:`references/security-findings.md` 第 3 节末条与第 9 节;`SKILL.md` 的 `security` · `review` 行;`references/lanes/security.md` 〈座位〉〈接收与台账〉。 - 两分钟验证:`git grep -n 'security#1' -- .claude/skills/pm-dispatch` 应无任何一行再把私有仓 `security` 卡交给 `security#1`。 - 需要你做的:批准本 PR(`.claude/**` 受管面,按卡的 Acceptance 由维护者批准落地)。 ## What changes - `security-findings.md` §3: a private repository's `security` issue belongs to that repository's lane (cloud → the cloud lane), dispatched, reviewed and landed under its own rules; §2 and §6 unchanged. §9: `security#1` owns the public repository's advisories; the finder rings `Notify: security` only for an advisory; a refused private card goes to that repository's lane seat in session. - `lanes/security.md`: the seat holds only this repository's advisories (〈座位〉), intake ① no longer takes a private-repository card (〈接收与台账〉), contract review covers advisory fixes (〈派修与复核〉). - `SKILL.md` domain table, `security` · `review` row: now this repository's advisories, with the private-repository card pointed at its lane (cloud = the `domain:cloud` row above), so a cloud security issue has exactly one owner. - Lines the grep proved route a private-repository security issue to `security#1`: `lanes/triage.md` L20 (hand to the owning seat), `project-forms.md` L48 (no doorbell for a private card), `seat-lifecycle.md` L43 (安全归安全席 → 公告归安全席). - In-flight work is not moved: nothing about objectstack-ai/cloud#3726 is edited. ## Tests Rule text only; no tested behaviour changes, so no ablation. ## Acceptance notes - Every edit is line-neutral and each prose line stays at or under 120 bytes; the SKILL.md row is 339 bytes against its 341 pin. - `scripts/pm/record-recognisers.mjs` still reads `Notify: security · OWNER/REPO#N` and its row text names `security#1` for a private-repository card. That is outside this card's `.claude/**` surface and left for the seat to route. ## Verification <details><summary>Derived gates (22) at 7455aa2, ratchet again at 1bce620</summary> `node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack` derived 22 families; each ran with exit 0 (`check:pm-skill-ratchet`, `check:pm-record-recognisers`, `check:pm-governed-prose`, `check:skill-frame-sync`, `check:nul-bytes` among them). `--ran` reconciliation: 22 derived, 22 run, 0 NOT-MEASURED, 0 UNRUN. Prerequisite: `turbo run build --filter=@objectstack/formula --filter=@objectstack/lint` (VERDICT command-exit 0). Ratchet re-run after merging main: exit 0. </details> --- _Generated by [Claude Code](https://claude.ai/code/session_01QsR2jShRWBP7iKSrgChCZE)_ Co-authored-by: Claude <noreply@anthropic.com>
1 parent c65599f commit ee610fb

6 files changed

Lines changed: 13 additions & 13 deletions

File tree

‎.claude/skills/pm-dispatch/SKILL.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
162162
| `domain:spec` | `packages/spec` 整包:schema 形状、`contracts/**`、退役行为半边、strictness 台账;describe/JSDoc/墓碑散文/错误 guidance 与 alias 表;`packages/spec/scripts/**`、`packages/spec/docs/**` 及按锚定规则的例外归本域的工具链(域边界枚举与席内分派见 `references/lanes/spec.md`) |
163163
| `domain:ui` | `ui/**` 全部代码:`@object-ui/*` 库与 `ui/apps/*`、`ui/packages/types` 与 schema 语料、`ui/scripts` 与门禁工具、文档随所记录的面走;`packages/console`(dist 由 `pnpm console:build` 生成 ⛔ 不手改);协议恒归 `domain:spec`,受管面归 `domain:skills`;详见 `references/lanes/ui.md` |
164164
| `domain:cloud` | 涉 cloud 即整卡归 cloud PM(`repo:cloud` 席,同挂 `repo:cloud`):读或改 cloud 代码、生产方、事实或带 cloud 半边;本仓车道 ⛔ 不认领;cloud PM 跟到关卡,余下纯本仓活由它写明 cloud 事实后另立卡;判据见 `references/cross-repo-coordination.md` |
165-
| `security` · `review`(车道,无 `domain:*` 标签) | 安全发现(无文件面;修复落在归属包);席位 `security#N`、接收、台账、派修与复核见 `references/lanes/security.md`;永不公开的规则只住 `references/security-findings.md`。复核席 `review#N` 见 `references/lanes/review.md` |
165+
| `security` · `review`(车道,无 `domain:*` 标签) | 本仓安全公告(无文件面;修复落在归属包;私有仓卡归该仓车道,cloud 即上行);席位 `security#N` 与职责见 `references/lanes/security.md`;永不公开的规则只住 `references/security-findings.md`。复核席 `review#N` 见 `references/lanes/review.md` |
166166
| (无固定归属,按落点分诊) | `packages/apps/*`、`examples/*`(归它演练的子系统)、`docs/audits/**` |
167167

168168
- 表未覆盖的包首次分诊时归类并走 PR 更新本表;新增或退役 `domain:*` 必须同批改本表。

‎.claude/skills/pm-dispatch/references/lanes/security.md‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,14 @@
66

77
## 座位
88

9-
- 席位 `security#N`,首席 `security#1`;签名、座位贴、坐席与收班同他席。
10-
- 无 `domain:security` 标签、无 `pm:queue`、无文件面:私卡照第 3 节,修复落在归属包。
9+
- 席位 `security#N`,首席 `security#1`,只管本仓公告;签名、座位贴、坐席与收班同他席。
10+
- 无 `domain:security` 标签、无 `pm:queue`、无文件面:私卡照第 3、9 节,修复落在归属包。
1111
- 坐席者 = 能读写本仓安全公告的账号(管理员或安全经理)的会话;读不了公告 ⛔ 不坐。
1212
- 公告的读、建与写只照第 3 节。
1313

1414
## 接收与台账
1515

16-
- 接收 ①:发现者 `Notify: security · GHSA-ID`(私有仓 `OWNER/REPO#N`)门铃,私卡已由其经中继建好。
16+
- 接收 ①:发现者 `Notify: security · GHSA-ID` 门铃,公告已由其经中继建好;私有仓卡不经本席。
1717
- 接收 ②:列表比出的无台账编号(外报、无门铃或席空时建):记 `received`,经 `advisory_read` 读。
1818
- 判定:发现 ⇒ 中继 `advisory_state` 置 `draft` 走派修;非发现 ⇒ 置 `closed`,台账记非发现。
1919
- 中继拒或本席空缺照第 3、9 节。
@@ -25,7 +25,7 @@
2525
## 派修与复核
2626

2727
- 修复照第 3 节派发;L/XL、build 重、长跑或浏览器验证走 `mode:cloud`,余 `mode:subagent`。
28-
- 修复 PR 的契约复核归本席,照第 6 节;要定契约的修复交维护者前照下节。
28+
- 公告修复 PR 的契约复核归本席,照第 6 节;要定契约的修复交维护者前照下节。
2929

3030
## 呈维护者
3131

‎.claude/skills/pm-dispatch/references/lanes/triage.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,4 @@
1717
- 每轮扫 `pm:dispatched` 卡与非信箱 open PR,进展=head 提交/非分诊评论/其席改标,非 `updated_at`。
1818
- 进展逾 3h 即敲认领席 `Request: progress`,下轮读答复,无答列轮次记录;两轮无答视为掉线。
1919
- 掉线或下班席的项归在线兄弟席(`seat-lifecycle.md`),下轮敲兄弟席一次;⛔ 分诊永不释放。
20-
- 安全发现:即推 ① 后转交 `security#1` 席即止(`security.md`);有公开卡只定 `security`+p1,余不判。
20+
- 安全发现:即推 ① 后转交归属席即止(`security.md` 座位);有公开卡只定 `security`+p1,余不判。

‎.claude/skills/pm-dispatch/references/project-forms.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@
4545
- 移卡入队者→车道:p0/p1 `Blocked-by` 关闭 `Notify: unblocked`;记裁决席→被改席 `Notify: ruling`。
4646
- 席→兄弟席或他车道:认领文件面相交或须先落 `Notify: serial`,先落者落地 `Notify: landed`。
4747
- 上下线→兄弟席与分诊 `Notify: seat-online`、`Notify: seat-offline`;清单变→兄弟席 `Notify: split`。
48-
- 持发现席→`security#1`:私卡建成或误公开卡挂标即 `Notify: security`,只带编号或 `OWNER/REPO#N`。
48+
- 持发现席→`security#1`:公告建成或误公开卡挂标即 `Notify: security`,只带编号;私有仓卡不敲。
4949
- 分诊→认领席:认领卡或 open PR 闲置 ≥3h `Request: progress`;反向随记录 `Notify: progress`。
5050
- 记录 = 项上写下一步与 ETA 的评论、§C 停车或释放;同项 60 分钟一敲,答 ETA 到期前不敲。
5151
- ⛔ 不敲:回执、重发;收方订阅 PR 已载者;停车或待决策卡的项的进度;问维护者走决策卡。

‎.claude/skills/pm-dispatch/references/seat-lifecycle.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
- 分诊席与车道席会话 effort 恒 `high`;坐席时低于即登记行注明,请账号主人以 `high` 重开。
4141
- 收班同笔删 routine、关信箱、发 `seat-offline`;强制接管者代发 `seat-online`(`project-forms.md`)。
4242
- 下班席(`seat-offline`,或两敲 `Request: progress` 无答走接管四件)的在飞归同车道在线兄弟席。
43-
- 兄弟席 `Resume-from:` 引简报或轮次记录认领;待裁先等字;无兄弟席「待席」;安全归安全席。
43+
- 兄弟席 `Resume-from:` 引简报或轮次记录认领;待裁先等字;无兄弟席「待席」;公告归安全席。
4444
- 离任留守只写点名的已 ACCEPT 待队列或待人批 PR,⛔ 不读队列、不新派发、不碰未点名卡。
4545
- 换班报告默认零建议,只收三类:原则错/缺、可机械化项、平台事实变化。
4646
- 原则错/缺 → 只进简报,维护者点名才立卡;可机械化项 → 门禁/脚本卡,⛔ 不是散文。

‎.claude/skills/pm-dispatch/references/security-findings.md‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
- 公开仓修复只由 `security#1` 席以无卡派发令派 `os-dev`,`xhigh`;机制只进派发令与公告。
2828
- 用到公告的临时私有 fork ⇒ 修复从该 fork 落地。
2929
- 私有仓私卡 = 该仓带 `security` 标签的普通 issue,经中继 `issue_create` 立,机制写在其中。
30-
- 私有仓修复由 `security#1` 席照该卡如常派发,`xhigh`;⛔ 不另起无卡派发令或公告。
30+
- 私有仓卡归该仓车道(cloud 即 cloud 车道),照其规则派修、复核、落地;第 2、6 节照旧。
3131

3232
## 4. 跨仓发现者(应用仓量框架、cloud 席位)
3333

@@ -56,10 +56,10 @@
5656
- 立卡门、server 与 security 车道、信箱、`checklist-test` 与 `os-dev` 只指向本文,⛔ 不留第二份。
5757
- ⛔ 本规则不新增门禁、不新增标签。
5858

59-
## 9. 归属:`security#1` 席
59+
## 9. 归属:公告归 `security#1` 席,私有仓卡归该仓车道
6060

61-
- 每份安全发现从接收到发布归 `security#1` 席(章程 `lanes/security.md`),发现者只报不修。
61+
- 公开仓的公告从接收到发布归 `security#1` 席(章程 `lanes/security.md`),发现者只报不修。
6262
- ⛔ 不扩本 PR 或分支,不自开修复分支,不在同一面顺手加固;dev 只走第 5 节上报。
63-
- 席位两件事:照第 3 节建私卡;敲 `Notify: security · GHSA-ID`(私有仓 `OWNER/REPO#N`),只带编号。
64-
- 中继拒(第 3 节)⇒ 机制在会话里交 `security#1` 席;席空缺 ⇒ 交维护者;发布清单归维护者。
63+
- 席位两件事:照第 3 节建私卡;公告敲 `Notify: security · GHSA-ID`,只带编号;私有仓不敲。
64+
- 中继拒 ⇒ 机制会话里交 `security#1` 或私有仓车道席;席空缺交维护者;发布清单归维护者。
6565
- 任务绕不开它 ⇒ 报 `blocked`,只写「a security item is with the owner seat」;席位停卡,⛔ 不绕行。

0 commit comments

Comments
 (0)