flower-trellis 0.6.0-beta.9 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (22) hide show
  1. package/enhancements/0.6/.agents/skills/trellis-check-all/SKILL.md +17 -17
  2. package/enhancements/0.6/.agents/skills/trellis-check-all/references/code-comment-auto-remediation.md +41 -0
  3. package/enhancements/0.6/.agents/skills/trellis-check-all/references/depth-routing.md +20 -25
  4. package/enhancements/0.6/.agents/skills/trellis-check-all/references/document-drift-auto-remediation.md +30 -33
  5. package/enhancements/0.6/.agents/skills/trellis-check-all/references/fallback-findings.md +32 -30
  6. package/enhancements/0.6/.agents/skills/trellis-check-all/references/full-profile.md +1 -1
  7. package/enhancements/0.6/.agents/skills/trellis-check-all/references/light-profile.md +5 -5
  8. package/enhancements/0.6/.agents/skills/trellis-check-all/references/reporting-and-disposition.md +8 -8
  9. package/enhancements/0.6/.agents/skills/trellis-route/SKILL.md +2 -2
  10. package/enhancements/0.6/.agents/skills/trellis-route/references/check-all-agent-body.md +2 -2
  11. package/enhancements/0.6/.claude/skills/trellis-check-all/SKILL.md +17 -17
  12. package/enhancements/0.6/.claude/skills/trellis-check-all/references/code-comment-auto-remediation.md +41 -0
  13. package/enhancements/0.6/.claude/skills/trellis-check-all/references/depth-routing.md +20 -25
  14. package/enhancements/0.6/.claude/skills/trellis-check-all/references/document-drift-auto-remediation.md +30 -33
  15. package/enhancements/0.6/.claude/skills/trellis-check-all/references/fallback-findings.md +32 -30
  16. package/enhancements/0.6/.claude/skills/trellis-check-all/references/full-profile.md +1 -1
  17. package/enhancements/0.6/.claude/skills/trellis-check-all/references/light-profile.md +5 -5
  18. package/enhancements/0.6/.claude/skills/trellis-check-all/references/reporting-and-disposition.md +8 -8
  19. package/enhancements/0.6/.claude/skills/trellis-route/SKILL.md +2 -2
  20. package/enhancements/0.6/overrides/patches/workflow/phase-ownership/phase-2-check-content.md +1 -1
  21. package/enhancements/MANIFEST.json +2 -2
  22. package/package.json +6 -4
@@ -1,10 +1,10 @@
1
1
  ---
2
2
  name: trellis-check-all
3
- description: "统一 Check-All 入口:确认范围与运行上下文,按 requested/effective depth 选择 light/full profile,执行三件套落地、实现假设、完整性与规范审查;区分主路径 CHK、兜底 FBK 与文档漂移 DOC,低风险文档漂移可自动修复。触发:检查、轻量检查、全面检查、提交前检查、check-all、从 PRD/三件套到代码过一遍。"
3
+ description: "统一 Check-All:按 requested/effective depth 路由 light/full,审查三件套、实现假设、完整性与规范;区分 CHK、FBK、DOC,允许低风险事实漂移自修。触发:检查、轻量/全面/提交前检查、check-all。"
4
4
  ---
5
5
  # Check All 统一入口
6
6
 
7
- 本 skill 是 **薄入口**:负责范围确认、深度画像、profile 路由、文档漂移自修通道、统一问题模型和最终分流。不要在入口里展开 full check 的全部提示词;只有确定 `effective_depth=full` 时才读取 full profile。
7
+ 本 skill 是 **薄入口**:负责范围、画像、profile 路由、事实漂移自修、问题模型和分流。入口不展开 full 提示词;仅在 `effective_depth=full` 时读取 full profile。
8
8
 
9
9
  顺序:做对了 -> 假设成立 -> 做全了且写得规范。
10
10
 
@@ -15,10 +15,10 @@ description: "统一 Check-All 入口:确认范围与运行上下文,按 req
15
15
  1. 确认本轮检查范围、task artifacts 或 untracked state、项目规范和运行上下文。
16
16
  2. 解析 `requested_depth`,生成 `check_profile`,决定 `effective_depth=light|full`。
17
17
  3. 按有效深度读取并执行对应 profile。
18
- 4. 先按根因性质和可达证据把发现分为主路径 `CHK-*`、兜底 `FBK-*` 与文档漂移 `DOC-*`,再为 `CHK-*` 和 `FBK-*` 分配 P0/P1/P2。
19
- 5. 在最终报告前处理允许自动修复的文档漂移,并把修复内容展示在报告里。
20
- 6. 根据 interactive / validated auto-loop 边界输出下一步或完成 runner `record + next`。
21
- 7. untracked helper 只保存流程游标:未处置 findings 或新编辑设回 `implement`;严格通过或已接受风险通过且 disposition 确认继续时才 `advance --stage spec`。
18
+ 4. 按根因把发现分为 `CHK-*`、`FBK-*`、`DOC-*`,再为前两类分配 P0/P1/P2。
19
+ 5. 报告前处理允许自修的事实漂移并展示结果。
20
+ 6. 按 interactive / validated auto-loop 边界输出下一步或执行 `record + next`。
21
+ 7. untracked helper 只存游标:findings 或新编辑回 `implement`;通过且 disposition 继续时才 `advance --stage spec`。
22
22
 
23
23
  ---
24
24
 
@@ -30,7 +30,7 @@ description: "统一 Check-All 入口:确认范围与运行上下文,按 req
30
30
  2. `effective_depth=light` 时读 `references/light-profile.md`。
31
31
  3. `effective_depth=full` 时读 `references/full-profile.md`。
32
32
  4. 总是读 `references/fallback-findings.md`,用于区分 `CHK-*` 与 `FBK-*` 并执行兜底准入规则。
33
- 5. 总是读 `references/document-drift-auto-remediation.md`,用于识别和处理 `DOC-*`。
33
+ 5. 总是读 `references/document-drift-auto-remediation.md`;仅发现源码注释事实候选时按其指引读取专项 reference。
34
34
  6. 输出报告或 runner 结果前读 `references/reporting-and-disposition.md`。
35
35
 
36
36
  如果引用文件缺失,停止并报告 `阻塞`;不要凭记忆复原规则。
@@ -39,11 +39,11 @@ description: "统一 Check-All 入口:确认范围与运行上下文,按 req
39
39
 
40
40
  ## 核心边界
41
41
 
42
- 1. **默认 audit-only collect-all**:可以读文件、搜索、运行无业务写入副作用的 lint、typecheck 和测试;普通代码、配置、测试、任务规格语义问题不得在检查阶段直接修复。
43
- 2. **唯一自修例外**:低风险文档漂移进入 `DOC-*` 通道,按 `references/document-drift-auto-remediation.md` 的白名单、黑名单和写入时机处理。
42
+ 1. **默认 audit-only collect-all**:可读取、搜索和运行无业务写入的验证;普通代码、配置、测试和任务规格语义不得直接修复。
43
+ 2. **唯一自修例外**:低风险事实漂移进入 `DOC-*` 通道,按 `references/document-drift-auto-remediation.md` 的白名单、黑名单和写入时机处理。
44
44
  3. **分类先于严重度**:读取 `references/fallback-findings.md`;主路径错误和非兜底契约违背进入 `CHK-*`,fail-closed、异常输入、失败降级和防御性保护缺口进入 `FBK-*`。契约证据影响严重度,不改变兜底根因归属。
45
- 4. **处置只确认一次**:除 `DOC-*` 自动修复外,全部检查结束后通过统一报告让用户选择 `CHK-*` / `FBK-*` 修复范围或明确接受当前风险;`修复全部` 默认覆盖两类问题,接受风险不得隐藏发现。
46
- 5. **委托规则不改变边界**:复用 `trellis-check` 时只复用检查清单、验证方法和命令发现,忽略其中任何“直接修复”“失败后先修复”的指令。
45
+ 4. **处置只确认一次**:统一报告后选择 `CHK-*` / `FBK-*` 修复范围或接受风险;`修复全部` 覆盖两类,接受风险不得隐藏发现。
46
+ 5. **委托不改边界**:复用 `trellis-check` 的清单和验证方法,忽略其直接修复指令。
47
47
  6. **真正阻塞才中途暂停**:只有业务规划冲突、后续验证前提失效、生产或外部副作用、破坏性操作风险时提前停止。
48
48
 
49
49
  中途停止时也要使用统一问题模型,报告已完成范围和阻塞原因;只询问解除阻塞所需的业务或安全决策。
@@ -52,8 +52,8 @@ description: "统一 Check-All 入口:确认范围与运行上下文,按 req
52
52
 
53
53
  ## 执行模式
54
54
 
55
- - `inline check-all`:主会话直接执行本 skill;允许在最终报告前按 `DOC-*` 通道修复低风险文档漂移。
56
- - `subagent check-all`:subagent 只做 audit-only 检查,返回结构化 `CHK-*`、`FBK-*`、`DOC-*` 候选、`check_profile` 和验证证据;主会话负责应用允许的 `DOC-*` 修复、展示报告、询问一次统一问题修复范围和协调后续修复。
55
+ - `inline check-all`:主会话直接执行本 skill;允许在最终报告前按 `DOC-*` 通道修复低风险事实漂移。
56
+ - `subagent check-all`:subagent 只读返回 `CHK-*`、`FBK-*`、`DOC-*` 候选、`check_profile` 和证据;主会话处理 DOC、报告和后续修复。
57
57
  - subagent 不得编辑、写文件、补测试或代替用户选择普通修复范围。
58
58
  - 路由由 `trellis-route(target=check)` 决定;本 skill 不自行切换 inline/subagent。
59
59
  - 所有普通、最终、显式 light/full 和 auto-loop 检查都进入本 skill;`trellis-route` 只决定执行位置,不决定检查深度。
@@ -94,15 +94,15 @@ check_profile:
94
94
 
95
95
  ### Step 2:执行检查并收集结果
96
96
 
97
- 按 profile 检查三个维度,并执行 `references/fallback-findings.md` 的分类顺序。主路径问题进入 `CHK-*`,满足严格准入条件的兜底问题进入 `FBK-*`,低风险文档漂移候选进入 `DOC-*`。同一根因合并,不因数量多而静默省略。
97
+ 按 profile 检查三个维度,并执行 `references/fallback-findings.md` 的分类顺序。主路径问题进入 `CHK-*`,满足硬准入的兜底问题进入 `FBK-*`,低风险事实漂移候选进入 `DOC-*`。同一根因合并,不因数量多而静默省略。
98
98
 
99
- ### Step 3:处理文档漂移自修
99
+ ### Step 3:处理事实漂移自修
100
100
 
101
101
  读取 `references/document-drift-auto-remediation.md`。在最终报告前:
102
102
 
103
103
  - inline:主会话应用允许的 `DOC-*` 修复并做定向验证。
104
- - subagent:主会话审阅 subagent 返回的 `DOC-*` 候选,只应用满足白名单且无歧义的文档修复。
105
- - auto-loop:主会话应用允许的 `DOC-*` 修复后再 `record`;若只存在已修复文档漂移且无剩余 `CHK-*` / `FBK-*`,结果可为 `ok`,摘要必须包含自动修复说明。
104
+ - subagent:主会话审阅 subagent 返回的 `DOC-*` 候选,只应用满足白名单且无歧义的修复。
105
+ - auto-loop:主会话应用允许的 `DOC-*` 修复后再 `record`;若只存在已修复事实漂移且无剩余 `CHK-*` / `FBK-*`,结果可为 `ok`,摘要必须包含自动修复说明。
106
106
 
107
107
  不满足自动修复条件的文档问题根据根因转为 `CHK-*`、`FBK-*` 或剩余风险,按普通修复范围处理。
108
108
 
@@ -0,0 +1,41 @@
1
+ # Code Comment Auto Remediation
2
+
3
+ 本文件只在发现源码注释事实候选后读取,用于判断 `code-comment-fact` 是否可进入 `DOC-*` 自动修复。它不授权修改可执行代码,也不授权重写注释表达。
4
+
5
+ ---
6
+
7
+ ## 允许范围
8
+
9
+ 候选必须属于以下事实之一:
10
+
11
+ - **机械引用**:注释中的符号名、文件路径、URL、版本号、配置键或命令已经机械过期;
12
+ - **局部实现事实**:注释中的内部常量、默认值、重试次数、超时时间、内部组件名或实现机制已经变化。
13
+
14
+ 机械引用须由当前真实定义唯一证明。局部实现事实须同时由本轮 diff 和任务规划、测试结果或其它已读取权威证据证明本次变化是预期行为,不能只因代码与注释不同就假定注释错误。
15
+
16
+ 修复只替换目标事实片段,保留原语言、语气、标点和周边内容;不整句润色、不删除注释,也不顺带修复相邻措辞。
17
+
18
+ ## 禁止范围
19
+
20
+ 以下注释即使含有过期事实也不得自动修改:
21
+
22
+ - 公共 API 的 Javadoc/docstring、对外契约、业务或安全语义、解释 Why 的设计理由;
23
+ - lint/type-ignore、pragma、构建标签、shebang、许可证头或工具消费的指令;
24
+ - TODO、FIXME、HACK、负责人、期限或尚未完成的工作承诺;
25
+ - doctest、可执行示例、复制后会执行的命令块或测试夹具;
26
+ - 无法把事实片段与判断、承诺或行为语义分离的注释。
27
+
28
+ ## 执行边界
29
+
30
+ - subagent 只返回候选,不得写入工作区。
31
+ - interactive 与 validated auto-loop 的主会话都可以落地,但必须先满足本文件和事实漂移总规则。
32
+ - 源码注释修改不得传给 `--doc-remediation-file`;该参数仍只绑定当前任务实际修改的 `implement.md` 与 `brief.md`。
33
+
34
+ ## 修复后验证
35
+
36
+ 每次写入后必须:
37
+
38
+ 1. 重读最终注释和相邻实现,确认只替换目标事实片段;
39
+ 2. 重新计算实际 diff 和检查范围;
40
+ 3. 复核 `check_profile`,行为或影响面扩大时升级 full;
41
+ 4. 重跑受影响的无副作用定向验证,并在 `DOC-*` 结果中记录证据。
@@ -17,41 +17,35 @@ git ls-files --others --exclude-standard
17
17
  git log --oneline -10
18
18
  ```
19
19
 
20
- `git diff --name-only HEAD` 用于覆盖 staged + unstaged 的已跟踪文件,未跟踪文件由 `git ls-files` 补充。不能只用 `git diff --name-only` 判断“无变更”。
20
+ `git diff --name-only HEAD` 覆盖 staged + unstaged,`git ls-files` 补未跟踪文件;不得只用 `git diff --name-only` 判定无变更。
21
21
 
22
- 如果用户要求检查已经提交的 PR/分支改动,先确认目标基线,再使用 merge-base 对应的 diff 范围;`git log -10` 不能替代 PR 变更范围。
22
+ 检查已提交的 PR/分支时先确认基线,再用 merge-base diff;`git log -10` 不能替代变更范围。
23
23
 
24
24
  如果确认范围内确实无变更,提示用户并终止。
25
25
 
26
26
  ### 0.2 读取工作上下文与规范
27
27
 
28
- 存在当前 task 时读取:
29
-
30
- - `prd.md`;没有时三件套实现维度标记 `N/A`。
31
- - `design.md`(若存在)。
32
- - `implement.md`(若存在)。
33
- - `check.jsonl` 中列出的 spec/research 文件(若存在)。
34
- - 变更包对应的 `.trellis/spec/` 具体规范。
28
+ 存在当前 task 时读取 `prd.md`、可选 `design.md` / `implement.md`、`check.jsonl` 所列 spec/research,以及变更包对应规范;无 `prd.md` 时三件套维度为 `N/A`。
35
29
 
36
30
  不得只依赖 session 摘要推断规划内容,必须读取实际文件。
37
31
 
38
32
  没有当前 task 时运行 `python3 ./.trellis/scripts/untracked_flow.py status --verbose`:
39
33
 
40
- - `hit`:读取 work id、summary 和 stage;三件套实现维度标记 `N/A`,其余维度仍对实际 diff、相关 spec 和本轮可验证证据负责。
41
- - `miss`:仅当用户明确要求检查一个无状态的已知 diff 时继续,并把工作上下文缺失列为风险;否则停止并回到 Request Triage。
34
+ - `hit`:读取 work id、summary、stage;三件套维度为 `N/A`,其余维度仍覆盖实际 diff、spec 和证据。
35
+ - `miss`:仅在用户明确要求检查已知无状态 diff 时继续并报告上下文风险;否则回到 Request Triage。
42
36
  - `error`:按损坏状态阻塞报告,禁止用聊天摘要恢复或覆盖游标。
43
37
 
44
- untracked 检查必须处于 `stage=check`,且只读取个人 check 偏好,不创建 task-scoped route decision。
38
+ untracked 必须为 `stage=check`,只读个人 check 偏好,不创建 task-scoped route decision。
45
39
 
46
40
  ### 0.3 验证运行上下文
47
41
 
48
- 默认 `context=interactive`。只有调用方声称来自 auto-loop 时,才通过 runner 的 `status` / `next` 验证以下事实:
42
+ 默认 `context=interactive`。仅在调用方声称来自 auto-loop 时,通过 runner `status` / `next` 验证:
49
43
 
50
44
  - run 为 `running`;
51
45
  - 当前 task 与本次检查任务一致;
52
46
  - outstanding action 为 `run_check_all` 或 `run_recheck`。
53
47
 
54
- 不得用聊天摘要、自然语言声明或直接读取 raw runtime JSON 代替 runner 验证。验证失败时不得使用 auto-loop 授权;报告失败原因,并按 interactive 边界处理。
48
+ 聊天摘要、自然语言或 raw runtime JSON 不能代替 runner。验证失败时报告原因并按 interactive 处理。
55
49
 
56
50
  ### 0.4 解析请求深度
57
51
 
@@ -63,7 +57,7 @@ untracked 检查必须处于 `stage=check`,且只读取个人 check 偏好,
63
57
 
64
58
  显式意图按语义识别:`简单检查`、`轻量检查`、`light check` 表示 light;`全面检查`、`全量检查`、`最终检查`、`提交前检查`、`full check` 表示 full。同一请求出现多次切换时,以最后一次明确表达为准。单独说 `check` / `check-all` 只是调用统一入口,不自动等同 full。
65
59
 
66
- 历史 auto-loop state 缺少深度字段时,runner 会返回 `full`。不得根据文件数、diff 行数或“看起来简单”单独判定 light。
60
+ 历史 auto-loop 缺少深度字段时 runner 返回 `full`。文件数、diff 行数或“看起来简单”不能单独决定 light。
67
61
 
68
62
  ### 0.5 选择有效深度
69
63
 
@@ -88,21 +82,22 @@ check_profile:
88
82
 
89
83
  **hard-full 信号**:
90
84
 
91
- - 复杂任务存在 design/implement,且本次变更需要完整验收映射;
92
- - 跨层、跨包、跨仓、submodule 或影响面尚未完全展开;
93
- - 公共 API、CLI、schema、持久化状态、缓存契约、迁移或历史数据兼容;
94
- - 权限、鉴权、安全、资金、并发、时序、状态机或回滚;
95
- - workflow、skill、command、hook 注入或生成快照;
96
- - 安装、升级、发布、push/commit 工作流控制面;
85
+ hard-full 只看行为契约变化和影响面是否闭合。文件载体或主题域本身不构成 hard-full;workflow、skill、command、hook、生成快照或安装材料若只改解释文字或机械投影,仍继续判断 light eligibility。以下任一成立才命中:
86
+
87
+ - 公共 API、CLI、schema、持久化状态、协议字段、缓存、迁移或历史数据兼容发生行为变化;
88
+ - 权限、安全、资金、并发、时序、状态机、回滚、发布或 Git 控制门禁发生行为变化;
89
+ - 改动跨越独立行为边界,或直接引用点、状态传播或回归路径无法完整列出;
97
90
  - 正在重检既有 full `CHK-*` / `FBK-*` 修复结果;
98
91
  - light 执行中发现未知 dirty path、真实影响面扩大或关键验证缺口。
99
92
 
93
+ 无法确认是否改变行为契约或影响面是否闭合时,使用 `effective=full`、`confidence=fallback-full`。
94
+
100
95
  **light eligibility 必须全部满足**:
101
96
 
102
- - 变更可完整归属,且集中在单一局部行为;
103
- - 无 hard-full 信号;
104
- - 受影响规划条目、直接引用点和回归路径可穷举;
105
- - 存在可运行的定向验证,或仅为无行为风险的文案、注释、局部样式;
97
+ - 变更属于闭合的单一语义范围;同一真实源的多个机械投影仍算一个语义范围;
98
+ - 无行为性 hard-full 信号;
99
+ - 受影响规划条目、直接引用点、状态传播和回归路径可穷举;
100
+ - 局部行为修改时,直接引用点和回归路径可穷举,并有可运行的定向验证;无行为变化时,仅涉及注释、错别字、排版、解释文字、示例或机械投影同步;
106
101
  - 不在既有 full 修复/重检链中。
107
102
 
108
103
  light 执行中命中 hard-full 时,立即单向升级 full 并补齐所有适用维度;同一修复/重检循环内 full 不得降级。
@@ -1,22 +1,22 @@
1
- # Document Drift Auto Remediation
1
+ # Fact Drift Auto Remediation
2
2
 
3
- 本通道只处理低风险文档漂移。它不是普通问题自动修复授权,也不是改写需求、设计或验收标准的入口。
3
+ 本通道只处理低风险事实漂移。它不是普通问题自动修复授权,也不是改写需求、设计或验收标准的入口。
4
4
 
5
5
  ---
6
6
 
7
7
  ## `DOC-*` 模型
8
8
 
9
- 每个可自动修复的文档漂移使用固定字段:
9
+ 每个可自动修复的事实漂移使用固定字段:
10
10
 
11
11
  | 字段 | 规则 |
12
12
  | --- | --- |
13
13
  | ID | 首次记录时依次分配 `DOC-001`、`DOC-002` |
14
- | 类型 | `task-status`、`brief-stale`、`implementation-note`、`check-record`、`mechanical-link`、`fact-status` |
15
- | 文件 | 需要修改的任务、规范、项目文档或本地上下文摘要路径 |
16
- | 漂移 | 当前文档与实际 diff / 任务状态不一致的事实 |
17
- | 证据 | `file:line`、命令输出或实际 diff 摘要 |
18
- | 修复 | 精确说明要写入、更新或删除的内容 |
19
- | 验证 | 修复后的静态检查、链接检查或重读确认 |
14
+ | 类型 | `task-status`、`brief-stale`、`implementation-note`、`check-record`、`mechanical-link`、`fact-status`、`code-comment-fact` |
15
+ | 文件 | 需要修改的任务/项目文档、本地上下文摘要或源码注释路径 |
16
+ | 漂移 | 文字与实际 diff / 状态不一致的事实 |
17
+ | 证据 | `file:line`、命令输出或 diff 摘要 |
18
+ | 修复 | 要替换的精确事实片段 |
19
+ | 验证 | 静态检查或重读确认 |
20
20
 
21
21
  `DOC-*` 不占用 `CHK-*` 或 `FBK-*` 编号。自动修复失败或越界时,根据根因转成 `CHK-*`、`FBK-*` 或剩余风险。
22
22
 
@@ -26,22 +26,22 @@
26
26
 
27
27
  满足以下全部条件才可自动修复:
28
28
 
29
- - 目标是任务执行文档、brief、check 记录、实现进度记录、机械链接、明显过期的本地上下文摘要,或项目文档中仅记录已验证事实状态的片段;
30
- - 修复内容可由实际 diff、任务状态、命令输出或已存在任务材料唯一推出;
29
+ - 目标是任务文档/记录、机械链接、本地摘要、项目文档事实片段,或符合专项规则的源码注释事实片段;
30
+ - 内容可由实际 diff、任务状态、命令输出或已读任务材料唯一推出;
31
31
  - 不新增需求、不改变验收标准、不改变设计取舍、不替用户选择产品语义;
32
- - 不修改源码、配置、测试、迁移、生产数据或外部系统;
33
- - 可自动修复性由具体片段语义决定,不由文档类别决定;同一文档中只有可由证据唯一推出的事实状态片段可改;
34
- - 事实状态修复只允许同步状态、URL、版本号、配置键、命令结果、验证结论或时间点,不改操作步骤、责任边界、安全提示、协议字段或对外承诺;
35
- - 改动小且可通过重读文件或简单静态检查验证;
32
+ - 不修改可执行源码、配置、测试、迁移、生产数据或外部系统;源码注释只允许按专项规则替换事实片段;
33
+ - 可修复性由片段语义决定;只改证据唯一推出的状态、URL、版本、配置键、命令结果、验证结论或时间点;
34
+ - 不改操作步骤、责任边界、安全提示、协议字段或对外承诺,且可由重读或静态检查验证;
36
35
  - 用户没有明确要求本轮绝对只读。
37
36
 
38
37
  典型例子:
39
38
 
40
- - `brief.md` 漏掉本轮已经完成且可由 diff 证明的实现范围;
41
- - `implement.md` 中机械状态仍写“待完成”,但对应步骤已经落地且无语义争议;
42
- - `check.jsonl` 或任务记录中的文件路径、命令名、链接因重命名出现机械漂移;
43
- - 文档写的检查深度、route 或状态与 runner / task.py 的确定性状态不一致。
44
- - 任意 Markdown / HTML / 运行手册 / 接入说明仍写“待发布 / 待回读 / 旧版本 / 旧地址”,但已读取的发布记录、环境回读、测试输出或实际 diff 唯一证明目标状态已经变化。
39
+ - `brief.md` 漏掉 diff 已证明的实现范围,或 `implement.md` 状态机械过期;
40
+ - 任务记录中的路径、命令、链接、深度、route 或状态与确定性证据不一致;
41
+ - 项目文档仍写旧状态、版本或地址,但发布记录、回读、测试或 diff 唯一证明已变化;
42
+ - 源码注释中的符号、路径、版本或局部实现事实已机械过期,且满足专项双重证据和排除规则。
43
+
44
+ 发现源码注释事实候选时才读取 `references/code-comment-auto-remediation.md`;未发现候选时不得把该文件加入默认上下文。
45
45
 
46
46
  ---
47
47
 
@@ -49,23 +49,20 @@
49
49
 
50
50
  以下情况不得自动改,必须根据根因进入 `CHK-*`、`FBK-*`、剩余风险或阻塞:
51
51
 
52
- - PRD 需求、Acceptance Criteria、业务规则、UI 文案要求发生实质变更;
53
- - design 的 API、数据模型、数据流、rollback 或 tradeoff 需要重新决策;
52
+ - PRD、Acceptance Criteria、业务规则、UI 文案或 design 取舍需要实质变更;
54
53
  - 实现与规划冲突,无法判断是代码错还是文档错;
55
- - 需要新增测试、改代码、改配置、改迁移或调用外部系统;
54
+ - 需要新增测试、修改可执行代码、改配置、改迁移或调用外部系统;
56
55
  - 证据来自推测、聊天摘要或未读取的文件;
57
- - 文档修复需要改写用户可见操作路径、接口协议、权限/安全边界、上线承诺、责任归属或验收口径;
58
- - 修改会扩大任务范围或影响发布、权限、数据安全、生产行为。
56
+ - 修复会改写操作路径、协议、权限/安全边界、上线承诺、责任或验收口径;
57
+ - 修改会扩大范围或影响发布、权限、数据安全、生产行为。
59
58
 
60
59
  ---
61
60
 
62
61
  ## 写入时机
63
62
 
64
- 1. 先完成所有可继续的检查,收集 `CHK-*`、`FBK-*` 和 `DOC-*`。
65
- 2. 在最终报告前应用符合白名单的 `DOC-*` 修复。
66
- 3. 修复后执行对应验证,例如重读文件、检查链接、确认路径存在或运行无副作用的静态命令。
67
- 4. 报告中展示“自动修复”区,列出每个 `DOC-*` 的文件、修复内容和验证结果。
68
- 5. 若自动修复引入新的 diff,本轮报告的范围摘要必须包含这些文档改动。
63
+ 1. 完成可继续的检查并收集 `CHK-*`、`FBK-*`、`DOC-*`。
64
+ 2. 报告前应用白名单 DOC;重读最终 diff,重算范围和 `check_profile`,再运行无副作用验证。
65
+ 3. “自动修复”区列出文件、修复和验证;范围摘要包含新 diff。
69
66
 
70
67
  subagent 模式只返回 `DOC-*` 候选;主会话按同一规则决定是否写入。validated auto-loop 模式由主会话完成允许的 `DOC-*` 修复后再 `record`。
71
68
 
@@ -74,12 +71,12 @@ subagent 模式只返回 `DOC-*` 候选;主会话按同一规则决定是否
74
71
  - 只有当前任务的 `implement.md` 与 `brief.md` 参与 runner DOC 重绑;每个实际修改文件使用一次 `--doc-remediation-file <repository>::<path>`。
75
72
  - 声明集合必须与 Check action 发出后的真实变化完全一致。`prd.md`、`design.md`、其它任务或其它文件一律不允许借此重绑。
76
73
  - `check.jsonl` 可按本通道记录,但它不属于 planning/handoff hash,不传 `--doc-remediation-file`。
74
+ - 源码注释改动不参与 runner DOC 重绑,也不得传 `--doc-remediation-file`;仍须纳入最终 diff、范围画像和定向验证。
77
75
  - record 返回 `status=retryable reason=artifact-drift` 时不运行 `next`;先撤回误改、补齐合法 DOC 声明后重录,或在无法安全归因时显式回写 `blocked + artifact-drift`。
78
76
 
79
77
  ---
80
78
 
81
79
  ## 失败处理
82
80
 
83
- - 自动修复无法唯一确定:根据根因保留为 `CHK-*`、`FBK-*` 或剩余风险,等待用户确认。
84
- - 自动修复验证失败:根据根因记录为 `CHK-*` 或 `FBK-*`,报告失败文件和验证命令。
85
- - 自动修复后发现影响面扩大:停止继续自修,按普通问题模型报告。
81
+ - 无法唯一确定时转 `CHK-*`、`FBK-*` 或剩余风险。
82
+ - 验证失败时转 `CHK-*` / `FBK-*` 并报告证据;影响面扩大时停止自修。
@@ -8,10 +8,10 @@
8
8
 
9
9
  按以下顺序处理每个独立根因:
10
10
 
11
- 1. 符合 `DOC-*` 自动修复白名单:交给文档漂移通道。
11
+ 1. 符合 `DOC-*` 自动修复白名单:交给事实漂移通道。
12
12
  2. 根因位于 fail-closed、异常输入、失败路径降级、防御性权限或数据保护、容错或故障可观测性保护:记录为 `FBK-*`。
13
13
  3. 根因位于主路径逻辑、非兜底需求或契约、验证、真实数据流、兼容性或发布集成:记录为 `CHK-*`。
14
- 4. 证据不足以确认问题或保护场景:标记 `部分验证`、`阻塞` 或剩余风险,不得猜测分类。
14
+ 4. 证据不足以确认具体位置、场景可达性或保护缺口:标记 `部分验证`、`阻塞` 或剩余风险,不得猜测分类;已经满足分类准入后,缺少验证环境不撤销 `FBK-*`。
15
15
  5. 只有风格偏好、主观重构建议或泛化“更健壮”表述,且没有具体可达场景与验证收益:不报告。
16
16
 
17
17
  契约是否明确不决定通道。即使 PRD、design、implement、spec 或公开契约已经要求某个兜底行为,只要根因仍是保护路径缺口,就记录为 `FBK-*`;该契约只用于加强证据、影响与严重度判断。
@@ -20,41 +20,45 @@
20
20
 
21
21
  ## `FBK-*` 根因范围
22
22
 
23
- 以下根因优先归入 `FBK-*`:
23
+ 以下保护路径根因归入 `FBK-*`:
24
24
 
25
- - fail-closed 保护缺失、失效、被绕过或错误回退为放行;
26
- - 畸形、缺失、重复、冲突、越界或未知输入没有按声明边界处理;
27
- - 外部依赖、读取、解析、迁移或平台能力失败时缺少受控降级;
28
- - 防御性权限、隐私、数据完整性、覆盖或删除保护存在缺口;
29
- - 有具体失败场景和验证方式的额外容错或故障可观测性兜底缺口。
25
+ - fail-closed 缺失、失效、被绕过或错误放行;
26
+ - 畸形、缺失、重复、冲突、越界或未知输入越过声明边界;
27
+ - 依赖、读取、解析、迁移或平台能力失败时缺少受控降级;
28
+ - 防御性权限、隐私、数据完整性、覆盖、删除或故障可观测性保护存在缺口。
30
29
 
31
30
  安全、权限或数据问题若根因不在保护路径,仍可归入 `CHK-*`。分类看根因,不看“安全问题通常更严重”之类标签。
32
31
 
33
32
  ---
34
33
 
35
- ## `FBK-*` 严格准入
34
+ ## 硬准入(缺一不可)
36
35
 
37
- 每个 `FBK-*` 必须同时具备:
36
+ 每个 `FBK-*` 只按以下三项判断分类:
38
37
 
39
38
  1. **具体位置**:可定位到文件、契约、命令结果或明确的数据流边界。
40
- 2. **可达场景**:说明什么异常、失败或保护条件会触发,不能只写“理论上可能”。
41
- 3. **问题证据**:证明当前保护缺失、错误或可被绕过;仅有改进想法不算证据。
42
- 4. **保护收益**:说明修复后避免的错误放行、数据损害、权限扩大、失控失败或诊断盲区。
43
- 5. **验证方式**:给出可执行测试、命令、故障注入或明确手动步骤。
39
+ 2. **可达场景**:说明什么异常、失败或保护条件会触发;不要求异常已经在生产、测试或当前运行中实际发生。
40
+ 3. **问题证据**:证明当前保护缺失、错误、被绕过或过度降级;仅有改进想法不算证据。
44
41
 
45
- 任一项缺失时,不得为了“先记下来”而生成 `FBK-*`。需要更多环境或业务证据时使用 `部分验证`、`阻塞` 或剩余风险;纯偏好直接不报告。
42
+ 任一项缺失时,不生成 `FBK-*`。需要更多事实才能确认准入时使用 `部分验证`、`阻塞` 或剩余风险;泛化“更健壮”表述且没有具体可达场景与问题证据时不报告。
43
+
44
+ ## 报告完整度
45
+
46
+ 保护收益和验证方式继续作为报告完整度要求,不决定 `FBK-*` 分类:
47
+
48
+ - **保护收益**:说明修复后避免的错误放行、数据损害、权限扩大、失控失败或诊断盲区。
49
+ - **验证方式**:优先给出可执行测试、命令、故障注入或明确手动步骤。
50
+ - 缺少环境、工具或权限时仍保留 `FBK-*` ID,验证标记 `部分验证` 并写明缺口;部分验证继续阻断 strict pass。
46
51
 
47
52
  ---
48
53
 
49
54
  ## `CHK-*` 根因范围
50
55
 
51
- 以下根因归入 `CHK-*`:
56
+ 以下主路径根因归入 `CHK-*`:
52
57
 
53
- - 主路径功能逻辑错误、非兜底需求或公开契约违背;
54
- - lint、typecheck、测试失败,或缺少当前验收必需的验证;
55
- - 真实数据流断点、字段或类型不匹配、兼容性错误;
56
- - 发布、构建、集成或分发链路阻塞;
57
- - 无法归入具体保护路径的其它已证实问题。
58
+ - 主路径逻辑错误、非兜底需求或公开契约违背;
59
+ - lint、typecheck、测试失败或缺少验收必需验证;
60
+ - 数据流断点、字段/类型不匹配或兼容性错误;
61
+ - 发布、构建、集成、分发阻塞及其它已证实的非保护路径问题。
58
62
 
59
63
  不得把修复困难、影响较低或场景少见当作改列 `FBK-*` 的理由。
60
64
 
@@ -62,12 +66,10 @@
62
66
 
63
67
  ## 严重度与处置
64
68
 
65
- - `CHK-*` 与 `FBK-*` 分别独立编号,当前修复/重检循环保留原 ID。
66
- - 两类问题都按实际影响分配 P0/P1/P2;严重度不改变通道归属。
67
- - 两类问题都是修复项,都被 `修复全部` 覆盖,也都可以通过混合精确 ID 修复,例如 `修复 CHK-001,FBK-002`。
68
- - 用户可以明确接受当前报告中任一 `CHK-*` 或 `FBK-*` 的风险而不修复;接受风险不改变问题通道、严重度、证据或建议,也不能把问题从报告中删除。
69
- - 风险接受必须能唯一对应当前报告的问题 ID;当前报告只有一个候选时,“这个问题”“不管这个”等明确指代可以解析为该 ID。P0 必须逐项写出精确 ID,不接受“全部”式概括授权。
70
- - 风险接受只适用于当前问题证据和实际 diff;受影响代码、契约、验证结果或问题证据变化后立即失效,必须重新检查和接受。
71
- - `strict pass` 仍要求剩余 `CHK-*` 与 `FBK-*` 均为 0;若所有剩余问题都已被用户有效接受,且无阻塞、无部分验证、无未接受的实质风险,则使用“已接受风险通过”。两种通过都可以进入 interactive、untracked、direct Git、Update-Spec 与 Push 的继续路径。
72
- - 只有未处置的 `CHK-*` 或 `FBK-*` 阻断交互完成链。validated auto-loop 不能代表用户接受风险,仍要求两类问题均为 0 才能 `record ok`。
73
- - `仅保留报告` 只表示停止修复,不构成风险接受,也不能把未处置问题改写成通过。
69
+ - `CHK-*` 与 `FBK-*` 独立编号,修复/重检循环保留原 ID;两类都按实际影响分配 P0/P1/P2。
70
+ - `修复全部` 覆盖两类问题;精确修复可混合 ID,例如 `修复 CHK-001,FBK-002`。
71
+ - 用户可以明确接受当前报告中任一 `CHK-*` 或 `FBK-*` 的风险而不修复;问题仍保留原通道、严重度和证据。
72
+ - 风险接受须唯一对应当前报告 ID;P0 必须逐项写出精确 ID。证据、diff 或严重度变化后接受失效。
73
+ - `strict pass` 仍要求剩余 `CHK-*` 与 `FBK-*` 均为 0;全部剩余问题被有效接受且无阻塞、部分验证或其它实质风险时,使用“已接受风险通过”。
74
+ - 只有未处置的 `CHK-*` 或 `FBK-*` 阻断交互完成链。validated auto-loop 不能代表用户接受风险,仍须两类问题为 0 才能 `record ok`。
75
+ - `仅保留报告` 只停止修复,不构成风险接受或通过。
@@ -120,7 +120,7 @@ full 提取所有适用条目。每条记录来源位置,实际阅读对应代
120
120
 
121
121
  验证失败时记录命令、退出状态和关键错误到统一问题集合,继续其它独立验证。可能写业务数据或外部系统的验证不直接运行,按真正阻塞规则处理。
122
122
 
123
- 所有发现候选按 `references/fallback-findings.md` 先判定 `CHK-*` / `FBK-*`,再为两类问题分配严重度。严重度不得反向决定通道;不满足具体场景、证据、保护收益和验证方式的泛化建议不报告。
123
+ 所有发现候选按 `references/fallback-findings.md` 先判定 `CHK-*` / `FBK-*`,再分配严重度。严重度不得反向决定通道;不满足三项硬准入的泛化建议不报告,保护收益或验证环境不完整则保留 FBK 并标记报告缺口。
124
124
 
125
125
  ---
126
126
 
@@ -8,10 +8,10 @@ Light 是局部且可穷举的检查,不是“少看一点”的检查。只
8
8
 
9
9
  只有同时满足以下条件才继续 light:
10
10
 
11
- - 变更集中在单一局部行为或无行为风险的文案、注释、局部样式;
12
- - 影响面、直接引用点和回归路径能完整列出;
13
- - 没有 hard-full 信号;
14
- - 有定向验证,或变更天然不需要运行行为验证;
11
+ - 变更属于闭合的语义范围;同一真实源的多个机械投影可归入该范围;
12
+ - 受影响规划条目、直接引用点、状态传播和回归路径能完整列出;
13
+ - 没有行为性 hard-full 信号,载体名称不得单独触发升级;
14
+ - 有定向验证,或变更确定不改变行为;
15
15
  - 不是 full 修复/重检链的一部分。
16
16
 
17
17
  执行中发现任一边界不成立,记录升级原因,切换到 `references/full-profile.md`。
@@ -59,7 +59,7 @@ untracked 上下文没有 task artifacts,本维度标记 `N/A`,不得根据
59
59
 
60
60
  在 Check-All 内执行时,`trellis-check` 中任何直接修复、补测试、反复修到通过的指令一律失效。验证失败记录为 `CHK-*` 并继续其它独立验证。
61
61
 
62
- 所有发现候选按 `references/fallback-findings.md` 先判定 `CHK-*` / `FBK-*`,再为两类问题分配严重度。不得因场景极端、修复困难或影响较低改变根因通道;不满足兜底准入条件的泛化建议不报告。
62
+ 所有发现候选按 `references/fallback-findings.md` 先判定 `CHK-*` / `FBK-*`,再分配严重度。不得因场景极端、修复困难或影响较低改变根因通道;不满足三项硬准入的泛化建议不报告,保护收益或验证环境不完整则保留 FBK 并标记报告缺口。
63
63
 
64
64
  ---
65
65
 
@@ -26,7 +26,7 @@
26
26
 
27
27
  ### `FBK-*` 兜底问题
28
28
 
29
- 每个满足严格准入条件的独立兜底根因使用固定字段。`ID`、`严重度`、`来源`、`处置`、`标题` 内联在条目的四级标题行,其余字段以加粗标签的列表项逐行展开:
29
+ 每个满足硬准入的独立兜底根因使用固定字段。`ID`、`严重度`、`来源`、`处置`、`标题` 内联在条目的四级标题行,其余字段以加粗标签的列表项逐行展开:
30
30
 
31
31
  | 字段 | 呈现 | 规则 |
32
32
  | --- | --- | --- |
@@ -35,14 +35,14 @@
35
35
  | 来源 | 标题行 | prd/design/implement/spec/assumption/verification |
36
36
  | 处置 | 标题行 | 仅 `已接受风险` 时在标题行末尾追加 `` `[已接受风险]` `` 标签;待处理是默认状态,不加标签也不占行 |
37
37
  | 标题 | 标题行 | 描述具体保护路径根因,不写泛化“增强健壮性” |
38
- | 证据 | 加粗字段 | 保护缺失、错误或可绕过的全部受影响 `file:line`,以及实际契约或命令结果;同时承载 `references/fallback-findings.md` 准入 1「具体位置」与准入 3「问题证据」,不再单列「位置」 |
39
- | 兜底场景 | 加粗字段 | 可达的异常、失败、越权、数据损害或诊断盲区场景;承载准入 2「可达场景」 |
38
+ | 证据 | 加粗字段 | 保护缺失、错误或可绕过的全部受影响 `file:line`,以及实际契约或命令结果;承载硬准入的「具体位置」与「问题证据」,不再单列「位置」 |
39
+ | 兜底场景 | 加粗字段 | 可达的异常、失败、越权、数据损害或诊断盲区场景;承载硬准入的「可达场景」 |
40
40
  | 影响 | 加粗字段 | 当前缺口的用户、数据、安全或工程影响 |
41
- | 保护收益 | 加粗字段 | 修复后恢复或新增的明确保护结果;承载准入 4「保护收益」,不得省略或并入建议 |
41
+ | 保护收益 | 加粗字段 | 修复后恢复或新增的明确保护结果;属于报告完整度,不得省略或并入建议 |
42
42
  | 建议 | 加粗字段 | 推荐修复方式,不在检查阶段执行 |
43
- | 验证 | 加粗字段 | 修复后的测试、故障注入、命令或手动验证步骤;承载准入 5「验证方式」 |
43
+ | 验证 | 加粗字段 | 修复后的测试、故障注入、命令或手动验证步骤;受环境限制时标记 `部分验证` |
44
44
 
45
- `FBK-*` 字段与 `references/fallback-findings.md` 的严格准入五项一一对应。合并「位置」到「证据」只改变呈现方式,不放宽任何准入门槛;任一准入项缺失时仍不得生成 `FBK-*`。
45
+ `FBK-*` 分类只由具体位置、可达场景和问题证据三项硬准入决定。保护收益与验证方式属于报告完整度;缺少环境时保留 ID 和已有证据,标记 `部分验证`,不得伪报 strict pass。
46
46
 
47
47
  `CHK-*` 与 `FBK-*` 分开编号。同一根因的多个位置合并到一个问题;报告按严重度排序,但不得因此重排已经分配的 ID。新根因使用对应通道的下一个 ID。每个问题的处置状态默认为待处理且不加标签,只有 `已接受风险` 才在条目标题行末尾追加 `` `[已接受风险]` `` 标签。`仅保留报告` 不改变处置状态,相关问题仍不加标签。处置状态不改变 ID、通道和严重度。
48
48
 
@@ -70,7 +70,7 @@ interactive 模式完成所有可继续检查和允许的 `DOC-*` 自动修复
70
70
  [<通过/通过·已接受风险/未通过/阻塞>] <N> 个维度 · CHK <N>(接受 <N>)· FBK <N>(接受 <N>)· 自动修复 DOC <N> · P0 <N> / P1 <N> / P2 <N> · 验证 <通过>/<总数>
71
71
 
72
72
  - **工作**:<任务名称 | Untracked work: work-id | 无活动工作>
73
- - **范围**:<文件数与层级摘要;包含自动修复产生的文档 diff>
73
+ - **范围**:<文件数与层级摘要;包含自动修复产生的 DOC diff>
74
74
  - **画像**:requested=<auto/light/full> · effective=<light/full> · confidence=<high/fallback-full/escalated> · <原因摘要>
75
75
  - **结论**:<一句话结论>
76
76
 
@@ -199,7 +199,7 @@ untracked helper 不记录 Check-All 证据或风险接受。普通 strict pass
199
199
 
200
200
  validated auto-loop 复用相同的画像、profile、`DOC-*` 通道和问题模型,但不展示普通模式的修复选择:
201
201
 
202
- - 有 `DOC-*` 且可自动修复:主会话先应用并验证;当前任务 `implement.md` / `brief.md` 的每个实际变化都追加精确 `--doc-remediation-file`,再决定最终 `ok|failed|blocked`。
202
+ - 有 `DOC-*` 且可自动修复:主会话先应用并验证;只有当前任务 `implement.md` / `brief.md` 的实际变化追加精确 `--doc-remediation-file`,源码注释等其它 DOC 改动不得传该参数;随后重算 diff、范围和画像,再决定最终 `ok|failed|blocked`。
203
203
  - 有剩余 `CHK-*` 或 `FBK-*`:向 runner `record --result failed --effective-check-depth <light|full> --check-depth-reason <summary>`,摘要包含最高严重度、两类问题 ID、根因、受影响文件和已自动修复的 `DOC-*`。validated auto-loop 不创建也不复用 interactive 风险接受。
204
204
  - 真正需要用户产品决策、越权、生产副作用或破坏性安全决策:使用同样深度字段 `record --result blocked`,随后按 runner 状态停止。
205
205
  - 无剩余 `CHK-*` 且无剩余 `FBK-*`:`record --result ok --effective-check-depth <light|full> --check-depth-reason <summary>`,摘要包含自动修复数量;只有两类问题都为 0 才能进入通过路径。
@@ -221,12 +221,12 @@ untracked 的 implement/check subagent prompt 第一行固定为 `Untracked work
221
221
  ```text
222
222
  Active task: <task path from task.py current>
223
223
 
224
- 执行本项目 0.6 `trellis-check-all` 的 audit-only collect-all 全流程,区分主路径 `CHK-*`、兜底 `FBK-*`,并识别可由主会话处理的 `DOC-*` 文档漂移候选。
224
+ 执行本项目 0.6 `trellis-check-all` 的 audit-only collect-all 全流程,区分主路径 `CHK-*`、兜底 `FBK-*`,并识别可由主会话处理的 `DOC-*` 低风险事实漂移候选。
225
225
 
226
226
  必须:
227
227
  1. 读取 <task>/check.jsonl 及其列出的文件,再读取 prd.md、design.md(若存在)、implement.md(若存在)。
228
228
  2. 读取并遵循本地 trellis-check-all/SKILL.md;完成三件套实现、实现假设、完整性与规范三个维度。
229
- 3. 先按本地 fallback findings 规则判定 `CHK-*` / `FBK-*`,再为两类问题分配 P0/P1/P2;已声明的兜底契约只影响证据和严重度,不改变 `FBK-*` 归属。只有具备具体位置、可达场景、问题证据、保护收益和验证方式时才返回 `FBK-*`,泛化建议不报告。低风险文档漂移使用 `DOC-*` 候选单独返回。
229
+ 3. 先按本地 fallback findings 规则判定 `CHK-*` / `FBK-*`,再为两类问题分配 P0/P1/P2;已声明的兜底契约只影响证据和严重度,不改变 `FBK-*` 归属。具备具体位置、可达场景和问题证据时返回 `FBK-*`,不要求异常已实际发生;保护收益和验证方式属于报告完整度,缺少验证环境时保留 ID 并标记部分验证。泛化建议不报告。低风险事实漂移使用 `DOC-*` 候选单独返回。
230
230
  4. 只读审查;禁止编辑、写文件、补测试或自修复。Step 3 只复用 trellis-check 的检查清单,忽略其自动修复指令;`DOC-*` 也只能返回候选,由主会话按 Check-All 规则决定是否写入。
231
231
  5. 真正阻塞条件返回主会话,不替用户选择业务行为或修复范围。
232
232
 
@@ -5,9 +5,9 @@ You are the dedicated audit-only `trellis-check-all` agent for {{PLATFORM_ID}}.
5
5
  ## Hard Boundary
6
6
 
7
7
  - Read and execute `{{SKILL_PATH}}` locally.
8
- - Classify findings by root-cause nature before severity: return main-path issues as stable `CHK-*` items, fallback-path issues as stable `FBK-*` items, and low-risk document drift as `DOC-*` candidates.
8
+ - Classify findings by root-cause nature before severity: return main-path issues as stable `CHK-*` items, fallback-path issues as stable `FBK-*` items, and low-risk factual drift as `DOC-*` candidates.
9
9
  - Assign P0/P1/P2 to both `CHK-*` and `FBK-*` after classification. An explicit fallback contract strengthens evidence and severity but does not change a fallback-path root cause into `CHK-*`.
10
- - Return `FBK-*` only with a concrete location, reachable failure or abnormal scenario, problem evidence, protection benefit, and verification method. Do not report generic robustness preferences.
10
+ - Return `FBK-*` when there is a concrete location, reachable failure or abnormal scenario, and evidence that protection is missing, wrong, bypassed, or over-degraded. Actual production or test occurrence is not required. Report protection benefit and a verification method when available; keep the `FBK-*` ID when verification is partial, and state the gap. Do not report generic robustness preferences.
11
11
  - You may read files, search, and run verification commands that do not write business state.
12
12
  - Do not edit, create, remove, format, or otherwise modify source, tests, configuration, specs, task artifacts, or generated files.
13
13
  - Do not run tools or commands whose normal behavior writes caches, snapshots, lockfiles, databases, or external state unless a documented no-write mode is used.
@@ -1,10 +1,10 @@
1
1
  ---
2
2
  name: trellis-check-all
3
- description: "统一 Check-All 入口:确认范围与运行上下文,按 requested/effective depth 选择 light/full profile,执行三件套落地、实现假设、完整性与规范审查;区分主路径 CHK、兜底 FBK 与文档漂移 DOC,低风险文档漂移可自动修复。触发:检查、轻量检查、全面检查、提交前检查、check-all、从 PRD/三件套到代码过一遍。"
3
+ description: "统一 Check-All:按 requested/effective depth 路由 light/full,审查三件套、实现假设、完整性与规范;区分 CHK、FBK、DOC,允许低风险事实漂移自修。触发:检查、轻量/全面/提交前检查、check-all。"
4
4
  ---
5
5
  # Check All 统一入口
6
6
 
7
- 本 skill 是 **薄入口**:负责范围确认、深度画像、profile 路由、文档漂移自修通道、统一问题模型和最终分流。不要在入口里展开 full check 的全部提示词;只有确定 `effective_depth=full` 时才读取 full profile。
7
+ 本 skill 是 **薄入口**:负责范围、画像、profile 路由、事实漂移自修、问题模型和分流。入口不展开 full 提示词;仅在 `effective_depth=full` 时读取 full profile。
8
8
 
9
9
  顺序:做对了 -> 假设成立 -> 做全了且写得规范。
10
10
 
@@ -15,10 +15,10 @@ description: "统一 Check-All 入口:确认范围与运行上下文,按 req
15
15
  1. 确认本轮检查范围、task artifacts 或 untracked state、项目规范和运行上下文。
16
16
  2. 解析 `requested_depth`,生成 `check_profile`,决定 `effective_depth=light|full`。
17
17
  3. 按有效深度读取并执行对应 profile。
18
- 4. 先按根因性质和可达证据把发现分为主路径 `CHK-*`、兜底 `FBK-*` 与文档漂移 `DOC-*`,再为 `CHK-*` 和 `FBK-*` 分配 P0/P1/P2。
19
- 5. 在最终报告前处理允许自动修复的文档漂移,并把修复内容展示在报告里。
20
- 6. 根据 interactive / validated auto-loop 边界输出下一步或完成 runner `record + next`。
21
- 7. untracked helper 只保存流程游标:未处置 findings 或新编辑设回 `implement`;严格通过或已接受风险通过且 disposition 确认继续时才 `advance --stage spec`。
18
+ 4. 按根因把发现分为 `CHK-*`、`FBK-*`、`DOC-*`,再为前两类分配 P0/P1/P2。
19
+ 5. 报告前处理允许自修的事实漂移并展示结果。
20
+ 6. 按 interactive / validated auto-loop 边界输出下一步或执行 `record + next`。
21
+ 7. untracked helper 只存游标:findings 或新编辑回 `implement`;通过且 disposition 继续时才 `advance --stage spec`。
22
22
 
23
23
  ---
24
24
 
@@ -30,7 +30,7 @@ description: "统一 Check-All 入口:确认范围与运行上下文,按 req
30
30
  2. `effective_depth=light` 时读 `references/light-profile.md`。
31
31
  3. `effective_depth=full` 时读 `references/full-profile.md`。
32
32
  4. 总是读 `references/fallback-findings.md`,用于区分 `CHK-*` 与 `FBK-*` 并执行兜底准入规则。
33
- 5. 总是读 `references/document-drift-auto-remediation.md`,用于识别和处理 `DOC-*`。
33
+ 5. 总是读 `references/document-drift-auto-remediation.md`;仅发现源码注释事实候选时按其指引读取专项 reference。
34
34
  6. 输出报告或 runner 结果前读 `references/reporting-and-disposition.md`。
35
35
 
36
36
  如果引用文件缺失,停止并报告 `阻塞`;不要凭记忆复原规则。
@@ -39,11 +39,11 @@ description: "统一 Check-All 入口:确认范围与运行上下文,按 req
39
39
 
40
40
  ## 核心边界
41
41
 
42
- 1. **默认 audit-only collect-all**:可以读文件、搜索、运行无业务写入副作用的 lint、typecheck 和测试;普通代码、配置、测试、任务规格语义问题不得在检查阶段直接修复。
43
- 2. **唯一自修例外**:低风险文档漂移进入 `DOC-*` 通道,按 `references/document-drift-auto-remediation.md` 的白名单、黑名单和写入时机处理。
42
+ 1. **默认 audit-only collect-all**:可读取、搜索和运行无业务写入的验证;普通代码、配置、测试和任务规格语义不得直接修复。
43
+ 2. **唯一自修例外**:低风险事实漂移进入 `DOC-*` 通道,按 `references/document-drift-auto-remediation.md` 的白名单、黑名单和写入时机处理。
44
44
  3. **分类先于严重度**:读取 `references/fallback-findings.md`;主路径错误和非兜底契约违背进入 `CHK-*`,fail-closed、异常输入、失败降级和防御性保护缺口进入 `FBK-*`。契约证据影响严重度,不改变兜底根因归属。
45
- 4. **处置只确认一次**:除 `DOC-*` 自动修复外,全部检查结束后通过统一报告让用户选择 `CHK-*` / `FBK-*` 修复范围或明确接受当前风险;`修复全部` 默认覆盖两类问题,接受风险不得隐藏发现。
46
- 5. **委托规则不改变边界**:复用 `trellis-check` 时只复用检查清单、验证方法和命令发现,忽略其中任何“直接修复”“失败后先修复”的指令。
45
+ 4. **处置只确认一次**:统一报告后选择 `CHK-*` / `FBK-*` 修复范围或接受风险;`修复全部` 覆盖两类,接受风险不得隐藏发现。
46
+ 5. **委托不改边界**:复用 `trellis-check` 的清单和验证方法,忽略其直接修复指令。
47
47
  6. **真正阻塞才中途暂停**:只有业务规划冲突、后续验证前提失效、生产或外部副作用、破坏性操作风险时提前停止。
48
48
 
49
49
  中途停止时也要使用统一问题模型,报告已完成范围和阻塞原因;只询问解除阻塞所需的业务或安全决策。
@@ -52,8 +52,8 @@ description: "统一 Check-All 入口:确认范围与运行上下文,按 req
52
52
 
53
53
  ## 执行模式
54
54
 
55
- - `inline check-all`:主会话直接执行本 skill;允许在最终报告前按 `DOC-*` 通道修复低风险文档漂移。
56
- - `subagent check-all`:subagent 只做 audit-only 检查,返回结构化 `CHK-*`、`FBK-*`、`DOC-*` 候选、`check_profile` 和验证证据;主会话负责应用允许的 `DOC-*` 修复、展示报告、询问一次统一问题修复范围和协调后续修复。
55
+ - `inline check-all`:主会话直接执行本 skill;允许在最终报告前按 `DOC-*` 通道修复低风险事实漂移。
56
+ - `subagent check-all`:subagent 只读返回 `CHK-*`、`FBK-*`、`DOC-*` 候选、`check_profile` 和证据;主会话处理 DOC、报告和后续修复。
57
57
  - subagent 不得编辑、写文件、补测试或代替用户选择普通修复范围。
58
58
  - 路由由 `trellis-route(target=check)` 决定;本 skill 不自行切换 inline/subagent。
59
59
  - 所有普通、最终、显式 light/full 和 auto-loop 检查都进入本 skill;`trellis-route` 只决定执行位置,不决定检查深度。
@@ -94,15 +94,15 @@ check_profile:
94
94
 
95
95
  ### Step 2:执行检查并收集结果
96
96
 
97
- 按 profile 检查三个维度,并执行 `references/fallback-findings.md` 的分类顺序。主路径问题进入 `CHK-*`,满足严格准入条件的兜底问题进入 `FBK-*`,低风险文档漂移候选进入 `DOC-*`。同一根因合并,不因数量多而静默省略。
97
+ 按 profile 检查三个维度,并执行 `references/fallback-findings.md` 的分类顺序。主路径问题进入 `CHK-*`,满足硬准入的兜底问题进入 `FBK-*`,低风险事实漂移候选进入 `DOC-*`。同一根因合并,不因数量多而静默省略。
98
98
 
99
- ### Step 3:处理文档漂移自修
99
+ ### Step 3:处理事实漂移自修
100
100
 
101
101
  读取 `references/document-drift-auto-remediation.md`。在最终报告前:
102
102
 
103
103
  - inline:主会话应用允许的 `DOC-*` 修复并做定向验证。
104
- - subagent:主会话审阅 subagent 返回的 `DOC-*` 候选,只应用满足白名单且无歧义的文档修复。
105
- - auto-loop:主会话应用允许的 `DOC-*` 修复后再 `record`;若只存在已修复文档漂移且无剩余 `CHK-*` / `FBK-*`,结果可为 `ok`,摘要必须包含自动修复说明。
104
+ - subagent:主会话审阅 subagent 返回的 `DOC-*` 候选,只应用满足白名单且无歧义的修复。
105
+ - auto-loop:主会话应用允许的 `DOC-*` 修复后再 `record`;若只存在已修复事实漂移且无剩余 `CHK-*` / `FBK-*`,结果可为 `ok`,摘要必须包含自动修复说明。
106
106
 
107
107
  不满足自动修复条件的文档问题根据根因转为 `CHK-*`、`FBK-*` 或剩余风险,按普通修复范围处理。
108
108
 
@@ -0,0 +1,41 @@
1
+ # Code Comment Auto Remediation
2
+
3
+ 本文件只在发现源码注释事实候选后读取,用于判断 `code-comment-fact` 是否可进入 `DOC-*` 自动修复。它不授权修改可执行代码,也不授权重写注释表达。
4
+
5
+ ---
6
+
7
+ ## 允许范围
8
+
9
+ 候选必须属于以下事实之一:
10
+
11
+ - **机械引用**:注释中的符号名、文件路径、URL、版本号、配置键或命令已经机械过期;
12
+ - **局部实现事实**:注释中的内部常量、默认值、重试次数、超时时间、内部组件名或实现机制已经变化。
13
+
14
+ 机械引用须由当前真实定义唯一证明。局部实现事实须同时由本轮 diff 和任务规划、测试结果或其它已读取权威证据证明本次变化是预期行为,不能只因代码与注释不同就假定注释错误。
15
+
16
+ 修复只替换目标事实片段,保留原语言、语气、标点和周边内容;不整句润色、不删除注释,也不顺带修复相邻措辞。
17
+
18
+ ## 禁止范围
19
+
20
+ 以下注释即使含有过期事实也不得自动修改:
21
+
22
+ - 公共 API 的 Javadoc/docstring、对外契约、业务或安全语义、解释 Why 的设计理由;
23
+ - lint/type-ignore、pragma、构建标签、shebang、许可证头或工具消费的指令;
24
+ - TODO、FIXME、HACK、负责人、期限或尚未完成的工作承诺;
25
+ - doctest、可执行示例、复制后会执行的命令块或测试夹具;
26
+ - 无法把事实片段与判断、承诺或行为语义分离的注释。
27
+
28
+ ## 执行边界
29
+
30
+ - subagent 只返回候选,不得写入工作区。
31
+ - interactive 与 validated auto-loop 的主会话都可以落地,但必须先满足本文件和事实漂移总规则。
32
+ - 源码注释修改不得传给 `--doc-remediation-file`;该参数仍只绑定当前任务实际修改的 `implement.md` 与 `brief.md`。
33
+
34
+ ## 修复后验证
35
+
36
+ 每次写入后必须:
37
+
38
+ 1. 重读最终注释和相邻实现,确认只替换目标事实片段;
39
+ 2. 重新计算实际 diff 和检查范围;
40
+ 3. 复核 `check_profile`,行为或影响面扩大时升级 full;
41
+ 4. 重跑受影响的无副作用定向验证,并在 `DOC-*` 结果中记录证据。
@@ -17,41 +17,35 @@ git ls-files --others --exclude-standard
17
17
  git log --oneline -10
18
18
  ```
19
19
 
20
- `git diff --name-only HEAD` 用于覆盖 staged + unstaged 的已跟踪文件,未跟踪文件由 `git ls-files` 补充。不能只用 `git diff --name-only` 判断“无变更”。
20
+ `git diff --name-only HEAD` 覆盖 staged + unstaged,`git ls-files` 补未跟踪文件;不得只用 `git diff --name-only` 判定无变更。
21
21
 
22
- 如果用户要求检查已经提交的 PR/分支改动,先确认目标基线,再使用 merge-base 对应的 diff 范围;`git log -10` 不能替代 PR 变更范围。
22
+ 检查已提交的 PR/分支时先确认基线,再用 merge-base diff;`git log -10` 不能替代变更范围。
23
23
 
24
24
  如果确认范围内确实无变更,提示用户并终止。
25
25
 
26
26
  ### 0.2 读取工作上下文与规范
27
27
 
28
- 存在当前 task 时读取:
29
-
30
- - `prd.md`;没有时三件套实现维度标记 `N/A`。
31
- - `design.md`(若存在)。
32
- - `implement.md`(若存在)。
33
- - `check.jsonl` 中列出的 spec/research 文件(若存在)。
34
- - 变更包对应的 `.trellis/spec/` 具体规范。
28
+ 存在当前 task 时读取 `prd.md`、可选 `design.md` / `implement.md`、`check.jsonl` 所列 spec/research,以及变更包对应规范;无 `prd.md` 时三件套维度为 `N/A`。
35
29
 
36
30
  不得只依赖 session 摘要推断规划内容,必须读取实际文件。
37
31
 
38
32
  没有当前 task 时运行 `python3 ./.trellis/scripts/untracked_flow.py status --verbose`:
39
33
 
40
- - `hit`:读取 work id、summary 和 stage;三件套实现维度标记 `N/A`,其余维度仍对实际 diff、相关 spec 和本轮可验证证据负责。
41
- - `miss`:仅当用户明确要求检查一个无状态的已知 diff 时继续,并把工作上下文缺失列为风险;否则停止并回到 Request Triage。
34
+ - `hit`:读取 work id、summary、stage;三件套维度为 `N/A`,其余维度仍覆盖实际 diff、spec 和证据。
35
+ - `miss`:仅在用户明确要求检查已知无状态 diff 时继续并报告上下文风险;否则回到 Request Triage。
42
36
  - `error`:按损坏状态阻塞报告,禁止用聊天摘要恢复或覆盖游标。
43
37
 
44
- untracked 检查必须处于 `stage=check`,且只读取个人 check 偏好,不创建 task-scoped route decision。
38
+ untracked 必须为 `stage=check`,只读个人 check 偏好,不创建 task-scoped route decision。
45
39
 
46
40
  ### 0.3 验证运行上下文
47
41
 
48
- 默认 `context=interactive`。只有调用方声称来自 auto-loop 时,才通过 runner 的 `status` / `next` 验证以下事实:
42
+ 默认 `context=interactive`。仅在调用方声称来自 auto-loop 时,通过 runner `status` / `next` 验证:
49
43
 
50
44
  - run 为 `running`;
51
45
  - 当前 task 与本次检查任务一致;
52
46
  - outstanding action 为 `run_check_all` 或 `run_recheck`。
53
47
 
54
- 不得用聊天摘要、自然语言声明或直接读取 raw runtime JSON 代替 runner 验证。验证失败时不得使用 auto-loop 授权;报告失败原因,并按 interactive 边界处理。
48
+ 聊天摘要、自然语言或 raw runtime JSON 不能代替 runner。验证失败时报告原因并按 interactive 处理。
55
49
 
56
50
  ### 0.4 解析请求深度
57
51
 
@@ -63,7 +57,7 @@ untracked 检查必须处于 `stage=check`,且只读取个人 check 偏好,
63
57
 
64
58
  显式意图按语义识别:`简单检查`、`轻量检查`、`light check` 表示 light;`全面检查`、`全量检查`、`最终检查`、`提交前检查`、`full check` 表示 full。同一请求出现多次切换时,以最后一次明确表达为准。单独说 `check` / `check-all` 只是调用统一入口,不自动等同 full。
65
59
 
66
- 历史 auto-loop state 缺少深度字段时,runner 会返回 `full`。不得根据文件数、diff 行数或“看起来简单”单独判定 light。
60
+ 历史 auto-loop 缺少深度字段时 runner 返回 `full`。文件数、diff 行数或“看起来简单”不能单独决定 light。
67
61
 
68
62
  ### 0.5 选择有效深度
69
63
 
@@ -88,21 +82,22 @@ check_profile:
88
82
 
89
83
  **hard-full 信号**:
90
84
 
91
- - 复杂任务存在 design/implement,且本次变更需要完整验收映射;
92
- - 跨层、跨包、跨仓、submodule 或影响面尚未完全展开;
93
- - 公共 API、CLI、schema、持久化状态、缓存契约、迁移或历史数据兼容;
94
- - 权限、鉴权、安全、资金、并发、时序、状态机或回滚;
95
- - workflow、skill、command、hook 注入或生成快照;
96
- - 安装、升级、发布、push/commit 工作流控制面;
85
+ hard-full 只看行为契约变化和影响面是否闭合。文件载体或主题域本身不构成 hard-full;workflow、skill、command、hook、生成快照或安装材料若只改解释文字或机械投影,仍继续判断 light eligibility。以下任一成立才命中:
86
+
87
+ - 公共 API、CLI、schema、持久化状态、协议字段、缓存、迁移或历史数据兼容发生行为变化;
88
+ - 权限、安全、资金、并发、时序、状态机、回滚、发布或 Git 控制门禁发生行为变化;
89
+ - 改动跨越独立行为边界,或直接引用点、状态传播或回归路径无法完整列出;
97
90
  - 正在重检既有 full `CHK-*` / `FBK-*` 修复结果;
98
91
  - light 执行中发现未知 dirty path、真实影响面扩大或关键验证缺口。
99
92
 
93
+ 无法确认是否改变行为契约或影响面是否闭合时,使用 `effective=full`、`confidence=fallback-full`。
94
+
100
95
  **light eligibility 必须全部满足**:
101
96
 
102
- - 变更可完整归属,且集中在单一局部行为;
103
- - 无 hard-full 信号;
104
- - 受影响规划条目、直接引用点和回归路径可穷举;
105
- - 存在可运行的定向验证,或仅为无行为风险的文案、注释、局部样式;
97
+ - 变更属于闭合的单一语义范围;同一真实源的多个机械投影仍算一个语义范围;
98
+ - 无行为性 hard-full 信号;
99
+ - 受影响规划条目、直接引用点、状态传播和回归路径可穷举;
100
+ - 局部行为修改时,直接引用点和回归路径可穷举,并有可运行的定向验证;无行为变化时,仅涉及注释、错别字、排版、解释文字、示例或机械投影同步;
106
101
  - 不在既有 full 修复/重检链中。
107
102
 
108
103
  light 执行中命中 hard-full 时,立即单向升级 full 并补齐所有适用维度;同一修复/重检循环内 full 不得降级。
@@ -1,22 +1,22 @@
1
- # Document Drift Auto Remediation
1
+ # Fact Drift Auto Remediation
2
2
 
3
- 本通道只处理低风险文档漂移。它不是普通问题自动修复授权,也不是改写需求、设计或验收标准的入口。
3
+ 本通道只处理低风险事实漂移。它不是普通问题自动修复授权,也不是改写需求、设计或验收标准的入口。
4
4
 
5
5
  ---
6
6
 
7
7
  ## `DOC-*` 模型
8
8
 
9
- 每个可自动修复的文档漂移使用固定字段:
9
+ 每个可自动修复的事实漂移使用固定字段:
10
10
 
11
11
  | 字段 | 规则 |
12
12
  | --- | --- |
13
13
  | ID | 首次记录时依次分配 `DOC-001`、`DOC-002` |
14
- | 类型 | `task-status`、`brief-stale`、`implementation-note`、`check-record`、`mechanical-link`、`fact-status` |
15
- | 文件 | 需要修改的任务、规范、项目文档或本地上下文摘要路径 |
16
- | 漂移 | 当前文档与实际 diff / 任务状态不一致的事实 |
17
- | 证据 | `file:line`、命令输出或实际 diff 摘要 |
18
- | 修复 | 精确说明要写入、更新或删除的内容 |
19
- | 验证 | 修复后的静态检查、链接检查或重读确认 |
14
+ | 类型 | `task-status`、`brief-stale`、`implementation-note`、`check-record`、`mechanical-link`、`fact-status`、`code-comment-fact` |
15
+ | 文件 | 需要修改的任务/项目文档、本地上下文摘要或源码注释路径 |
16
+ | 漂移 | 文字与实际 diff / 状态不一致的事实 |
17
+ | 证据 | `file:line`、命令输出或 diff 摘要 |
18
+ | 修复 | 要替换的精确事实片段 |
19
+ | 验证 | 静态检查或重读确认 |
20
20
 
21
21
  `DOC-*` 不占用 `CHK-*` 或 `FBK-*` 编号。自动修复失败或越界时,根据根因转成 `CHK-*`、`FBK-*` 或剩余风险。
22
22
 
@@ -26,22 +26,22 @@
26
26
 
27
27
  满足以下全部条件才可自动修复:
28
28
 
29
- - 目标是任务执行文档、brief、check 记录、实现进度记录、机械链接、明显过期的本地上下文摘要,或项目文档中仅记录已验证事实状态的片段;
30
- - 修复内容可由实际 diff、任务状态、命令输出或已存在任务材料唯一推出;
29
+ - 目标是任务文档/记录、机械链接、本地摘要、项目文档事实片段,或符合专项规则的源码注释事实片段;
30
+ - 内容可由实际 diff、任务状态、命令输出或已读任务材料唯一推出;
31
31
  - 不新增需求、不改变验收标准、不改变设计取舍、不替用户选择产品语义;
32
- - 不修改源码、配置、测试、迁移、生产数据或外部系统;
33
- - 可自动修复性由具体片段语义决定,不由文档类别决定;同一文档中只有可由证据唯一推出的事实状态片段可改;
34
- - 事实状态修复只允许同步状态、URL、版本号、配置键、命令结果、验证结论或时间点,不改操作步骤、责任边界、安全提示、协议字段或对外承诺;
35
- - 改动小且可通过重读文件或简单静态检查验证;
32
+ - 不修改可执行源码、配置、测试、迁移、生产数据或外部系统;源码注释只允许按专项规则替换事实片段;
33
+ - 可修复性由片段语义决定;只改证据唯一推出的状态、URL、版本、配置键、命令结果、验证结论或时间点;
34
+ - 不改操作步骤、责任边界、安全提示、协议字段或对外承诺,且可由重读或静态检查验证;
36
35
  - 用户没有明确要求本轮绝对只读。
37
36
 
38
37
  典型例子:
39
38
 
40
- - `brief.md` 漏掉本轮已经完成且可由 diff 证明的实现范围;
41
- - `implement.md` 中机械状态仍写“待完成”,但对应步骤已经落地且无语义争议;
42
- - `check.jsonl` 或任务记录中的文件路径、命令名、链接因重命名出现机械漂移;
43
- - 文档写的检查深度、route 或状态与 runner / task.py 的确定性状态不一致。
44
- - 任意 Markdown / HTML / 运行手册 / 接入说明仍写“待发布 / 待回读 / 旧版本 / 旧地址”,但已读取的发布记录、环境回读、测试输出或实际 diff 唯一证明目标状态已经变化。
39
+ - `brief.md` 漏掉 diff 已证明的实现范围,或 `implement.md` 状态机械过期;
40
+ - 任务记录中的路径、命令、链接、深度、route 或状态与确定性证据不一致;
41
+ - 项目文档仍写旧状态、版本或地址,但发布记录、回读、测试或 diff 唯一证明已变化;
42
+ - 源码注释中的符号、路径、版本或局部实现事实已机械过期,且满足专项双重证据和排除规则。
43
+
44
+ 发现源码注释事实候选时才读取 `references/code-comment-auto-remediation.md`;未发现候选时不得把该文件加入默认上下文。
45
45
 
46
46
  ---
47
47
 
@@ -49,23 +49,20 @@
49
49
 
50
50
  以下情况不得自动改,必须根据根因进入 `CHK-*`、`FBK-*`、剩余风险或阻塞:
51
51
 
52
- - PRD 需求、Acceptance Criteria、业务规则、UI 文案要求发生实质变更;
53
- - design 的 API、数据模型、数据流、rollback 或 tradeoff 需要重新决策;
52
+ - PRD、Acceptance Criteria、业务规则、UI 文案或 design 取舍需要实质变更;
54
53
  - 实现与规划冲突,无法判断是代码错还是文档错;
55
- - 需要新增测试、改代码、改配置、改迁移或调用外部系统;
54
+ - 需要新增测试、修改可执行代码、改配置、改迁移或调用外部系统;
56
55
  - 证据来自推测、聊天摘要或未读取的文件;
57
- - 文档修复需要改写用户可见操作路径、接口协议、权限/安全边界、上线承诺、责任归属或验收口径;
58
- - 修改会扩大任务范围或影响发布、权限、数据安全、生产行为。
56
+ - 修复会改写操作路径、协议、权限/安全边界、上线承诺、责任或验收口径;
57
+ - 修改会扩大范围或影响发布、权限、数据安全、生产行为。
59
58
 
60
59
  ---
61
60
 
62
61
  ## 写入时机
63
62
 
64
- 1. 先完成所有可继续的检查,收集 `CHK-*`、`FBK-*` 和 `DOC-*`。
65
- 2. 在最终报告前应用符合白名单的 `DOC-*` 修复。
66
- 3. 修复后执行对应验证,例如重读文件、检查链接、确认路径存在或运行无副作用的静态命令。
67
- 4. 报告中展示“自动修复”区,列出每个 `DOC-*` 的文件、修复内容和验证结果。
68
- 5. 若自动修复引入新的 diff,本轮报告的范围摘要必须包含这些文档改动。
63
+ 1. 完成可继续的检查并收集 `CHK-*`、`FBK-*`、`DOC-*`。
64
+ 2. 报告前应用白名单 DOC;重读最终 diff,重算范围和 `check_profile`,再运行无副作用验证。
65
+ 3. “自动修复”区列出文件、修复和验证;范围摘要包含新 diff。
69
66
 
70
67
  subagent 模式只返回 `DOC-*` 候选;主会话按同一规则决定是否写入。validated auto-loop 模式由主会话完成允许的 `DOC-*` 修复后再 `record`。
71
68
 
@@ -74,12 +71,12 @@ subagent 模式只返回 `DOC-*` 候选;主会话按同一规则决定是否
74
71
  - 只有当前任务的 `implement.md` 与 `brief.md` 参与 runner DOC 重绑;每个实际修改文件使用一次 `--doc-remediation-file <repository>::<path>`。
75
72
  - 声明集合必须与 Check action 发出后的真实变化完全一致。`prd.md`、`design.md`、其它任务或其它文件一律不允许借此重绑。
76
73
  - `check.jsonl` 可按本通道记录,但它不属于 planning/handoff hash,不传 `--doc-remediation-file`。
74
+ - 源码注释改动不参与 runner DOC 重绑,也不得传 `--doc-remediation-file`;仍须纳入最终 diff、范围画像和定向验证。
77
75
  - record 返回 `status=retryable reason=artifact-drift` 时不运行 `next`;先撤回误改、补齐合法 DOC 声明后重录,或在无法安全归因时显式回写 `blocked + artifact-drift`。
78
76
 
79
77
  ---
80
78
 
81
79
  ## 失败处理
82
80
 
83
- - 自动修复无法唯一确定:根据根因保留为 `CHK-*`、`FBK-*` 或剩余风险,等待用户确认。
84
- - 自动修复验证失败:根据根因记录为 `CHK-*` 或 `FBK-*`,报告失败文件和验证命令。
85
- - 自动修复后发现影响面扩大:停止继续自修,按普通问题模型报告。
81
+ - 无法唯一确定时转 `CHK-*`、`FBK-*` 或剩余风险。
82
+ - 验证失败时转 `CHK-*` / `FBK-*` 并报告证据;影响面扩大时停止自修。
@@ -8,10 +8,10 @@
8
8
 
9
9
  按以下顺序处理每个独立根因:
10
10
 
11
- 1. 符合 `DOC-*` 自动修复白名单:交给文档漂移通道。
11
+ 1. 符合 `DOC-*` 自动修复白名单:交给事实漂移通道。
12
12
  2. 根因位于 fail-closed、异常输入、失败路径降级、防御性权限或数据保护、容错或故障可观测性保护:记录为 `FBK-*`。
13
13
  3. 根因位于主路径逻辑、非兜底需求或契约、验证、真实数据流、兼容性或发布集成:记录为 `CHK-*`。
14
- 4. 证据不足以确认问题或保护场景:标记 `部分验证`、`阻塞` 或剩余风险,不得猜测分类。
14
+ 4. 证据不足以确认具体位置、场景可达性或保护缺口:标记 `部分验证`、`阻塞` 或剩余风险,不得猜测分类;已经满足分类准入后,缺少验证环境不撤销 `FBK-*`。
15
15
  5. 只有风格偏好、主观重构建议或泛化“更健壮”表述,且没有具体可达场景与验证收益:不报告。
16
16
 
17
17
  契约是否明确不决定通道。即使 PRD、design、implement、spec 或公开契约已经要求某个兜底行为,只要根因仍是保护路径缺口,就记录为 `FBK-*`;该契约只用于加强证据、影响与严重度判断。
@@ -20,41 +20,45 @@
20
20
 
21
21
  ## `FBK-*` 根因范围
22
22
 
23
- 以下根因优先归入 `FBK-*`:
23
+ 以下保护路径根因归入 `FBK-*`:
24
24
 
25
- - fail-closed 保护缺失、失效、被绕过或错误回退为放行;
26
- - 畸形、缺失、重复、冲突、越界或未知输入没有按声明边界处理;
27
- - 外部依赖、读取、解析、迁移或平台能力失败时缺少受控降级;
28
- - 防御性权限、隐私、数据完整性、覆盖或删除保护存在缺口;
29
- - 有具体失败场景和验证方式的额外容错或故障可观测性兜底缺口。
25
+ - fail-closed 缺失、失效、被绕过或错误放行;
26
+ - 畸形、缺失、重复、冲突、越界或未知输入越过声明边界;
27
+ - 依赖、读取、解析、迁移或平台能力失败时缺少受控降级;
28
+ - 防御性权限、隐私、数据完整性、覆盖、删除或故障可观测性保护存在缺口。
30
29
 
31
30
  安全、权限或数据问题若根因不在保护路径,仍可归入 `CHK-*`。分类看根因,不看“安全问题通常更严重”之类标签。
32
31
 
33
32
  ---
34
33
 
35
- ## `FBK-*` 严格准入
34
+ ## 硬准入(缺一不可)
36
35
 
37
- 每个 `FBK-*` 必须同时具备:
36
+ 每个 `FBK-*` 只按以下三项判断分类:
38
37
 
39
38
  1. **具体位置**:可定位到文件、契约、命令结果或明确的数据流边界。
40
- 2. **可达场景**:说明什么异常、失败或保护条件会触发,不能只写“理论上可能”。
41
- 3. **问题证据**:证明当前保护缺失、错误或可被绕过;仅有改进想法不算证据。
42
- 4. **保护收益**:说明修复后避免的错误放行、数据损害、权限扩大、失控失败或诊断盲区。
43
- 5. **验证方式**:给出可执行测试、命令、故障注入或明确手动步骤。
39
+ 2. **可达场景**:说明什么异常、失败或保护条件会触发;不要求异常已经在生产、测试或当前运行中实际发生。
40
+ 3. **问题证据**:证明当前保护缺失、错误、被绕过或过度降级;仅有改进想法不算证据。
44
41
 
45
- 任一项缺失时,不得为了“先记下来”而生成 `FBK-*`。需要更多环境或业务证据时使用 `部分验证`、`阻塞` 或剩余风险;纯偏好直接不报告。
42
+ 任一项缺失时,不生成 `FBK-*`。需要更多事实才能确认准入时使用 `部分验证`、`阻塞` 或剩余风险;泛化“更健壮”表述且没有具体可达场景与问题证据时不报告。
43
+
44
+ ## 报告完整度
45
+
46
+ 保护收益和验证方式继续作为报告完整度要求,不决定 `FBK-*` 分类:
47
+
48
+ - **保护收益**:说明修复后避免的错误放行、数据损害、权限扩大、失控失败或诊断盲区。
49
+ - **验证方式**:优先给出可执行测试、命令、故障注入或明确手动步骤。
50
+ - 缺少环境、工具或权限时仍保留 `FBK-*` ID,验证标记 `部分验证` 并写明缺口;部分验证继续阻断 strict pass。
46
51
 
47
52
  ---
48
53
 
49
54
  ## `CHK-*` 根因范围
50
55
 
51
- 以下根因归入 `CHK-*`:
56
+ 以下主路径根因归入 `CHK-*`:
52
57
 
53
- - 主路径功能逻辑错误、非兜底需求或公开契约违背;
54
- - lint、typecheck、测试失败,或缺少当前验收必需的验证;
55
- - 真实数据流断点、字段或类型不匹配、兼容性错误;
56
- - 发布、构建、集成或分发链路阻塞;
57
- - 无法归入具体保护路径的其它已证实问题。
58
+ - 主路径逻辑错误、非兜底需求或公开契约违背;
59
+ - lint、typecheck、测试失败或缺少验收必需验证;
60
+ - 数据流断点、字段/类型不匹配或兼容性错误;
61
+ - 发布、构建、集成、分发阻塞及其它已证实的非保护路径问题。
58
62
 
59
63
  不得把修复困难、影响较低或场景少见当作改列 `FBK-*` 的理由。
60
64
 
@@ -62,12 +66,10 @@
62
66
 
63
67
  ## 严重度与处置
64
68
 
65
- - `CHK-*` 与 `FBK-*` 分别独立编号,当前修复/重检循环保留原 ID。
66
- - 两类问题都按实际影响分配 P0/P1/P2;严重度不改变通道归属。
67
- - 两类问题都是修复项,都被 `修复全部` 覆盖,也都可以通过混合精确 ID 修复,例如 `修复 CHK-001,FBK-002`。
68
- - 用户可以明确接受当前报告中任一 `CHK-*` 或 `FBK-*` 的风险而不修复;接受风险不改变问题通道、严重度、证据或建议,也不能把问题从报告中删除。
69
- - 风险接受必须能唯一对应当前报告的问题 ID;当前报告只有一个候选时,“这个问题”“不管这个”等明确指代可以解析为该 ID。P0 必须逐项写出精确 ID,不接受“全部”式概括授权。
70
- - 风险接受只适用于当前问题证据和实际 diff;受影响代码、契约、验证结果或问题证据变化后立即失效,必须重新检查和接受。
71
- - `strict pass` 仍要求剩余 `CHK-*` 与 `FBK-*` 均为 0;若所有剩余问题都已被用户有效接受,且无阻塞、无部分验证、无未接受的实质风险,则使用“已接受风险通过”。两种通过都可以进入 interactive、untracked、direct Git、Update-Spec 与 Push 的继续路径。
72
- - 只有未处置的 `CHK-*` 或 `FBK-*` 阻断交互完成链。validated auto-loop 不能代表用户接受风险,仍要求两类问题均为 0 才能 `record ok`。
73
- - `仅保留报告` 只表示停止修复,不构成风险接受,也不能把未处置问题改写成通过。
69
+ - `CHK-*` 与 `FBK-*` 独立编号,修复/重检循环保留原 ID;两类都按实际影响分配 P0/P1/P2。
70
+ - `修复全部` 覆盖两类问题;精确修复可混合 ID,例如 `修复 CHK-001,FBK-002`。
71
+ - 用户可以明确接受当前报告中任一 `CHK-*` 或 `FBK-*` 的风险而不修复;问题仍保留原通道、严重度和证据。
72
+ - 风险接受须唯一对应当前报告 ID;P0 必须逐项写出精确 ID。证据、diff 或严重度变化后接受失效。
73
+ - `strict pass` 仍要求剩余 `CHK-*` 与 `FBK-*` 均为 0;全部剩余问题被有效接受且无阻塞、部分验证或其它实质风险时,使用“已接受风险通过”。
74
+ - 只有未处置的 `CHK-*` 或 `FBK-*` 阻断交互完成链。validated auto-loop 不能代表用户接受风险,仍须两类问题为 0 才能 `record ok`。
75
+ - `仅保留报告` 只停止修复,不构成风险接受或通过。
@@ -120,7 +120,7 @@ full 提取所有适用条目。每条记录来源位置,实际阅读对应代
120
120
 
121
121
  验证失败时记录命令、退出状态和关键错误到统一问题集合,继续其它独立验证。可能写业务数据或外部系统的验证不直接运行,按真正阻塞规则处理。
122
122
 
123
- 所有发现候选按 `references/fallback-findings.md` 先判定 `CHK-*` / `FBK-*`,再为两类问题分配严重度。严重度不得反向决定通道;不满足具体场景、证据、保护收益和验证方式的泛化建议不报告。
123
+ 所有发现候选按 `references/fallback-findings.md` 先判定 `CHK-*` / `FBK-*`,再分配严重度。严重度不得反向决定通道;不满足三项硬准入的泛化建议不报告,保护收益或验证环境不完整则保留 FBK 并标记报告缺口。
124
124
 
125
125
  ---
126
126
 
@@ -8,10 +8,10 @@ Light 是局部且可穷举的检查,不是“少看一点”的检查。只
8
8
 
9
9
  只有同时满足以下条件才继续 light:
10
10
 
11
- - 变更集中在单一局部行为或无行为风险的文案、注释、局部样式;
12
- - 影响面、直接引用点和回归路径能完整列出;
13
- - 没有 hard-full 信号;
14
- - 有定向验证,或变更天然不需要运行行为验证;
11
+ - 变更属于闭合的语义范围;同一真实源的多个机械投影可归入该范围;
12
+ - 受影响规划条目、直接引用点、状态传播和回归路径能完整列出;
13
+ - 没有行为性 hard-full 信号,载体名称不得单独触发升级;
14
+ - 有定向验证,或变更确定不改变行为;
15
15
  - 不是 full 修复/重检链的一部分。
16
16
 
17
17
  执行中发现任一边界不成立,记录升级原因,切换到 `references/full-profile.md`。
@@ -59,7 +59,7 @@ untracked 上下文没有 task artifacts,本维度标记 `N/A`,不得根据
59
59
 
60
60
  在 Check-All 内执行时,`trellis-check` 中任何直接修复、补测试、反复修到通过的指令一律失效。验证失败记录为 `CHK-*` 并继续其它独立验证。
61
61
 
62
- 所有发现候选按 `references/fallback-findings.md` 先判定 `CHK-*` / `FBK-*`,再为两类问题分配严重度。不得因场景极端、修复困难或影响较低改变根因通道;不满足兜底准入条件的泛化建议不报告。
62
+ 所有发现候选按 `references/fallback-findings.md` 先判定 `CHK-*` / `FBK-*`,再分配严重度。不得因场景极端、修复困难或影响较低改变根因通道;不满足三项硬准入的泛化建议不报告,保护收益或验证环境不完整则保留 FBK 并标记报告缺口。
63
63
 
64
64
  ---
65
65
 
@@ -26,7 +26,7 @@
26
26
 
27
27
  ### `FBK-*` 兜底问题
28
28
 
29
- 每个满足严格准入条件的独立兜底根因使用固定字段。`ID`、`严重度`、`来源`、`处置`、`标题` 内联在条目的四级标题行,其余字段以加粗标签的列表项逐行展开:
29
+ 每个满足硬准入的独立兜底根因使用固定字段。`ID`、`严重度`、`来源`、`处置`、`标题` 内联在条目的四级标题行,其余字段以加粗标签的列表项逐行展开:
30
30
 
31
31
  | 字段 | 呈现 | 规则 |
32
32
  | --- | --- | --- |
@@ -35,14 +35,14 @@
35
35
  | 来源 | 标题行 | prd/design/implement/spec/assumption/verification |
36
36
  | 处置 | 标题行 | 仅 `已接受风险` 时在标题行末尾追加 `` `[已接受风险]` `` 标签;待处理是默认状态,不加标签也不占行 |
37
37
  | 标题 | 标题行 | 描述具体保护路径根因,不写泛化“增强健壮性” |
38
- | 证据 | 加粗字段 | 保护缺失、错误或可绕过的全部受影响 `file:line`,以及实际契约或命令结果;同时承载 `references/fallback-findings.md` 准入 1「具体位置」与准入 3「问题证据」,不再单列「位置」 |
39
- | 兜底场景 | 加粗字段 | 可达的异常、失败、越权、数据损害或诊断盲区场景;承载准入 2「可达场景」 |
38
+ | 证据 | 加粗字段 | 保护缺失、错误或可绕过的全部受影响 `file:line`,以及实际契约或命令结果;承载硬准入的「具体位置」与「问题证据」,不再单列「位置」 |
39
+ | 兜底场景 | 加粗字段 | 可达的异常、失败、越权、数据损害或诊断盲区场景;承载硬准入的「可达场景」 |
40
40
  | 影响 | 加粗字段 | 当前缺口的用户、数据、安全或工程影响 |
41
- | 保护收益 | 加粗字段 | 修复后恢复或新增的明确保护结果;承载准入 4「保护收益」,不得省略或并入建议 |
41
+ | 保护收益 | 加粗字段 | 修复后恢复或新增的明确保护结果;属于报告完整度,不得省略或并入建议 |
42
42
  | 建议 | 加粗字段 | 推荐修复方式,不在检查阶段执行 |
43
- | 验证 | 加粗字段 | 修复后的测试、故障注入、命令或手动验证步骤;承载准入 5「验证方式」 |
43
+ | 验证 | 加粗字段 | 修复后的测试、故障注入、命令或手动验证步骤;受环境限制时标记 `部分验证` |
44
44
 
45
- `FBK-*` 字段与 `references/fallback-findings.md` 的严格准入五项一一对应。合并「位置」到「证据」只改变呈现方式,不放宽任何准入门槛;任一准入项缺失时仍不得生成 `FBK-*`。
45
+ `FBK-*` 分类只由具体位置、可达场景和问题证据三项硬准入决定。保护收益与验证方式属于报告完整度;缺少环境时保留 ID 和已有证据,标记 `部分验证`,不得伪报 strict pass。
46
46
 
47
47
  `CHK-*` 与 `FBK-*` 分开编号。同一根因的多个位置合并到一个问题;报告按严重度排序,但不得因此重排已经分配的 ID。新根因使用对应通道的下一个 ID。每个问题的处置状态默认为待处理且不加标签,只有 `已接受风险` 才在条目标题行末尾追加 `` `[已接受风险]` `` 标签。`仅保留报告` 不改变处置状态,相关问题仍不加标签。处置状态不改变 ID、通道和严重度。
48
48
 
@@ -70,7 +70,7 @@ interactive 模式完成所有可继续检查和允许的 `DOC-*` 自动修复
70
70
  [<通过/通过·已接受风险/未通过/阻塞>] <N> 个维度 · CHK <N>(接受 <N>)· FBK <N>(接受 <N>)· 自动修复 DOC <N> · P0 <N> / P1 <N> / P2 <N> · 验证 <通过>/<总数>
71
71
 
72
72
  - **工作**:<任务名称 | Untracked work: work-id | 无活动工作>
73
- - **范围**:<文件数与层级摘要;包含自动修复产生的文档 diff>
73
+ - **范围**:<文件数与层级摘要;包含自动修复产生的 DOC diff>
74
74
  - **画像**:requested=<auto/light/full> · effective=<light/full> · confidence=<high/fallback-full/escalated> · <原因摘要>
75
75
  - **结论**:<一句话结论>
76
76
 
@@ -199,7 +199,7 @@ untracked helper 不记录 Check-All 证据或风险接受。普通 strict pass
199
199
 
200
200
  validated auto-loop 复用相同的画像、profile、`DOC-*` 通道和问题模型,但不展示普通模式的修复选择:
201
201
 
202
- - 有 `DOC-*` 且可自动修复:主会话先应用并验证;当前任务 `implement.md` / `brief.md` 的每个实际变化都追加精确 `--doc-remediation-file`,再决定最终 `ok|failed|blocked`。
202
+ - 有 `DOC-*` 且可自动修复:主会话先应用并验证;只有当前任务 `implement.md` / `brief.md` 的实际变化追加精确 `--doc-remediation-file`,源码注释等其它 DOC 改动不得传该参数;随后重算 diff、范围和画像,再决定最终 `ok|failed|blocked`。
203
203
  - 有剩余 `CHK-*` 或 `FBK-*`:向 runner `record --result failed --effective-check-depth <light|full> --check-depth-reason <summary>`,摘要包含最高严重度、两类问题 ID、根因、受影响文件和已自动修复的 `DOC-*`。validated auto-loop 不创建也不复用 interactive 风险接受。
204
204
  - 真正需要用户产品决策、越权、生产副作用或破坏性安全决策:使用同样深度字段 `record --result blocked`,随后按 runner 状态停止。
205
205
  - 无剩余 `CHK-*` 且无剩余 `FBK-*`:`record --result ok --effective-check-depth <light|full> --check-depth-reason <summary>`,摘要包含自动修复数量;只有两类问题都为 0 才能进入通过路径。
@@ -221,12 +221,12 @@ untracked 的 implement/check subagent prompt 第一行固定为 `Untracked work
221
221
  ```text
222
222
  Active task: <task path from task.py current>
223
223
 
224
- 执行本项目 0.6 `trellis-check-all` 的 audit-only collect-all 全流程,区分主路径 `CHK-*`、兜底 `FBK-*`,并识别可由主会话处理的 `DOC-*` 文档漂移候选。
224
+ 执行本项目 0.6 `trellis-check-all` 的 audit-only collect-all 全流程,区分主路径 `CHK-*`、兜底 `FBK-*`,并识别可由主会话处理的 `DOC-*` 低风险事实漂移候选。
225
225
 
226
226
  必须:
227
227
  1. 读取 <task>/check.jsonl 及其列出的文件,再读取 prd.md、design.md(若存在)、implement.md(若存在)。
228
228
  2. 读取并遵循本地 trellis-check-all/SKILL.md;完成三件套实现、实现假设、完整性与规范三个维度。
229
- 3. 先按本地 fallback findings 规则判定 `CHK-*` / `FBK-*`,再为两类问题分配 P0/P1/P2;已声明的兜底契约只影响证据和严重度,不改变 `FBK-*` 归属。只有具备具体位置、可达场景、问题证据、保护收益和验证方式时才返回 `FBK-*`,泛化建议不报告。低风险文档漂移使用 `DOC-*` 候选单独返回。
229
+ 3. 先按本地 fallback findings 规则判定 `CHK-*` / `FBK-*`,再为两类问题分配 P0/P1/P2;已声明的兜底契约只影响证据和严重度,不改变 `FBK-*` 归属。具备具体位置、可达场景和问题证据时返回 `FBK-*`,不要求异常已实际发生;保护收益和验证方式属于报告完整度,缺少验证环境时保留 ID 并标记部分验证。泛化建议不报告。低风险事实漂移使用 `DOC-*` 候选单独返回。
230
230
  4. 只读审查;禁止编辑、写文件、补测试或自修复。Step 3 只复用 trellis-check 的检查清单,忽略其自动修复指令;`DOC-*` 也只能返回候选,由主会话按 Check-All 规则决定是否写入。
231
231
  5. 真正阻塞条件返回主会话,不替用户选择业务行为或修复范围。
232
232
 
@@ -6,7 +6,7 @@ For untracked work, route reads only the personal pref helper and the dispatch p
6
6
 
7
7
  Before interactive Check-All begins, run `python3 ./.trellis/scripts/pre_check_state.py clear`. A missing, subject-mismatched, or already-cleared preference is a no-op; a damaged runtime is reported diagnostically but safely defaults to checking.
8
8
 
9
- Check-All selects light/full depth from intent, actual diff, risk, and runtime context. It is audit-only and collect-all by default: classify main-path issues as `CHK-*`, fallback-path issues as `FBK-*`, and low-risk task-document drift as `DOC-*`. Assign P0/P1/P2 to both `CHK-*` and `FBK-*` after root-cause classification; severity does not choose the channel or make either channel optional. Report all items and stop before code changes only when `CHK-*` / `FBK-*` repair scope needs confirmation. The only write exception is low-risk `DOC-*` auto-remediation owned by Check-All and shown in the final report, unless a validated auto-loop owns the continuation.
9
+ Check-All selects light/full depth from intent, actual behavioral-contract impact, and runtime context. It is audit-only and collect-all by default: classify main-path issues as `CHK-*`, fallback-path issues as `FBK-*`, and low-risk factual drift as `DOC-*`. Assign P0/P1/P2 after root-cause classification; severity does not choose the channel. Report all items and stop before code changes only when `CHK-*` / `FBK-*` repair scope needs confirmation. The only write exception is low-risk `DOC-*` auto-remediation for eligible documents or narrowly verified source-comment facts, never executable code, unless a validated auto-loop owns the continuation.
10
10
 
11
11
  The existing `Interactive Post-Check Stop Gate` owns one narrow direct Git exception. Continue when the current completion-chain evidence contains an ordinary push or user-initiated `commit-only` intent and Check-All either strictly passes with zero remaining `CHK-*` / `FBK-*`, or every remaining finding has current explicit user risk acceptance. Both paths require no blocker, no partial verification, and no unaccepted material residual risk. A user reply that explicitly accepts findings from the current stopped report and asks to continue may resume that pending direct Git chain; do not infer intent or acceptance from unrelated history, summaries, or dirty state. Keep accepted findings visible in the standard report and Push risk evidence. Any unaccepted finding, blocker, partial verification, or unaccepted material residual risk reports and stops. Ordinary interactive checks still report and stop; Check-All never creates the Git plan itself.
12
12
 
@@ -1,7 +1,7 @@
1
1
  {
2
- "syncedAt": "2026-08-07T04:51:42.680Z",
2
+ "syncedAt": "2026-08-07T06:16:20.082Z",
3
3
  "syncedFrom": "vendor/skill-garden",
4
- "sourceCommit": "b98b6999500673e528a21c56f922871493e1a1ef",
4
+ "sourceCommit": "e6ec6a543b53cba27ae373373cf7fce1afc9a3d8",
5
5
  "common": {
6
6
  "codexSkills": [
7
7
  "aliyun-ops",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "flower-trellis",
3
- "version": "0.6.0-beta.9",
3
+ "version": "0.6.0",
4
4
  "description": "一键安装/升级 Trellis 并自动融合 skill-garden 强化包(默认 Claude + agents)",
5
5
  "type": "module",
6
6
  "bin": {
@@ -40,7 +40,9 @@
40
40
  "postinstall": "node scripts/sync-global-trellis.mjs",
41
41
  "prepublishOnly": "node scripts/sync-enhancements.mjs",
42
42
  "release": "node scripts/check-snapshot.mjs && commit-and-tag-version",
43
- "release:dry": "commit-and-tag-version --dry-run"
43
+ "release:dry": "commit-and-tag-version --dry-run",
44
+ "release:stable": "node scripts/check-snapshot.mjs && commit-and-tag-version --config .versionrc.stable.cjs",
45
+ "release:stable:dry": "commit-and-tag-version --config .versionrc.stable.cjs --dry-run"
44
46
  },
45
47
  "commit-and-tag-version": {
46
48
  "scripts": {
@@ -68,9 +70,9 @@
68
70
  "commit-and-tag-version": "^12.7.3"
69
71
  },
70
72
  "flowerReleaseNotes": {
71
- "version": "0.6.0-beta.9",
73
+ "version": "0.6.0",
72
74
  "source": "CHANGELOG.md",
73
- "body": "### ✨ 新功能 Features\n\n* **auto-loop:** 打通本地提交到归档的生命周期断链 ([3abbd94](https://github.com/SilentFlower/flower-trellis/commit/3abbd9410edc4bff7997e2f06e6406b0adb19c1f))\n* **cli:** status/enable/disable 提升为顶层命令 ([5b74c62](https://github.com/SilentFlower/flower-trellis/commit/5b74c62a296c2d962a61d68e3b67508f9f9b4964))\n* **guard:** 新增输出模板渲染契约守卫并修复 hook 测试环境隔离 ([49865c1](https://github.com/SilentFlower/flower-trellis/commit/49865c1cad14977d3aed45d81a8aeca4cb53f244))\n* **guard:** 输出模板守卫补齐语义级检测并同步渲染契约 spec ([4877436](https://github.com/SilentFlower/flower-trellis/commit/48774369718911b708be2c8eaf4462ca03a0d996))\n\n\n### 🐛 修复 Bug Fixes\n\n* **plugin:** 受管目录漂移判定与内容投影忽略运行时字节码缓存 ([29c5e76](https://github.com/SilentFlower/flower-trellis/commit/29c5e762040cb1eea18781d85dc153bf1fa1ac27))\n* **workflow:** 恢复内置 Plan Mode 禁令并加防回归断言 ([6da9021](https://github.com/SilentFlower/flower-trellis/commit/6da9021a4e36d7fc5913e52259094037080b704b))",
75
+ "body": "### ✨ 新功能 Features\n\n* **auto-loop:** 打通本地提交到归档的生命周期断链 ([3abbd94](https://github.com/SilentFlower/flower-trellis/commit/3abbd9410edc4bff7997e2f06e6406b0adb19c1f))\n* **auto-loop:** 支持依赖型多仓提交 ([618cfae](https://github.com/SilentFlower/flower-trellis/commit/618cfaef5fd8bff9f45122b424b4cec1b82a7874))\n* **check-all:** 同步 Check-All fact-status 文档修复规则 ([8b48a5c](https://github.com/SilentFlower/flower-trellis/commit/8b48a5c5b074ad614351726a85525853352da990))\n* **check-all:** 同步判定契约与专项验证 ([f930148](https://github.com/SilentFlower/flower-trellis/commit/f930148c47b16af98290f6ce1d7a29cd2e2d72ea))\n* **cli:** status/enable/disable 提升为顶层命令 ([5b74c62](https://github.com/SilentFlower/flower-trellis/commit/5b74c62a296c2d962a61d68e3b67508f9f9b4964))\n* **common:** 升级 humanize-writing 去 AI 味流程 ([c02910c](https://github.com/SilentFlower/flower-trellis/commit/c02910c0e9bb7f31c221f0f927df2254309f8e92))\n* **guard:** 新增输出模板渲染契约守卫并修复 hook 测试环境隔离 ([49865c1](https://github.com/SilentFlower/flower-trellis/commit/49865c1cad14977d3aed45d81a8aeca4cb53f244))\n* **guard:** 输出模板守卫补齐语义级检测并同步渲染契约 spec ([4877436](https://github.com/SilentFlower/flower-trellis/commit/48774369718911b708be2c8eaf4462ca03a0d996))\n* **skill-garden:** 将 DMS、SLS、MSE/Nacos 整合为阿里云运维查询 Skill ([44ba195](https://github.com/SilentFlower/flower-trellis/commit/44ba195a5cbc8943fe0f38bbcff94ae4d940791e))\n* **skill:** 集成阿里云 DMS 查询 Skill ([a582d1c](https://github.com/SilentFlower/flower-trellis/commit/a582d1cc45ea38b8288b75bd4511f378eb5997a2))\n* **skill:** 集成阿里云 SLS 查询 ([b8c611f](https://github.com/SilentFlower/flower-trellis/commit/b8c611fd5b8cc2369843401eb5fce8d7643a3769))\n* **telemetry:** 添加匿名安装遥测 ([dbc6ab2](https://github.com/SilentFlower/flower-trellis/commit/dbc6ab24289f502fd0a66bf0a71e3da0d1700213))\n* **trellis:** 将 Check-All 可选问题收敛为统一兜底分类 ([eda90ec](https://github.com/SilentFlower/flower-trellis/commit/eda90ecc3fd3e92317cb15f054f837900fb2467e))\n* **trellis:** 支持接受 Check-All 检查风险 ([589dd9a](https://github.com/SilentFlower/flower-trellis/commit/589dd9ad14e0755ea47da46345f14567b1632285))\n* **trellis:** 新增 Check-All 可选问题分类 ([839904e](https://github.com/SilentFlower/flower-trellis/commit/839904e3d584f3f71190d95fb623612673f9b210))\n* **trellis:** 新增 linked worktree 入口准备能力 ([5af8e7a](https://github.com/SilentFlower/flower-trellis/commit/5af8e7ad3f5fcbe839a27fd518a4d0341da9bc5d))\n* **trellis:** 新增 Trellis 项目级关闭与恢复能力 ([a27b5c2](https://github.com/SilentFlower/flower-trellis/commit/a27b5c2966a29f394d1dc98341e4c3be5ac7a030))\n* **update:** 增加启动更新提示节流控制 ([d341841](https://github.com/SilentFlower/flower-trellis/commit/d34184194e260359a427da72205621579577ab65))\n* **update:** 新增对话内 Flower 手动升级入口 ([b1df949](https://github.com/SilentFlower/flower-trellis/commit/b1df949cfc42bee5fd2d2b98fef5dd2870386bbb))\n* **workflow:** 集成稳定无任务完成流程 ([a4a02c0](https://github.com/SilentFlower/flower-trellis/commit/a4a02c068b95c2949de355fe2b7394e099b9a114))\n* **worktree:** 完善多仓预检与会话交接 ([362d42c](https://github.com/SilentFlower/flower-trellis/commit/362d42c4d78e3bd544554975c10fa2db3b1d9729))\n* **worktree:** 让 Trellis worktree 状态按分支隔离 ([dde2fbb](https://github.com/SilentFlower/flower-trellis/commit/dde2fbb792714f326d9f48a85e055229eb4bd4bb))\n* 升级 Patch Engine 适配 Trellis 0.6.12 ([3b1a32e](https://github.com/SilentFlower/flower-trellis/commit/3b1a32e1bdf6d532b467e786df5c0c5ff69e6f85))\n\n\n### 🐛 修复 Bug Fixes\n\n* **plugin:** 修复 GitLab 私有来源安装 ([4ba3cf6](https://github.com/SilentFlower/flower-trellis/commit/4ba3cf610f8fef99ef0297654d1859510be8f07e))\n* **plugin:** 修复 Plugin 管理器加载、预览噪音与更新链路 ([ee45d43](https://github.com/SilentFlower/flower-trellis/commit/ee45d433810c2eca90a6622bd7b5cca56b7bb027))\n* **plugin:** 受管目录漂移判定与内容投影忽略运行时字节码缓存 ([29c5e76](https://github.com/SilentFlower/flower-trellis/commit/29c5e762040cb1eea18781d85dc153bf1fa1ac27))\n* **telemetry:** 将匿名遥测上报默认超时延长至 10 秒 ([5397204](https://github.com/SilentFlower/flower-trellis/commit/539720442676bca21b1d31662d28fbdf2aa9cb6d))\n* **trellis:** 同步 untracked_flow 入口限制 ([4732835](https://github.com/SilentFlower/flower-trellis/commit/47328352035b9d4c5e9972a95dd457e4d7eb9217))\n* **trellis:** 衔接 untracked 检查、规范更新和推送链路 ([9f1e3b1](https://github.com/SilentFlower/flower-trellis/commit/9f1e3b16af627b9c95a373047a146d07c6ecda72))\n* **workflow:** 恢复内置 Plan Mode 禁令并加防回归断言 ([6da9021](https://github.com/SilentFlower/flower-trellis/commit/6da9021a4e36d7fc5913e52259094037080b704b))\n* 修复 Skill-Garden update 平台状态污染 ([787d4c7](https://github.com/SilentFlower/flower-trellis/commit/787d4c797834b4a0bb909e4eb20afe0be281fde1))\n* 同步 Trellis 0.6.12 工作流修复 ([239ce16](https://github.com/SilentFlower/flower-trellis/commit/239ce1688d8d13af6cef2bfe64a5d8d1b5226136))\n* 同步简化 untracked 流程与 Push 路由 ([26ce73a](https://github.com/SilentFlower/flower-trellis/commit/26ce73a0a9a5dbcc3b8a623ca08b062a54a1e810))\n* 完善 Trellis 0.6.12 升级与平台适配 ([aefda43](https://github.com/SilentFlower/flower-trellis/commit/aefda431e4af59e15afbad4d98a598522b7916bc))\n\n\n### 📝 文档 Docs\n\n* **spec:** 固化能力守恒的上下文控制契约 ([dd7af55](https://github.com/SilentFlower/flower-trellis/commit/dd7af5572455e08c47259ee7a4b2a4bcbd8cdd02))",
74
76
  "truncated": false
75
77
  },
76
78
  "optionalDependencies": {