Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .claude/skills/pm-dispatch/references/lanes/cli.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -14,7 +14,6 @@

## 常设承诺

- **每轮巡检第一判据**:先读半状态巡查锚(`half-state-patrol.yml` 置顶 issue)点名本道卡/PR/座位贴的 H 行,逐行认领或处置,再做其余判据;锚行未处置 ⛔ 不开新派发。
- **Required checks 六个**:`TypeScript Type Check` · `Lint & Repo Gates` ·
`Test Core` · `Dogfood Regression Gate` · `Build Core` ·
`Temporal Conformance (live PG + MySQL)` —— 逐 job 读各自 `conclusion`,⛔ 不认
Expand Down
1 change: 0 additions & 1 deletion .claude/skills/pm-dispatch/references/lanes/devx.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -15,7 +15,6 @@

## 常设承诺

- **每轮巡检第一判据**:先读半状态巡查锚(`half-state-patrol.yml` 置顶 issue)点名本道卡/PR/座位贴的 H 行,逐行认领或处置,再做其余判据;锚行未处置 ⛔ 不开新派发。
- `content/docs/releases/**` 是 release-owned,恰两条通道:完整性缺口逐卡批准
(⛔ 不构成先例);事实错误走专用 docs-only PR。发布页作用域只管 v16 及以后。
- ⛔ 不做任何发布动作,含改根 `version` 脚本链;**能点绿的门禁不等于该点绿**。
Expand Down
1 change: 0 additions & 1 deletion .claude/skills/pm-dispatch/references/lanes/engine.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -18,7 +18,6 @@

## 常设承诺

- **每轮巡检第一判据**:先读半状态巡查锚(`half-state-patrol.yml` 置顶 issue)点名本道卡/PR/座位贴的 H 行,逐行认领或处置,再做其余判据;锚行未处置 ⛔ 不开新派发。
- **投入冻结随包不随车道**:维护者 2026-08-05 对 `driver-memory` /
`driver-mongodb` 族的投入冻结继续有效;能穿过冻结的形状是「消除静默失败模式」与
清账/对齐既有能力,形如**能力投资**的卡派发前须取裁决;`formula` / `driver-sql`
Expand Down
1 change: 0 additions & 1 deletion .claude/skills/pm-dispatch/references/lanes/hotcrm.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -24,7 +24,6 @@

## 常设承诺

- **每轮巡检第一判据**:先读半状态巡查锚(`half-state-patrol.yml` 置顶 issue)点名本道卡/PR/座位贴的 H 行,逐行认领或处置,再做其余判据;锚行未处置 ⛔ 不开新派发。
- **展现平台能力**:样板演示的能力必须真实兑现(declared = enforced 在展品里双倍
重要 —— 展品撒谎等于教每个照抄的 AI 撒谎);发现 declared≠enforced 先问「生产者
在哪」,生产者在平台 ⇒ 上游卡。
Expand Down
1 change: 0 additions & 1 deletion .claude/skills/pm-dispatch/references/lanes/services.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -14,7 +14,6 @@

## 常设承诺

- **每轮巡检第一判据**:先读半状态巡查锚(`half-state-patrol.yml` 置顶 issue)点名本道卡/PR/座位贴的 H 行,逐行认领或处置,再做其余判据;锚行未处置 ⛔ 不开新派发。
- **每条否定性 pin 都要消融验证**(被禁行为放回 → 测试转红 → 报失败输出 → 恢复)
—— 单独的绿不是证据。
- **安全族卡的披露纪律**:复现配方不落任何公开面(卡、PR、评论);证据以抽象描述
Expand Down
1 change: 0 additions & 1 deletion .claude/skills/pm-dispatch/references/lanes/skills.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -14,7 +14,6 @@

## 常设承诺

- **每轮巡检第一判据**:先读半状态巡查锚(`half-state-patrol.yml` 置顶 issue)点名本道卡/PR/座位贴的 H 行,逐行认领或处置,再做其余判据;锚行未处置 ⛔ 不开新派发。
- 四维分析先于派发与复核。
- governed PR 恒 draft 等人合;flip/arm 前跑 `check-governed-merges --test`(带
路径);轮报的 governed 合并审计清单带 `--since` 四仓实跑,⛔ 不凭记忆汇总。
Expand Down
1 change: 0 additions & 1 deletion .claude/skills/pm-dispatch/references/lanes/spec.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -30,7 +30,6 @@

## 常设承诺

- **每轮巡检第一判据**:先读半状态巡查锚(`half-state-patrol.yml` 置顶 issue)点名本道卡/PR/座位贴的 H 行,逐行认领或处置,再做其余判据;锚行未处置 ⛔ 不开新派发。
- findings 首触定级归分诊席,本席只供证据。
- **待命巡逻每次做整车道全交集读**(delta 扫描有尾隙:扫描后、波次边界前入队的卡
谁都看不见;全交集读是安全网)。
Expand Down
7 changes: 3 additions & 4 deletions .claude/skills/pm-dispatch/references/platform-readings.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -103,10 +103,9 @@
- **判「正文被截断」必须双读取**:`.body` 原文 + `Accept:
application/vnd.github.full+json` 的 `.body_html`,两者同一处断掉才算 issue 端截断。读侧实测有确定性触发:正文含字面 script 开标记形状的 token(less-than 紧跟 script 字样;doctype 开标记、object 标签形状同触发)时,API/MCP 读回在该 token 处静默截断而网页全文完好 —— 存储体无损,⛔ 不「修复」只在 API 读短的卡:先 WebFetch 渲染页核对全文,重写会毁掉本来正确的正文。
**第三条读路径,同一个坑、读路径对调**:MCP `issue_read` / PR 读路径把**行内反引号里的尖括号片段整个吃掉**,而 GitHub 存储字节完好(raw REST 取回一字不差)⇒ ⛔ **永不单凭 MCP 读判截断,先取 raw REST 核对再判** —— 否则「repair-first」规则被**正确**地应用到一张完好的卡上,重写毁掉的是正确内容(同日三席独立观察,一次已到差点重写的地步,拦住它的只是那位 dev 自己的核验习惯 —— 无任何机械守卫)。判据 = 数**空的行内代码跨度**:一个空的行内代码恰是短尖括号片段被吃掉的签名(对照:一份读作 0 空跨度、10 个存活字面尖括号 tag 的正文即完好;阴性对照 —— 有的正文本来就把标识符不带尖括号写,所以判据是**尖括号**不是反引号);数字实体(撇号 / 引号成 `'` / `"`)是普通实体编码,**不是**截断证据(2026-08-23 实测)。
- **落库删字节,网页同显、围栏不防护**:「less-than + 感叹号 + 左方括号」序列(markup-declaration 开标记,恰是负向后行断言接字符类的形状)里的感叹号在存储层被删,幸存文本仍像代码但意义已变;裸「less-than + 感叹号」存活;作者规则并入下一条。
- 写侧另一半:sanitizer 在**写入时按 tag 形状删,不按尖括号**(2026-08-18 issue body 实测):行内反引号里的 tag 形状 token(读作未知 HTML 标签者 —— 注释标记、`<n>` 类占位符、泛型)整个被删;孤立 less-than / greater-than 在行内代码**存活**;⛔ **围栏不防护 tag 形状 token**(2026-08-20 issue body 三写实测,推翻旧「围栏块整体存活」读数):HTML 注释形状标记裸写被整删留空行,入围栏照删留空围栏;非 tag 形状的带尖括号正则在围栏中实测存活(2026-08-18,上一条删感叹号仍另计);同日实测同类标记在**评论**里存活,但 ⛔ 不据此推「评论豁免」(下条:评论体照样被整段截断);裸标识符(无尖括号)存活 ⇒ SKILL 提取契约(字面文本 grep + 裸标识符回退)仍有效;写返回 200,损耗只在回读可见。
作者规则一条管三坑:必须字面携带 tag/script/markup-declaration 形状的文本进围栏并把危险字符用词拼出,或改花括号占位符(`{n}`)/整句用词描述;要字面尖括号写实体 `&lt;` / `&gt;`;含尖括号的任何写后回读逐个确认(失效完全静默;⛔ 回读不豁免评论 —— 2026-08-18/19 四次评论写入里那次未归因的标记缺席,归因在下条)。
- **评论体也会被毁,形状是「截断」不是「删片段」**:sanitizer 从**首个命名 HTML 元素的尖括号片段**起,把评论体一路吃到结尾(2026-08-21 实测:一份用**字面文本**标记发出的 dev 报告评论,正文在 `this.error(` 处断掉、JSON 不可解析;同机制把记录此事的卡自己的正文也截在同一处)⇒ ⛔ **字面文本标记只保住标记、保不住正文** —— 标记扫描照报成功,人看着像正常收尾,只有真去解析才发现;引信是普通 TS 形状(`Promise<object>`、`Array<link>` 一类),不是奇异语法。安全过程:标识符一律进反引号,尖括号写实体或用词拼出,写后**回读尾部**确认正文结束在它该结束的地方,⛔ 只回读标记不算验证。⚠️ 边界:姊妹仓一次五形受控探针测到的是**选择性删除**(所有位置的 tag/注释被移除,不能开标签的尖括号实体化存活)而非截断到尾 —— 两种形状都实测过,写侧一律按最坏的截断防护。
- **写侧 sanitizer 作者规则,一条管三坑**:必须字面携带 tag / script / markup-declaration 形状的文本进围栏并把危险字符**用词拼出**(⛔ 围栏本身不防护 —— 防护的是拼写,实测见下条),或改花括号占位符(`{n}`)/整句用词描述;要字面尖括号写实体 `&lt;` / `&gt;`;裸标识符(无尖括号)存活 ⇒ SKILL 提取契约(字面文本 grep + 裸标识符回退)仍有效。写返回 200,损耗只在回读可见 ⇒ **含尖括号的任何写后回读逐个确认**(失效完全静默);⛔ 回读不豁免评论(2026-08-18/19 四次评论写入里那次未归因的标记缺席,归因在下面的评论条),⛔ 只回读标记不算验证 —— 要**回读尾部**确认正文结束在它该结束的地方。
- **写侧实测行为 · issue body(落库删字节,网页同显)**:sanitizer 按 **tag 形状**删、不按尖括号(2026-08-18 issue body 实测)—— 行内反引号里的 tag 形状 token(读作未知 HTML 标签者:注释标记、`<n>` 类占位符、泛型)整个被删,HTML 注释形状标记裸写被整删留空行;孤立 less-than / greater-than 在行内代码**存活**。⛔ **围栏不防护 tag 形状 token**:入围栏照删、留空围栏(2026-08-20 issue body 三写实测);非 tag 形状的带尖括号正则在围栏中实测存活(2026-08-18)。**另一坑另计**:「less-than + 感叹号 + 左方括号」序列(markup-declaration 开标记,恰是负向后行断言接字符类的形状)里的感叹号在存储层被删,幸存文本仍像代码但意义已变;裸「less-than + 感叹号」存活。同日实测同类标记在**评论**里存活,但 ⛔ 不据此推「评论豁免」(下条:评论体照样被整段截断)。
- **写侧实测行为 · 评论(形状是「截断」不是「删片段」)**:sanitizer 从**首个命名 HTML 元素的尖括号片段**起,把评论体一路吃到结尾(2026-08-21 实测:一份用**字面文本**标记发出的 dev 报告评论,正文在 `this.error(` 处断掉、JSON 不可解析;同机制把记录此事的卡自己的正文也截在同一处)⇒ ⛔ **字面文本标记只保住标记、保不住正文** —— 标记扫描照报成功,人看着像正常收尾,只有真去解析才发现;引信是普通 TS 形状(`Promise<object>`、`Array<link>` 一类),不是奇异语法;安全过程 = 标识符一律进反引号、尖括号写实体或用词拼出(回读纪律见上面的作者规则条)。⚠️ 边界:姊妹仓一次五形受控探针测到的是**选择性删除**(所有位置的 tag/注释被移除,不能开标签的尖括号实体化存活)而非截断到尾 —— 两种形状都实测过,**写侧一律按最坏的截断防护**。
- **并行 spec PR 同动 pin 计数断言**(被踢不是事故,按 os-regen 序再解一轮):解冲
突两侧收据都保留、按合并顺序堆叠,新计数**从合并后源码重数**(操作数是文件本身不是历史),⛔ 不从两侧收据做算术;双方占同一编号是常态(各取当时 max+1),重编号后进侧。
- **容器重启杀死在飞 dev,现场三态判读**:① 分支已推 + PR 已开 ⇒ 只欠验收(CI 重跑 + 复核,不动代码);
Expand Down
10 changes: 5 additions & 5 deletions .claude/skills/pm-dispatch/references/seat-post-protocol.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -62,11 +62,11 @@

## 座位 Routine 创建细则

- 由维护者在 claude.ai 的 Routines UI 创建并勾选 GitHub 连接器 —— 会话内
`create_trigger` 建的 fresh-session Routine 不携带连接器,fired 会话拿不到
GitHub 工具,表现为**静默零产出**;⛔ 不要在会话里 create_trigger 出一个座位
Routine 就当它在跑。模型不能经 API 钉住,同样在 UI 钉;Routine 继承环境默认模
,环境默认变了它跟着变。
- 由维护者在 claude.ai 的 Routines UI 创建 —— 凭据随 Routine 所挂 repo sources 走,
Routines UI 并无 GitHub 连接器入口(2026-08-23 实测)。会话内 `create_trigger` 的
fresh-session Routine 不挂 repo sources ⇒ fired 会话拿不到 GitHub 工具,表现为
**静默零产出**;⛔ 不要在会话里 create_trigger 出一个座位 Routine 就当它在跑。
模型不能经 API 钉住,同样在 UI 钉;Routine 继承环境默认模型,环境默认变了它跟着变。
- 创建后**先手动 fire 一轮烟测**,判据取 **GitHub 上的产出**(标签写入/审计评论/
座位贴编辑),不取「会话看起来起来了」;零产出即技术性失败,回滚:
`delete_trigger` + 清空座位登记 + 失败注记。
Expand Down
24 changes: 16 additions & 8 deletions scripts/pm/check-skill-line-ratchet.mjs
Original file line numberDiff line numberDiff line change
Expand Up@@ -110,7 +110,10 @@ export const CEILINGS = new Map([
// 2026-08-20: the four-facet analysis must argue from the business
// standpoint). Set at landed line count (headroom 0, same convention).
['.claude/skills/pm-dispatch/references/decision-analysis.md', 38],
['.claude/skills/pm-dispatch/references/platform-readings.md', 134],
// 134 → 133: whole-text restructuring round, PR-2 (maintainer ruling
// 2026-08-23) — the three write-side sanitizer rows consolidated to one
// author rule + one measured-behaviour row per surface (body / comment).
['.claude/skills/pm-dispatch/references/platform-readings.md', 133],
['.claude/skills/pm-dispatch/references/review-checklist.md', 82],
['.claude/skills/pm-dispatch/references/landing-operations.md', 82],
// Release-aftercare duties — what a lane PM still owes AFTER a tagged release
Expand All@@ -126,16 +129,21 @@ export const CEILINGS = new Map([
// Lane job descriptions (maintainer ruling 2026-08-19: per-lane PM job
// descriptions move from seat-post prose into versioned skill references).
// Set at landed line counts (headroom 0, same convention as above).
['.claude/skills/pm-dispatch/references/lanes/engine.md', 41],
['.claude/skills/pm-dispatch/references/lanes/services.md', 31],
['.claude/skills/pm-dispatch/references/lanes/cli.md', 37],
['.claude/skills/pm-dispatch/references/lanes/devx.md', 38],
['.claude/skills/pm-dispatch/references/lanes/skills.md', 36],
['.claude/skills/pm-dispatch/references/lanes/spec.md', 44],
// Each −1: whole-text restructuring round, PR-2 (maintainer ruling
// 2026-08-23) — the patrol-anchor sentence was carried verbatim by all seven
// lanes and now lives once in SKILL.md 执行座位职责, so every lane drops it.
// cli.md pays −2 because it was carrying the map's last line of headroom.
['.claude/skills/pm-dispatch/references/lanes/engine.md', 40],
['.claude/skills/pm-dispatch/references/lanes/services.md', 30],
['.claude/skills/pm-dispatch/references/lanes/cli.md', 35],
['.claude/skills/pm-dispatch/references/lanes/devx.md', 37],
['.claude/skills/pm-dispatch/references/lanes/skills.md', 35],
['.claude/skills/pm-dispatch/references/lanes/spec.md', 43],
// repo:hotcrm lane charter (maintainer rulings 2026-08-20: exemplar-app repo —
// platform capabilities implemented upstream, 展现平台能力, 不扩散需求, runs on
// community edition). Set at landed line count (headroom 0, same convention).
['.claude/skills/pm-dispatch/references/lanes/hotcrm.md', 45],
// 45 → 44: same patrol-anchor hoist deletion as the six lanes above.
['.claude/skills/pm-dispatch/references/lanes/hotcrm.md', 44],
// 399 → 405 (#11126): maintainer-ruled (2026-08-23, option B, quoted in that
// PR) — the +6-line cross-repo dispatch-gates caveat, sized so the queued
// #11137 (395→399 on main) and this PR's +6 compose to exactly 405.
Expand Down
Loading