Skip to content

Commit de4ed33

Browse files
docs(pm): a suspended seat account is a dead session — takeover, re-rendered records, retriage, durable state (#19795)
Fixes #19777 Clause-②: no ## What changed Three one-line edits, one per reference file, each paid in place under the file's `check-skill-line-ratchet.mjs` ceiling (241 / 469 / 91 — counts unchanged, every line ≤ 120 bytes, no re-wrap). Base `origin/main` at 2cf9db7. | file · section | line added | line paid | |---|---|---| | `dispatch-runbook.md` 〈接手中断的 dev(worktree 接手协议)〉 | `- 账号封禁即死会话:接手者重认领,消失的记录(认领/复核/裁决)按正文行在当前 head 重出。` | folded `- PM 会话已死 ⛔ 不推导其 dev 已死;跨账号活性只认 GitHub 产出读数。` and `- 死后恢复查三态:远程(\`git ls-remote\`)、仅容器磁盘、真没了。` into `- PM 会话已死 ⛔ 不推导其 dev 已死;死后恢复查三态:远程 \`ls-remote\`、仅容器磁盘、真没了。` — the dropped clause 跨账号活性只认 GitHub 产出读数 is line 135 of the same file (〈Routine 传输〉 block) | | `platform-readings.md` 〈API 配额〉 | `- 封号隐藏其全部评论、无 timeline 事件;assignee、PR、正文存活;分诊没了挂 \`pm:retriage\`。` | replaced the older suspension reading in the same block, `- 用户类写绑作者:封号则其评论与卡按作者 404,标签/状态/标题/正文存活。` — the director's measurement (104 cards, zero `comment_deleted` events; assignee, PRs and bodies persist) supersedes it; the `⇒ 耐久算按令牌类重算…` line under it stands | | `seat-post-protocol.md` 〈活性、写侧刷新与收班〉 | `- 耐久状态只住正文或以 App 写入;正文守中继上限 60,000 字节,超大贴由半状态巡查浮出。` | folded `- 超大贴由半状态巡查的 report-only 项浮出,⛔ 不等读取失败。` (〈贴的四段与派生视图〉) into it | Not touched: `contract-review.md` :13 / :19 (#19061 step ④), `SKILL.md`, `os-dev.md`, `AGENTS.md`; no gate, hook, ratchet or roster. ## Landing Tier S (`.claude/**`) at `CONTRACT_REVIEW_TIER`: the director seat renders the `## Contract review` record on this head and lands it through the queue. `skip-changeset` — nothing published from any released package; the label is the seat's to apply (this dispatch forbids label writes by the dev). The two serial PRs the card named (#19737, #19771) are on `main`; nothing to rebase. ## Verification Gates derived by `node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack --commands` on the edited tree at d192977; each run alone, exit captured before any pipe (`cmd > log 2>&1; ec=$?`). | command | exit | verdict line | |---|---|---| | `node scripts/check-closing-keyword-parity.mjs` | 0 | • packages/spec/CHANGELOG.md -- 6080503 bytes exceeds the sweep's 2097152-byte cutoff for UNREGISTERED files | | `node scripts/check-closing-keyword-parity.mjs --self-test` | 0 | ✓ check-closing-keyword-parity --self-test: 40 assertions, 5 mutations of the shipped parsers each driven to r | | `node scripts/check-comment-mask-corpus.mjs` | 0 | ✓ comment-mask corpus sweep [scripts/js-comment-mask.mjs]: 7015 files, 0 disagree, 0 unparseable, 89.9s (compa | | `node scripts/pm/check-governed-queue-guard.mjs --self-test` | 0 | ✓ check-governed-queue-guard self-test: 279 cases pass (register-driven verdicts, the queue/PR event split, la | | `node scripts/pm/check-harness-current.mjs --self-test` | 0 | check-harness-current --self-test: all 26 cases passed. | | `pnpm --filter @objectstack/lint run check:doc-formula-expressions` | 0 | #11673). | | `pnpm check:agent-test-spelling` | 0 | which drives this same sweep RED over a temp tree on disk. | | `pnpm check:cross-package-test-inputs` | 0 | OK: 29 package(s) read outside themselves, all declared, and turbo.json hashes every declared glob (6 of them | | `pnpm check:doc-authoring` | 0 | ✓ doc authoring guard: sibling-package prose ids hold the baseline — 819 pinned site(s) across 231 file(s), 90 | | `pnpm check:driver-memory-census` | 0 | check-driver-memory-census: OK — every declaration is ledgered, every ledger entry is live, and every ruled fi | | `pnpm check:gitlink-declared` | 0 | check-gitlink-declared: OK (9269 index entries -- 0 gitlink(s) at mode 160000; no .gitmodules in the index, so | | `pnpm check:nul-bytes` | 0 | check-nul-bytes: OK (scanned 9262 text file(s) -- 9262 tracked, 0 untracked-not-ignored; skipped 7 binary; no | | `pnpm check:pm-governed-merges` | 0 | live: the real generator declared 9 output(s) and certified this tree | | `pnpm check:pm-half-states` | 0 | ✓ check-half-states self-test: 4897 cases pass. Batteries: H66 released queue card 182/172, H19 judged-set fou | | `pnpm check:pm-skill-id-lint` | 0 | ✓ check-skill-id-lint: 30 file(s) clean (pattern /#[0-9]{3,}/g). | | `pnpm check:pm-skill-ratchet` | 0 | ✓ check-skill-line-ratchet: declared cross-file moves: 1, total ceilings down 9 lines. | | `pnpm check:refd-timer-probe` | 0 | 1 code site(s), all inside the approved module, which is present and still reads it. | | `pnpm check:required-contexts` | 0 | governed-surface-guard.yml:governed-surface-guard → 'Governed Surface Queue Guard' | | `pnpm check:skill-frame-sync` | 0 | binding sentence present in it; 1 count mention(s) agree; 86 markdown files scanned for undeclared copies. | | `pnpm check:watch-hint-literal` | 0 | ✓ check-watch-hint-literal: 71 declaration(s) across 4 rostered name(s) -- ROOT_DIR_WATCH_HINTS 47, ROOT_FILE_ | Also run on this head, named by the dispatch and outside the derived list: `pnpm check:skill-frame-freshness` exit 0 · `pnpm check:pm-governed-prose` exit 0. The doc-formula gate measured only after `@objectstack/lint` and its closure were built through `scripts/pm/os-verify-lock.sh` (VERDICT command-exit 0). `--ran` reconciliation: ✓ dispatch-gates --ran: 20 derived famil(ies) accounted for — 20 run, 0 NOT-MEASURED (a DERIVED zero — all 20 recorded an exit code and none of them is 3). --- _Generated by [Claude Code](https://claude.ai/code/session_01XPUwWGnmky4PXPofNsf2w7)_ Co-authored-by: Claude <noreply@anthropic.com>
1 parent 0b83e01 commit de4ed33

3 files changed

Lines changed: 4 additions & 4 deletions

File tree

‎.claude/skills/pm-dispatch/references/dispatch-runbook.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -145,8 +145,8 @@
145145
- 派第二个 dev 上别人的分支前先读三处:远程分支头(`git ls-remote`)、该分支最后推送时刻。
146146
- 第三处是卡上最新 `os-dev-report` 的时刻;任一落在云端收集边界内 ⇒ ⛔ 不派第二个 dev。
147147
- 改在该 PR 上留言唤醒它自己的 dev(云端 dev 订阅自己的 PR),满一个边界的静默才走接手。
148-
- PM 会话已死 ⛔ 不推导其 dev 已死;跨账号活性只认 GitHub 产出读数。
149-
- 死后恢复查三态:远程(`git ls-remote`)、仅容器磁盘、真没了。
148+
- PM 会话已死 ⛔ 不推导其 dev 已死;死后恢复查三态:远程 `ls-remote`、仅容器磁盘、真没了。
149+
- 账号封禁即死会话:接手者重认领,消失的记录(认领/复核/裁决)按正文行在当前 head 重出。
150150
- 中间那态最值钱:worktree 比 agent 活得久、同容器共享,未提交改动通常还在。
151151
- 只查远程会令下一个 dev 从零开始;捡到的工作一律标 UNVERIFIED 交接,不丢弃也不继承。
152152
- worktree 已存在 ⇒ ⛔ 不要新建,`cd` 进去接着做,第二个 worktree 会劈开工作。

‎.claude/skills/pm-dispatch/references/platform-readings.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@
132132
- 两次实测:分诊席 2026-09-15 `claude[bot]`→`os-sam`;技能席 2026-09-15→16 `claude[bot]`→`os-zhuang`。
133133
- 类只认每次写回读的 `user.login`/`user.type`,⛔ 不从开轮标记沿用:标记读数带日期、不站住。
134134
- `performed_via_github_app`、`GET /user` 与 core 限流头对两类同答 ⇒ 三者都不是判别式。
135-
- 用户类写绑作者:封号则其评论与卡按作者 404,标签/状态/标题/正文存活。
135+
- 封号隐藏其全部评论、无 timeline 事件;assignee、PR、正文存活;分诊没了挂 `pm:retriage`。
136136
- ⇒ 耐久算按令牌类重算,⛔ 不假定署名恒 `claude[bot]`;用户类下请 PR 作者复审回 422。
137137
- GraphQL 池 5000/时,只留给没有 REST 对应物的几件。
138138
- 那几件 = `rest-channel.md`〈不可迁移〉那三件;draft 翻转与 auto-merge 挂载有 ccr 路、不在内。

‎.claude/skills/pm-dispatch/references/seat-post-protocol.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
- 班次叙事 ⛔ 不进贴正文:逐卡状态在卡与 PR 上必填,轮次合计走轮次报告。
1717
- 接管压缩:接任 PM 把交接的有效内容按四段模板重述为新正文,编辑历史即存档。
1818
- 旧账留在上一版 body revision,审计评论带版本指针(哪一版、何时)。
19-
- 超大贴由半状态巡查的 report-only 项浮出,⛔ 不等读取失败。
2019
- 热文件串行队是跨轮跨班次的常设事实:文件 → 有序卡片清单 → 每张卡认领的区域。
2120
- 新增座位贴(拆域或加席)先查 `pm:seat` 索引再立贴,席号取本车道现有最大席号加一。
2221

@@ -28,6 +27,7 @@
2827
- 可跑读法:本车道 `pm:dispatched` 卡按 `updated_at` 降序一搜,或读最近一条认领评论。
2928
- 写侧刷新三时刻:派发、收班、暂停或交接前;时间戳恒取自 `scripts/pm/post-stamped.mjs`。
3029
- 刷新前回执未读敲门;`post-stamped.mjs --body` 拦截:评论晚于正文末次戳 ⇒ `--ack-through=ID`。
30+
- 耐久状态只住正文或以 App 写入;正文守中继上限 60,000 字节,超大贴由半状态巡查浮出。
3131
- 协议升级迁移状态、或巡检发现正文不符时,当场改正文 + 审计评论。
3232
- Routine 座位的收尾简报也落自己的座位贴,它是下一轮自退守卫的读数。
3333
- 安置默认离任留守;留不了才热移交:在飞卡落收单注记 + 点名看护者。

0 commit comments

Comments
 (0)