docs(agents): shared-identity caution + session-URL PR footer form (#6567) - #6691
Merged
Merged
Conversation
…6567) 在 AGENTS.md 的多 agent 纪律区与 `.claude/agents/os-dev.md` 里各补两件事: 不是自己写下的 PR 状态属于另一个 actor,问 PM,不要单方面「纠正」;以及把 署名 footer 写成 session URL 形式(裸 URL 形式在每次 `update_pull_request` 编辑时被整段剥掉,建单路径则把它改写成 session 形式)。 证据是 #6567 记录的事故:一个 dev 读回自己的 PR 正文,看到没写过的 footer 形式,正确地推断「有东西在改我的 PR」,却把这个结论错误地延伸到 draft 标志, 把 PM 已翻 ready 的 PR 改回 draft —— auto-merge 与合并队列成员资格一并静默 销毁,而 `pull_request_read` 两者都不暴露。 ⛔ 哪一层做的改写(平台 sanitizer / MCP 工具层 / workflow)按分诊裁定留空, 本次不去确定,指引不依赖这个答案。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F8q5J1MQyocgtNspb15fSn
|
The latest updates on your projects. Learn more about Vercel for GitHub. 1 Skipped Deployment
|
os-project-manager
marked this pull request as ready for review
August 8, 2026 12:53
os-project-manager
enabled auto-merge
August 8, 2026 12:53
This was referenced Aug 8, 2026
This was referenced Aug 8, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #6567
Documentation/process only. Two focused additions, in the two places the triage ruling named, and nothing else.
What landed
1.
AGENTS.md— "Multi-agent working discipline", right after the shared-identity claim paragraph.Two new paragraphs:
update_pull_request每次编辑都剥掉尾部_Generated by [Claude Code]_footer —— 只剥裸 URL 那种,带 session URL 的存活;它被误读成「机器在改我的 PR」,已造成一次 auto-merge 静默销毁 #6567 incident is cited as the worked example, including the part that makes it expensive — flipping a ready PR back to draft drops auto-merge and merge-queue membership at once (cross-referenced to §7's third re-arm situation), andpull_request_readreports neither, so the agent could not see what it had destroyed.The placement is deliberate. The paragraph immediately above already ends with "misreading shared-identity state is also how a maintainer's manual ready-flip got reverted by an agent that assumed its own write had failed" — a one-clause version of the same class. The new paragraph generalises it and adds the second incident rather than restating it, so neither sentence is left redundant.
2.
.claude/agents/os-dev.md— three touches.Premise re-verification (before writing any of it)
The issue body is a lead, so the load-bearing claim was re-checked against the live API rather than taken on trust:
pull_request_read geton #6556 — the stored body, not the rendered page_Generated by [Claude Code](https://claude.ai/code/session_01BDmDsu2575gDxeMCxXhDE3)_. Holds.https://claude.ai/codeform and are intactThe strip itself was not re-run as a fresh experiment: reproducing it means deliberately writing a footer form this PR is telling everyone not to write. The filer reproduced it twice on #6556 and that record is what the guidance cites. What this PR does verify live is the half it actually recommends — this body is written in the session-URL form, and it is expected to survive every
update_pull_requestedit made while the PR is open.⛔ Deliberately not established: which layer strips the footer (platform sanitizer / MCP tool layer / a workflow's body post-processing). The triage ruling says the fix does not depend on the answer, so no cycles were spent on it, and both new passages record the cell as blank instead of guessing.
Deliberately omitted
.claude/skills/pm-dispatch/SKILL.mdwas not touched. It is a known contention surface — #5925 holdspm:dispatchedon a card whose deliverable edits that file. Nothing in this change needed it: SKILL.md carries no footer requirement (the footer comes from the harness, not the repo template), and the ready-flip ordering note it owns is already cross-referenced fromAGENTS.md§7 rather than duplicated.Gates
Run after
git commit, enumerated from.github/workflows/lint.ymlrather than from memory. Every gate in the ESLint job, plus the.claude-reading gates from the TypeScript Type Check job:check:nul-bytesOK (scanned 6235 tracked text file(s) ... no raw ASCII control bytes)check:doc-authoring365 files cleancheck:role-wordOK (44 baselined file(s), no new occurrences)check:docs-audit-scope,check:quick-reference-counts,check:adr-anchors,check:org-identifier,check:authz-resolver,check:service-providers,check:route-envelope,check:error-code-casing,check:wildcard-fallthrough,check:meta-type-normalized,check:init-service-contract,check:durability-log-level,check:startup-registry-verdict,check:objectui-changeset,check:release-notes,check:release-body,check:node-version,check:workflow-status-functions,check:slot-lookup,check:query-options-erasure,check:verify-stand-inEXIT=0check:skill-frame-sync4 copies of the decision frame are structurally isomorphic across 3 files— the frame lives inos-dev.mdtoo, so this is the gate that would have caught a careless edit therecheck:skill-frame-freshness,check:skill-compatibility,check:empty-changeset,check:published-filesEXIT=0pnpm lint(ESLint,eslint . --no-inline-config)LINT_EXIT=0grep -naPcontrol-byte self-scan of both edited filesNo test suite applies: the change adds no runtime code and no test surface.
pnpm typecheckhas no input here for the same reason — neitherAGENTS.mdnor.claude/agents/os-dev.mdis in any TS program. CI's full TypeScript Type Check job still runs and is being watched.Changeset
None, and
skip-changesetapplied. This PR changes onlyAGENTS.mdand a.claude/agent definition — the agent operating manual. It publishes no package, changes no runtime behaviour and reaches no consumer, so there is nothing for a changeset to describe in a release.Generated by Claude Code