Skip to content

pm-dispatch references: platform-facts sweep — five measured deliverables across four member cards #8455

Description

@hotlong

Filed by the skills seat (session session_018WuTtyckQa1VcXwgd52JpN) under this shift's maintainer grant (2026-08-13, verbatim, untranslated: 「集中处理skills车道中的所有任务,包括分诊和集中开卡你都可以处理。」). Sweep-promotion of four graded findings plus one absorbed item, all hitting the same criterion: a measured platform/process fact whose deliverable is a self-contained row/line in .claude/skills/pm-dispatch/references/** — no SKILL.md lines, no code. Per the sweep rule: this card is the claim target; member cards keep their labels but are not separately dispatchable while this card is open.

Members and itemized deliverables (落点 | content)

  1. PM gate-reading does not pin the run to the PR's CURRENT head — a cancelled run on a superseded head gets rerun, burning a heavyweight cycle and producing a false red #8434references/review-checklist.md: two clauses — (a) pin every gate reading to the PR's CURRENT head: read pulls/{n}.head.sha first; a run whose head_sha differs is a reading about a dead commit — neither its green nor its red counts, in either direction; (b) never rerun a run on a superseded head: a cancelled conclusion on a non-current head needs no action at all — the newer push already has its own runs. Plus one references/platform-readings.md row: cheap sibling workflows success + heavyweight carrier cancelled on the same head is the expected signature of ordinary supersession (siblings finish in seconds, carriers take 10–15 min), not evidence of selective failure.
  2. [finding] list_issues returns no assignee field, so a lane inventory cannot tell a claimed card from a free one — add to the platform-readings trap table #8374references/platform-readings.md row: list_issues never returns assignees (no such fields member; absent from the response either way), so a lane listing cannot distinguish a claimed card from a free one — a listing is a shortlist, and every entry needs a full issue_read before it can be claimed.
  3. [finding] GitHub MCP issue_read returns HTML-entity-escaped bodies (' / "), so a body round-trip (read → edit → write) from an MCP-backed seat risks corrupting the original text #8272references/platform-readings.md row: MCP issue_read bodies are HTML-entity-escaped while comments come back raw; a body round-trip via issue_write is unsafe from MCP-backed seats — machine-greppable lines (e.g. the blocked-by reverse index) may live in comments instead, so unlock scans must read comments too, and any body rewrite should be verified against the raw body via REST first.
  4. finding: a dev session is invisible across GitHub accounts, so archive_session / probe / poke are all unavailable to a successor seat — the hand-off checklist asks for something the successor cannot do #8187references/dispatch-runbook.md, extending the existing "SendMessage 直投 not-reachable 是设计而非故障" line: session handles are account-scoped — get_session / archive_session / the trigger-poke route all answer not found for another account's session, and that answer is never a death signal. Plus references/seat-post-protocol.md 退场收尾清单: the outgoing PM archives its own dev sessions before standing down; if a session must be left running, the seat post says so and marks the archive obligation non-transferable.
  5. [finding] Three mechanizable items from a 16-hour spec-lane shift: os-dev's background-wait stall (6 instances), the verify-lock convention devs invented, and enable_pr_auto_merge's silent no-op #8294 item 3 onlyreferences/platform-readings.md rows: (a) enable_pr_auto_merge without an explicit mergeMethod: "SQUASH" is a silent no-op on this repo — it falls back to the forbidden merge-commit method; the echo's empty method: field is the failure signal; (b) measured data points worth a line each: single-container heavy-verify concurrency sweet spot ≈3; merge-queue landing latency ~15–30 min per PR, serialized. Items 1–2 of [finding] Three mechanizable items from a 16-hour spec-lane shift: os-dev's background-wait stall (6 instances), the verify-lock convention devs invented, and enable_pr_auto_merge's silent no-op #8294 are absorbed elsewhere (the os-dev role-file card) — ⛔ this PR must NOT close [finding] Three mechanizable items from a 16-hour spec-lane shift: os-dev's background-wait stall (6 instances), the verify-lock convention devs invented, and enable_pr_auto_merge's silent no-op #8294; reference it in prose only, never in a closing position, and do not create a development link to it.

Constraints

  • File surface: .claude/skills/pm-dispatch/references/** ONLY. ⛔ No SKILL.md edits (line ratchet untouched). Rows land in the existing table/rule style, self-contained, ⛔ no issue-number references in the operational text (check:pm-skill-id-lint).
  • Serial: references/dispatch-runbook.md is held by the dispatch-strategy card's in-flight work — this sweep dispatches after that PR lands and rebases over it.
  • Model: claude-fable-5 mandatory (pm-dispatch skill root); the 2026-08-13 quota-exhaustion exemption applies (floor opus, downgrade + reason recorded in the claim comment).
  • Merge path: ADR-class three-piece — draft PR, ⛔ no auto-merge / queue / ready-flip by any AI seat; the maintainer lands it by hand.
  • PR first line: Fixes #8434, Fixes #8374, Fixes #8272, Fixes #8187 (all four fully delivered here). The PR body carries the per-member 落点|before|after list (sweep five-condition rule).

Metadata

Metadata

Assignees

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions