Skip to content

Seat-post protocol: registry bodies grow without bound — bound the live body to current state, move shift narration out #7583

Description

@os-help

Problem

Seat posts (label:pm:seat) are defined as "the single authoritative registry" for each seat, but nothing bounds their size. #6019 (domain:engine-core) had reached ~61 KB by 2026-08-11: wave-by-wave status narration, per-card verdicts, patrol notes and stacked handover sections all accreted in the body across shifts. The maintainer raised it directly today (2026-08-11, engine-core PM session):

> 座位贴 #6019 内容较大, 这个问题应该怎么解决,以后会越来越大。

Cost is concrete, not aesthetic: a 61 KB body exceeds tool read limits (this morning's takeover needed chunked shell reads of a saved file to read its own seat post), every full-body edit must round-trip the whole text through a write channel, and the operative state — which the protocol says the body exists to carry — is buried under history that belongs to closed cards.

Growth mechanism

The protocol already says the right things — "评论只作交接审计,不承载状态", state lives on the issues — but in practice the body absorbed shift narration ("#NNNN DISPATCHED…", "#NNNN ACCEPTED + QUEUED…", per-wave tallies), which is per-card state that already lives on the cards and PRs. That narration is the unbounded term; the genuinely body-shaped sections (Scope / Current PM / inherited ledger / hot-file serial queue / standing commitments) are all naturally bounded.

Precedents already in the field

Proposal (for a SKILL.md amendment — ⚠️ any card editing .claude/skills/pm-dispatch/** mandates model: claude-fable-5 per the 2026-08-10 Model-tiering ruling)

  1. Fixed section template for seat bodies: Scope / Current PM / Inherited state / Hot-file serial queue / Standing commitments / Notes — nothing else. All sections are current-state; none grow with time.
  2. Shift narration goes where the state already lives: per-card dispatch/accept/landing facts belong on the card and PR threads (they are already required there); round tallies go to the chat round report. The seat body is edited at takeover, handover, and structural change — not per event.
  3. Takeover compaction as a standard step: an incoming PM restates the handover's operative content in the bounded template and points at the outgoing revision in edit history (audit comment carries the pointer).
  4. Mechanical guard: a soft size predicate (e.g. body > ~10 KB) added to scripts/pm/check-half-states.mjs as a report-only H-item, so oversized seat posts surface in patrol sweeps instead of being discovered at read-failure time.

Options 1–3 are protocol text; option 4 is a small script change. The #7341-style skill-batch card is the natural vehicle if one is already queued.

Filed unassigned, no domain:* — triage routes (likely domain:devx by the skills/scripts surface, with the fable mandate noted above).

Source

Observed during the 2026-08-11 engine-core seat takeover (session session_01PemxJmMZT9JphrsNx886Ce); maintainer prompt quoted above. Dedup: searched pm:seat size/compaction cards — none exist.

Activity

  1. os-zhuang commented on Aug 11, 2026

    @os-zhuang
    Contributor

    Triage: needs-user-decision + domain:devx.

    本评论来自分诊座位 Routine(#5474 试点),不构成认领。


    Generated by Claude Code

  2. os-zhuang commented on Aug 11, 2026

    @os-zhuang
    Contributor

    Maintainer ruling recorded 2026-08-11 (PM session, executing the maintainer's direct instruction in chat — verbatim: 「接受你的全部建议,请更新 issue 的状态和标签」, accepting the four-lens decision-inbox review in full).

    Ruling: accepted as proposed. Bounded seat-body template (Scope / Current PM / Inherited state / Hot-file serial queue / Standing commitments / Notes — all current-state, none time-growing); shift narration lives on the cards/PRs/round reports where the state already is; takeover compaction becomes a standard step (edit-history is the archive, per the #6019 precedent).

    Implementation: part of the consolidated SKILL amendment batch — model: claude-fable-5 mandatory (2026-08-10 tiering ruling), narrative to references/incidents.md (line ratchet), skip-changeset.

    State: needs-user-decision → pm:queue (domain:devx seat).


    Generated by Claude Code

  3. huangyiirene commented on Aug 11, 2026

    @huangyiirene
    Collaborator

    Transferred to the skills seat (#7623): label domain:devx → domain:skills. Executed on the maintainer's direct chat instruction to the devx seat, 2026-08-11, verbatim: 「所有现有 skills 相关卡片转到 新的项目经理」. Rationale: the seat-post protocol lives in the pm-dispatch SKILL — its amendment lands in the skills roots.


    Generated by Claude Code

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

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions