Skip to content

Commit 6c75776

Browse files
committed
Merge remote-tracking branch 'origin/main' into claude/issue-12805-datasource-contract-catchup
2 parents 99d74bb + 6228c1f commit 6c75776

6 files changed

Lines changed: 550 additions & 160 deletions

File tree

.claude/agents/os-dev.md

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -327,19 +327,19 @@ dispatch prompt 只携带每单增量(裁决引文、裁决 / PM-机制假设分
327327
2026-08-21 裁决,原文不译:「对外发布的 skills 是整个平台的最大价值,尤其要整体考虑和评
328328
估。」「……不能为了一个小功能扩写很多。」派发词给的净增预算装不下 ⇒ 停下按 `blocked`
329329
缺口,⛔ 不自行扩写、不自行抬预算 —— 预算是 PM 的,抬它是维护者裁决。
330-
- **`skip-changeset` 标签按仓库分流——先认清目标仓库有没有这个机制。** 仅含 tests/
331-
workflow/`.claude/` 的 PR 不发布任何东西,但「不发布」的声明方式因仓库而异。**本仓库**:标
332-
签是真实机制,打标签是你的步骤、不是 CI 的,PR 一建立就打。写入首选**加法端点**(REST
333-
`POST .../issues/<n>/labels`——不碰已有标签、无读写窗口),⚠️ 但它只在会话门开着的席位可
334-
(2026-08-25 实测:容器 dev 席整类 repo-scoped REST 全 403);被拒 ⇒ 走实测过的回退:MCP
335-
现值→并集→整组写→**必做对比式读回**(diff 现集对 union(读集, 目标) —— union 有而回读
336-
= 被你的整组写剥掉的并发标签,重挂并写进报告),并申报换道。加法写同样必要不充分:
337-
实测 size-labeler 的整组 PUT 曾在 ~1 秒内抹掉一次正确的加法写——收尾一律读回、把清单
338-
引进报告;标签消失读作被抹,**重新加上**,不是你的错。关此步骤的是读回,不是写入;⚠️ 读回验的是「写落了」,验不出「有门
339-
在读」——幻影门标签读回同样成功。**objectui:同名标签对象在(历史误挂铸出的),但零
340-
workflow/脚本读它、豁免不了任何东西,pin 测试钉着这条**——那边的声明方式是空 frontmatter
341-
changeset,门禁自己的判定行是权威;⛔ 永不在那边施加该标签(挂上去只是给 PR 挂一个假
342-
状态,再铸一次幻影)
330+
- **`skip-changeset` 标签按仓库分流——先认清目标仓库有没有这个机制。** 判据:**不从任何包
331+
发布东西**;闭合清单:仅含 `docs/adr/**` · `.claude/**` · `scripts/pm/**` · tests/workflow · 注释 的
332+
diff。**本仓库**:标签是真实机制,打标签是你的步骤、不是 CI 的,**PR 一开出就打**,⛔ 永不
333+
等 Check Changeset 转红再补。写入首选**加法端点**(REST `POST .../issues/<n>/labels`——不碰已有标
334+
签、无读写窗口),⚠️ 但它只在会话门开着的席位可达(2026-08-25 实测:容器 dev 席整类
335+
repo-scoped REST 全 403);被拒 ⇒ 走实测过的回退:MCP 读现值→并集→整组写→**必做对比式读
336+
**(diff 现集对 union(读集, 目标) —— union 有而回读缺 = 被你的整组写剥掉的并发标签,
337+
挂并写进报告),并申报换道。加法写同样必要不充分:实测 size-labeler 的整组 PUT 曾在 ~1
338+
内抹掉一次正确的加法写——收尾一律读回、把清单引进报告;标签消失读作被抹,**重新加
339+
**,不是你的错。关此步骤的是读回,不是写入;⚠️ 读回验的是「写落了」,验不
340+
出「有门在读」——幻影门标签读回同样成功。**objectui:同名标签对象在(历史误挂铸出
341+
),但零 workflow/脚本读它、豁免不了任何东西,pin 测试钉着这条**——那边的声明方式是空
342+
frontmatter 的 changeset,门禁自己的判定行是权威;⛔ 永不在那边施加该标签
343343
- **报告在 draft PR 时点交付 —— CI 收敛等待归 PM,不归你**(维护者 2026-08-10 拍板)。分支一推
344344
上、draft PR 一开出,立刻交报告;门禁状态如实记录 —— `in_progress` 是诚实值。⛔ draft PR 开
345345
出后永不 sleep、定时等待或空转轮询 CI(实测:空转轮询烧掉的恰是一个红门禁需要的预

.claude/skills/pm-dispatch/SKILL.md

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -598,33 +598,32 @@ dev 侧早推分支 —— 远程分支是在飞工作最硬的证据。**死认
598598
**模型分档(model tiering;维护者 2026-08-10 三档裁定,本节覆盖一切更旧档制)。** 授权原话:「项目经理技能还需
599599
要考虑的是派任务时使用什么模型,也应该项目经理决定,最低下限sonnet,最高可以 fable」;「比如 更新 项
600600
目经理技能 必须要使用 Fable 5」。**派发模型是 PM 的逐卡显式决定** —— 下限 `sonnet`(机械
601-
卡:正确
602-
性由门禁农场机械判定,失败在漏跑门不在判断);默认判断档 `opus`(M/L、裁决实施、任何带设
603-
计判断的卡;拿不准就升一档 —— 错派低档的返工贵过省下的额度);上限 `fable`(最重协议/流
604-
程/编排
605-
卡,按卡取用非新
606-
默认)。**⛔ 强制条款两条**:① 凡改**协议语义面**的卡一律 `model: "claude-fable-5"` —— 面 =
601+
卡:正确性由门禁农场机械判定,失败在漏跑门不在判断);默认判断档 `opus`(M/L、裁决实施、任
602+
何带设计判断的卡;拿不准就升一档 —— 错派低档的返工贵过省下的额度);上限 `fable`(最重
603+
协议/流程/编排卡,按卡取用非新默认)。**⛔ 强制条款两条**:① 凡改**协议语义面**的卡一律
604+
`model: "claude-fable-5"` —— 面 =
607605
`SKILL.md` 主文件、决策框架拷贝所在文件(以 `check:skill-frame-sync` 强制处为准)与
608606
`.claude/agents/os-dev.md`(2026-08-20 收窄,维护者原话:「接受你的建议」—— fable 当审计师用,不当
609607
施工队用);仅 `references/**` 面、或任一 pm-dispatch 治理面上一行级机械文本改动的卡降为 **opus
610608
施工**(纯机械一行 PM 酌定可至 sonnet 地板),**补偿控制即既有技能面复核档要求**(ACCEPT 路径
611609
分叉 ①:复核席跑契约复审档位)—— opus 施工的治理面改动只经 fable 档复核到达维护者,⛔
612610
不新增标签不新增链;② 凡**改变契约接受/拒绝行为或扩大公开面**的卡(`domain:spec` 语义
613611
面;判据即分诊代裁的机械边界测试与 spec 席内分派判据 —— `references/lanes/spec.md`,⛔ 不另
614-
抄第二份)一律 `claude-fable-5`(维护者
615-
2026-08-12 裁定,原话:「同意,就按语义面收窄,立卡并通知 spec 席」)—— 契约错毒化一切下
616-
游,全仓最贵(条款②闸门见「入队与落地」)。**卡面对条款②的复述仍是条款②**(座位复述
617-
会丢掉原文旁的例外,而被读的正是复述):额度耗尽豁免及其 `needs:contract-review` 补偿一并及
618-
于它;豁免够不到的地板只有维护者裁决能设。**席位档策略(同 2026-08-20 裁决)**:skills 车道外
619-
执行 PM 席与分诊席默认 `opus` 会话,fable 保留给裁决/复审子代理、skills 席与条款②工作
620-
—— 各自档位归既有条款(本行只记策略)。降档出口两条:**额度耗尽豁免**(维护者
621-
2026-08-13
622-
原话:「fable 如果用完了,可以用 opus」):仅当 fable 实测不可用(限流/墙杀中途,重派同样可降)
623-
才落 `opus`,⛔ 不再往下;与**主动预降**(余量吃紧可预先降档),两者档位与理由皆记入认领评
624-
论「Container & model」行。明确不变:spec 文本面照旧 sonnet/opus;机器面与下游适配默认 opus,
625-
门禁语义设计升 fable,拿不准升档照旧。**档位逐次派发显式传参,永不省略**(解析顺序、pin
626-
语义与允许名单回退陷阱以 os-dev 定义 frontmatter 注释为权威),连同尺寸写进同一行;分诊
627-
suggestion 行是输入不是决定,不采纳给理由。
612+
抄第二份)一律 `claude-fable-5`(维护者 2026-08-12 裁定,原
613+
话:「同意,就按语义面收窄,立卡并通知 spec 席」)—— 契约错毒化一切下游,全仓最贵(条
614+
款②闸门见「入队与落地」)。**负边界(维护者 2026-08-28 裁定)**:运行时权限/安全**行为**
615+
更不是条款② —— 归人工地板「安全/权限边界」类(控制是裁决本身,不走复审链);条
616+
款②只指**已发布契约面**(两独立席位曾同错读,故明写)。**卡面对条款②的复述仍是条
617+
款②**(座位复述会丢掉原文旁的例外,而被读的正是复述):额度耗尽豁免及其
618+
`needs:contract-review` 补偿一并及于它;豁免够不到的地板只有维护者裁决能设。**席位档策
619+
略(同 2026-08-20 裁决)**:skills 车道外执行 PM 席与分诊席默认 `opus` 会话,fable 保留给裁决/复审
620+
子代理、skills 席与条款②工作 —— 各自档位归既有条款(本行只记策略)。降档出口两
621+
条:**额度耗尽豁免**(维护者 2026-08-13 原话:「fable 如果用完了,可以用 opus」):仅当 fable 实测
622+
不可用(限流/墙杀中途,重派同样可降) 才落 `opus`,⛔ 不再往下;与**主动预降**(余量吃紧可预
623+
先降档),两者档位与理由皆记入认领评论「Container & model」行。明确不变:spec 文本面照旧
624+
sonnet/opus;机器面与下游适配默认 opus, 门禁语义设计升 fable,拿不准升档照旧。**档位逐次派
625+
发显式传参,永不省略**(解析顺序、pin 语义与允许名单回退陷阱以 os-dev 定义 frontmatter 注释
626+
为权威),连同尺寸写进同一行;分诊 suggestion 行是输入不是决定,不采纳给理由。
628627

629628
**派发词原则(构造细则与条款原文见 `references/dispatch-runbook.md`)。** ⛔ 默认不整段粘
630629
贴 issue 正文 —— 让 dev 自己读 GitHub 全文与全部评论,并**必须**要求 dev 自查正文完整性(截
@@ -783,15 +782,16 @@ main 红了约一小时,逐 PR 连环红到 fix-forward 才止)。本段只适
783782
面(`packages/spec/src/**`,含 error-code-ledger 与 `*.zod.ts` 契约 schema);声明肢 = 认领评论声明
784783
`Clause-②: yes`,与路径无关(错误的 `no` 是记录在案、可审计的假申报,不再是静默缺口)。⛔
785784
永不把路径触发读作条款②的完整覆盖 —— 它只盖路径肢;不触契约文件而改变接受/拒绝
786-
行为或扩大公开面的**内容
787-
**由声明行承载。档位以 dispatch-gates 常量 `CONTRACT_REVIEW_TIER` 为准(档位单源,⛔ 本文与标
788-
签不写模型名,模型升级只改一行一个文件)。派发席职责止于:卡上记一行认定、挂
789-
`needs:contract-review`(标签命名审的对象,恒英文)、停手;⛔ 禁止自查放行。复审链细则(载
790-
体纪律、资格与归属、降档保险丝)见 `references/contract-review.md`
785+
行为或扩大公开面的**内容肢**由声明行承载。档位以 dispatch-gates 常量 `CONTRACT_REVIEW_TIER`
786+
为准(档位单源,⛔ 本文与标签不写模型名,模型升级只改一行一个文件)。派发席职责止
787+
于:卡上记一行认定、挂 `needs:contract-review`(标签命名审的对象,恒英文)、停手;⛔ 禁止自查
788+
放行。挂标仅当**可复审契约增量已存在**(draft PR,或先到的报告);队列/受阻卡的前瞻预挂
789+
已废止(维护者 2026-08-28 裁定)—— 前瞻条款②事实住卡上裁决/分诊评论、认领 `Clause-②`
790+
申报与 `--tier` 输出;开着的载体恒为一单真实待审。复审链细则(载体纪律、资格与归属、
791+
降档保险丝)见 `references/contract-review.md`
791792
- **碰生成物的 PR,入队前先同步 + 整体重生成**(os-regen 驱动零冲突标记地**静默丢掉一侧改
792-
**):
793-
四步序已机械化 `bash scripts/pm/os-regen-merge.sh`;陷阱、断言措辞与锚点禁令见 landing-operations
794-
A。
793+
**): 四步序已机械化 `bash scripts/pm/os-regen-merge.sh`;陷阱、断言措辞与锚点禁令见
794+
landing-operations A。
795795
- **跟到 MERGED 为止;入队后的看护同归车道 PM 的落地窗口**:验收、首次入队 flip 定点、MERGED
796796
两读
797797
数、关键 PR 订阅与退订/归档、落地后再核落地判据 —— 操作细则全在 landing-operations

.claude/skills/pm-dispatch/references/contract-review.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,10 @@
77
- **PR 与卡双载体同笔挂**(维护者 2026-08-22:「简化一点是否可以直接挂 PR 侧」「两边都挂好
88
」; PR 一存在即挂,报告先于 PR 到达则先挂卡侧、ACCEPT 时补齐 PR 侧),同笔在该 PR 上向复审
99
席账号 request review(同裁决:「也可以直接要求复审」—— 仅通知,载体仍是标签)、停手。
10+
-**不预挂**(维护者 2026-08-28 裁定):可复审增量存在前永不挂标,队列/受阻卡的提前挂已废
11+
止 —— 前瞻条款②事实走主文件闸门段的三条既有通道;开载体恒 = 真实待审。
1012
- **载体不迁移**(维护者 2026-08-18,原话:「中期把闸门迁到 PR review 的 Request Changes 上 我觉得
11-
没必要」): 闸门载体保持本标签,⛔ 不迁 PR review / Request Changes、不为迁移留门;挂与清皆按
12-
标签纪律的 read-modify-write 硬步骤写。
13+
没必要」): 闸门载体保持本标签,⛔ 不迁 PR review / Request Changes、不为迁移留门。
1314
- **重挂前先查裁决**:闸门标签缺失 ⇒ 先 grep 卡评论找复审结论 —— PASS + 无标 + head 未
1415
动 = 已清标非被剥;head 后移或无结论才重挂(`get_reviews` 读空 ≠ 未复审)。
1516

@@ -40,9 +41,8 @@
4041
- **保险丝只测座位自会话**:`mode:subagent` 里的 `get_session` 量的是**派发会话**(实测:钉在地板
4142
档的子代理读回父档,⛔ 不作互证),传参只是配置 ⛔ 不作达档读数;条款②的 `mode:subagent`
4243
派发照旧恒保留 `needs:contract-review`,免审跳过仅座位自会话成立。
43-
- **转录档位核验**(维护者 2026-08-27 裁)——「派更高档位子代理复审」曾构造上不可测
44-
量,今仅核验通过才合法:采信/清标前 grep 子代理 transcript 中 harness 逐消息盖章的 `model`
45-
段,产出裁决的每轮都须读到契约复审档位,见回退证据 ⇒ 裁决整体作废(重做或维护者路
46-
径);父会话对裁决仅两个合法动作 —— **逐字采纳或整体作废**(理由仅机械三种:核验失
47-
败/越范围/格式不完整),⛔ 永不改写/删节/润色,采信 = 证据清单核对,非实质重判。
44+
- **转录档位核验**(维护者 2026-08-27 裁)——「派更高档位子代理复审」仅核验通过才合法:采
45+
信/清标前 grep 子代理 transcript 中 harness 逐消息盖章的 `model` 字段,产出裁决的每轮都须读
46+
到契约复审档位,见回退证据 ⇒ 裁决整体作废;父会话仅两个合法动作 —— **逐字采纳或
47+
整体作废**(理由仅机械三种:核验失败/越范围/格式不完整),⛔ 永不改写/删节/润色。
4848
- 契约复审 ⛔ 不适用额度耗尽豁免降档(豁免对象是派发;复审正为补偿低档派发而存在)。

