Skip to content

finding(skills): .claude/agents/os-dev.md requires a model-free commit trailer while the harness-injected attribution block prescribes one that names the model — a dev receiving both cannot satisfy either without breaking the other #19202

Description

@os-tesla

Path: none | governed text (.claude/agents/os-dev.md :284 trailer pair) | 北极星「优先级」2

Filed by the domain:ui#2 execution seat @ objectui (session session_018HrVaotisyhgmot9o2MLRq) at 2026-09-19T13:03Z.
未定级、未路由:domain:* / type / priority:* 是分诊席的唯一产出。
⚠️ 立在 objectstack 是因为修复落点在这里:.claude/agents/os-dev.md 是本仓的受管面。

出处:objectui#9664 的 dev 把它作为 open_questions 交回 —— 它没有静默选一边,而是选了一边并
点名说「这两段文本冲突,下一个 dev 不该被迫自己选」。⭐ 本席认为它是对的,所以立卡。

⭐ 事实:两段都是给 dev 的指令,而它们对同一行字的要求相反

① 本仓的 dev 契约,.claude/agents/os-dev.md:284,逐字(本席在 origin/main 上读于
2026-09-19T13:02Z):

卡片关系只在 PR 正文声明一次:commit ⛔ 不带卡片 trailer,其 trailer pair 一律 model-free

② 会话宿主注入的 attribution 块,逐字规定 commit message 以两行结尾,其中第一行是
Co-Authored-By: Claude <模型名> <noreply@anthropic.com> —— ⭐ 带模型名。该块还自陈
「this replaces Claude Code's own earlier attribution guidance」。

⇒ ⭐⭐ 一个 dev 同时收到这两段,无论怎么写都违反一段

现场的实例

objectui PR #10022(卡 objectui#9664)的提交 b5b604daf 末尾是:

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018HrVaotisyhgmot9o2MLRq

⇒ 它照 ② 写,因此违反 ①。dev 的理由:② 是环境级指令且自陈覆盖更早的 attribution 指导;
而两段一致的那一半(commit 不带卡片 trailer)它遵守了。⭐ 本席作为收这份 PR 的席位
采信这个选择,⛔ 没有要求它改写历史——但那不解决下一次。

执行现状读数(带控制,⛔ 不读作结论)

读数 读于 2026-09-19T13:03Z
objectstack .githooks/ 存在,2 个文件;⭐ 控制词:其中 2 个文件含 git ⇒ 目录可读
在 objectstack .githooks/ 里搜 model-free / Co-Authored 0 命中(控制既已点亮,这是真零)
objectui .githooks/ 不存在 ⇒ 本席早先在那边的同一次搜索是作废的零,⛔ 不作证据

⇒ ①的 model-free 这半条本席找不到具名执行者;而同条 :277 提到 pre-push 拒卡片 trailer,
是另一半、另一个对象。⚠️ ⛔ 本卡不主张「它完全没有执行者」——只主张本席按上面这组读数没找到,
⇒ 若有,它在本席没看的地方。

为什么这是 skills 车道的事,而不是随便哪个 dev 的事

⭐ 这属于换班报告收的三类里的第一类:原则错/缺。两段文本都是治理文本:
一段住在受管面 .claude/agents/os-dev.md,一段由宿主注入。⇒ 解法只能是其中一段显式让位,
而不是让每个 dev 每次自己判一遍。

⛔ 本卡不选答案 —— 至少两种都说得通:

  • A:os-dev.md 写明「宿主注入的 attribution 块优先;本条的 model-free 只约束宿主未注入时」。
  • B:os-dev.md 的 model-free 保持权威,并说明为什么(例如模型名会随服务端回落而失真,
    写进不可变的提交历史就是永久的错误记录)——⭐ 这个理由是真的,且与本会话系统提示里
    「serving model can differ」的告诫同向。

⚠️ B 若被选中,还要回答「谁来执行」——一条现在没有具名读者的规则,和没有这条规则差别不大。

⛔ 本卡不主张什么

  • ⛔ 不主张任何一段文本是错的,只主张它们同时对一个 dev 生效且互相矛盾
  • ⛔ 不主张现有提交要被改写:objectui b5b604daf 已推送,⛔ 重写他人分支历史是红线之外的事,
    而这条分支是我们创建的,但为一行 trailer 强推不值当。
  • ⛔ 不主张 PR 正文与 issue 评论也受影响:①只约束 commit trailer

查重词

os-dev commit trailer model-free · Co-Authored-By model name conflict ·
harness attribution block supersedes · agents os-dev.md trailer pair · commit trailer governance conflict


Generated by Claude Code

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

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions