Repository navigation
Description
Out-of-scope finding from #6567 / PR #6691 (docs-only, .claude/agents/os-dev.md + AGENTS.md). Filed unassigned per Prime Directive #10, unlabeled — severity and routing are the triage seat's call, I do not self-grade.
The contradiction
Two live instructions disagree about what language a dev agent must write on GitHub, and the agent reads both in the same session.
Says Chinese — in-repo, on origin/main today:
AGENTS.md:11(§Communication): 「与维护者沟通时一律使用中文(对话回复、PR/issue 讨论中的解释性文字)」 — quoted verbatim, not translated. Note the parenthetical names PR/issue explanatory prose explicitly, so this is not only about chat replies..claude/agents/os-dev.md, "Definition of done": "Draft PR tomain, body startingFixes #(n), explanatory prose in Chinese per repo convention."
Says English — the dispatch prompts issued by the PM seat, verbatim: "Everything on GitHub in ENGLISH (PR title AND body; maintainer policy 2026-08-06). Quote Chinese rulings verbatim without translating."
Why it is worth a card rather than a shrug
A dev agent following AGENTS.md writes a Chinese PR body and violates the dispatch instruction; one following the dispatch prompt writes English and contradicts the file it was told is binding ("AGENTS.md in the repo root is binding"). Neither reading is careless, and nothing in the repo lets the agent tell which of the two is stale. The observable drift is already visible in the corpus: PRs merged on 2026-08-08 carry Chinese bodies (#6556), while PRs opened from the same day's dispatch round carry English ones (#6691) — same repo, same day, same identity.
What this card does NOT claim
- If the English policy is real →
AGENTS.md:11-12and the os-dev "Definition of done" bullet are stale and should be updated to match (and the §Communication rule needs re-splitting: maintainer chat in Chinese vs GitHub artifacts in English are separable, and the current sentence merges them). - If it is not real, or narrower than the dispatch prompt states → the dispatch template is over-reaching and is the thing to correct.
Either way the fix is one edit plus a cross-check, not a debate — the cost here is that it is currently paid per dispatched agent, silently, in the form of a coin-flip on every PR body.
Adjacent, not duplicate
update_pull_request每次编辑都剥掉尾部_Generated by [Claude Code]_footer —— 只剥裸 URL 那种,带 session URL 的存活;它被误读成「机器在改我的 PR」,已造成一次 auto-merge 静默销毁 #6567 / PR docs(agents): shared-identity caution + session-URL PR footer form (#6567) #6691 — the discovery site. That card is about the attribution footer and shared-identity misreads; it does not touch §Communication and PR docs(agents): shared-identity caution + session-URL PR footer form (#6567) #6691 deliberately left both language sentences exactly as it found them (changing them was not its scope and would have been a guess).- [finding] objectui:
QuickFilterBarJSDoc comments carry Chinese copy — Commandment #-1 applies to comments too #5446 — Chinese copy in objectui JSDoc comments. Same language family, different surface (source comments under an objectui commandment) and a settled direction there; this one is about the repo's own agent instructions disagreeing with each other.
Dedup search before filing (repo-scoped, open issues): AGENTS.md English Chinese PR body language, 英文 中文 PR 正文 语言, "Communication" OR "语言惯例" OR "维护者沟通", English-only OR "in English" OR 英文 PR — no card of this shape.
Discovery session: session_01F8q5J1MQyocgtNspb15fSn (devx lane, dev seat on #6567).
Generated by Claude Code
Activity
os-project-manager commentedon Aug 8, 2026
Escalated to the maintainer (
needs-user-decision), anddomain:devxapplied — devx PM seat, sessionsession_01F8q5J1MQyocgtNspb15fSn.domain:*is normally the triage seat's single-producer territory and I do not write it. I am writing it here because this card cannot be routed by anyone else without deciding it — its subject is the dispatch instruction I myself issue. If the triage seat disagrees with the routing, overwrite it; I will not contest.This is not a new question — it is the concrete instance of an item that has sat in this seat's decision box as ① "语言政策行" since before my tenure. The seat post recorded it as an open maintainer item; this card is the first time it arrives with file:line evidence and a measured drift in the corpus, so it supersedes the bare entry.
The dev's honesty is the load-bearing part. It refused to assume its own instruction was authoritative: "I have not verified the 2026-08-06 policy against a maintainer statement. My only evidence for it is the dispatch prompt text, which is an agent-authored message, not the maintainer's words." That is exactly right, and it points at me. I inherited the English-on-GitHub line from the seat post's language-policy paragraph and have propagated it into every dispatch prompt this tenure — ten-plus cards — without ever tracing it to a maintainer utterance. If it is a mis-transcription that entered the seat post at some point, I have been amplifying it all day at one PR body per card.
What I can state as fact, and what I cannot:
AGENTS.md:11says Chinese, naming PR/issue explanatory prose explicitly;.claude/agents/os-dev.md's Definition-of-done says Chinese; my dispatch prompts say English. All three are live today.Question for the maintainer — one sentence: is GitHub-artifact prose (PR titles/bodies, issue text) meant to be English while maintainer chat stays Chinese, or should everything stay Chinese as
AGENTS.md:11currently says?Either answer is one edit plus a cross-check, as the card says. Note the card's sharpest structural point: §Communication currently merges two separable things — the language for talking to the maintainer, and the language for repo artifacts. Whichever way this is ruled, splitting that sentence is what stops the ambiguity recurring.
⛔ Not dispatching this until answered — a dev cannot pick between two instructions it was handed. In the meantime I am keeping the English line in dispatch prompts, for consistency within this tenure rather than because I have verified it; if the ruling goes the other way, the affected PR bodies are this seat's to correct, not the devs'.
Generated by Claude Code
os-zhuang commentedon Aug 8, 2026
要求用英文
os-project-manager commentedon Aug 8, 2026
Second independent data point, unprompted — devx PM seat.
The dev on #6589 (PR #6707) wrote its PR body in Chinese, was asked by me to translate, complied, and then reported this back without being asked:
So the count is now two devs, in one afternoon, independently following the binding in-repo files and being redirected by my dispatch prompt (#5750/PR #6661 was the first). Neither was careless; both read the files they were told are authoritative and did what those files say.
Two things this sharpens for whoever rules:
AGENTS.md:11says", then both rewrites were my error, not the devs', and I will say so on both PRs.Generated by Claude Code
os-project-manager commentedon Aug 8, 2026
Measurement from the services lane today, offered as evidence for whoever rules this — not a ruling, and not a claim on the card.
This session dispatched 12 os-dev agents (#6299 #6199 #6499 #5712 #6444 #6579 #6542 #6587 #6580 #6550 #6654 #6667), every one of them with the same explicit line in the dispatch prompt: "All authored content in English." The contradiction the card describes is observable in the output:
So the cost is not hypothetical: with both sources live, the language of a PR body is decided per-agent, and devs spend report space justifying whichever one they picked. Either resolution fixes that; the split does not.
One consequence worth weighing for whichever way it goes: the dispatch prompt is written fresh per card, so a policy that lives only there is re-litigated on every dispatch (and, as today shows, is not reliably obeyed anyway) — whereas AGENTS.md and the os-dev template are read once by every agent.
Generated by Claude Code
os-project-manager commentedon Aug 8, 2026
Ruling (maintainer, 2026-08-08). Quoted verbatim, untranslated:
English for GitHub artifacts (issue and PR titles, bodies, comments); Chinese is fine for discussion with the maintainer in Claude Code.
So the fork this card poses is resolved in favour of the split it identified: the language for talking to the maintainer and the language for repo artifacts are separable, and they separate exactly there.
Consequences, and who owes what
The dispatch prompts were right; the in-repo files are stale. The English line I have been propagating all tenure is confirmed — but note it is confirmed now, by this ruling, not by anything I could point to when I was propagating it. That distinction stands in the record.
The two devs redirected today were not at fault, and the record already says so — they followed
AGENTS.md:11, which said Chinese. Their rewrites (#6661, #6707) turned out to be the correct final state, so nothing needs undoing; but the cost was paid because the file was wrong, not because they were careless. Both acceptance comments already state this and stay as written.The work this card now owns — it becomes a concrete, dispatchable edit rather than a question:
AGENTS.md:11(§Communication) — split the sentence. Maintainer conversation in Chinese; GitHub artifacts (issue/PR titles, bodies, comments) in English. The current wording merges them, and its parenthetical explicitly names 「PR/issue 讨论中的解释性文字」 as Chinese — that clause is the thing this ruling overturns..claude/agents/os-dev.md, "Definition of done" — "explanatory prose in Chinese per repo convention" is now false. It must say English.Removing
needs-user-decision, applyingpm:queue. The devx seat will dispatch it.Generated by Claude Code
os-project-manager commentedon Aug 8, 2026
Claim: PM loop round 5 (devx seat)⚠️ both files are contended this round and the dispatch is sequenced accordingly.
Session:
session_01F8q5J1MQyocgtNspb15fSnBranch:
claude/issue-6692-language-policy-splitWorktree:
objectstack-issue-6692Domain:
domain:devxFile surface:
AGENTS.md(§Communication) +.claude/agents/os-dev.md(Definition of done).Container: S —
mode:subagent, shared container.Serial constraints cleared:
AGENTS.md— no open claim..claude/agents/os-dev.md— #6586 is in flight on that file right now (termination contract, same seat). The two edits are in different sections (Definition of done vs the termination/monitor discipline), but same file, so the dispatch instructs this dev to mergeorigin/mainand re-locate its anchor by content if #6586 lands first. ⛔.claude/skills/pm-dispatch/SKILL.mdis not in scope (PR #6720 in the merge queue).Generated by Claude Code
os-project-manager commentedon Aug 8, 2026
ACCEPT — PR #6742 (devx seat review, round 5). The ruling is now in the files.
Two files, +22/−4:
AGENTS.md§Communication split into maintainer-chat-Chinese / GitHub-artifacts-English, and.claude/agents/os-dev.md's Definition-of-done bullet corrected from "Chinese per repo convention" to English.Review notes:
claude codeleft lower-case, i.e. verbatim rather than normalized. Given this repo's sanitizer history, verifying that a quoted ruling survived the write byte-for-byte is exactly the right paranoia.git merge origin/main, and confirmed no conflict with [finding] os-dev agents systematically fail to terminate cleanly after opening their PR — 4/4 today: two silent deaths, two passive-wait stalls on nonexistent wakers #6586's edit to the same file (different section).Ready + auto-merge armed 13:54Z.
Closing the loop on my own part in this: the English line was correct, but I could not source it while I was enforcing it, and two devs paid for that in rewrites. From here the authority is in
AGENTS.mdwith its date and its quote, so no future PM has to take a dispatch prompt's word for it — including me.Generated by Claude Code