Skip to content

docs(pm-dispatch): 收班 = 状态 flush + 看护显式移交 — decouple shift-end from in-flight-zero - #8453

Merged
hotlong merged 1 commit into
mainfrom
claude/issue-8428-hot-handover
Aug 13, 2026
Merged

docs(pm-dispatch): 收班 = 状态 flush + 看护显式移交 — decouple shift-end from in-flight-zero#8453
hotlong merged 1 commit into
mainfrom
claude/issue-8428-hot-handover

Conversation

@hotlong

@hotlong hotlong commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

Fixes #8428

What

The skill text coupled shift-end to in-flight-zero (波次收工点 ① 收工点 = 在飞归零; the exit checklist's step ② demanded 在手工件清零). That coupling is right for subagent devs (they die with the session) but wrong for cloud cards and merge-queue tails — durable, GitHub-anchored processes that need a watcher, not a particular session. One slow L-size cloud card mid-verification held an otherwise-clean seat (and the maintainer) hostage. Maintainer complaint that prompted the card, verbatim and untranslated: 「你因为一个卡片没结束,每次我要等你好费时间,有没有更好的交接方案。」

Changes

  • references/seat-post-protocol.md: new principle bullet — 收班 = 状态 flush + 看护显式移交,⛔ 不等于在飞归零 (维护者 2026-08-13 拍板). Hot handover = three pieces, closable in minutes: ① per-card collection note (review criteria, landing steps, current state); ② seat post refreshed to now; ③ every in-flight item names its successor watcher — next seat by default, queued PRs to the queue steward. The exit checklist's step ② softens from zero-out to per-item disposition (能收则收,收不完走热移交 — never wait just to zero out).
  • SKILL.md 波次收工点 block: step ① scoped to 会话内在飞归零 (cloud cards no longer block; hot handover per the seat-post protocol reference). Zero net lines — SKILL.md stays at exactly 686, the ratchet ceiling.

Constraints kept binding in the text

  • An in-session create_trigger Routine gets no GitHub tools — explicitly ⛔ not an escape hatch (cross-referenced to the 座位 Routine 创建细则 section that records the platform fact).
  • The queue steward's authority stays landing-only — hot handover hands review to the NEXT seat, it never skips review and never widens the steward.

Deliberate deviation from the card's proposal

The card's point 2 said a successor reaches a running cloud session via cross-session SendMessage by session ID. That is contradicted by references/dispatch-runbook.md: delivery uses a poke trigger bound to the session (create_trigger with persistent_session_id), and SendMessage direct is not-reachable by design (维护者 2026-08-11 裁定). The landed text carries the corrected mechanism and points at the runbook.

Verification

All six derived gate families green locally (check:doc-authoring, check:doc-formula-expressions, check:nul-bytes, check:pm-skill-id-lint, check:pm-skill-ratchet at 686/686 headroom 0, check:skill-frame-sync); scripts/pm/dispatch-gates.mjs re-derivation over the changed paths surfaced no additional families. Region is disjoint from the one declared on #8433 (#8433 remains open; not addressed here).

skip-changeset

.claude/-only diff — internal agent tooling, ships nothing user-visible, releases nothing.

Merge path

ADR-class three-piece: this PR stays draft; ⛔ no auto-merge, no merge queue, no ready-flip by any AI seat — the maintainer lands it by hand.


Generated by Claude Code

…n-flight-zero

Define hot handover in seat-post-protocol.md: a seat may close out in
minutes once per-card collection notes are posted, the seat post is
current, and every in-flight item names its successor watcher (next
seat by default; queued PRs go to the queue steward). Scope SKILL.md's
波次收工点 step 1 to session-internal in-flight zero so cloud cards no
longer hold the seat, and soften the exit checklist's step 2 from
zero-out to per-item disposition with hot handover as the fallback.

Constraints kept binding in the text: an in-session create_trigger
Routine gets no GitHub tools (not an escape hatch); the queue steward's
authority stays landing-only (hot handover hands review to the next
seat, never skips it). Cloud-session delivery is via a poke trigger
bound to the session ID, not SendMessage direct (per dispatch-runbook).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01139NJ9Wg5pFeZi1Zh8WLg6
@vercel

vercel Bot commented Aug 13, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
objectstack Ignored Ignored Aug 13, 2026 1:42pm

Request Review

@github-actions github-actions Bot added size/s documentation Improvements or additions to documentation labels Aug 13, 2026
@hotlong hotlong added skip-changeset PR has no user-facing published change; bypasses the changeset gate and removed documentation Improvements or additions to documentation size/s labels Aug 13, 2026 — with Claude

hotlong commented Aug 13, 2026

Copy link
Copy Markdown
Contributor Author

PM review: ACCEPT — skills seat (#7623), session session_01139NJ9Wg5pFeZi1Zh8WLg6. Independently re-verified in a clean worktree at e36d4a9.

  • Gates re-run (not quoted from the body): check:pm-skill-ratchet 686/686 headroom 0 ✓ · check:pm-skill-id-lint 9 files clean ✓ · check:skill-frame-sync isomorphic, 4 copies ✓ · check-skill-frame-freshness ✓ · check:doc-authoring 376 files clean ✓. Diff is 2 files / +17 −6, region disjoint from pm-dispatch: 调度策略四项(维护者 2026-08-13)—— 被依赖卡提权标签、bug 提权、紧急卡 fable 直接分诊、跨车道简单依赖直接接手 #8433's declared region as required.
  • Text review: the principle bullet states the asymmetry correctly (subagent devs die with the session; cloud cards and queue tails are durable GitHub-anchored processes needing a watcher), the three hot-handover pieces are concrete and cheap, and both non-negotiables are guarded in the text — review judgment is not outsourced (steward stays landing-only), and an in-session create_trigger Routine is explicitly ⛔ not an escape hatch. Checklist step ② now says 能收则收,收不完走热移交(⛔ 不为清零而等)— the coupling is gone without weakening the rest of the exit sequence.
  • The declared deviation is correct and the PM's original guidance was wrong: cross-session delivery to a running cloud session uses a session-bound poke trigger (create_trigger + persistent_session_id), not SendMessage direct, which is not-reachable by design. Verified against references/dispatch-runbook.md (~lines 34-38) before this review. The landed text carries the corrected mechanism.

Completion note (this PR's dev agent did not return a report): it was terminated mid-task by the account-level Fable 5 limit, after opening this draft PR but before applying skip-changeset and reporting. The seat applied the label PM-side and reconstructed completion state from GitHub rather than from the agent's word. Nothing is outstanding on this PR.

Merge path unchanged: stays draft, ADR-class — the maintainer lands it by hand.


Generated by Claude Code

@hotlong
hotlong marked this pull request as ready for review August 13, 2026 13:51
@hotlong
hotlong merged commit 2c0b2f3 into main Aug 13, 2026
30 checks passed
@hotlong
hotlong deleted the claude/issue-8428-hot-handover branch August 13, 2026 13:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

skip-changeset PR has no user-facing published change; bypasses the changeset gate

Projects

None yet

2 participants