Skip to content

pm-dispatch: a seat re-reads each PR's live state (reviews, merged, queue) before it reports the PR as waiting on the maintainer #26675

Closed

Description

@objectstack-fleet

Filing-gate class ③ — maintainer-directed. The maintainer, 2026-10-27, in the project "objectstack ui devx", after the coordinator relayed a list of PRs as awaiting his approval or merge that he had already handled, verbatim: 「这几个pr 都处理过了,你的消息不及时,如何优化」「是否建议更新到 pm-dispatch skills ,你会阅读那个吗」「立卡」. Filed by the domain:skills#1 seat (session_01ADHkmSrRBdu9MdC6fc33Uu, seat post #7623). ⛔ Not a claim.

What happened (measured): at 12:32Z a pending-approval list (#26661, #26569, #26536, …) reached the maintainer as open asks. #26661 had carried an os-zhuang APPROVED review since 12:18:22Z and was already out of draft; no PR event for that review reached the seat session that watched the PR, and the list was built from session memory, not from a fresh read. The skill's own reading discipline (「读数」, references/reading-discipline.md) is about platform readings in general; nothing names this case: a report to the maintainer that says "waiting on you".

Rule to encode: before any message to the maintainer (chat, round report, push notification, or a relay through the coordinator) names a PR as awaiting the maintainer's approval, merge or action, the writer re-reads that PR's live state in the same act — reviews (an APPROVED from a GOVERNED_APPROVERS account), merged / state, draft, auto_merge, merge-queue membership — and drops or restates every PR whose ask is already met. A PR event subscription is not that reading: an approval or a ready flip may arrive late or not at all.

Where (the dev measures the home; every file is at its ratchet ceiling and the 120-byte line cap): the 推送维护者 line in .claude/skills/pm-dispatch/SKILL.md (same-line clause, paid by a deletion), or one line in references/seat-lifecycle.md 〈轮次报告与节奏〉 / references/coordinator.md §7 (the coordinator relays these lists too). One home, ⛔ not two copies.

Acceptance: the rule is stated once where both a seat and the coordinator read it before reporting; check:pm-skill-ratchet, check:pm-skill-id-lint and check:pm-governed-prose green; no line count rises.
Size: S. Tier S (.claude/**). Clause-②: no · Metadata-protocol: none.

Dedupe: REST list of domain:skills issues (open + closed) grepped for live state, 待批, already approved, stale report → no card on this subject.


Generated by Claude Code

Activity

  1. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    ContributorAuthor

    Triage: first grade — tooling · priority:p2 · domain:skills · area:devpath · pm:queue · triage seat · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-27T13:03Z

    ⛔ Not a claim, ⛔ not a dispatch.

    • p2, maintainer-directed (「立卡」): a seat re-reads each PR's live state (reviews, merged, queued) before reporting it as waiting on the maintainer. Triage made the same class of error today (it reported 18.2.0 blockers after the release had happened, corrected in R702), so the rule should cover every report to the maintainer, not only approval lists. Tier S.

    Generated by Claude Code

  2. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 1
    Session: session_01ADHkmSrRBdu9MdC6fc33Uu
    Account: os-steve (the seat's linked user as GET /user answers it; the card's assignee)
    Branch: claude/project-thread-3afacv (the card thread's harness push branch, self-reported at 2026-10-27T13:46Z — the measured platform exception to claude/issue-N-slug)
    Worktree: objectstack-issue-26675
    Domain: domain:skills
    Seat: domain:skills#1
    File surface: .claude/skills/pm-dispatch/references/coordinator.md §7 (〈语言与汇报〉) only — widen or replace the mergeable_state relay line so one home covers both directions (no-action-needed and waiting-on-the-maintainer); ⛔ no second copy in SKILL.md (stop on breach; explain in the report)
    Container & model: S, mode:thread, model: TIER_DEFAULT (dispatch-gates --tier: no path mandate on references/**), effort: medium. Tier S: draft PR; ⛔ the dev never readies, arms or enqueues it.
    Clause-②: no
    Metadata-protocol: none
    Responsibility: n/a — not a defect card (a maintainer-directed rule)
    Thread-read: 6442580138
    Premise: holds (seat re-measure on origin/main 43731031: coordinator.md §7 names only mergeable_state before relaying 「无需你做」; nothing names the waiting-on-the-maintainer direction)
    Serial constraints cleared: no open PR names coordinator.md (#26627 closed unmerged; #26598, #26693, #26695 touch other files)

  3. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report

    {
      "issue": 26675,
      "status": "done",
      "branch": "claude/project-thread-3afacv",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/26741",
      "session": "session_01ADHkmT9FyDTpYhP8sdb5Hj",
      "premise_still_valid": true,
      "summary": "coordinator.md section 7: the relay line naming only mergeable_state before 'no action needed' is replaced by two 118-byte lines covering every PR state reported to the maintainer: re-read merged, draft, auto_merge, queue membership, reviews and mergeable_state in the same act; a PR can be readied and queued with no APPROVED review so reviews alone is not the reading; drop a PR whose ask is met; dirty still goes back to the thread. Paid by deleting the when-to-report line (homes: SKILL.md push-the-maintainer pair, seat-lifecycle.md round-report line). File 49 -> 49, ceiling 49; SKILL.md untouched; queue-membership spelling left to platform-readings.md.",
      "tests": "none: prose-only .claude change; no tested behaviour changed, no ablation",
      "gates": "head d8594255. Local derived set (dispatch-gates --commands --repo objectstack-ai/objectstack): 17 families, all exit 0 (check:pm-skill-ratchet, check:pm-skill-id-lint 104 files clean, check:pm-governed-merges, check:skill-frame-sync, check:doc-authoring, check:nul-bytes, check:agent-test-spelling, check:cross-package-test-inputs, check:driver-memory-census, check:gitlink-declared, check:refd-timer-probe, check:watch-hint-literal, check-closing-keyword-parity + --self-test, check-comment-mask-corpus, check-harness-current --self-test, lint check:doc-formula-expressions). doc-formula-expressions first exit 3 (prerequisite build missing, NOT MEASURED), green after turbo build of formula+lint under os-verify-lock (VERDICT command-exit 0). Card acceptance check:pm-governed-prose exit 0 (not in derived set). --ran: 17 derived, 17 run, 0 NOT-MEASURED (derived zero). CI check-runs: in_progress at report time.",
      "dogfood_battery": "n/a — no `!` in the PR title and no (narrowing) arm",
      "mcp_calls": "3 — reads only: issue_read get_comments x2 (claim check), pull_request_read get x1 (PR read-back); no MCP write",
      "api_writes": "2 relay strokes — pr_create (POST /repos/objectstack-ai/objectstack/pulls draft + POST /issues/26741/assignees os-steve + POST /issues/26741/labels skip-changeset; read-back byte-identical 4408 B) and this os-dev-report comment (POST /issues/26675/comments via post-stamped.mjs)",
      "deviations": "PR body line 1-2 are the harness attribution block (HTML comment marker + requester line), so `Fixes #26675` is line 3: os-dev clean-finish allows the harness attribution first line, the standard order says first line Fixes.",
      "open_questions": [
        {
          "question": "Which line in coordinator.md section 7 pays for the +1?",
          "options": [
            "A delete the when-to-report line (done; homes SKILL.md push-the-maintainer pair + seat-lifecycle.md round-report line)",
            "B delete the language line instead (homes AGENTS.md Communication + SKILL.md all-seat invariant), keeping the coordinator's own when-to-report line"
          ],
          "recommendation": "A, because the deleted line itself said 'same rule as the seats' and its home binds both readers; B would leave the section heading's language half empty"
        }
      ],
      "out_of_scope_findings": []
    }

    Generated by Claude Code

  4. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    ContributorAuthor

    ACCEPT → PR #26741 comment 6444236874 · domain:skills#1 · 2026-10-27T14:12Z · Tier S; draft until a PASS contract review on the head (requested from the director seat) and the maintainer's act (os-zhuang, hotlong requested).

  5. objectstack-fleet commented on Oct 28, 2026

    @objectstack-fleet
    ContributorAuthor

    Landed · domain:skills#1 · session_01ADHkmSrRBdu9MdC6fc33Uu · 2026-10-28T00:46Z — PR #26741 merged through the queue (merge commit 0b78a20be7): pm-dispatch coordinator.md §7 now requires re-reading merged, draft, auto_merge, queue membership, reviews and mergeable_state in the same act before any PR status goes to the maintainer, in both directions. The card closed by its Fixes line; pm:dispatched stripped in this act.

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

Metadata

Metadata

Assignees

Labels

area:devpathThe road — create, dev, verify, publish/install, connect an agent, iteratedomain:skillspriority:p2Medium: important, M3tooling

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions