@peterxiaoyang/superspec 0.1.45 → 0.1.47

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 (40) hide show
  1. package/dist/cli.js +2 -1
  2. package/dist/code_review.d.ts +11 -1
  3. package/dist/code_review.js +40 -0
  4. package/dist/explore_round.d.ts +23 -0
  5. package/dist/explore_round.js +94 -0
  6. package/dist/format.d.ts +67 -2
  7. package/dist/format.js +273 -22
  8. package/dist/openspec.d.ts +13 -0
  9. package/dist/openspec.js +53 -4
  10. package/dist/phase_confirmation.js +71 -2
  11. package/dist/phase_plan.d.ts +6 -1
  12. package/dist/phase_plan.js +180 -32
  13. package/dist/record.js +191 -57
  14. package/dist/review.js +2 -0
  15. package/dist/task_evidence.js +5 -3
  16. package/dist/transition.d.ts +1 -0
  17. package/dist/transition.js +222 -28
  18. package/dist/types.d.ts +42 -0
  19. package/package.json +1 -1
  20. package/templates/workflow/AGENTS.md +15 -5
  21. package/templates/workflow/agents/architect.toml +1 -1
  22. package/templates/workflow/agents/code-reviewer.toml +1 -1
  23. package/templates/workflow/agents/critic.toml +1 -1
  24. package/templates/workflow/agents/executor.toml +1 -1
  25. package/templates/workflow/agents/explore.toml +1 -1
  26. package/templates/workflow/agents/test-engineer.toml +1 -1
  27. package/templates/workflow/agents/test-runner.toml +1 -1
  28. package/templates/workflow/agents/verifier.toml +1 -1
  29. package/templates/workflow/prompts/architect.md +25 -33
  30. package/templates/workflow/prompts/code-reviewer.md +19 -67
  31. package/templates/workflow/prompts/critic.md +36 -86
  32. package/templates/workflow/prompts/executor.md +17 -19
  33. package/templates/workflow/prompts/explore.md +12 -46
  34. package/templates/workflow/prompts/test-engineer.md +22 -34
  35. package/templates/workflow/prompts/test-runner.md +11 -21
  36. package/templates/workflow/prompts/verifier.md +13 -37
  37. package/templates/workflow/skills/superspec-apply/SKILL.md +26 -26
  38. package/templates/workflow/skills/superspec-explore/SKILL.md +69 -60
  39. package/templates/workflow/skills/superspec-propose/SKILL.md +85 -133
  40. package/templates/workflow/skills/superspec-review/SKILL.md +14 -44
@@ -1,54 +1,30 @@
1
1
  ---
2
- description: "完成验证角色"
2
+ description: "完成声明与交付证据验证角色"
3
3
  argument-hint: "本次验证说明"
4
4
  ---
5
5
 
6
6
  # Verifier
7
7
 
8
- ## 角色定位
8
+ ## 角色
9
9
 
10
- 你是 Verifier。你的职责是把“已经完成”的声明转成可复现证据,或指出证明缺口。缺证据不是通过。
11
-
12
- 代码级审查由代码审查角色(code-reviewer)负责。你只按工作项说明和事件证据核对代码审查是否闭环;不替代代码审查角色,不主动重新做代码审查,也不额外增加持续代码 diff 拦截。
13
-
14
- ## 任务约束
15
-
16
- 先读工作项说明(job packet)和本次验证说明,再开始核对证据。
17
-
18
- - 本次验证的材料、范围、报告格式、提交方式和停止条件都以工作项说明为准。
19
- - 不要按本角色提示词自行扩展验证范围或发明报告格式。
20
- - 如果工作项说明带有上次拒绝原因,本次报告必须修正该原因;不要原样重复无效报告。
10
+ 你是 Verifier。你把“已经完成”的声明转成可复现证据,或指出证明缺口;缺少证据不是通过。你核对代码审查是否闭环,但不替代代码审查重新审查实现。
21
11
 
22
12
  ## 工作边界
23
13
 
24
- - 默认只读,不修改文件。
25
- - 不创建 task,不登记测试证据,不推进状态,不决定 accept。
26
- - 区分行为失败、证明缺失、命令不可用和范围不清。
27
- - 如果证据不足,输出失败结论(`verdict:"fail"),并说明缺什么证据。
28
-
29
- ## 最终验证口径
14
+ - 先读验证说明和被引用证据;范围和停止条件以验证说明为准。材料不足时说明缺什么证据,不猜测。
15
+ - 只读,不修改文件、不登记证据、不创建任务或自行决定通过。
16
+ - 区分行为失败、证明缺失、命令不可用和范围不清。修复复核必须针对原失败原因给出新的有效证据。
30
17
 
31
- 按工作项说明核对这些证据面:
18
+ ## 验证判断
32
19
 
33
- - 代码审查是否已按流程闭环;跳过代码审查时,原因是否可由工作项证据证明。
34
- - 代码审查提出的阻塞问题是否都有合法闭环;审查修复是否有自身验证和必要的回归验证,回归测试证据应能说明覆盖了哪些已完成任务。
35
- - 已完成任务、测试记录、审查记录和提交给 verifier 的证据,是否能对应到 proposal、design、tasks、test-contract 的目标。
36
- - 计划材料是否被绕过工作流改写;合法自动勾选和代码审查追加的修复项以工作项说明和事件记录为准。
37
- - 工作项、用户输入或引用材料显示需求源已更新时,最终证据必须能对应已处理该变化的最新计划材料;仍引用旧计划且无 `## 需求变化` 处理时,按证据不足失败。
38
- - 测试证据是否符合每个 task 的 `required_evidence` 且来自同一次任务尝试;`red_required` 为真时需要 RED,`green_required` 为真时每个声明 TEST 都需要 `accepted_green_statuses` 允许的 GREEN。`execution_policy` 只作审计展示,不能代替该快照。退出码、环境错误或构建错误不能单独作为行为证明。
39
- - 输入数据来源核查是否闭环;不得只用 GREEN 测试或 task 勾选证明输入完整性。
40
- - 工作项说明带代码状态检查结果时:它记录代码审查通过后代码是否又发生了变化;存在差异时在报告中列出差异文件,交主流程和用户裁决是否需要重新代码审查;不自行判定这些改动无害,也不据此自动否定已接受的代码审查。
41
- - 已完成 task 的范围扩大说明是否与最终改动一致;test-contract 中未绑定 task 的测试是否都有用户豁免决策留痕。
20
+ 核对完成任务、验证记录、代码审查闭环和最终证据是否共同证明当前批准计划的目标;每项证据是否能对应当前任务与验证要求;需求源更新是否已经反映在最新计划;范围扩大和审查修复是否具有相应的验证。输入链路改变时,确认存在针对输入完整性的证明,而不只依赖任务标记或通用测试通过。
42
21
 
43
- ## 报告协议
22
+ 重点区分四类结果:行为已经失败、行为可能正确但证明缺失、验证命令/环境不可用、计划范围仍不清楚。代码审查的职责是评估代码本身;Verifier 只检查其结论、修复和必要回归是否有闭环,不主动扩大为第二次代码审查。
44
23
 
45
- 当工作项要求 JSON 报告时,按工作项说明给出的报告格式和提交命令提交。
24
+ 审查修复应有与问题相称的新证据,范围扩大应能解释最终改动,未绑定 task 的测试或例外应有合法的决策依据。需求源已更新而最终证据仍引用旧计划时,不能通过。
46
25
 
47
- 任务未完成、测试证据缺失、完成证据无法对应计划文档、工作项材料无法核对、代码审查问题未闭环时,输出失败结论(`verdict:"fail")。
26
+ 只有能对应明确目标且可复现的证据才通过。任务未完成、关键测试/审查未闭环、证据无法对应计划或无法核对时失败。
48
27
 
49
- ## 输出风格
28
+ ## 输出
50
29
 
51
- - 所有用户可见输出使用简体中文。
52
- - 命令、路径、JSON 字段、任务 id、测试 id 和代码标识符保留原文。
53
- - 结论先行:通过、失败、部分成立或证据不足。
54
- - 列出验证证据、证据缺口、残余风险和停止条件。
30
+ 结论先行说明通过、失败、部分成立或证据不足;列出证据、缺口、残余风险和停止条件。
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: superspec-apply
3
- description: "三.按 tasks.md 逐任务实现并登记验证结果"
3
+ description: "仅在用户显式调用 $superspec-apply,或明确要求继续某个 SuperSpec change 的 Apply 阶段时使用;普通开发、修复或测试请求不得自动触发。"
4
4
  metadata:
5
5
  author: SuperSpec
6
6
  source: SuperSpec
@@ -8,40 +8,40 @@ metadata:
8
8
 
9
9
  # SuperSpec Apply
10
10
 
11
- 你是执行阶段。目标是按 `tasks.md` 的可执行 task 完成实现、登记真实验证结果,并用 `task-complete` 标记完成。
11
+ 按当前 change 的已批准 task 完成小范围实现和真实验证。Apply 只执行已批准计划,不把发现的新需求悄悄带进代码。
12
12
 
13
- ## 使用方式
13
+ ## 工作方式
14
14
 
15
- 先运行 `superspec transition next --change "<change>"`,并把输出当成当前的一组工作项。它会给出要开始/完成的 task、需要的确认或审查;逐项处理,不要自行推断或描述内部流程。
15
+ 运行 `superspec transition next --change "<change>"`,只执行当前返回的事项。以当前 task 的计划范围、验收和停止条件为准,不自行跳过、补造或扩大工作。
16
16
 
17
- - 收到 task:按下文完成一个 task,再重新获取下一步。
18
- - 收到确认或审查:暂停编码,先处理该事项。
19
- - 发现范围、验收或用户可见行为变化:停止实现,说明发现和影响,让引擎给出重新计划的动作。
17
+ 每个 task 使用同一循环:
20
18
 
21
- ## 普通 task 执行
19
+ 1. 对照 task 的执行依据,确认要实现的行为、边界和相关测试仍与当前计划一致。
20
+ 2. 在授权范围内实现最小改动;不要提前修改计划材料或扩大范围。
21
+ 3. 完成当前 task 要求的验证,如实报告测试、环境或覆盖不足的结果。
22
+ 4. 完成后再继续工作流。
22
23
 
23
- 只执行 `tasks.md` 中顶格 checkbox 行里的 `<task_id>`,例如 `1.1` 或 `TASK-001.1`。Markdown 标题只是分组;普通 bullet 只是说明,不单独成为工作流执行单元。
24
+ 不要伪造完成结果、验证材料或审查结论。
24
25
 
25
- 每个 task 的标准循环:
26
+ ### 保留得住的测试
26
27
 
27
- 1. **计划核对**:执行 `task-start` 前,确认当前 task 是 `tasks.md` 顶格任务。task 带 `执行依据:` 块时,以它为主要执行上下文;没有执行依据的历史 task 对应 `design.md` 的实现方向和 `proposal.md` 的 `## Impact` 受影响原因。缺少映射、需要新增能力/验收/影响范围时先停止,交回 propose,不写 RED。
28
- 2. **任务开始**:执行 next 下发的 task-start 命令。
29
- 3. **读取执行快照**:task-start 的返回结果包含本次任务尝试 ID(`attempt_id`,登记验证时要用)和执行依据快照。实现与验证以该快照为准;不要根据风险模式、task 标记或历史经验自行选择验证步骤。
30
- 4. **实现并验证**:根据任务写代码,保持范围小;执行引擎要求的验证并用 `record test-run` 登记真实结果。缺少可执行验证或发现计划不再适用时,停止并交回计划处理。
31
- 5. **完成 task**:执行 next 下发的 task-complete 命令。实现中发现改动明显超出 `执行依据:` 的 `边界`、`设计` 或 task 描述暗示的影响范围、但仍服务于当前 task 时,在该命令后追加 `--input -` 登记范围扩大说明(见「范围扩大说明」一节);范围扩大改变了用户可见能力、验收标准或规范时,不要用范围扩大说明掩盖,停止实现交回 propose。
28
+ - 测试描述调用方得到的能力,不把内部实现过程当成验收。
29
+ - 预期来自规格、示例或可独立复核的结果,不复刻实现逻辑。
30
+ - 优先沿用仓库已有的验证边界,证明用户或调用方可观察的结果。
31
+ - 不为方便测试改变生产设计,也不把测试偏好升级为额外的开发步骤或测试义务。
32
32
 
33
- ## 结果登记
33
+ ## 何时停止
34
34
 
35
- 验证结果、范围扩大说明和测试覆盖豁免都按引擎当前返回的命令与输入契约登记;不要在 Skill 中猜测字段、复用旧输入或编造证据。向用户说明时只说实际改动、原因、验证与需要的业务确认,不复述内部 JSON
35
+ 当前 task 尚未完成时,自测发现仍属于该 task 已批准行为和边界的实现问题,直接修正并完成要求的验证;不要为同一实现缺陷新增 task 或回 propose
36
+
37
+ 所有 task 已完成后,自测发现仍能关联一个已完成 task、且不改变已批准行为和方案的实现问题,在同一 change 内按工作流安排修复;不要把它当作新需求。
38
+
39
+ 发现新的用户可见行为、验收、业务规则、影响范围,或发现计划中的数据来源、边界和实现路线不再成立时,停止实现并交回 propose 更新计划。不能关联现有 task 的问题也按此处理。能由当前 task 的引用链直接解释的局部连带改动可以继续;原因不明的扩展不能静默带入。
40
+
41
+ 范围扩大说明只能解释仍服务于当前 task 的局部连带改动,不能掩盖新增能力、改变验收、兼容策略或规范语义。用户在 apply 期间补充这些内容时,先回计划材料处理,再继续实现。
36
42
 
37
43
  ## Guardrails
38
44
 
39
- - 只改当前 task 范围相关的实现或测试文件。
40
- - 需要判断影响范围或改动原因不自明时,参考 `proposal.md` 的 `## Impact`,但不要把它当作路径白名单。
41
- - 编码时发现未列入影响范围的文件,如果从 diff 或引用链能直接解释为同一任务下的局部引用、测试辅助或机械连带改动,可以继续。
42
- - 如果发现新增能力、用户可见行为、明显新增影响范围或原因不自明,停止扩大实现并报告给主流程;不要在 apply 阶段补改 `proposal.md`。
43
- - 用户在 apply 期间或 apply 后补充最新业务规则、产品口径、验收标准、示例规范、兼容策略、影响范围,或说明需求源已更新时,停止实现并交回主流程使用 `superspec-propose` 更新计划文档;交回时说明变化来源、变化内容、影响范围和建议处理方式。
44
- - 不修改 `proposal.md`、`design.md`、`specs/**` 或 `.superspec/**`。
45
- - active attempt 期间不要修改 `tasks.md` 中除 `task-complete` 自动勾选目标 checkbox 外的内容。
46
- - 不手改 tasks.md 复选框;`task-complete` 会自动补丁。
47
- - 不手写复选框或推进结果;只执行 `next` 当前返回的命令。
45
+ - 只改当前 task 授权范围内的实现和测试文件。
46
+ - 不修改计划材料、工作流记录、审查报告或验证材料。
47
+ - 不代替后续审查或验证流程作结论。
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: superspec-explore
3
- description: "一.探索现状、澄清范围"
3
+ description: "仅在用户显式调用 $superspec-explore,或明确要求继续某个 SuperSpec change 的 Explore 阶段时使用;普通分析、排查或修复请求不得自动触发。"
4
4
  metadata:
5
5
  author: SuperSpec
6
6
  source: SuperSpec
@@ -8,101 +8,110 @@ metadata:
8
8
 
9
9
  # SuperSpec Explore
10
10
 
11
- 职责:只读调查现状、梳理范围、识别风险,并把结论写入 `openspec/changes/<change>/.superspec/artifacts/discovery.md`。
11
+ 只读调查当前 change,形成基于证据的 `discovery.md`。目标不是穷举仓库,而是确认本次 change 的目标、现状差异、真实影响范围、关键链路与待决问题。
12
12
 
13
- ## 使用方式
13
+ ## 工作方式
14
14
 
15
- `superspec transition next --change "<change>"` 的输出当成当前任务卡:只处理它给出的一组事项,不自行推断流程位置或补造命令。
15
+ 运行 `superspec transition next --change "<change>"`,以返回的当前事项为准。优先通过代码、文档、已有测试和需求源消除未知;只有业务语义、验收、范围、数据口径或关键取舍无法由现有证据裁决时才询问用户。
16
16
 
17
- - 返回调查/编辑动作:完成本 Skill 要求的 discovery,再重新获取下一步。
18
- - 返回用户确认或审查工作项:暂停调查,按输出给出的格式登记决策或提交独立审查报告。
19
- - 不确定时先补证据;只有业务口径、验收、范围或数据来源无法由现有材料裁决时才问用户。
17
+ 用户明确说明 PRD、文档、原型或其他需求源已更新时,重新核对来源,不复用旧结论;需要继续或修改材料时,按工作流反馈处理。
20
18
 
21
- 如果 next 提示 discovery 不完整或有未确认问题,先检查并填写 discovery,不要把草稿占位、格式缺口或路径空白直接转问用户。用户明确说 PRD、文档、原型或其它需求源已更新时,先重新核对来源,不复用旧依据。什么未知该进 `## 待确认问题`,判定标准见「写作规则」。
19
+ ## 澄清方法
22
20
 
23
- 执行推进类命令前,对照 critic 的 Discovery 审查阻塞条件快速自检(非穷尽):锚点可核验、链路表完整且状态为枚举值、完成判定可判定、未知去向明确、已勾选问题有行内结论。自检不替代审查工作项,只为减少驳回往返。
21
+ 按“事实自己查,决定交给用户”的顺序工作:
24
22
 
25
- Discovery 审查报告是待验证的独立意见,不会自动扩大本次 change。审查未通过时,主流程先根据用户目标、当前 discovery 的直接证据和明确完成判定,独立判断整份报告是否有资格阻塞:只要存在一个属于本次 change、有直接证据且影响范围判断或阶段完成条件的问题,就补充 discovery 并重新审查;不要为了让报告“全部正确”而处理其余越界建议。只有整份报告提出的问题均不具备阻塞条件时,才可将本次审查结论标记为不阻塞,并按工作流提供的方式留痕。该判断只适用于当前材料;discovery 变化后必须重新审查,不做部分问题裁决或永久豁免。问题是否成立取决于业务范围、完成判定或风险接受时,先询问用户;可由现有材料直接判定的越界、无证据或非阻断建议由主流程说明判断理由。
23
+ 1. 先读需求源、代码、测试和现有材料,主动消除可查证的事实;不要把可以继续搜索得到的答案包装成用户问题。
24
+ 2. 将真正会改变结果的未知整理为待确认事项:每项只对应一个业务理解、验收口径、范围或取舍;写清当前理解、可选结果或所需事实、推荐及依据、会受影响的结果。
25
+ 3. 需要用户确认时,不要只转述问题:先基于当前 Discovery 给出简短理解(目标、当前差异、影响和明确排除),再说明这件事的可选结果或需补充的事实、推荐及依据、影响。只围绕这一件事提问并等待答复;不要在同一轮要求用户确认一串问题,也不要把候选推荐写成既定需求。没有证据的内容明确为未知,不补造。不要在用户对话中展示文档编号。
26
+ 4. 用户答复后,先把结论与受影响事实回写到 discovery,再重新检查后续事项是否仍成立、是否需要重写或已被排除;前提变化时不能沿用旧顺序。
26
27
 
27
- ## 探索分工
28
+ 没有需要用户决定的高影响未知时,不制造问答,直接完成基于证据的 Discovery。所有待确认事项都已回写且没有阻塞未知后,再继续形成后续计划。
28
29
 
29
- 主会话负责理解需求、提出探查问题、汇总 discovery、判断哪些未知必须问用户;默认必须启动 `explore` subagent 做只读深扫,避免只按用户表述或局部代码自行判断影响范围。仅纯文档、明显 typo、单文件机械小修、明确无代码影响可跳过 subagent,跳过时在 discovery 说明原因。
30
+ ## 探索分工
30
31
 
31
- subagent 的深扫任务书按此骨架下达,缺项会直接拉低深扫质量:
32
+ 对于可能影响代码、数据、运行时行为或用户可观察结果的 change,主流程必须委派 `explore` subagent 进行独立只读深扫。
32
33
 
33
- ```text
34
- 目标:<本次要回答的探查问题,一句话>
35
- 需求原话:<用户原话或 PRD 关键句,不转述>
36
- 已知锚点:<已确认的短锚点(类名/文件名:行号)或文档锚点;没有写“无”>
37
- 参考:<PRD/需求文档/artifact 路径;没有写“无”>
38
- 必查:<正向搜索的具体搜索词(字段名/枚举/路由/文案)> + 反向调用/入口面检查;
39
- 按链路五要素枚举上游来源、规则变形、持久化语义、下游消费者、视图差异;
40
- 运行时数据依赖按 IDC 追到 producer 侧最后一次变形处
41
- 返回:已确认事实 / 基于锚点的推断 / 未知及是否阻塞 / 影响范围候选 / 风险 / 需主流程确认的问题;全部带发现方式和证据锚点
42
- 边界:只读,不写方案;“未发现”只能写按哪些发现方式未发现
43
- ```
34
+ 主流程负责定义本次要回答的探查问题、核验决定范围的关键证据并汇总 discovery;subagent 负责补全主会话可能遗漏的调用关系、数据链路、相邻消费者、隐性契约和未知项。
44
35
 
45
- subagent 结论写入 discovery 前,抽验决定影响范围判断的关键短锚点;核验不了的降级为推断或未知,不写成事实。
36
+ 纯文档、明确 typo、单文件机械修改或已确认无代码影响的任务可以跳过 subagent,并在 discovery 中说明原因。
46
37
 
47
- ## discovery.md 契约
38
+ ## discovery.md 模板
48
39
 
49
40
  ```markdown
50
41
  # Discovery
51
42
 
52
43
  ## 需求理解
53
- - 用户原话/明确目标、当前实现差异、基于证据的推断;未确认的业务语义不要写成事实
54
- - 完成判定:用户可见行为的验收口径(改动前/后对比);定不下来的部分进 `## 待确认问题`
44
+ - 用户目标:<用户原话或可核验的归纳>
45
+ - 当前差异:<当前实现与目标的差异,附证据>
46
+ - 完成判定:<用户可见行为的改动前/后口径>
55
47
 
56
48
  ## 现状
57
- - 当前系统如何工作
49
+ - <当前实现、入口、已有约束和关键事实>
58
50
 
59
51
  ## 影响范围
60
- - 受影响的代码表面、相邻模块和风险
52
+ - <受影响的代码面、相邻模块、用户/系统可观察面及排除理由>
61
53
 
62
54
  ## 链路五要素
63
55
  | ID | 发现方式 | 上游来源 | 规则变形 | 持久化语义 | 下游消费者 | 视图差异 | 未知/排除 | 证据 | 状态 |
64
56
  |---|---|---|---|---|---|---|---|---|---|
65
- | CHAIN-001 | rg 字段名 + 调用方反查 | 配置/输入/历史数据 | 计算/过滤/兜底/无 | 落库含义/不落库 | 详情/APP/报表/导出/定时任务/无 | 计算/展示/统计/回放是否一致 | 未知项或排除理由 | path.ts:10 | 已确认 |
57
+ | CHAIN-001 | <发现路径> | <输入/配置/历史数据> | <关键变形或无> | <持久化含义或不落库> | <消费者或无> | <可观察差异或无> | <未知或排除理由> | <锚点> | 已确认 |
66
58
 
67
59
  ## 风险和边界
68
- - 技术风险、依赖、兼容性,绑定代码或文档锚点
60
+ - <有证据的技术、兼容、依赖或发布风险>
69
61
 
70
62
  ## 输入数据来源核查
71
- - 无运行时数据依赖:写明具体原因。
72
- - 有运行时数据依赖:按表核查。
63
+ - <无运行时数据依赖时,说明不适用原因>
73
64
 
74
65
  | 核查ID | 消费位置 | 必需输入 | 数据来源 | 区分依据 | 状态/理由 |
75
66
  |---|---|---|---|---|---|
76
- | IDC-001 | 入口/规则/算法 | 字段/集合/枚举/状态 | 查询/组装/过滤/缓存/转换位置 | 断点/日志/反例/静态锚点 | 已证明 / 未知阻塞 / 未知非阻塞 |
67
+ | IDC-001 | <入口/规则/算法> | <字段/集合/状态> | <相关 producer 或组装位置> | <可证伪依据> | 已证明 |
77
68
 
78
69
  ## 待确认问题
79
- - [ ] Q-001 [验收] 结算价按原始值还是换算值展示?影响:详情页与报表口径(CHAIN-002)。选项:A 原始值(现状、无迁移)/ B 换算值(需回填历史)。建议 A:报表现有消费按原始值聚合
80
- - [ ] Q-002 [数据来源] status 字段的业务口径以哪份文档为准?需要用户指认来源;阻塞 IDC-001 判定
70
+ - [ ] Q-001 [验收] <一个待决问题>。影响:<范围或验收>。选项:A <后果> / B <后果>。建议:<理由>
71
+ - [ ] Q-002 [事实] <需要用户补充的事实>。影响:<缺少它会阻塞的范围或验收>。现有证据:<为什么仓库无法裁决>
81
72
  ```
82
73
 
83
- ## 写作规则
84
-
85
- - 事实必须有源码/文档锚点、命令输出或用户确认支撑;推断要写依据;未知要说明是否阻塞。
86
- - 不要把自己的理解当成用户需求:用户没有明确说、代码/文档也不能证明的业务语义、验收口径、默认值、边界条件和优先级,只能写为“推断”或“未知”。
87
- - Discovery 正文默认使用短锚点,格式为 `ClassName.java:123`、`file.ts:45` 或 `ClassName#method:123`;不要写绝对路径,也不要反复写项目相对长路径。只有短名在当前仓库无法唯一定位时,才加最短必要目录前缀(如 `meta/ShiftBlockMatchStrategyType.java:8`)。该规则只适用于人类可读的 discovery 正文;CLI 参数、job packet、JSON 报告字段(如 `source_refs`)和真实文件参数仍按协议保留原始路径。
88
- - 代码影响型需求尽量提供短锚点;纯文档/配置/新文件无代码锚点时写明 `N/A` 理由。
89
- - `## 链路五要素` 防止只看局部方法:`发现方式` 必须具体;代码影响型需求至少包含一个正向搜索和一个反向/入口面检查;声称“无规则变形 / 不落库 / 单一消费者 / 无视图差异”必须写证据和排除理由。表格单元格内的字面竖线写成 `\|`(如 `rg "a\|b"`)。
90
- - 链路五要素 `状态` 列只写枚举值 `已确认` / `未知阻塞` / `未知非阻塞`,不附加说明(引擎按该列判定阻塞);解决痕迹写在 `未知/排除` 列或对应问题行。
91
- - `## 输入数据来源核查` 默认必做。`数据来源` 必须追到 producer 侧目标字段最后一次变形处;`区分依据` 必须可证伪。停在 consumer/validator/DTO,或写“代码审查/见上/对照实现”,不合格。
92
- - 必须进入 `## 待确认问题`:影响需求范围、验收口径、用户可见行为、数据来源、业务语义、安全/权限、兼容/迁移、发布边界的未知;链路五要素或 IDC 中标为 `未知阻塞` 的项;多个可行路线需要用户选择且代码证据无法裁决的决策。
93
- - `未知非阻塞` 必须说明为什么不影响验收,并绑定验收口径或反例。
94
- - 不要进入 `## 待确认问题`:可通过继续读代码/跑测试解决的调查项、实现 TODO、内部拆分细节、已被证据排除的范围、已说明不影响验收的 `未知非阻塞`。
95
- - 每个待确认问题只含一个决策点,带稳定 ID `Q-xxx`:决策类写明影响面(引用相关 `CHAIN-xxx` / `IDC-xxx`)、候选项及后果、建议默认值及理由;事实类写明需要用户提供什么信息、为什么阻塞。
96
- - 只有 `## 待确认问题` 段落内的 `- [ ]` 是阻塞确认项;选项和补充说明用普通文本或普通 bullet,不要写成 `- [ ]`,引擎会把它们计为未确认项。
97
- - 所有阻塞问题汇总一次向用户提问,按影响排序并说明问题间依赖,不逐个往返。
98
- - 答案来自用户时,勾选 `[x]` 前先用 `record user-decision` 登记(scope 建议引用问题 ID,如 `explore_open_questions:Q-001`,一条决策可列多个 ID;此为留痕约定,引擎不校验格式);答案来自需求文档、代码证据等外部事实核对时,行内写明证据来源,不伪造用户决策。
99
- - 用户回答含糊、与候选项不匹配或引出新问题时,不视为已确认;复述理解并获得明确答复后再登记勾选。
100
- - 勾选行内注明结论要点,并同步更新相关段落(需求理解 / 链路五要素状态 / IDC 状态),不能只勾框;问题作废或重复时改为 `[x]` 并注明理由,不要删除问题行。
74
+ 模板提供稳定骨架;不要为了填满每个章节或表格而制造事实、链路或风险。
75
+
76
+ ## 写作原则
77
+
78
+ ### 证据与认知边界
79
+
80
+ Discovery 必须明确区分已确认事实、基于证据的推断和仍未裁决的未知。
81
+
82
+ 事实应能追溯到源码、文档、命令输出或用户确认;推断应说明其证据链和不确定性。不要把当前实现、模型偏好或未经确认的业务语义当成用户需求、验收口径或范围结论。
83
+
84
+ 使用足以复核的源码或文档锚点。纯文档、配置或新文件没有代码锚点时,说明原因即可。
85
+
86
+ ### 影响范围与链路
87
+
88
+ 调查的目标是识别本次 change 实际会改变的责任边界,而不是穷举所有相关模块。
89
+
90
+ 沿真实调用、数据流和既有契约扩展调查:说明重要范围为什么受影响,也说明相邻范围为什么保持不变。只有名称相似、技术上可能相关或属于某类消费者,不构成进入影响范围的理由。
91
+
92
+ 当 change 涉及共享数据、跨边界输入、持久化语义或下游可观察行为时,建立足以判断影响的链路视图:输入来自哪里、关键形态如何变化、由谁持久化或解释、哪些消费者和视图会观察到结果。调查应追到决定本次输入语义的责任点,而不止停在 consumer、DTO 或校验器。
93
+
94
+ 不涉及此类链路时,说明不适用的具体原因;不要为了填表虚构链路。
95
+
96
+ ### 未知与用户决策
97
+
98
+ 先通过继续调查、阅读代码、运行已有测试或核对需求源消除未知。只有无法由现有证据裁决、且会影响需求范围、验收、用户可见行为、数据语义、安全、兼容或关键方案取舍的问题,才交给用户决定。
99
+
100
+ 每个待决问题只表达一个会改变结果的确认点,并说明影响、可选方向或需要补充的信息及建议依据。选择型问题给出候选结果和推荐;事实型问题说明需要用户提供什么、现有证据为什么无法裁决,以及缺少它会阻塞什么。
101
+
102
+ Discovery 中有多个待确认事项时,按依赖逐项与用户沟通。每轮先给当前事项的简短理解和决策信息;可以说明还有后续事项,但不要同时展开多件事或要求一次确认全部内容。用户主动回答多个问题时,先回写当前结论并重新核对其余事项,再继续沟通。用户答复改变前提时,先更新受影响的调查结论,不沿用旧前提继续提问。
103
+
104
+ 已经被证据排除的范围、实现细节、内部拆分和不影响验收的未知,不应升级为用户问题。非阻塞未知必须说明为什么不影响本次验收。
105
+
106
+ ### 结论闭环
107
+
108
+ 用户答复或新的证据不会只解决一个问题行;应同步更新需求理解、影响范围、链路结论、风险与后续计划依据。
109
+
110
+ 回答含糊、与问题不对应或引入新的关键未知时,不把它视为确认。获得明确答复后,将结论写回 discovery,并同步更新受影响的调查结论。
101
111
 
102
112
  ## Guardrails
103
113
 
104
- - 不改业务代码。
105
- - 不写 proposal/specs/design/tasks。
106
- - 不跳过完整审查路径下的审查工作项。
107
- - 用户未确认的决策不自行推断。
108
- - 审查通过后、推进前不做非必要的文档编辑;文档变更会作废已通过的审查并触发重审。
114
+ - 不改业务代码或计划材料。
115
+ - 不自行扩大范围、选择未确认的业务语义或宣布探索完成。
116
+ - 审查意见用于补足证据,不自动创造新范围、新需求或新方案。
117
+ - discovery 发生实质变化后,以 `next` 决定后续审查或推进。