Skip to content

Commit 61170fa

Browse files
docs(north-star,pm-dispatch): the feature axis — area:* labels, the 「路」 section as an ordered list of feature points, cross-layer features as parent + per-layer sub-issues, domain:* retreats to file ownership (#19483) (#19488)
Fixes #19483 Clause-②: no The feature axis lands in the three steps the card names: `area:*` as the planning axis, the North Star's road section as an ordered list of feature points, and `domain:*` retreating to file ownership. ## The maintainer's words this implements (verbatim, chat 2026-09-21) 「关于任务的车道,我觉得现在是有问题的,应该是按照功能点划分车道我更容易判断优先级和安排,而且一个功能点应该覆盖从协议开始到运行时到前端。不应该按照我们的文件夹划分。」 / 「或者是否建议再加一组label?」 / 「有了功能轴之后我应该怎么安排任务?」 / 「包括我们应该划分哪些功能轴」 / 「把北极星的「路」那一节改成可读的功能点顺序 立」. ## Tier and landing Tier H (`docs/NORTH-STAR.md` and `.claude/**` in one diff, one path hit makes the whole PR Tier H). The maintainer merges this by hand. Draft, no ready flip, no auto-merge, no labels. ✅ **The eleven-value axis list is ruled.** The maintainer confirmed it on the card with ONE amendment, verbatim (chat, 2026-09-21): 「19483 api-integration 简化成 api 其他同意。」 — recorded as the card's ruling comment 5754985448. Round 2 of this PR carries the rename: the value is `area:api` in all four places it is spelled (the label row, the `axis` in api-backend.json and integration-system.json, and the three roadmap lines), its customer capability unchanged. The other three open questions were ruled A in the same comment: platform-core stays file-level `devpath`, the label objects stay in objectstack + objectui, and the four readers keep riding in the glossary row with no ceiling raise. ## Step 1 — `area:*` - `scripts/pm/ensure-pm-labels.sh` gains eleven rows, in **two** repos (objectstack + objectui), not the five-repo loop: a feature point spans 协议 → 运行时 → 前端, which is those two. cloud is parked (北极星「现在不做」), objectos is the docs/site repo, hotcrm is the exemplar app whose platform gaps are filed upstream. The reasoning is written into the file beside the rows; widening the loop is a vocabulary decision, not a maintenance edit. `check:pm-label-desc-cap` reads 38 descriptions (was 27), longest 100 characters. - SKILL.md 〈状态模型〉 gains the `area:*` glossary row with the card's text. - The four named readers ride **in that row** rather than on their own line under 「一个标签存在当且仅当有具名读者」. That is the one deviation from the card's letter, and it is a ratchet consequence, measured below — the same fold the #19457 ratchet comment records for `tooling`. The row is exempt from the 120-byte line rule and the readers are still named and greppable: `git grep -n 'area:' -- .claude/skills/pm-dispatch/SKILL.md` returns the row with all four. - All fifteen `docs/qa/platform-checklist/areas/*.json` carry a top-level `axis`, item ids untouched. **No schema extension was needed**: the gate has no unknown-top-level-key rule, and `pnpm check:platform-checklist` is green on the added key (15 areas, 264 items, exit 0). - One mapping cannot be expressed with a top-level field: the card sends platform-core's **docs-portal items** (`platform-core.docs-audience-gate`, `platform-core.docs-portal-render`, both P1) to `studio` while the rest of that area is `devpath`. The file carries `devpath`; a per-item axis is out of this card's scope. Flagged for the maintainer under Open questions on the card. ## The roadmap section, rewritten in round 3 The maintainer read the first version and said, verbatim (chat, 2026-09-21): 「19488 路上的功能点写的很奇怪,真的是平台总体的功能清单吗?怎么感觉是几个issue」. He was right: it was one card plus the checklist's currently-failing P0 items — a to-do list, not the platform's feature map. Round 3 replaces that one section; everything else in this PR is as reviewed. What it is now: six blocks, one per step of the road the North Star already measures, and inside each block one line per feature point at capability level — a customer-visible capability that runs from the protocol through the runtime to the frontend. The end-user capabilities (records, access, workflow, reports, identity, files, i18n) sit at the step where the road first needs them, which is where the app is first run and seen. The 路步 column is gone because the block position is the step, the docs-authoring feature keeps its 「清单项待写」 slot at step ①, and the page's own rules hold: no counts, no pass/fail status, no new headings, and the ledger is not copied here. **The completeness claim is mechanical, not editorial.** The feature points are derived by grouping every item in `docs/qa/platform-checklist/areas/*.json` so that each item belongs to exactly one line. The two totals: **264 items on disk, 264 mapped** — zero unmapped, zero double-mapped, zero ids the ledger does not have — across **76 feature points** in a **95-line** section. The per-item listing is on the card, in the round-3 `os-dev-report`. **Round 4** (one commit, `docs/NORTH-STAR.md` only, +4/−2): the round-3 at-tier review (5755471665, PASS) named one line as misdescribing its items and one placement as debatable; both fixed — the CEL formula pair (`formula-stdlib-matrix`, `formula-gates`) now has its own feature-point line and the REST construction line no longer claims it; `lifecycle-retention-sweep` (ADR-0057 retention) moved off the packaged-object line onto its own. Totals unchanged: 264 items, 264 mapped, 0 unmapped, 0 double-mapped; 78 feature points. **Round 5** (merge commit, no rebase): `origin/main` moved (#19506 entered the maintainer's 插队 / 契约面卡 tiers into the 取卡全序; #19502 the handover protocol) and conflicted with this PR's 取卡全序 edit in SKILL.md and core-rules.md. Both sides are the maintainer's rulings, so the merge composes them: 「取卡全序:维护者直派插队卡(出处三件)> 契约面卡(判据见 references/lanes/spec.md)> 标签序」 and 「标签序:priority:p0 > pm:blocking > 功能点位次 > target: 板上项 > p1 > p2 > p3 > 无级」, identical in both files; the tie-break 「同级先 Bug 再卡龄」 stays on SKILL.md's following line (the composed line would exceed the 120-byte cap) and core-rules.md's summary defers to it. Everything else takes main's side. Ratchet: SKILL.md 815/819 (main's own count; this PR net zero), core-rules 151/151. ## Step 3 — `domain:*` retreats to file ownership - 〈域车道〉 now says in one line that `domain:*` decides file ownership (anchoring, hot-file serial, single-claim paths) and is **not** a queue or a priority unit. - 〈候选与批次〉: the candidate order reads 「功能点位次」 — the parent's position in 「路上的功能点」 — ahead of the board and the priority ladder, and at most one feature point per axis is in flight unless the file surfaces are disjoint. - 〈分诊座位职责〉: a cross-layer feature point (two or more of spec / 运行时 / 前端) is filed as ONE parent carrying `area:*` + `pm:epic` + the checklist item's priority, plus per-layer sub-issues ordered by `Blocked-by:`. 〈Epic 子树车道〉 now names cross-layer feature points in its delegation line, which is what makes the existing epic mechanism the default for that case, and 多仓协调 规则 2 is aligned from 每仓一子单 to 逐层子单. - `references/core-rules.md` mirrors all four rules in place. - `references/lanes/*.md`: **zero edits, as a measured reading, not a skipped step.** No lane charter describes a per-domain queue as the order of work. Instrument reachability is shown by the control word: 「车道」 hits 31 times across those ten files, while the order vocabulary (队列/全序/取卡/候选顺序/排序/优先序/按域/逐域) produces exactly two hits, both about the **merge** queue (`lanes/cli.md` line 17, `lanes/ui.md` line 26). Since the card's instruction there is "delete or re-point, never add", the correct edit count is zero. ## The ratchet — paid in place, no ceiling raised `check:pm-skill-ratchet` is green with both files exactly at their ceilings: SKILL.md **813/813**, core-rules.md **151/151**, widest SKILL.md table row **342/342**. Three lines were added and three retired. Each retirement was checked for a surviving home rather than assumed: | retired from SKILL.md | where the content still lives | |---|---| | 「唯一例外 `packages/lint` 等与 spec 相交的 devx 面…」 (域车道) | the 域车道 table's own `domain:devx` row, plus `references/lanes/spec.md` 范围 (「同含围着 spec 契约转的工具链…」 / 「一般开发工具面留 devx」) | | 「座位在编以 `label:pm:seat` 索引为准,每车道…每席恰一张。」 (域车道) | 全体座位的不变量 (「一 PM 恰管一车道,一车道由一组座位管,一席一贴」) and 座位贴协议's first line; the label object's own description carries the fleet-board half | | 「sweep 与首触定级只对多车道仓,单车道仓机械三务自理。」 (分诊座位职责) | 多仓协调 carries both halves — 「多车道仓…中央分诊是 `domain:*`/type/定级的唯一生产者」 and 「机械三务 = 自扫 sweep、自打 `type`、自做 `finding` 首触定级」 | Two clauses moved rather than died: 「同级先 `Bug` 再卡龄」 moved from the order line to the line below it, and 「优先非豁免」 was dropped there because the 状态模型 `priority:p0` row states it (「⛔ 不豁免同文件串行、深度等待与认领协议」). **The exact count the card asks for.** One ruled line could not be paid: the reader list as its own bullet under 「一个标签存在当且仅当有具名读者」 needs **SKILL.md 814 against a ceiling of 813 — one line**. Everything payable was paid (three retirements), the length rule blocks folding it into that bullet (the bullet is 117 bytes and the shortest self-contained reader line is 114), and every other ceilinged file in the map stands at headroom 0, so no reference file can absorb it. ⛔ No ceiling was raised. The readers therefore ride in the byte-exempt glossary row; if the maintainer wants them as a separate rule line, the raise is 813 → 814. ## Verification - `node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack` derives **37 families** on this diff; all 37 were run on the final head `c55c02e` with exit codes captured before any pipe, all exit 0, and `--ran` reconciles **37 derived / 37 run / 0 NOT-MEASURED / 0 UNRUN** with no stale-tree warning. - Named in the dispatch and green: `check:pm-skill-ratchet`, `check:pm-label-desc-cap`, `check:pm-widening-tells`, `check:pm-skill-id-lint`, `check:doc-authoring`, `check:platform-checklist`, `check:self-test-wired`, `check:nul-bytes`, `check:pm-governed-prose`, `check:pm-governed-merges`, `check:skill-frame-sync`. - `pnpm --filter @objectstack/lint run check:doc-formula-expressions` first exited **3 — PREREQUISITE NOT MET** (its two packages were unbuilt). That is not a finding; after `turbo run build --filter=@objectstack/formula --filter=@objectstack/lint` it exits 0, and the merged-head run above is the one recorded. - Beyond the derivation, the roster gates whose roster sits under a directory this diff touches were read rather than assumed: `check:pm-settings-deny-roster`, `check-published-list-mirrors.mjs`, `check-skills-token-ratchet.mjs` — all exit 0. - Repo-wide `pnpm lint` is not derived for these paths and is CI's run, not this PR's claim. - **Collision probe against the in-flight charter PR #19462** (branch `claude/issue-19457-charter-product-only-queue`): `git merge-tree --write-tree` against its tip exits 0 with a tree and no conflict. That PR's SKILL.md lines were deliberately left untouched — its `tooling` row goes after `finding` while the `area:*` row goes after `priority:p0`, four rows away; its grading edits sit two lines above the cross-layer insert; its candidate-line edit is the 候选 line while this one rewrites 取卡全序. None of this repo's paths here is merge-driver managed. - `Check Changeset`: this diff publishes nothing — `.claude/**`, `docs/**` and `scripts/pm/**` are outside every package's `files[]`. It needs the **`skip-changeset`** label, which the seat applies (this dispatch writes no labels). ## Acceptance notes - Noted, not filed: `docs/qa/platform-checklist/areas/*.json` has no schema and no unknown-top-level-key rule, so `axis` is accepted by presence alone and a typo (`area:studo`) would pass every gate. A value check belongs with whichever card next touches the checklist gate; the carrier is named, so it is a note rather than a card. - Noted, not filed, 承接者:无 — `scripts/pm/ensure-pm-labels.sh` is create-if-missing by default, so the eleven new label objects only reach the two repos when someone with label-write credentials runs the script (a PM landing step, exactly as the file says for objectos and hotcrm). ## 维护者速读(草稿) **改了什么** — 加了一组新标签 `area:*`(十一个功能轴),给测试清单的十五个 area 文件各加了一个 `axis` 字段,在北极星的「那条路」下面加了一张「路上的功能点」表(第一条是文档编写那个功能,后面是清单上现在还开着的全部 P0 项,按路步排),并把 PM 章程里「按车道排队」的地方改成「按这张表排队」:`domain:*` 从此只管哪个席位能动哪些文件。 **为什么改** — 您的原话:按功能点划分更容易判断优先级和安排,一个功能点应该从协议一直覆盖到前端,不应该按文件夹划分。以前排队顺序是按文件夹(车道)来的,所以一个功能的三层会被拆到三个队列里各自排;现在顺序只有一份,就是北极星上的那张表,改表即改优先级,不用逐张卡改档位。 **风险与代价(含回滚)** — 一、十一个轴您已在卡上定了,只改了一个名(API 那一轴由长名简化为 `area:api`),本轮已在四处改齐:标签行、两个清单文件的 `axis`、路上的功能点三行。二、新标签只在 objectstack 与 objectui 两个仓建,理由写在脚本里;要不要也给 hotcrm,您随时可加。三、章程的行数棘轮是零余量,所以这次是「加三行、退三行」换来的,退掉的三行内容都在别处有家(PR 正文里逐条列了);还有一行实在付不出,已按卡上要求报了准确数字(要 814,天花板 813),没有抬天花板 —— 您也已裁定保持现状。四、回滚就是 revert 这个 PR,新标签对象留在 GitHub 上不影响任何东西。 **席位意见** — (留空,复核席填) **你要做的** — 手动合并这个 PR(Tier H);轴名已定,无需再确认。 --- _Generated by [Claude Code](https://claude.ai/code)_ --------- Co-authored-by: Claude <noreply@anthropic.com>
1 parent eec56c3 commit 61170fa

19 files changed

Lines changed: 178 additions & 13 deletions

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

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,7 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
119119
| `pm:epic`(父单或 sub-issue) | 已由 epic PM 保留;其它 PM 永不取;⛔ 永不与 `pm:queue` 同挂 |
120120
| `pm:seat` | 座位登记贴:协议载体,不是待分诊的工作 |
121121
| `priority:p0` | 插队:可超 `batch`、破轮次立即派发;⛔ 不豁免同文件串行、深度等待与认领协议 |
122+
| `area:*` | 功能轴:每卡恰一个;分诊首触打,与 `domain:*` 同笔;工具卡打它所护的轴;⛔ 不回填存量。四读者:维护者按轴看板;定级继承该轴清单项;父单分组;候选顺序,即「功能点位次」= 父单在「路上的功能点」上的次序;同轴至多一个在飞,除非文件面不相交 |
122123
| open PR 引用该单 | 已实现,复核中 |
123124
| merged PR 带 `Fixes #n` | 完成(GitHub 关单) |
124125

@@ -133,7 +134,7 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
133134
- declared≠enforced 观察类 ⇒ 转 enforce-or-remove 通道;真 won't-fix 候选 ⇒ 逐卡进决策箱。
134135
- 派发与折叠检查时读半状态巡查锚的 H17 触发文件索引,与本次派发文件面求交。
135136
- 相交 ⇒ 按该 hold 评论的 rider/restart 条款处置:点名该单,顺手活列为申报过的增项。
136-
- 关闭即在同一笔摘掉 `pm:*` 状态标;`domain:*` 与类型标签留下,归属不是状态。
137+
- 关闭即在同一笔摘掉 `pm:*` 状态标;`domain:*`、`area:*` 与类型标签留下,归属不是状态。
137138
- `state_reason` 与关闭理由一致:撤单/不做 ⇒ `not_planned`,重复 ⇒ `duplicate` + `duplicate_of`。
138139
- `Blocked-by:` 行是机器可 grep 的反向索引,一遍读喂三个职责,⛔ 只做第一件。
139140
- 三职责:上游关单放回解锁卡;按解锁扇出排序;在合并后的 ref 上重验回队卡文件面。
@@ -214,7 +215,7 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
214215
- transfer 不可用时重建:出处头 + 裸 `#N` 改全名 + 关源单为 moved。
215216
- 缝卡收窄为真协调卡:留 objectstack 带 `repo:*`,正文点名读者(哪个座位、哪一步)。
216217
- 决策收件箱按仓:平台在 objectstack / objectui,元数据项目在本仓;在飞卡 ⛔ 不中途转仓。
217-
- 规则 2:跨仓 feature 或 objectui 消费的 `Seam:` 卡恒由分诊立父单 + 每仓一子单,spec/后端先行。
218+
- 规则 2:跨层功能点或 objectui 消费的 `Seam:` 卡恒由分诊立父单 + 逐层子单,spec/后端先行。
218219
- 下游带 `Blocked-by: <owner/repo>#<n>`;`Blocked-by` 未关闭/未合并的不派发,对 GitHub 现验。
219220
- 被链接或同父的两单永不同批。
220221
- pin 滞后是盲区:本仓 pin 是否已覆盖该 commit 是第二读数,派发前用 REST `compare` 核祖先。
@@ -242,7 +243,7 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
242243
## 域车道
243244

244245
- 锚定规则:每个包恰属一个域;`domain:*` = 修复落地包的域;`Seam:` 卡归 spec 席,默认纵向派发。
245-
- 唯一例外 `packages/lint` 等与 spec 相交的 devx 面:围着 spec 契约转的归 `domain:spec`,余留 devx。
246+
- `domain:*` 只决定文件归属:锚定、热文件串行、单认领路径;⛔ 不是队列或优先级单位。
246247
- `Seam:` 卡认领申报两端;验收 = 消费端读该键(活性账本行离开 `planned`)或键随账本行退役。
247248
- 域由分诊读代码判定,⛔ 绝不从 issue 标题的词汇猜域;说不出修复碰哪个文件就还不可标。
248249

@@ -258,7 +259,6 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
258259
| (无固定归属,按落点分诊) | `packages/apps/*`、`packages/console`(dist 由脚本生成 ⛔ 不手改;UI 缺陷走 `repo:objectui`)、`examples/*`(归它演练的子系统)、`docs/audits/**` |
259260

260261
- 表未覆盖的包首次分诊时归类并走 PR 更新本表;新增或退役 `domain:*` 必须同批改本表。
261-
- 座位在编以 `label:pm:seat` 索引为准,每车道(`domain:*`/`repo:*`)一组座位贴、每席恰一张。
262262
- `domain:*` 只由分诊席产出,例外仅在飞卡衍生 sub-issue 承父卡域;无标签的卡 ⛔ 不得认领。
263263
- 跨域例外路径:拆不动的跨域单 PR 由分诊席指定一个车道 PM 认领,认领评论申报文件面。
264264
- 派发前在飞检查:读本车道 `pm:dispatched` 卡认领评论申报的文件面,本地求交、不另发查询。
@@ -294,7 +294,7 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
294294

295295
## Epic 子树车道
296296

297-
- 大开发(父单 + sub-issue 树)整体委托一个专职 PM 会话:`/pm-dispatch epic:#<n>`。
297+
- 大开发与跨层功能点(spec/运行时/前端)整体委托一个专职 PM 会话:`/pm-dispatch epic:#<n>`。
298298
- 委托信号成对落地:父单打 `pm:epic` + 正文写会话 ID 与声明的文件领地。
299299
- epic 立卡挂父单、打 `pm:epic`,⛔ 永不 `pm:queue`;`label:pm:epic` 即父子保留全集,域座位不取。
300300
- 队列 = 子树 open 未认领 sub-issue,每轮重读不缓存;其它 PM 候选获取跳过整棵子树。
@@ -310,7 +310,6 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
310310

311311
## 分诊座位职责
312312

313-
- sweep 与首触定级只对多车道仓,单车道仓机械三务自理。
314313
- 发版板(无板仓跳过)、查重/shadow 检查与代裁通道全仓照跑。
315314
- fire 开局只按名加载互斥检查所需工具,`ToolSearch` 用 `select:`;判定本轮有活才加载其余。
316315
- ⛔ 分诊 fresh session 开局不做泛关键词 ToolSearch;可验判据:空转轮 ~4 万 token 以内。
@@ -372,6 +371,7 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
372371
- 产品仓 P0/P1 开着时,无解锁对象的 p2/p3 `tooling` 卡同样关。
373372
- 路由是分诊的技术判断,⛔ 永不升级哪个仓的问题;父单是协调节点,永不派发。
374373
- 父单已有子结构的:父单队列标签即可,分诊逐个展开路由、补 `Blocked-by:` 排序。
374+
- 跨层功能点(≥2 层)立父单带 `area:*`+`pm:epic`+清单项级,逐层子单按 `Blocked-by:` 排。
375375
- 每张留一条英文审计评论(`Triage: lands in …; rationale: …`),可选带 `Size/model suggestion:` 行。
376376
- 查重/shadow 检查先按文件/机制查本仓与姊妹仓 open 卡(含 `pm:dispatched`),再跟引用与关键词。
377377
- 同文件同机制 = 同一发现,不分车道,首触定级即并:证据搬先卡,后卡关 `duplicate_of`。
@@ -470,9 +470,9 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
470470
- 阻塞项在飞 ⇒ 等:`pm:blocking` 在其车道排最前、等待者写该卡;p0/p1 优先级沿链传递。
471471
- 取卡前置 = `docs/NORTH-STAR.md`「优先级」第 3 条:产品仓开放 P0/P1 每次取卡现读。
472472
- 取卡全序:维护者直派插队卡(出处三件)> 契约面卡(判据见 `references/lanes/spec.md`)> 标签序。
473-
- 标签序:`priority:p0` > `pm:blocking` > `target:` 板上项 > p1 > p2 > p3 > 无级;同级先 `Bug` 再卡龄。
473+
- 标签序:`priority:p0` > `pm:blocking` > 功能点位次 > `target:` 板上项 > p1 > p2 > p3 > 无级。
474474
- `pm:blocking` 级内先按解锁扇出(从 `Blocked-by:` 反向索引现算,⛔ 扇出数不落标签)。
475-
- 全序每级取既有信号现读/现算,零逐卡维护;优先非豁免;无级/缺 `Path:` 轮报记分诊缺口。
475+
- 全序每级现读/现算,零逐卡维护;同级先 `Bug` 再卡龄;无级/缺 `Path:` 轮报记分诊缺口。
476476
- 解锁那一刻 PM 自己的判断最不可信:裁决收窄或关掉了那张卡是假设不是前提。
477477
- 该假设以机制假设身份进派发令,被证伪就在同一张卡公开更正。
478478

‎.claude/skills/pm-dispatch/references/core-rules.md‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,15 +55,15 @@
5555
- 多车道仓的域标签、type、定级与查重只由中央分诊生产,单车道仓自理三务不产域标签。
5656
- 跨仓查重与 shadow 检查恒归中央 ⛔ 不下放;决策卡入本仓收件箱,在飞卡 ⛔ 不中途转仓。
5757
- issue 住在修复落地的仓,抽掉 objectstack 仍成立的当场转仓;缝卡须带仓标签并点名读者。
58-
- 跨仓 feature 或跨仓 `Seam:` 卡拆成父单加每仓子单,下游带 `Blocked-by:`,上游未关 ⛔ 不派发。
58+
- 跨层功能点或跨仓 `Seam:` 卡拆成父单加逐层子单,下游带 `Blocked-by:`,上游未关 ⛔ 不派发。
5959
- pin 消费的仓派发前核 pin 是否已覆盖那个提交,发布包消费的仓判据是消费方可安装。
6060
- 上游未发版时转 hold ⛔ 不回队列;已验收产物流向另一仓由接受席立即立后续单。
6161
- 跨座位请求即立卡进目标车道,自卡翻 `pm:blocked`;阻塞项无主由被挡席认领,在飞即等。
6262
- 认领席跟到 MERGED,派发后的跨车道面不移卡、借隔离复核;新 spec 工作由 spec 席收口。
6363
## 域车道
64-
- 每个包恰好属于一个域,域标签 = 修复落地包的域;例外与 `Seam:` 卡见 SKILL.md 锚定规则。
64+
- 每个包恰好属于一个域,域标签 = 修复落地包的域,只决文件归属 ⛔ 非队列非优先级单位。
6565
- 域由分诊读代码判定,⛔ 绝不从 issue 标题的词汇猜域;说不出修复碰哪个文件就还不可标。
66-
- 域到包家族的对照表住 SKILL.md,增删一个域标签必须同批改那张表。
66+
- 域到包家族的对照表住 SKILL.md,增删一个域标签同批改那张表;`area:*` 是功能轴,首触打。
6767
- 域标签只由分诊席产出,例外仅在飞卡衍生 sub-issue 承父卡域;无标签的卡 ⛔ 不得认领。
6868
- 跨域单 PR 由分诊席指定一个车道 PM 认领并申报完整文件面,在飞检查同域跨域皆跑。
6969
- 合并队列是共享串行资源,谁发现 flake 谁修或立单,⛔ 不绕行。
@@ -106,7 +106,7 @@
106106
- 家族派发须过五门:同缺陷同修法、同包区域、成员皆已裁、逐成员可核、点名排除清单。
107107
- 两张以上排队卡共享热文件时,必须以五门为判据显式回答折叠还是串行。
108108
- 取卡全序:维护者直派插队卡(出处三件)> 契约面卡(判据见 `references/lanes/spec.md`)> 标签序。
109-
- 标签序:`priority:p0` > `pm:blocking` > `target:` 板上项 > p1 > p2 > p3 > 无级;同级先 `Bug` 再卡龄。
109+
- 标签序:`priority:p0` > `pm:blocking` > 功能点位次 > `target:` 板上项 > p1 > p2 > p3 > 无级。
110110
- 认领原子对:一次标签写入完成认领与状态对调,随后留 `Claim:` 开头的评论并重读全线程。
111111
- 更早的他会话认领即让行并交出已诊断的一切;认领人不可达即接管,⛔ 不判死活。
112112
- dev 自死不等于维护者中止,需显式信号;接管一条评论四件齐,只救已 push 的分支。

0 commit comments

Comments
 (0)