docs(skills): 拒收类用例最低断言 code + status,不是「它抛了」—— 三份 os-dev / pm-dispatch 文本同步落条款 (#6144) - #6233
Merged
Merged
Conversation
三份 os-dev / pm-dispatch 文本的验证纪律章节同步落条款,动机写死 #6142 实测的两种 失明机制(裸 Error 恒绿 / 从不抛的 transport 红得不指向缺陷)。 - .claude/agents/os-dev.md:反向验证块之后新增 "Rejection-class cases assert the envelope, not the throw"(dev 侧机制条款,英文,随该文件语种)。 - .claude/skills/pm-dispatch/SKILL.md:step 5 新增派发令标准条款(带适用判据 + 原话引文),step 7 新增复核侧对账条目 —— 按该文件既有的「派发条款 + 复核条目」 配对惯例(pin 翻转那条即此形)。 - skills/objectstack-pm-dispatch/SKILL.md:step 7 复核判据 + 内嵌 dev 模板的独立 段落(两处,与该文件既有验证纪律项的分布一致);按 #5451 route B 泛化,不带本仓 issue 号、不出现 role 一词。 ⛔ 未触碰三轴决策框架:check:skill-frame-sync 改前改后均绿(4 copies / 3 axes / binding sentence present in all 4)。 ⛔ 未改动任何测试套件、驱动代码或其他 skill —— 存量拒收套件的回填是另一张单 (#6144 分诊的范围闸)。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BDmDsu2575gDxeMCxXhDE3
|
The latest updates on your projects. Learn more about Vercel for GitHub. 1 Skipped Deployment
|
hotlong
marked this pull request as ready for review
August 7, 2026 11:50
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 #6144
按 #6144 的定稿口径(PM 认领评论 5216248198)与分诊评论 5212181851 的范围闸落地:
条款写进 os-dev / pm-dispatch 三份文本的验证纪律章节。⛔ 不改任何测试套件、驱动代码或
其他 skill —— 存量拒收用例的回填是另一张单。
前提复核(先做的第一件事)
回读 PR #6142 正文,issue 引用的两组数字逐条对上,措辞也对得上:
driver-sqlUndefined binding(s)—— 一个code/status均为undefined的 Error,refusalOf正常返回、只有信封断言失败driver-tursoremote#6142 原文的推论一字未改地成立:只断言「它抛了」的拒收用例,会在本 issue 所针对的
那个驱动上保持绿色 —— 未修的驱动本来就抛,只是抛的是没有信封的裸错。两种机制方向
相反,却是同一个洞:断言只有一位信息,而缺陷有两位。
三份文本的落点章节也逐一复核过,均在
origin/main(a560537)上原样存在,没有移动或改名。
逐文件落点
1.
.claude/agents/os-dev.md(英文,随该文件语种)落点:
Reverse verification — decide the expected direction BEFORE you run it.三方向块之后、
Key-vs-value reachability criterion.之前。理由:这条条款本身就是一次反向验证测出来的(#6142 预判方向再实测),而它的
下一条邻居
Key-vs-value讲的正是「断言要对准规则真正判的那件事」。三段连起来是一条递进:先决定该往哪个方向红 → 拒收类用例至少要能红 → 断言对准判据。落在别处会把这条
递进拆断。格式沿用该文件既有惯例(粗体首句 + 破折号 + 带实测数字的两条 bullet)。
新增(节选):
2.
.claude/skills/pm-dispatch/SKILL.md(中文,随该文件语种)—— 两处该文件既有惯例是**「派发条款 + 复核条目」成对**:pin 翻转那条就是这个形状(step 5 两行
were the old position's pins flipped repo-wide?,后者显式回指step 5's two lines)。本条按同一形状落两处:(a) step 5,
多面组件…派发令的标准条款之后、Issue 正文是线索,不是规格之前。沿用邻居那条的完整骨架:粗体首句以「—— 派发令的标准条款。」收尾 →
适用判据:→满足时派发令带这一句(原话):+ 引文 → 实测出处。引文里带上范围闸,免得条款本身诱发存量套件回填:
(b) step 7 复核清单,
A ruling-implementation PR: were the old position's pins flipped repo-wide?之后。 与它同族(两条都是「拒收断言还担不担载荷」),并按该清单的惯例回指 step 5:
没有这条,step 7 那句
Test evidence … not a bare "tests pass"只挡得住「没贴输出」,挡不住「贴了真实输出、但那条断言根本红不了」—— 而 #6142 实测的恰恰是后者。
3.
skills/objectstack-pm-dispatch/SKILL.md(英文,已发布)—— 两处该文件是发布给第三方的泛化版,而且它自带一份内嵌 dev 模板 —— 这正是 frame sync
门禁说的「四份拷贝、三个文件」里它占两份的原因。既有验证纪律项在这份文件里就是两处
分布的(
Test evidence …在 step 7 复核侧,capture REAL output在内嵌模板的Definition of done),本条照抄这个分布:
Test evidence …之后:一条 PM 侧判据;Definition of done列表之后、When to STOP instead of coding.之前:一段独立段落(与该模板既有的
Practical trap when filing issues …同为独立段的写法),因为模板是给没有任何上下文的 agent 单独粘贴用的,挂在 bullet 里份量不够。
按 #5451 route B(frame-sync 门禁头部记录的裁决)把这份拷贝刻意泛化:
whatever fields your project's error envelope declares代替 ADR-0112 的直接引用;role一词 —— 该文件当前role出现次数为 0、且不在scripts/role-word-baseline.json里,写进去会当场把check:role-word打红(ADR-0090 D3 棘轮:不在基线里的文件出现该词即红)。
⛔ 三轴决策框架:一字未动,改前改后各证一次
三份文件都携带
check:skill-frame-sync钉住的三轴结构,本 PR 完全绕开它:逐字相同,包括
4 count mention(s) agree—— 新条款一次也没有提到轴数或轴名(写作时刻意回避了
axis/axes词面,免得撞上%N%/%Q%的计数锚点)。新门
check:skill-frame-freshness也一并跑了(树是新鲜的,origin/main现场 fetch):3/3 → 0/3是预期内且不参与判决:该门禁头部写明「STRUCTURE, NEVER BYTES ——byte difference is reported as INFORMATION in the summary and never decides anything」。
三份文件都被本 PR 编辑过,字节自然不再相同;结构未变,所以判绿。落后的 3 个 commit
(#6205 / #6200 / #6201)与本 PR 的三个文件零交集,已核对改动文件清单。
门禁(全部本地实跑,文件已
git add后再跑)check:role-word/check:nul-bytes只扫 tracked 文件。补两笔:
check:skill-examples首跑红在Build the spec first—— 新 worktree 缺 spec 构建产物,不是本改动(AGENTS.md §9 陈旧产物陷阱的镜像)。
pnpm --filter @objectstack/spec build之后转绿,且构建后
git status只有本 PR 的三个文件,无 tracked 产物漂移。本 PR 未新增任何
os:check/ ts 代码块(讨论纪律的条款不该带代码样例),该门本就与本 diff 无关,跑它只为留证。
check:skill-docs绿说明skills/README.md索引不需要重生成 —— 索引取自frontmatter,而本 PR 只动正文、未动 frontmatter。
自查(超出门禁扫描面):
grep -naP '[\x00-\x08\x0b\x0c\x0e-\x1f\x7f]'扫三个文件,零命中。为什么没有 changeset
.claude/+skills/纯文本,不发布任何包、不改任何运行时行为 ⇒ 走skip-changeset标签,不写空 changeset(空 changeset 滞留发布,#4898)。标签已在 PR 建立后立即打上
并读回核对。
Generated by Claude Code