Skip to content

finding(docs): AGENTS.md describes the queue guard's merge_group refusal as the approval predicate alone — objectui#9018 added a second, independent one and that paragraph is governed surface #9213

Description

@baozhoutao

Found while implementing objectui#9018 (PR objectui#9212). Filed unassigned and NOT folded into that PR: the paragraph lives in AGENTS.md, which is governed surface (AGENTS.md · CLAUDE.md · .claude/** · skills/** · docs/adr/**), and objectui#9018's dispatch fenced the governed surface out of scope explicitly. Generated by an agent seat; this paragraph is the attribution, deliberately written as prose rather than as a footer block.

What

AGENTS.md § 受管面 carries one long paragraph describing the mechanical backstop. Its account of what the queue leg refuses on is, verbatim:

merge_group 腿才是会拒绝的那条 —— 它要求 GOVERNED_APPROVERS(os-zhuang / hotlong)里某个账号的一条 latest-decisive APPROVED review,留在哪个 commit 上都算;DISMISSED 与被顶掉的批准(同一 reviewer 后续给了 CHANGES_REQUESTED)不算,该集合之外账号的 APPROVED 不算,review 列表为空或读不到则 fail closed

That is stated as the predicate of the refusing leg, with no "among others". After objectui#9018 / PR objectui#9212 it is one of two independent predicates on that leg:

leg predicate exits
governed surface an authorized latest-decisive APPROVED review record 3 · 4 · 5
contract-review carrier (new) no queued pull request carries needs:contract-review 6 · 7

⇒ a merge group whose diff touches nothing governed at all can now be refused by this check. The paragraph as written says the opposite by omission, and it is read by every dispatch.

Why the existing caveat does not already cover it

The same paragraph carries:

⛔ 别再把本段当成兜底工具的完整清单 —— 覆盖面以脚本自己的 GOVERNED_SURFACES 为准(它随树变化,本段不会)

That caveat delegates the surface list to GOVERNED_SURFACES. It does not delegate the predicate list, and the new leg reads no surface at all — it reads a label on the pull request. A reader following that caveat to GOVERNED_SURFACES finds nothing about the carrier.

Measured

On origin/main at ad80b06ff2c9843eaa10c32ad86011877f327c63 plus PR objectui#9212's head:

git grep -c "needs:contract-review" -- AGENTS.md
  -> 0          (code-only count: 0; raw count: 0)
git grep -n "EXIT_REFUSED_CARRIER" -- scripts/check-governed-queue-guard.mjs
  -> scripts/check-governed-queue-guard.mjs:258:export const EXIT_REFUSED_CARRIER = 6;
     scripts/check-governed-queue-guard.mjs:259:export const EXIT_REFUSED_CARRIER_UNREADABLE = 7;

content/docs/guide/ci-cd-pipeline.md — which is not governed — was updated in PR objectui#9212 for exactly this reason, including the now-false sentence it carried verbatim ("an API outage cannot block a diff that touches no governed path", which the carrier leg took away on the merge_group leg). AGENTS.md was left alone because it may not be touched by that PR.

Not proposing the wording

What the paragraph should say is a maintainer's call, not a seat's, and the file is governed precisely so that it is. This issue records only that the paragraph and the script now disagree, and that the disagreement points in the permissive direction: a reader of AGENTS.md would conclude an ordinary, non-governed pull request can never be refused by this check, which is no longer true.

⛔ Not blocking anything: the guard is still not a required context on main (objectui#6596's Maintainer-action: line), so both predicates report rather than block.

Refs: objectui#9018 · PR objectui#9212 · objectui#6596 · objectstack-ai/objectstack#17040

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentationdomain:devxobjectui devx stream: fix lands on .github/, scripts/ or release pipeline — devx lane cross-repopm:queuepriority:p2

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions