You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
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
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.
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.
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/main43731031: 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)
{
"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": []
}
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).
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.
Activity
objectstack-fleet commentedon Oct 27, 2026
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.
Generated by Claude Code
objectstack-fleet commentedon Oct 27, 2026
Claim: PM loop round 1
Session:
session_01ADHkmSrRBdu9MdC6fc33UuAccount:
os-steve(the seat's linked user asGET /useranswers 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 toclaude/issue-N-slug)Worktree:
objectstack-issue-26675Domain:
domain:skillsSeat:
domain:skills#1File surface:
.claude/skills/pm-dispatch/references/coordinator.md§7 (〈语言与汇报〉) only — widen or replace themergeable_staterelay 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 onreferences/**),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/main43731031: coordinator.md §7 names onlymergeable_statebefore 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)objectstack-fleet commentedon Oct 27, 2026
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
objectstack-fleet commentedon Oct 27, 2026
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).objectstack-fleet commentedon Oct 28, 2026
Landed ·
domain:skills#1·session_01ADHkmSrRBdu9MdC6fc33Uu· 2026-10-28T00:46Z — PR #26741 merged through the queue (merge commit0b78a20be7): pm-dispatchcoordinator.md§7 now requires re-readingmerged,draft,auto_merge, queue membership, reviews andmergeable_statein the same act before any PR status goes to the maintainer, in both directions. The card closed by itsFixesline;pm:dispatchedstripped in this act.