.claude/skills/pm-dispatch/references/platform-readings.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,7 @@
1515
订阅了的会话确实收得到(与 timeline 差 ~1 秒),但推送式**不可重读** —— 新上下文或当时
1616
没订阅就取不回,故只作旁证,⛔ 不作决策依据。⛔ `auto_merge` 字段不只是空,是**不稳
1717
**:同一 PR 一分钟内先 `set``None`(2026-08-26 实测),入队后又回落为 off(维护者
18-
2026-08-11 裁定)—— 永不据它判「没挂上」而重挂(重挂踢队重排)。队列分支(ls-remote 拼写
19-
见「零成本等价物」)正命中即已入队,缺席不作反证 —— 队列满载时分支尚未建出。
18+
2026-08-11 裁定)—— 永不据它判「没挂上」而重挂(重挂踢队重排)。
2019
- **成功序列读间隔不读事件名**:`removed_from_merge_queue`~1 秒内跟 `merged` 是落地不是被
2120
踢;真被踢是其后无 `merged`、几分钟后 PR 仍 open。
2221
- 「不在 `origin/main` 上」是二义读数(在队列里等 / 没入队,处置相反)—— 落地检查永远两个
@@ -57,13 +56,14 @@
5756
按下条序列以队列分支/timeline 入队事件确认,⛔ 不拿成功报文收工;回读 `auto_merge` 非空
5857
本接口给不了(`pull_request_read``fields` 枚举都无该成员,armed 与否读回逐字节相同)⇒ 效果
5958
读数只有队列分支、timeline 入队事件、最终落地三种;已死假说:已绿 PR 会静默空转。
60-
- enable 后的验证序列(2026-08-25 增补):① 先验队列分支
61-
`git ls-remote origin 'refs/heads/gh-readonly-queue/*'`(零配额,给条目 ~20–30s 建出;正命中即已入
62-
队,在 PR 读数发僵时仍决断);② 分支在 ⇒ 结束,⛔ 不翻转;③ 缺席 ⇒ 先
63-
`update_pull_request_branch` 逼出暗冲突(静默冲突不踢已挂 PR,只是永不入队 —— 实测一张挂
64-
40+ 分钟,update-branch 才吐出 merge conflict);④ 无冲突仍缺席才重挂一次,重试回 405
65-
`Pull Request is in the merge queue` = 决断阳性;⑤ ⛔ enable 与它的队列验证之间永不插 `disable`
66-
——「入队」webhook 可能乱序迟到,armed 窗口里补的 disable 会撤掉已发生的真实入队。
59+
- **队列 ref 答 BUILD 不答成员资格**(旧读法「存在即在队」作废):`gh-readonly-queue/*` **只在存在
60+
**有意义(= 有 build 在跑),⛔ 缺席不是任何方向的读数。**阳性探针按成本序**:①
61+
`update_pull_request_branch` 回「Branches that are queued for merging cannot be updated」= 在队,正常返回顺
62+
带逼出暗冲突(它不踢已挂 PR、只是永不入队);② `merge_pull_request` 回 405「Pull Request is in the
63+
merge queue」= 在队(2026-08-28 两席各一次,均零 ref),405「Merge commits are not allowed」= 不在队,改
64+
挂 auto-merge。`enable_pr_auto_merge` 回应只答本次调用:时戳形有动作、空字段形无动作;⛔
65+
enable 与其验证间永不插 `disable`(入队 webhook 乱序迟到,会撤掉真实入队)。**踢出成因两
66+
**:兄弟抢先落地 ⇒ `MERGE_CONFLICT`;缺必需批准 ⇒ 治理守卫 merge_group 腿 `CI_FAILURE`
6767
- **队列踢出先认签名再决定重投**:已知 flaky 核对失败签名一致 ⇒ 原样重投;止血修复合入
6868
**同一签名再现就不再是那条 flaky**,是新问题必须重新诊断,⛔ 禁止条件反射式重投;第
6969
三种签名:本 PR 名下**没有任何** `merge_group` run 且批次同伴的 run 全部 `success` = 队列重建的

0 commit comments

Comments
 (0)