Skip to content

[Decision] one lane, several execution PMs — option D, free-claim multi-seat: a second Claude Code account claims from the same domain:spec queue (protocol text in SKILL.md / core-rules / seat-post-protocol + a check-half-states H38 filter); A partition / B outlet-only kept as alternatives #18394

Description

@os-elon-musk

Filed by the domain:skills execution PM seat, session session_01Bz6hxDBqK62NP2W1LATvnt, at the maintainer's direct request (2026-09-16, 「spec多账号并行应靠分区扩展,具体应该怎么做」). Rewritten at 2026-09-16T09:39Z on the maintainer's remark in the seat's chat 「18394 现在写的不是我们刚才讨论的方案啊,一个车道多个项目经理」: the proposal discussed and recommended is option D — free-claim multi-seat (several execution PMs on one lane); the earlier partition proposal is kept below as option A for the record. Decision card: the answer changes protocol text (governed), so it is the maintainer's; ⛔ not auto-adjudicated. The measurement comment 5694631271 stands; the 08:53Z ruling (5694758281) was withdrawn (5694774788); nothing has been dispatched on this card.

维护者速读

事情:spec 车道 pm:queue 95 张(objectstack)+ 15 张(objectui),近三天出口 9 / 9 / 3。协议现在规定「一座位一车道双射」:一个车道只能有一个 PM 账号在认领,第二个账号进不来。你要的是一个车道多个项目经理:各自认领、各自派 dev、各自复核落地,认领时不撞车。

方案 D(推荐)= 自由认领多席:同一个车道同时坐 N 个 PM 账号。每个 PM 一张座位贴([PM seat] domain:spec · seat 2),认领评论多写一行 Seat:,派发前多读一次本车道其他席在飞卡的文件面(相交就串行或让行)。不切目录、不加标签、分诊不用改任何事。ui、devx 车道拿同一份改动直接可用。

代价:一张规则层 PR —— SKILL.md 三处「双射」句、互斥读数三/四改按席号过滤、同域在飞检查一句;core-rules 一行;seat-post-protocol 一行;check-half-states.mjs H38 按席号过滤 —— 等你批一次;每账号写量仍是 batch 3,不涨。objectui 那份 check-half-states.mjs 镜像要同步一次(#18290),不同步只是巡查在 objectui 板上误报,不挡认领。

其它选项:A = 按 packages/spec/src/ 目录家族切两个分区,各一席,要分诊打分区标签,只对 spec 成立;B = 不改协议,只做出口修复(分诊在席、连续派、派发令要求发布散文附读数、语义卡 A/B 试档位)。

你要做的:回一个字。D = 本席立刻派 skills 车道 dev 改协议(约 1 小时),PR 四件套挂起等你批一次,批后第二个账号跑 /pm-dispatch spec 即可坐席;A / B 见上。

Option D — free-claim multi-seat (recommended)

  • Seat posts: one post per seat, titled [PM seat] domain:X · seat N (seat 1 keeps today's post); each body is single-writer with the four sections unchanged; the pm:seat index shows N rows per lane. Precedent in SKILL.md: 「车道可按仓分席(域×仓):忙时一个 domain 车道开多个按仓席位,闲时收归一席。分席各有独立座位贴与 claim 互斥;分席是名册状态,不改协议文本。」 — D changes the split axis from repo to seat number.
  • Mutex readings 1 / 2 (收班简报 / 开轮标记): per post, unchanged.
  • Mutex readings 3 / 4 (another session's Claim: on a lane card ⇒ self-exit): the claim comment gains a Seat: domain:X#N line and readings 3 / 4 filter to the same seat number. Without this every second seat self-exits on every fire — this and the in-flight check are the two lines D really changes.
  • Same-domain in-flight check: before each dispatch the seat reads the lane's pm:dispatched cards' claim file faces (the candidate enumeration already reads the whole lane in one listing); an intersection ⇒ serial behind that PR or yield. Replaces 「日常同域批次选择不跑全局在飞检查,同域独立性由本域批次选择保证」.
  • Hot-file serial queue: lives in the claims (serial behind PR #N), not on a shared post; each post's section lists only its own chains. The inherited ledger is per seat; the lane's job description stays in references/lanes/X.md.
  • Bijection clauses: 「一座位一车道双射:域 X 谁管、PM Y 管什么,各恰好一个答案」 (SKILL.md 全体座位的不变量), 规则 4 「一人一车道双射」, 「每个 domain:* 与 repo:* 恰一张座位贴」 (座位贴协议), core-rules 「一座位一车道双射,每域恰一 PM」 → a PM manages exactly one lane; a lane is managed by a set of seats; one post per seat.
  • Patrol reader: scripts/pm/check-half-states.mjs H38 (a lane Claim: newer than the post's last event ⇒ post STALE) filters by seat number; H5 / H32 need no change. objectui's mirror copy follows through [finding] objectui's half-state findings reach no reader: the board has no anchor by ruling, and its copy of check-half-states still refuses in agent containers with the conclusion #13544 disproved #18290.
  • Write volume: one seat = one account = batch 3; N seats = N accounts; per-account volume unchanged (the reason batch 3→5 was rejected: 「容易封号」).
  • Lanes: lane-agnostic. Roll-out: spec first (objectstack 95 + objectui 15 queued), then ui (objectui domain:ui 133) and devx (objectstack 63) with the same protocol text. Partition-by-directory (A) was spec-specific.
  • Cost: ~7 protocol lines + one H38 filter + one claim line; one rules-layer PR (four-piece, one authorized APPROVED); dev ≈ 1 h; usable the same day.

Option A — two seats by path family (kept for the record)

Labels spec:core / spec:surface set by triage from the fix's directory (core = data/ shared/ kernel/ contracts/ system/ identity/ security/ + strictness ledger + packages/spec/scripts/** and spec-bound gates; surface = ui/ automation/ ai/ api/ marketplace/ studio/ qa/ integration/); /pm-dispatch spec part:core|surface; candidate query = domain:specspec:PART; a second seat post per partition; cross-partition cards to the primary landing directory's seat; the mutex readings filter by partition label. Cost: one governed PR + a one-hour relabel of ~96 cards + a second session; spec-only; commits-per-directory readings in comment 5694631271.

Option B — no protocol change; throughput fixes only

Triage seated; the spec seat dispatches continuously at batch 3 with p3 families folded; dispatch orders require a measured reading for every published sentence a diff changes; a tier A/B on semantic cards for two weeks. Cost: zero protocol text. Ceiling: one account's review time and write budget. (Compatible with D; the dispatch-order line is free and can be done regardless.)

Governing text (read on origin/main at 2026-09-16T09:05Z)

  • SKILL.md :101 「一座位一车道双射:域 X 谁管、PM Y 管什么,各恰好一个答案。」 · :220 「规则 4:纵向拆分,一个分诊 PM + N 个执行 PM,一人一车道双射。」 · :255 「座位在编情况以 label:pm:seat 索引为准,每个 domain:*repo:* 恰一张座位贴。」
  • core-rules.md :27 「…一座位一车道双射,每域恰一 PM;…」
  • SKILL.md 多仓协调 「车道可按仓分席(域×仓)…分席各有独立座位贴与 claim 互斥;分席是名册状态,不改协议文本。」 — the precedent D generalises.
  • SKILL.md 入口与角色, 开轮互斥 readings 三/四 (「本车道 pm:dispatched ∪ pm:queue 卡最新非本 session 的 Claim: 评论」, 「state=CLOSED … 第一张卡的 Claim: session ID」) — the two readings D scopes to the seat.
  • SKILL.md 域车道 「日常同域批次选择不跑全局在飞检查,同域独立性由本域批次选择保证。」 — the line D replaces.

四棱(对 D)

  • 实际业务需求 — 实测:spec 12 天净增 34 张、近三天出口 9 / 9 / 3;ui 133、devx 63 同样积压。瓶颈是「一车道一账号」的写额度与复核时间,不是卡不够独立。
  • 项目长远合理性 — D 与既有「分席」先例同构,只换分席轴;不加标签、不加跟踪器、不改分诊;A 只对 spec 成立,ui/devx 还要各自再切一次。
  • 防 AI 犯错 — 撞车三道防线:认领原子写 + 回读(已有)、Seat: 行让互斥读数不误退、派发前读他席在飞文件面;H38 过滤让巡查不误报。文件面相交的卡走既有串行队,落地仍由合并队列串行。
  • 创业阶段不扩散 — 一张 PR、零新标签、零新门禁、零新账号形态;先 spec 两席试一轮,验证 Seat: 行与 H38 后再开 ui / devx。

Premises (each with its re-check)

  • P1 spec pm:queue ≥ 90 in objectstack and net-positive over 12 days — re-check: GET /repos/objectstack-ai/objectstack/issues?state=open&labels=domain:spec,pm:queue&per_page=100 paged with a page=N count (control: domain:engine,pm:queue returns a small non-zero set). Read 09:0xZ: spec 95, devx 63, engine 8, cli 5, services 1, skills 8; objectui ui 133, devx 8, spec 15.
  • P2 the 分席 precedent exists — re-check: git grep -n '分席' origin/main -- .claude/skills/pm-dispatch/SKILL.md (control: 座位贴 hits).
  • P3 H38 fires on any lane claim regardless of session — re-check: h38SeatPostStale in scripts/pm/check-half-states.mjs compares the newest lane claim's instant against the post's last event (control: its H5 self-test cases).
  • P4 the bijection clauses sit at SKILL.md :101 / :220 / :255 and core-rules :27 — re-check: git grep -n '双射' origin/main -- .claude/skills/pm-dispatch/ (control: 座位 hits).

Dedup words: free-claim multi-seat · one lane several PMs · Seat: line claim · seat post per seat · spec partition · spec:core spec:surface


Generated by Claude Code

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions