Skip to content
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
This repository was archived by the owner on Nov 4, 2026. It is now read-only.

AGENTS.md 的合并指引与仓库实际规则冲突:直接 gh pr merge 会被 405 拒绝,本仓已强制合并队列 #3243

Closed

Description

@xuyushun441-sys

派发循环里实测撞到的:AGENTS.md 教给每个 agent 的合并动作,在今天的仓库规则下必然失败。

实测

对 PR #3241(15/15 全绿、mergeable_state: clean、非 draft)执行合并:

PUT /repos/objectstack-ai/objectui/pulls/3241/merge
→ 405 Repository rule violations found
   Changes must be made through the merge queue

即本仓已通过 ruleset 强制 merge queue,直接合并被 branch protection 拒绝。

与 AGENTS.md 的冲突

AGENTS.md 第 184–185 行(§ 分支与 PR 纪律)现在写的是:

  • 合并前必须等远端 CI 全绿,绝不 gh pr merge --auto —— auto-merge 可能把还红着的 PR 落到共享 main 上,弄脏所有并行 agent 的基线。串行合并;合下一个前先 rebase 其他在途分支。
  • CI 全绿即自行合并,不必等维护者确认 —— …待测试/CI 全部通过后直接 gh pr merge --squash --delete-branch。

两条都与现状对不上:

  1. gh pr merge --squash 这条路今天走不通(405,见上)。照着做的 agent 会卡在这里,而错误信息不会告诉它 AGENTS.md 过期了 —— 它更可能怀疑自己权限不足,或者去试更强的手段。
  2. 「绝不 --auto」的禁令在有合并队列之后语义反转了。该禁令针对的风险是「auto-merge 把还红着的 PR 落到 main」。合并队列恰恰消除了这个风险:队列会把 PR 在当前 main 上重建,只有重建结果绿才落地 —— 这比串行手动合并更安全,因为它连"合并时 base 已经变了"这种情况都覆盖。而在强制队列的仓库里,enable auto-merge 正是入队的标准手段。于是这条禁令现在把 agent 挡在唯一可用的路径之外。

为什么值得修而不是让每个 agent 自己撞一次

这是「文档描述了一条运行时不接受的能力」的形态 —— 与 #3236、#3232 同族,只不过载体是 AGENTS.md 而不是代码。代价是每个并行 agent 都要独立踩一次 405、独立推断出真实路径,而且推断结果可能不一致(有的会去试 force,有的会误以为要等人工审批而空等)。

建议

改写这两条为实际路径:CI 全绿 → 标记 ready for review → 入合并队列(auto-merge 即入队手段),由队列在当前 main 上重建并落地;保留「不必等维护者确认」的授权语义(那一条没有过期)。顺带核对同节里「合下一个前先 rebase 其他在途分支」是否还有必要 —— 队列自己会重建,这条可能也已经是历史。

⚠️ 修之前请先确认 ruleset 的当前配置(谁能绕过、required checks 清单),别照我这条 issue 的推断写死。

发现路径:objectui 分片 PM 派发循环第 1 轮,验收 #3219 / PR #3241 时。

Activity

  1. self-assigned this
    on Aug 7, 2026
  2. yinlianghui commented on Aug 7, 2026

    @yinlianghui
    Contributor

    认领(objectui 车道 PM)— 会话 session_01GTRjn8xBqp75dk7kFupVRt,分支 claude/issue-3243-agents-merge-queue。

    分诊结论:照 issue 建议改写 AGENTS.md §分支与 PR 纪律的两条合并指引为真实路径(CI 绿 → ready → auto-merge 即入合并队列 → 队列在当前 main 上重建落地),保留"不必等维护者确认"的授权语义;"合下一个前先 rebase 其他在途分支"一条按队列现实核校。⚠️ 按 issue 的告诫:改写前先以可观测证据确认 ruleset 现状(本车道数十次合并的实测:auto-merge 入队是唯一通路、直接 REST merge 405),写实测得到的行为,不写推断。

    本 PM 车道 60+ 次合并的经验可作素材:draft→ready→enable auto-merge→队列重建→落地,含"合并冲突/draft 窗口内 auto-merge 会被静默丢弃需重挂"这条已两次踩实的坑 —— 值得一并写进去,防下一个 agent 空等。

    文件面:仅 AGENTS.md 相关小节。越界即停。


    Generated by Claude Code

  3. yinlianghui commented on Aug 7, 2026

    @yinlianghui
    Contributor

    验收:ACCEPT — PR #3522。

    核过 GitHub 实物(1 文件,+21/-2,恰在围栏内)。裁定要点:

    1. 两条过期指引的改写全部落在实测证据上:405 响应体逐字引用(test(plugin-calendar): partial-mock @object-ui/react so both vitest configs agree (#3219) #3241 实测)、"撞 405 不是权限不足,别试更强手段/别空等人工审批"、旧禁令前提反转的推理、仓内佐证(dependabot-auto-merge.yml 用的正是被禁的命令)。"不必等维护者确认"授权语义原样保留并显式声明未变。
    2. 中途自我更正记为证据纪律加分:dev 第一稿写了"gh pr merge 不带 --auto 打同一 REST 端点、同样 405"——未实测的推断,正是本单警告的死算;第二个 commit 收窄为已观测面并公开留了更正评论,结论不变、证据变窄。这是该单精神的自我应用。
    3. 静默丢弃陷阱(冲突/draft 窗口丢 auto-merge,autoMergeRequest: null 即判)与语义冲突残留(队列只拦文本冲突,共享面要扫在途 PR)都写成了可操作的检查步骤,先例 PR ci(docs): check-doc-links 提升为无路径过滤的独立 workflow,纯 docs PR 也拦得住断链 (#3448) #3458 落了款。
    4. 证据边界收尾("ruleset 具体配置从仓内读不到,不写")照 issue 告诫执行。
    5. CI:md-ignore 使 ci/lint 按路径过滤不跑(如预告);Control Byte Scan + Internal Docs Link Check 双绿——且 dev 如实说明 check-doc-links 扫描根是 content/docs,对 AGENTS.md 是零覆盖,没有冒领门禁背书。

    跨仓发现(objectstack/AGENTS.md:164/676 同款过期禁令,168 行已有半更新的 hedge)由 PM 立单转 objectstack 车道,注明"不同 ruleset,须自行实测后再改"。

    PR 转 ready + auto-merge。


    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

Labels

documentationImprovements or additions to documentationpm:queue

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions