Skip to content

docs(pm-dispatch): carry UNRECOGNISED gate rows into the round report - #10837

Merged
hotlong merged 1 commit into
mainfrom
claude/issue-9884-round-report-unrecognised
Aug 22, 2026
Merged

docs(pm-dispatch): carry UNRECOGNISED gate rows into the round report#10837
hotlong merged 1 commit into
mainfrom
claude/issue-9884-round-report-unrecognised

Conversation

@os-zhuang

Copy link
Copy Markdown
Contributor

Fixes#9884

What

Adds one item to the pm-dispatch round-report template (.claude/skills/pm-dispatch/SKILL.md, section 轮次报告与节奏): the PM seat greps UNRECOGNISED over the round's gate logs and carries the rows through verbatim — NOT APPLICABLE rows included — with one clause of why: an absent row cannot be told apart from "nobody looked". The full rationale lives on #9747 (the ruling) and PR #9875 (which shipped the stable, exit-0 UNRECOGNISED prefix); this PR deliberately does not restate it. #9747 remains open and is not addressed here.

Deliberately not wired into any gate or CI check: the prefix is visibility-only output by design, and making it load-bearing is explicitly out of this card's scope.

Shape of the diff

  • One file, net one line: 1 insertion / 1 deletion inside .claude/skills/pm-dispatch/SKILL.md. Nothing else is touched.
  • The addition is folded into the existing report-contents sentence as one long line on purpose: the skill line ratchet (pnpm check:pm-skill-ratchet) pins this file at a 682-line ceiling with zero headroom, raising a ceiling requires a maintainer ruling quoted in the PR, and the ratchet script is outside this card's allowed file surface — so the file stays at exactly 682 lines. Long lines are precedented in this file (up to 1384 chars).

Governed surface

.claude/** is a governed surface (AGENTS.md Prime Directive 14). This PR stays draft, is never armed, and waits for a human merge — that is the rule working, not the task stalling.

Gates — all run at 5d391775e9 (this PR's head), union derived with node scripts/pm/dispatch-gates.mjs (no paths passed; 7 matched families) plus check:nul-bytes

gateits own verdict line
pnpm check:nul-bytescheck-nul-bytes: OK (scanned 6254 text file(s) -- 6254 tracked, 0 untracked-not-ignored; skipped 5 binary; no raw ASCII control bytes).
pnpm check:doc-authoring✓ doc authoring guard: 389 files clean — no bare metadata literals.
pnpm --filter @objectstack/lint run check:doc-formula-expressions✓ check:doc-formula-expressions: 22 record-scoped formula example(s) across 416 files / 1443 TS blocks judged clean by @objectstack/formula.
pnpm check:pm-governed-merges✓ check-governed-merges --self-test: 90 assertions (…)
pnpm check:pm-governed-prose✓ check-governed-prose: 2 instruction surface(s) name all 5 registered governed surfaces (docs/adr/** · .claude/** · skills/** · AGENTS.md · CLAUDE.md) and claim no others.
pnpm check:pm-skill-id-lint✓ check-skill-id-lint: 17 file(s) clean (pattern /#[0-9]{3,}/g).
pnpm check:pm-skill-ratchet✓ check-skill-line-ratchet: .claude/skills/pm-dispatch/SKILL.md is 682 lines (ceiling 682; headroom 0).
pnpm check:skill-frame-sync✓ check-skill-frame-sync: 4 copies of the decision frame are structurally isomorphic across 3 files

An earlier draft of this change added the item as two wrapped lines; check:pm-skill-ratchet went red at 684/682, which is what forced the single-line form above. Exit codes were captured with redirect-then-capture, never through a pipe.

Changeset

skip-changeset: this PR edits internal agent tooling under .claude/ only — nothing under packages/** changes, nothing publishes to npm.


Generated by Claude Code

The round-report template now instructs the PM seat to grep UNRECOGNISED
over the round's gate logs and carry the rows through verbatim, NOT
APPLICABLE rows included — an absent row cannot be told apart from
"nobody looked" (#9747 ruling, shipped by PR #9875).
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DdCnBGcHeufjrq7drTD3wt
@github-actionsgithub-actionsBot added size/xs documentation Improvements or additions to documentation labels Aug 21, 2026
@claudeclaudeBot added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Aug 21, 2026
@claude

claudeBot commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

⚠️ 这个 PR 拿不到 governed 面唯一的推送通道 —— 记录在案,别当它已经排队

domain:devx PM 席(#6023,session session_01DdCnBGcHeufjrq7drTD3wt)。

.claude/skills/pm-dispatch/SKILL.md:501-510 的「终局四件套」,governed 面 PR 的第③条是在 draft PR 上 request review os-zhuang —— 维护者 2026-08-19 裁定,并当日实测「推送到了」,且同日明确「推送通道仅此一条」。

这条对本 PR 执行失败了:

PUT /repos/objectstack-ai/objectstack/pulls/10837/requested_reviewers
→ failed to request reviewers: Review cannot be requested from pull request author.

原因:本 PR 的 author 是 os-zhuang 本人(不是 claude[bot])。GitHub 不允许把审核请求发给 PR 作者自己。同一轮里 #10718#10777 的 author 是 claude[bot],两条都请求成功了 —— 差别只在建 PR 时用的是哪个身份。

为什么值得写下来,而不是耸耸肩

第④条那句括号是这么写的:「等人来合」与「被忘了」在 GitHub 上长得一模一样。四件套里②留 draft、③进 Review-requested 队列,合起来才让「悬着」变成看得见地悬着。第③条失效后,本 PR 落在的正是那句话描述的状态:它是绿的、是 draft、不在任何队列里、没有任何推送发出去。

⇒ 本 PR 的「等人合」只活在轮次报告里,不在维护者手机上,也不在 Review-requested 队列里。读到这条的下一个人请不要假设它已经排上了。

已立案

约定隐含了一个前提 —— governed PR 的 author 永远不是 os-zhuang —— 而这个前提不成立。已作为独立 finding 提出(见下方回链),因为修法是技能面的事(.claude/skills/** 本身就是 governed 面),不该由我在这里就地改。

⛔ 本 PR 其余纪律不变:保持 draft、⛔ 永不翻 ready、⛔ 永不入队、⛔ 永不挂 auto-merge,等维护者人工合并 —— 人工合并即审核记录。

内容侧状态(复核结论,第①条):diff 为 .claude/skills/pm-dispatch/SKILL.md 单文件 +1/−1;check:pm-skill-ratchet 把该文件钉死在 682 行零余量,所以改动折进既有长行、行数不变 —— 这是门禁逼出来的形式,不是随意压行。Check Changeset 起初红,原因是缺 skip-changeset 标签(本 PR 不发布任何 npm 包);标签已按加法式 POST 补上并读回,门禁重跑后为 skipped。八族门禁在 5d391775e9 全绿。


Generated by Claude Code

@github-actions

Copy link
Copy Markdown
Contributor

⛔ merge queue 构建失败 — 先分诊,再决定要不要重排

队列构建 32559617481 红了。队列跑的是全量套件(PR 侧 CI 只跑 affected 子集),
所以失败的测试可能在本 PR 没碰过的包里 —— 那不是重排能修的。每次盲目重排都会让排在后面的所有 PR 重建一轮。

失败的 job(日志抽取,best effort):

  • Console Pin Gate — 失败步骤: Build the Console SPA at the pinned objectui SHA

    ✗ Build failed in 6.13s
    

↳ 失败原因 是判读的关键:超时Test timed out in … / Hook timed out in …)多半是负载/时序,不是本 PR 的回归;
断言AssertionError: …)才指向真实的行为改变。两者的 FAIL 行长得一模一样,只有这一行能区分。

跨 PR 相同签名(24h,按失败测试文件聚合):

  • ⚠️本次没有可用的聚合签名(日志里没有能解析出测试文件名的 FAIL 行)—— 这不是「没有同签名的其他 PR」,是这一轮没测到。跨 PR 聚合本次不可用,请手工比对其他 PR 的同类评论。
  • ⚠️ 24h 评论账本没读完(超过 5 页仍未读到窗口尽头),所以上面的「不同 PR 数」是下界,不是全量。

历史信号:

  • 本 PR 过去 24h 无队列失败记录(首次)。
  • 过去 24h 队列共有 84 个失败构建(不含本次)。

分诊清单:

  1. 失败测试在本 PR 改动的包里 → 真回归,修 PR。
  2. 失败测试与本 PR 无关 → 看上面的「跨 PR 相同签名」;已有汇总 issue ⇒ flaky/环境问题实锤,去那张 issue 上谈,修好前重排只会再烧一轮全队列。
  3. 两者都不是 → 可能与同组 PR 语义冲突;等前面的 PR 落地或失败出队后再重排一次即可,不要连续重排。

Generated by Claude Code · merge-queue-triage workflow (#4859)

Merged via the queue into main with commit 35ad326Aug 22, 2026
26 of 27 checks passed
@hotlong
hotlong deleted the claude/issue-9884-round-report-unrecognised branch August 22, 2026 07:38
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentationImprovements or additions to documentationsize/xsskip-changesetPR has no user-facing published change; bypasses the changeset gate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

pm-dispatch round-report template should carry the UNRECOGNISED rows (governed surface, mandatory fable)

3 participants

@os-zhuang@hotlong@claude