From 2ae774b4375ff7f92bc1a3b742f671a92337237a Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 18 Aug 2026 05:59:11 +0000 Subject: [PATCH 1/2] skills(checklist-test): write run close-out, supersede and re-test triggers into the skill (#9484) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Four-way disposition for every fail, named partial gaps, the machine-greppable close-out lines, the QA-source traceability line, the supersede protocol and the three re-test triggers — all on existing carriers, zero new labels. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01Rn7aaamsR99FXRqLcpL99q --- .claude/skills/checklist-test/SKILL.md | 65 +++++++++++++++++++++++++- 1 file changed, 64 insertions(+), 1 deletion(-) diff --git a/.claude/skills/checklist-test/SKILL.md b/.claude/skills/checklist-test/SKILL.md index ae94ececfe..e15c0c012e 100644 --- a/.claude/skills/checklist-test/SKILL.md +++ b/.claude/skills/checklist-test/SKILL.md @@ -127,6 +127,9 @@ expected-fail 探针 —— 永不在真实缺陷上把条款打成绿。 那个分数是标题的一部分,不是可选装饰。 - **标签** —— 只带 `qa-run`,⛔ 不挂 `bug`/priority 等工作标签:run 记录是协议载体、 不入分诊 sweep,⛔ 不是可派发单元;工作标签随抽取出的缺陷卡走(RUNNER 抽取义务条款)。 + **这条在记录的整个生命周期成立** —— 收口与关闭时同样不补挂。实测漂移形态:记录事后 + 被补上 `tests` / `tracking` / `bug`,每一个都把协议载体推回排除清单本要挡住的 + sweep。 - **正文**,按此顺序: - **环境指纹** —— framework sha、`.objectui-sha`、端口、db、seed、时间戳。 - **范围** —— 选择器 + 每项所对的 `revision`。 @@ -139,13 +142,73 @@ expected-fail 探针 —— 永不在真实缺陷上把条款打成绿。 - **收束抽取(RUNNER 抽取义务条款)** —— 运行中发现的每个产品缺陷,收束报告时逐个抽 取为独立 issue:标题自含、复现与机制条目化、指回本 run issue 取全量证据;缺陷卡不 挂 `qa-run`,正常进分诊首触。清单准确性发现与 fixture 缺口归波次锚卡(sweep 跟踪 - issue)收口,⛔ 不抽取;环境阻塞记录在案即可。 + issue)收口,⛔ 不抽取;环境阻塞记录在案即可。逐条 `fail` 的四分法处置、收口评论的 + 机器行与抽取卡的溯源行见 §5。 - **完成判据** —— 一个区只有在**每一项都有判定**时才算跑完。跑不完的一轮照常立单: 交出已有的判定,**外加一份点名未触达项的交接清单**,标题按上面的分数如实写。 `not-run` 是诚实判定;在 11 项 not-run 之上写 `(FULL area)` 不是。 同一份逐条款表 + 环境准备与测试的耗时之比,回报给维护者(chat),并链接已立的 issue。 +## 5. 收口 —— 一张 `qa-run` 记录什么时候才算关闭 + +立单不是终点,收口是每一轮运行的一部分。RUNNER 的抽取义务条款给的是**抽什么**;本节 +给的是**一张记录什么时候才算关闭**,以及关闭这件事在别处怎么被读到。零新标签 —— 下面 +每个状态都用现有载体承载。 + +**开着的 `qa-run` 数 = 未清的收口债**,与裸 `finding` 计数同一构造:它是可直接读的健 +康指标,所以⛔ 永不靠关掉记录让它变好看,只靠把下面几件事做完。 + +**每个 `fail` 落一个四分法处置**,判据是这份记录自己的证据,不是记忆: + +| 处置 | 判据 | 动作 | +|---|---|---| +| **产品缺陷** | 被测能力的行为违背它自己声明的契约 | 抽取独立缺陷卡(§4 抽取条款):先查重、立在**修复落地的仓**、⛔ 不挂 pm 标签,正常进分诊 | +| **断言缺陷** | 产品是对的,测试项的 `steps` / `acceptance` 写错了 | 在**拥有该测试项的仓**立 test-fix 卡;条款侧修订照 §3 | +| **过期规格** | 两边都按各自的声明行事,条款钉的是已被裁决改掉的旧形状 | 立 re-point 卡:把条款重新指向现行规格,引裁决 | +| **配对无效** | 该项与这个 subject / fixture 根本不成立(错配的 revision、不适用的环境) | 记 `blocked` 说明,⛔ 不立卡 | + +四选一是**穷尽的**:落不进任何一格的 `fail` 说明你还没判完 —— ⛔ 永不把它留成一条无处 +置的红行。 + +与 §4「清单准确性发现归波次锚卡」的分界,是**有没有一条 `fail` 要清**:由 `fail` 判出 +的断言缺陷 / 过期规格各自立卡(那条红行得有人负责变绿),运行中顺带看到的清单准确性问 +题仍归锚卡收口,⛔ 不抽取。 + +**`partial` 的覆盖缺口点名,永不丢**:要么按区立 pin 升级卡(把该区缺 `automated.ref` +的项钉起来),要么挂到波次锚卡上。`not-run` 由 §4 的完成判据兜底(交接清单),⛔ 不另 +起第二份清单。 + +**收口评论是机器可 grep 的** —— 一条一行,落在记录 issue 的收口评论里: + +```text +Extracted: # · · +Parked-on: # · +Superseded-by: # +Carried-forward: # · · +``` + +**抽取出的每张卡,正文带一行溯源**(靠 grep,不靠标签): + +```text +QA-source: # · · +``` + +**Supersede 协议** —— 重跑覆盖了旧记录的地面时,旧记录关闭(`not_planned` + 一行 +`Superseded-by:` 指向新记录),但**先把新一轮没有重新判定的判定结转过去**:结转行 +(`Carried-forward:`,引旧记录号)落在**新记录**上,supersede 行落在**旧记录**上。⛔ +永不用「新的一轮跑过了」直接关掉旧记录:没被重新覆盖的判定会随它一起消失,而记录被关 +闭这件事在别处不留任何痕迹。 + +**重测触发,三条且只有三条**: + +1. **发版候选** ⇒ 完整 Tier 1 重跑(§1 的分层)。 +2. **QA 抽取的修复卡落地** ⇒ **接受该卡的座位**把受影响的项追加到波次锚卡的重测清 + 单 —— 与跨仓联动同一纪律:第一产者是接受座位。 +3. **维护者点名目标**。 + +⛔ 其它一切都不是重测触发:凭手感「再跑一遍」只增加收口债,不增加覆盖。 + ## Guardrails - **不伪造覆盖。** 缺 fixture → `blocked(fixture)` 带理由;console 没构建 → 构建它 From 315b57f5c5aac6ee09fbf9714f1078502bb06435 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 18 Aug 2026 06:04:34 +0000 Subject: [PATCH 2/2] skills(checklist-test): the QA-source locator is the area.item bare id (#9484) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Review round: the close-out and traceability lines locate an item by the §0 bare id (area.item), matching the run record's per-clause table, the selector resolver and the QA-source lines already in the wild. Placeholders written without angle brackets, which the GitHub body writer strips. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01Rn7aaamsR99FXRqLcpL99q --- .claude/skills/checklist-test/SKILL.md | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/.claude/skills/checklist-test/SKILL.md b/.claude/skills/checklist-test/SKILL.md index e15c0c012e..ad01dc5855 100644 --- a/.claude/skills/checklist-test/SKILL.md +++ b/.claude/skills/checklist-test/SKILL.md @@ -182,18 +182,24 @@ expected-fail 探针 —— 永不在真实缺陷上把条款打成绿。 **收口评论是机器可 grep 的** —— 一条一行,落在记录 issue 的收口评论里: ```text -Extracted: # · · -Parked-on: # · -Superseded-by: # -Carried-forward: # · · +Extracted: #缺陷卡号 · area.item · 条款 +Parked-on: #锚卡号 · 缺口 +Superseded-by: #新记录号 +Carried-forward: #旧记录号 · area.item · 判定 ``` **抽取出的每张卡,正文带一行溯源**(靠 grep,不靠标签): ```text -QA-source: # · · +QA-source: #运行记录号 · area.item · 条款 ``` +上面两处的定位字段一律是 §0 的**裸 id 形式 `area.item`**(如 +`platform-core.console-login`)—— 解析器、run 记录的逐条款表、抽取卡三处同一把定位 +符,才互相 grep 得到;⛔ 不写只有 item 段的短形。**写进 GitHub 正文/评论时⛔ 不要用尖 +括号占位符**:`<`+字母会被写入层当标签吃掉,一行溯源就此消失在库里 —— 占位用中文词或 +直接填实值。 + **Supersede 协议** —— 重跑覆盖了旧记录的地面时,旧记录关闭(`not_planned` + 一行 `Superseded-by:` 指向新记录),但**先把新一轮没有重新判定的判定结转过去**:结转行 (`Carried-forward:`,引旧记录号)落在**新记录**上,supersede 行落在**旧记录**上。⛔