@chenmk/superflow 0.5.9 → 0.5.11

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 (33) hide show
  1. package/INSTALL.en.md +7 -1
  2. package/INSTALL.md +12 -2
  3. package/README.md +12 -2
  4. package/README.zh-CN.md +12 -3
  5. package/assets/manifest.json +1 -0
  6. package/assets/scripts/superflow-coding-ready.mjs +88 -19
  7. package/assets/scripts/superflow-dependency-update-hook.sh +4 -17
  8. package/assets/scripts/superflow-document-audit.mjs +29 -5
  9. package/assets/scripts/superflow-hook-guard.sh +3 -14
  10. package/assets/scripts/superflow-review-coverage.mjs +258 -0
  11. package/assets/skills/superflow-docs/SKILL.md +5 -0
  12. package/assets/skills/superflow-pipeline/references/document-readiness.md +4 -0
  13. package/assets/skills/superflow-pipeline/references/document-review-coverage.md +82 -0
  14. package/assets/skills/superflow-requirement-review/SKILL.md +4 -0
  15. package/assets/skills/superflow-verify/SKILL.md +4 -0
  16. package/assets/skills-en/superflow-docs/SKILL.md +6 -0
  17. package/assets/skills-en/superflow-pipeline/references/document-readiness.md +4 -0
  18. package/assets/skills-en/superflow-pipeline/references/document-review-coverage.md +89 -0
  19. package/assets/skills-en/superflow-requirement-review/SKILL.md +5 -0
  20. package/assets/skills-en/superflow-verify/SKILL.md +5 -0
  21. package/dist/app/cli.js +1 -0
  22. package/dist/app/cli.js.map +1 -1
  23. package/dist/app/commands/doctor.js +9 -3
  24. package/dist/app/commands/doctor.js.map +1 -1
  25. package/dist/app/commands/update.js +22 -5
  26. package/dist/app/commands/update.js.map +1 -1
  27. package/dist/domains/config/cli-help.js +4 -2
  28. package/dist/domains/config/cli-help.js.map +1 -1
  29. package/dist/domains/deps.js +62 -30
  30. package/dist/domains/deps.js.map +1 -1
  31. package/dist/domains/sdd-readiness.js +9 -0
  32. package/dist/domains/sdd-readiness.js.map +1 -1
  33. package/package.json +1 -1
@@ -0,0 +1,258 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import os from "node:os";
4
+ import { createHash } from "node:crypto";
5
+ import { spawnSync } from "node:child_process";
6
+ import { fileURLToPath } from "node:url";
7
+
8
+ export const reviewPath = ".sdd/reviews/document-review.json";
9
+ export function fileHash(file) {
10
+ return createHash("sha256").update(fs.readFileSync(file)).digest("hex");
11
+ }
12
+
13
+ // Reuse the handoff's canonical projection: progress checkboxes/report updates
14
+ // must not invalidate a frozen contract. Do not invent a second hash algorithm.
15
+ export function currentHandoffHash(root) {
16
+ const directory = path.dirname(fileURLToPath(import.meta.url));
17
+ const candidates = [
18
+ path.resolve(directory, "../skills/superflow-pipeline/scripts"),
19
+ path.resolve(directory, "../skills-en/superflow-pipeline/scripts"),
20
+ path.join(os.homedir(), ".codex/skills/superflow-pipeline/scripts"),
21
+ path.join(os.homedir(), ".claude/skills/superflow-pipeline/scripts"),
22
+ ];
23
+ const script = candidates
24
+ .map((dir) => path.join(dir, "superflow-handoff.sh"))
25
+ .find((file) => fs.existsSync(file));
26
+ if (!script) throw new Error("缺少 handoff 脚本,请执行 superflow update");
27
+ const result = spawnSync("bash", [script, root, "--hash-only"], {
28
+ encoding: "utf-8",
29
+ timeout: 30000,
30
+ });
31
+ const hash = result.stdout?.trim();
32
+ if (result.status !== 0 || !/^[a-f0-9]{64}$/.test(hash ?? "")) {
33
+ throw new Error("无法重新计算 handoff hash,请检查冻结文档");
34
+ }
35
+ return hash;
36
+ }
37
+
38
+ const nonempty = (value) =>
39
+ typeof value === "string" && value.trim().length > 0;
40
+ const list = (value) => (Array.isArray(value) ? value : []);
41
+
42
+ // This validates trace structure and evidence identity, NOT business semantics.
43
+ export function validateCoverage(root, review, issues, checkCode = true) {
44
+ const coverage = review?.coverage;
45
+ if (coverage?.schemaVersion !== "superflow.review-coverage.v1") {
46
+ issues.push(
47
+ "缺少需求×入口评审 coverage;按 document-review-coverage.md 补齐并重新评审",
48
+ );
49
+ return;
50
+ }
51
+ for (const field of [
52
+ "sources",
53
+ "requirements",
54
+ "entries",
55
+ "cases",
56
+ "decisions",
57
+ ]) {
58
+ if (
59
+ !Array.isArray(coverage[field]) ||
60
+ coverage[field].some(
61
+ (item) => !item || typeof item !== "object" || Array.isArray(item),
62
+ )
63
+ ) {
64
+ issues.push(`coverage.${field} 必须是对象数组`);
65
+ return;
66
+ }
67
+ }
68
+ const index = (items, label) => {
69
+ const result = new Map();
70
+ if (!Array.isArray(items) || items.length === 0)
71
+ issues.push(`${label}不能为空`);
72
+ for (const item of list(items)) {
73
+ if (!nonempty(item?.id) || result.has(item.id)) {
74
+ issues.push(`${label}存在空白或重复 ID`);
75
+ } else result.set(item.id, item);
76
+ }
77
+ return result;
78
+ };
79
+ const sources = index(coverage.sources, "来源清单");
80
+ const requirements = index(coverage.requirements, "需求清单");
81
+ const entries = index(coverage.entries, "真实入口清单");
82
+ const cases = new Map();
83
+ for (const item of list(coverage.cases)) {
84
+ if (!nonempty(item?.id) || cases.has(item.id))
85
+ issues.push("验收用例存在空白或重复 ID");
86
+ else cases.set(item.id, item);
87
+ }
88
+ const refs = (values, role, label) => {
89
+ if (
90
+ !Array.isArray(values) ||
91
+ values.length === 0 ||
92
+ values.some((id) => !sources.has(id))
93
+ ) {
94
+ issues.push(`${label}缺少有效来源引用`);
95
+ } else if (role && !values.some((id) => sources.get(id).role === role)) {
96
+ issues.push(`${label}缺少 ${role} 来源`);
97
+ }
98
+ };
99
+ for (const source of sources.values()) {
100
+ if (
101
+ !nonempty(source.path) ||
102
+ !/^[a-f0-9]{64}$/.test(source.sha256 ?? "") ||
103
+ !["requirement", "code", "contract"].includes(source.role)
104
+ ) {
105
+ issues.push(`来源 ${source.id} 缺少路径、角色或 SHA-256`);
106
+ continue;
107
+ }
108
+ if (!checkCode && source.role === "code") continue;
109
+ try {
110
+ if (fileHash(path.resolve(root, source.path)) !== source.sha256) {
111
+ issues.push(`来源 ${source.id} 内容已变化,需要重新评审`);
112
+ }
113
+ } catch {
114
+ issues.push(`来源 ${source.id} 不可读取`);
115
+ }
116
+ }
117
+ for (const req of requirements.values()) {
118
+ if (!nonempty(req.statement)) issues.push(`需求 ${req.id} 缺少原始语义`);
119
+ refs(req.sourceRefs, "requirement", `需求 ${req.id}`);
120
+ }
121
+ for (const entry of entries.values()) {
122
+ if (
123
+ !nonempty(entry.actor) ||
124
+ !nonempty(entry.route) ||
125
+ !["browser", "api", "job", "event", "library", "cli"].includes(entry.kind)
126
+ ) {
127
+ issues.push(`入口 ${entry.id} 缺少角色、实际路由或入口类型`);
128
+ }
129
+ refs(entry.sourceRefs, "code", `入口 ${entry.id}`);
130
+ }
131
+ for (const test of cases.values()) {
132
+ const entry = entries.get(test.entryId);
133
+ if (!entry || !nonempty(test.action) || test.level !== entry.kind) {
134
+ issues.push(`用例 ${test.id} 未对应真实入口及验收等级`);
135
+ }
136
+ for (const key of ["response", "state", "forbiddenEffects"]) {
137
+ if (!nonempty(test.assertions?.[key]))
138
+ issues.push(`用例 ${test.id} 缺少 ${key} 断言`);
139
+ }
140
+ refs(test.sourceRefs, "contract", `用例 ${test.id}`);
141
+ }
142
+ const pairs = new Set();
143
+ for (const decision of list(coverage.decisions)) {
144
+ const key = JSON.stringify([decision?.requirementId, decision?.entryId]);
145
+ if (
146
+ !requirements.has(decision?.requirementId) ||
147
+ !entries.has(decision?.entryId) ||
148
+ pairs.has(key)
149
+ ) {
150
+ issues.push("需求×入口存在未知或重复映射");
151
+ continue;
152
+ }
153
+ pairs.add(key);
154
+ if (
155
+ !["FIX", "VERIFY_EXISTING", "EXCLUDED"].includes(decision.disposition) ||
156
+ !nonempty(decision.rationale) ||
157
+ !nonempty(decision.currentBehavior) ||
158
+ !nonempty(decision.targetBehavior)
159
+ ) {
160
+ issues.push(`${key} 缺少适用性结论、理由或当前/目标行为`);
161
+ }
162
+ refs(
163
+ decision.sourceRefs,
164
+ decision.disposition === "EXCLUDED" ? "requirement" : null,
165
+ key,
166
+ );
167
+ if (
168
+ decision.disposition !== "EXCLUDED" &&
169
+ (!Array.isArray(decision.caseIds) ||
170
+ decision.caseIds.length === 0 ||
171
+ decision.caseIds.some(
172
+ (id) => cases.get(id)?.entryId !== decision.entryId,
173
+ ))
174
+ ) {
175
+ issues.push(`${key} 缺少对应真实入口的验收用例`);
176
+ }
177
+ if (
178
+ decision.disposition === "EXCLUDED" &&
179
+ list(decision.caseIds).length > 0
180
+ ) {
181
+ issues.push(`${key} 排除项不能同时声明已被验收覆盖`);
182
+ }
183
+ }
184
+ const expected = [];
185
+ for (const req of requirements.keys())
186
+ for (const entry of entries.keys()) {
187
+ const pair = [req, entry];
188
+ expected.push(JSON.stringify(pair));
189
+ if (!pairs.has(JSON.stringify(pair)))
190
+ issues.push(`需求×入口缺少映射: ${req} / ${entry}`);
191
+ }
192
+ for (const lens of ["source-contract", "e2e-environment"]) {
193
+ const rounds = list(review.rounds).filter((round) => round?.lens === lens);
194
+ const reviewed = new Set(
195
+ rounds.flatMap((round) =>
196
+ list(round.reviewedPairs).map((pair) => JSON.stringify(pair)),
197
+ ),
198
+ );
199
+ if (
200
+ expected.some((pair) => !reviewed.has(pair)) ||
201
+ [...reviewed].some((pair) => !pairs.has(pair))
202
+ ) {
203
+ issues.push(
204
+ `${lens} 未逐项评审全部需求×入口(含 EXCLUDED/VERIFY_EXISTING)`,
205
+ );
206
+ }
207
+ }
208
+ }
209
+
210
+ export function checkReceipt(root, { checkCode = false } = {}) {
211
+ const issues = [];
212
+ try {
213
+ const receipt = JSON.parse(
214
+ fs.readFileSync(
215
+ path.join(root, ".sdd/readiness/coding-ready.json"),
216
+ "utf8",
217
+ ),
218
+ );
219
+ const state = fs.readFileSync(path.join(root, ".sdd/state.yaml"), "utf8");
220
+ const stateHash = state.match(
221
+ /^handoff_hash:\s*["']?([a-f0-9]{64})["']?\s*$/m,
222
+ )?.[1];
223
+ if (
224
+ receipt.schemaVersion !== "superflow.coding-ready.v1" ||
225
+ receipt.codingReady !== true ||
226
+ receipt.handoffHash !== stateHash ||
227
+ receipt.handoffHash !== currentHandoffHash(root) ||
228
+ receipt.reviewHash !== fileHash(path.join(root, reviewPath))
229
+ ) {
230
+ issues.push("Coding Ready 内容已过期或缺少评审指纹");
231
+ }
232
+ const review = JSON.parse(
233
+ fs.readFileSync(path.join(root, reviewPath), "utf8"),
234
+ );
235
+ validateCoverage(root, review, issues, checkCode);
236
+ } catch {
237
+ issues.push("Coding Ready 凭证或当前合同不可验证");
238
+ }
239
+ return issues;
240
+ }
241
+
242
+ if (
243
+ process.argv[1] &&
244
+ fs.realpathSync(process.argv[1]) === fileURLToPath(import.meta.url)
245
+ ) {
246
+ const root = process.argv[2];
247
+ const issues = root
248
+ ? checkReceipt(path.resolve(root), {
249
+ checkCode: process.argv.includes("--check-sources"),
250
+ })
251
+ : ["缺少 change 目录"];
252
+ if (issues.length) {
253
+ process.stderr.write(
254
+ `${issues.join("\n")}\n请重新评审并执行 superflow check <change> --level coding-ready\n`,
255
+ );
256
+ process.exitCode = 1;
257
+ }
258
+ }
@@ -5,6 +5,11 @@ description: Use when confirmed OpenSpec artifacts need SDD contract docs such a
5
5
 
6
6
  # SDD Docs
7
7
 
8
+ 完整文档交付必须读取并执行
9
+ [需求×真实入口评审](../superflow-pipeline/references/document-review-coverage.md):
10
+ 扩展现有三轮评审凭证,逐项核对原始需求、真实调用分支、EXCLUDED/VERIFY_EXISTING
11
+ 及验收断言。禁止用“文档内部一致”代替对用户原始语义的核验。
12
+
8
13
  Use this skill after a feature is frozen or after `$openspec-propose` has
9
14
  created the base OpenSpec artifacts. This skill is an SDD contract-doc wrapper;
10
15
  it must not replace the installed OpenSpec skills for core artifact generation
@@ -23,6 +23,10 @@ applicability:
23
23
 
24
24
  ## 三轮评审凭证
25
25
 
26
+ 下方为基础字段示例,不是完整凭证。0.5.10 起必须同时按
27
+ [需求×真实入口评审](document-review-coverage.md) 添加 `coverage`,以及 source-contract/
28
+ e2e-environment 轮的 `reviewedPairs`。旧凭证需要补齐并重新评审。
29
+
26
30
  文件:`.sdd/reviews/document-review.json`
27
31
 
28
32
  ```json
@@ -0,0 +1,82 @@
1
+ # 需求 × 真实入口评审
2
+
3
+ 0.5.10 起,完整文档交付在已有 `document-review.json` 中添加 `coverage`。
4
+ 这是现有来源清单、源码审计、入口台账和测试合同的机器索引,不是第二套需求文档。
5
+ 稳定 ID 复用现有清单;正文继续放原文档。不要从 FIX 任务倒推入口全集。
6
+
7
+ ## 谁负责什么
8
+
9
+ - Agent:从用户原文和确认记录提取需求;从当前调用方、控制器、写入方发现真实入口。
10
+ 独立对照这两份清单,检查新增、遗漏、收窄、反转和排除。源码可解的问题自行查明。
11
+ - 脚本:检查每个需求与每个已登记入口的适用性、来源文件指纹、用例引用、逐项评审记录。
12
+ 无法证明清单完整、排除合理、断言充分或实现正确;结构 PASS 不是语义 PASS。
13
+ - 用户:只确认新的业务歧义、实现方向和需要授权的操作,不接收本应自行排查的源码问题。
14
+
15
+ ## 必须执行的语义审查
16
+
17
+ 1. 明确区分“允许执行某行为”和“该行为允许产生什么归属/状态/资源”。
18
+ 不能把“允许,但应归属原主体”改成“拒绝且零副作用”。
19
+ 2. EXCLUDED 只能对应一个需求维度 × 一个入口,不能因“不适用站点过滤”等理由
20
+ 把同一入口在账号归属、权限、资金或其他需求维度整体排除。
21
+ 3. 评审覆盖 FIX、VERIFY_EXISTING、EXCLUDED 和不改代码的入口。每个排除项必须回到
22
+ 原始需求核验;引用源码当前行为不能授权偏离需求。确需改范围回到用户确认。
23
+ 4. 按角色从真实用户动作走到实际请求、业务写入、查询可见性及下游资源。
24
+ 同页面不同角色的分支用不同入口 ID;不得只测试开发者选中的新接口。
25
+ 5. 验收同时断言返回、最终状态和禁止的副作用。只读/纯函数场景也要给出明确
26
+ 无持久化变更的理由,不能留空。browser 入口必须有 browser 验收,API 测试只能补充。
27
+
28
+ ## 凭证扩展
29
+
30
+ 下面是 `coverage` 最小结构,添加到现有三轮凭证,不替换其它字段。
31
+ `sources.path` 相对 change 目录,可引用授权范围内的跨仓文件;在线来源保存带 URL、
32
+ 原文和确认上下文的本地快照。SHA-256 是文件字节哈希,不是 handoff 的规范化哈希。
33
+ 不要复制源码正文;只登记定位与指纹。`sourceRefs` 均引用 sources 中的 ID。
34
+
35
+ ```json
36
+ {
37
+ "schemaVersion": "superflow.review-coverage.v1",
38
+ "sources": [
39
+ {"id":"S1","role":"requirement","path":"source-ingestion.md","sha256":"<64 hex>"},
40
+ {"id":"S2","role":"code","path":"../../../src/caller.ts","sha256":"<64 hex>"},
41
+ {"id":"S3","role":"contract","path":"tests.md","sha256":"<64 hex>"}
42
+ ],
43
+ "requirements": [
44
+ {"id":"R1","statement":"用户确认的完整约束,保留允许行为和结果边界","sourceRefs":["S1"]}
45
+ ],
46
+ "entries": [
47
+ {"id":"E1","kind":"browser","actor":"指定角色","route":"页面动作 -> 实际请求路径","sourceRefs":["S2"]}
48
+ ],
49
+ "decisions": [
50
+ {"requirementId":"R1","entryId":"E1","disposition":"FIX","rationale":"该入口适用此需求,详见设计","currentBehavior":"当前实际行为","targetBehavior":"保留允许动作并约束归属","sourceRefs":["S1","S2"],"caseIds":["C1"]}
51
+ ],
52
+ "cases": [
53
+ {"id":"C1","entryId":"E1","level":"browser","action":"角色从实际页面执行动作","sourceRefs":["S3"],
54
+ "assertions":{"response":"约定成功结果","state":"归属及查询结果正确","forbiddenEffects":"不会创建独立资源"}}
55
+ ]
56
+ }
57
+ ```
58
+
59
+ - 每个 requirements × entries 组合必须有唯一 decision。按已界定 change 范围登记,
60
+ 不扫描无关全平台。EXCLUDED 必须有 requirement 来源和具体理由、空 caseIds;
61
+ FIX/VERIFY_EXISTING 必须有对应入口的用例,不接受拿另一条接口用例顶替。
62
+ - `kind`/`level` 为 `browser|api|job|event|library|cli`,用例等级必须匹配入口。
63
+ - `source-contract` 和 `e2e-environment` 轮都添加
64
+ `"reviewedPairs": [["R1", "E1"]]`,覆盖全部组合(包括排除项),不得填完即视为审查完成。
65
+ - 先完善权威文档与清单,再刷新 handoff,再由 Agent 三轮核验当前内容、填写 coverage
66
+ 文件指纹及评审记录,最后执行 coding-ready。未关闭发现保留,禁止刷 hash 冒充复审。
67
+
68
+ ## 验证与失效
69
+
70
+ `superflow-document-audit.mjs` 校验内容和清单;coding-ready 绑定评审文件指纹。
71
+ CLI/托管启动重算 handoff 和所有来源指纹;编辑 Hook 同步核验文档与评审,但允许实现阶段
72
+ 源码变化。复用 handoff 既有规范化:任务勾选、test-report 回填不使合同失效。
73
+ 新 Prompt 派发前若前一批已改变入口源码,主 Agent 检查影响并刷新相应评审,不能盲目更新指纹。
74
+ coding-ready 复检失败会写 BLOCKED 撤销旧 READY。
75
+
76
+ 升级后已有评审文件仍可读取;缺 coverage/reviewHash 的旧文档交付不能用于新的启动,
77
+ 需按上述步骤补齐复审,不能填空对象绕过。已启动托管 Run 的恢复协议不变。
78
+ 直接编辑 Hook 遇旧凭证也需补齐;这属于修复旧门禁误放行,不自动重写项目资料。
79
+
80
+ 验收阶段沿同一 R/E/C ID 在 `test-report.md` 回填实际角色、动作、请求路由、状态/
81
+ 副作用断言、原始日志路径及结果。主 Agent 对照原始来源和实际证据,不只看测试汇总。
82
+ 计划用例不是执行证据;API-only 不能报页面 E2E 成功。脚本未验证业务语义的部分不得宣称自动保证。
@@ -5,6 +5,10 @@ description: 对已澄清或已形成 OpenSpec/SDD 草案的需求和设计执
5
5
 
6
6
  # Superflow Requirement Review
7
7
 
8
+ 必须读取并执行[需求×真实入口评审](../superflow-pipeline/references/document-review-coverage.md)。
9
+ 从原始需求独立建立核对清单,不从 FIX 任务反推范围;逐需求维度核对全部入口,特别是
10
+ EXCLUDED、VERIFY_EXISTING 和无代码改动的路径。用户允许的动作不能被擅自改成拒绝。
11
+
8
12
  对当前 OpenSpec change 进行独立、对抗式但基于证据的反向评审。评审不是旁路建议:
9
13
  阻塞级问题必须回写并修正文档,复审通过后才能离开 docs 阶段。
10
14
 
@@ -5,6 +5,10 @@ description: Use when an SDD/OpenSpec change is ready for verification, test-rep
5
5
 
6
6
  # SDD Verify
7
7
 
8
+ 完整 workflow 验收必须读取[需求×真实入口评审](../superflow-pipeline/references/document-review-coverage.md)。
9
+ 沿 R/E/C ID 在现有 test-report 回填实际角色、页面动作、请求路由、最终状态与禁止副作用
10
+ 的原始证据。独立对照原始来源及实际调用方;API-only 不得冒充 browser E2E,计划不等于执行。
11
+
8
12
  Verification is a phase, not a final sentence. Use this skill after
9
13
  implementation work claims completion and before archive or delivery.
10
14
 
@@ -5,6 +5,12 @@ description: Use when confirmed requirements or OpenSpec artifacts need SDD cont
5
5
 
6
6
  # SDD Docs
7
7
 
8
+ For full document delivery, read and apply
9
+ [requirement × real-entry review](../superflow-pipeline/references/document-review-coverage.md).
10
+ Extend the existing three-round receipt with original-source, real-caller,
11
+ EXCLUDED/VERIFY_EXISTING and assertion coverage. Internal document consistency
12
+ is not evidence of fidelity to the user's original semantics.
13
+
8
14
  Use this skill after a feature is frozen or after `$openspec-propose` has
9
15
  created the base OpenSpec artifacts. This skill is an SDD contract-doc wrapper;
10
16
  it must not replace the installed OpenSpec skills for core artifact generation
@@ -1,5 +1,9 @@
1
1
  # Document Delivery Readiness Contract
2
2
 
3
+ The base review example below is not a complete receipt. From 0.5.10, also apply
4
+ [requirement × real-entry review](document-review-coverage.md): add `coverage` and
5
+ `reviewedPairs` to source-contract/e2e-environment rounds. Old receipts require re-review.
6
+
3
7
  ## Applicability
4
8
 
5
9
  Declare applicability in `.openspec.yaml`. Keyword scans may suggest a risk but
@@ -0,0 +1,89 @@
1
+ # Requirement × real-entry review
2
+
3
+ Starting in 0.5.10, full document delivery adds `coverage` to the existing
4
+ `document-review.json`. It indexes the existing source inventory, source audit,
5
+ entry ledger and test contract; it does not create a second requirements authority.
6
+ Reuse stable IDs. Discover entries from current callers/writers, never from FIX tasks alone.
7
+
8
+ ## Ownership and semantic checks
9
+
10
+ The Agent extracts requirements from original user statements/confirmations, independently
11
+ discovers actual entry points, and checks omissions, narrowing, inversion and exclusions.
12
+ The script checks declared coverage, references, file hashes and review records. A structural
13
+ PASS cannot prove inventory completeness, business correctness or test sufficiency.
14
+ Ask the user only about real business ambiguity, implementation direction or authorization;
15
+ investigate source-resolvable questions autonomously.
16
+
17
+ 1. Distinguish permission to act from allowed ownership/state/resource effects. Never change
18
+ “allowed, but owned by the original principal” into “reject with zero effects”.
19
+ 2. EXCLUDED applies to one requirement × one entry. Inapplicability of one filter must not
20
+ exclude ownership, permissions, financial or other constraints on the same entry.
21
+ 3. Independently review FIX, VERIFY_EXISTING, EXCLUDED and unchanged paths against original
22
+ requirements. Existing code is not authorization to deviate. Scope changes return to owner confirmation.
23
+ 4. Follow each actor's real action through caller branch, request, writes, visibility and
24
+ downstream resources. Give different actor branches distinct entry IDs. Do not test only
25
+ the newly selected API.
26
+ 5. Assert response, final state and forbidden effects. For read-only/pure-function work explain
27
+ why no persistent change applies; do not leave blanks. Browser paths require browser acceptance;
28
+ API checks can supplement, not replace them.
29
+
30
+ ## Receipt extension
31
+
32
+ Add the following `coverage` object to the existing three-round review; preserve its other
33
+ fields. Paths are relative to the change and may reference authorized sibling repositories.
34
+ Save online originals as local snapshots with URL and confirmation context. SHA-256 hashes
35
+ file bytes, unlike the normalized handoff hash. Reference code, do not copy its body.
36
+
37
+ ```json
38
+ {
39
+ "schemaVersion": "superflow.review-coverage.v1",
40
+ "sources": [
41
+ {"id":"S1","role":"requirement","path":"source-ingestion.md","sha256":"<64 hex>"},
42
+ {"id":"S2","role":"code","path":"../../../src/caller.ts","sha256":"<64 hex>"},
43
+ {"id":"S3","role":"contract","path":"tests.md","sha256":"<64 hex>"}
44
+ ],
45
+ "requirements": [
46
+ {"id":"R1","statement":"Complete confirmed constraint, preserving allowed actions and outcome boundaries","sourceRefs":["S1"]}
47
+ ],
48
+ "entries": [
49
+ {"id":"E1","kind":"browser","actor":"specified actor","route":"page action -> actual request path","sourceRefs":["S2"]}
50
+ ],
51
+ "decisions": [
52
+ {"requirementId":"R1","entryId":"E1","disposition":"FIX","rationale":"This entry is subject to the requirement; see design","currentBehavior":"actual current behavior","targetBehavior":"preserve allowed action and constrain ownership","sourceRefs":["S1","S2"],"caseIds":["C1"]}
53
+ ],
54
+ "cases": [
55
+ {"id":"C1","entryId":"E1","level":"browser","action":"Actor performs action on actual page","sourceRefs":["S3"],
56
+ "assertions":{"response":"contracted success","state":"correct ownership and visibility","forbiddenEffects":"no independent resources"}}
57
+ ]
58
+ }
59
+ ```
60
+
61
+ - Every requirements × entries pair requires exactly one decision. Bound the inventory to
62
+ the change; do not scan irrelevant platform modules. EXCLUDED requires a requirement source,
63
+ a specific rationale and empty caseIds. FIX/VERIFY_EXISTING require cases for that same entry.
64
+ - `kind`/`level`: `browser|api|job|event|library|cli`; case level must match entry kind.
65
+ - Both `source-contract` and `e2e-environment` rounds add
66
+ `"reviewedPairs": [["R1", "E1"]]` covering every pair, including exclusions.
67
+ Filling the record is not a substitute for performing the review.
68
+ - Complete canonical documents/inventories, refresh handoff, perform all three reviews against
69
+ current content, record coverage file hashes, then run coding-ready. Retain findings;
70
+ updating hashes alone is not re-review.
71
+
72
+ ## Verification, invalidation and migration
73
+
74
+ Document audit checks current content and coverage. Coding-ready binds the review file hash.
75
+ CLI/managed dispatch recomputes handoff and every source hash. The edit Hook checks documents
76
+ and review while allowing implementation source changes. Existing handoff normalization
77
+ preserves task checkbox updates and test-report progress without invalidating contracts.
78
+ If an earlier batch changed entry source before a new Prompt dispatch, the Host assesses its
79
+ impact and refreshes affected review evidence rather than blindly updating hashes.
80
+ A failed coding-ready recheck persists BLOCKED, revoking an earlier READY.
81
+
82
+ Old receipts remain readable but cannot authorize new dispatch or source edits without
83
+ coverage/reviewHash. Follow the migration/re-review steps above; empty objects do not bypass
84
+ them. Existing managed Run recovery protocols are unchanged. No project records are silently rewritten.
85
+
86
+ During verification, reuse R/E/C IDs in `test-report.md`, recording actual actor, action,
87
+ request route, state/forbidden-effect assertions, raw evidence paths and outcomes. The Host
88
+ compares them to original sources, not only a test summary. Planned cases are not execution
89
+ evidence; API-only results cannot claim browser E2E. Do not claim automatic semantic assurance.
@@ -5,6 +5,11 @@ description: Perform source-backed reverse review of clarified requirements and
5
5
 
6
6
  # Superflow Requirement Review
7
7
 
8
+ Read and apply [requirement × real-entry review](../superflow-pipeline/references/document-review-coverage.md).
9
+ Build an independent checklist from original requirements, not FIX tasks. Review every entry
10
+ per requirement dimension, especially EXCLUDED, VERIFY_EXISTING and unchanged paths.
11
+ Never silently turn a user-authorized action into a rejection.
12
+
8
13
  Independently challenge the current OpenSpec change with source-backed evidence. This is not
9
14
  an advisory side path: blocking findings must repair canonical documents and pass re-review
10
15
  before the docs phase can close.
@@ -5,6 +5,11 @@ description: Use when an OpenSpec/SDD change is ready for verification, real evi
5
5
 
6
6
  # SDD Verify
7
7
 
8
+ For full workflow acceptance, read [requirement × real-entry review](../superflow-pipeline/references/document-review-coverage.md).
9
+ Reuse R/E/C IDs in the existing test-report with actual actors, page actions, request routes,
10
+ final state and forbidden-effect evidence. Independently compare originals and actual callers;
11
+ API-only is not browser E2E, and planned cases are not execution evidence.
12
+
8
13
  Verification is a phase, not a final sentence. Use this skill after
9
14
  implementation work claims completion and before archive or delivery.
10
15
 
package/dist/app/cli.js CHANGED
@@ -235,6 +235,7 @@ program
235
235
  .option("--json", helpText.jsonOption)
236
236
  .option("--no-hooks", helpText.noHooksUpdateOption)
237
237
  .option("--with-package", helpText.withPackageOption)
238
+ .option("--with-dependencies", helpText.withDependenciesOption)
238
239
  .option("--language <language>", helpText.languageOption)
239
240
  .action(async (targetPath, options) => {
240
241
  const { updateCommand } = await import("./commands/update.js");
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/app/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/app/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AACtC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;AAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AAEvD,0BAA0B;AAC1B,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAE7B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAC9B,MAAM,QAAQ,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;AAE/C,SAAS,oBAAoB,CAC3B,KAAc,EACd,OAAgB,EAChB,WAAmB;IAEnB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,KAAK,GAAG;QAChE,OAAO,KAAK,CAAC;IACf,MAAM,IAAI,GAAI,OAA4C,EAAE,IAAI,CAAC;IACjE,MAAM,KAAK,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACxB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAEhE,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAChD,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC;YAC3B,SAAS;YACT,SAAS;YACT,YAAY;YACZ,QAAQ;SACT,CAAC,CAAC;QACH,KAAK,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrD,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC5B,IAAI,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC1B,CAAC,EAAE,CAAC;gBACJ,SAAS;YACX,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,OAAO,GAAG,CAAC;QACvC,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,cAAc,CAAC,OAAgB;IACtC,MAAM,IAAI,GAAI,OAAgE;QAC5E,EAAE,IAAI,CAAC;IACT,OAAO;QACL,GAAG,OAAO,CAAC,IAAI,EAAE;QACjB,GAAG,CAAC,OAAO,IAAI,KAAK,UAAU;YAC5B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;YACpB,CAAC,CAAC,EAAE,GAAI,OAAkB,EAAE,CAAC;KAChC,CAAC;AACJ,CAAC;AAED,OAAO;KACJ,IAAI,CAAC,WAAW,CAAC;KACjB,WAAW,CAAC,QAAQ,CAAC,kBAAkB,CAAC;KACxC,MAAM,CAAC,uBAAuB,EAAE,QAAQ,CAAC,cAAc,CAAC;KACxD,MAAM,CAAC,mBAAmB,EAAE,QAAQ,CAAC,cAAc,CAAC;KACpD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAExB,OAAO;KACJ,OAAO,CAAC,mBAAmB,CAAC;KAC5B,WAAW,CAAC,QAAQ,CAAC,eAAe,CAAC;KACrC,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC;KACpC,MAAM,CAAC,iBAAiB,EAAE,QAAQ,CAAC,WAAW,CAAC;KAC/C,MAAM,CAAC,iBAAiB,EAAE,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC;KACzD,MAAM,CAAC,uBAAuB,EAAE,QAAQ,CAAC,cAAc,CAAC;KACxD,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC;KACnC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC;KACrC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,YAAY,CAAC;KACzC,MAAM,CAAC,iBAAiB,EAAE,QAAQ,CAAC,kBAAkB,CAAC;KACtD,MAAM,CAAC,aAAa,EAAE,QAAQ,CAAC,eAAe,CAAC;KAC/C,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,aAAa,CAAC;KAC5C,MAAM,CAAC,oBAAoB,EAAE,QAAQ,CAAC,oBAAoB,CAAC;KAC3D,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,YAAY,CAAC;KAC1C,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE;IACpC,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAC3D,MAAM,WAAW,CAAC;QAChB,GAAG,cAAc,CAAC,OAAO,CAAC;QAC1B,UAAU,EAAE,oBAAoB,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,CAAC;KAC9D,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,QAAQ,CAAC,eAAe,CAAC;KACrC,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC;KACpC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,WAAW,CAAC;KACvC,MAAM,CAAC,uBAAuB,EAAE,QAAQ,CAAC,cAAc,CAAC;KACxD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAC3D,MAAM,WAAW,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;AAC7C,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,mBAAmB,CAAC;KAC5B,WAAW,CAAC,QAAQ,CAAC,kBAAkB,CAAC;KACxC,MAAM,CAAC,iBAAiB,EAAE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;KACvD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;IACjC,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;IACjE,MAAM,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACzC,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,eAAe,CAAC;KACxB,WAAW,CAAC,QAAQ,CAAC,eAAe,CAAC;KACrC,MAAM,CAAC,iBAAiB,EAAE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;KACvD,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE;IAChC,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAC3D,MAAM,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACrC,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,iBAAiB,CAAC;KAC1B,KAAK,CAAC,oBAAoB,CAAC;KAC3B,WAAW,CAAC,QAAQ,CAAC,4BAA4B,CAAC;KAClD,MAAM,CAAC,iBAAiB,EAAE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;KACvD,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE;IAChC,MAAM,EAAE,wBAAwB,EAAE,GAChC,MAAM,MAAM,CAAC,kCAAkC,CAAC,CAAC;IACnD,MAAM,wBAAwB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAClD,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,iBAAiB,CAAC;KAC1B,WAAW,CAAC,QAAQ,CAAC,iBAAiB,CAAC;KACvC,MAAM,CAAC,iBAAiB,EAAE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;KACvD,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE;IAChC,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;IAC/D,MAAM,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACvC,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,oBAAoB,CAAC;KAC7B,WAAW,CAAC,QAAQ,CAAC,oBAAoB,CAAC;KAC1C,MAAM,CAAC,iBAAiB,EAAE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;KACvD,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE;IAChC,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;IACrE,MAAM,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC1C,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,oBAAoB,CAAC;KAC7B,WAAW,CAAC,QAAQ,CAAC,mBAAmB,CAAC;KACzC,MAAM,CAAC,iBAAiB,EAAE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;KACvD,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,aAAa,CAAC;KAC3C,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,YAAY,CAAC;KACzC,MAAM,CAAC,kBAAkB,EAAE,QAAQ,CAAC,oBAAoB,CAAC;KACzD,MAAM,CAAC,qBAAqB,EAAE,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;KACpE,MAAM,CAAC,sBAAsB,EAAE,QAAQ,CAAC,uBAAuB,EAAE,SAAS,CAAC;KAC3E,MAAM,CAAC,oBAAoB,EAAE,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;KACpE,MAAM,CAAC,sBAAsB,EAAE,QAAQ,CAAC,mBAAmB,CAAC;KAC5D,MAAM,CACL,8BAA8B,EAC9B,QAAQ,CAAC,+BAA+B,CACzC;KACA,MAAM,CAAC,wBAAwB,EAAE,QAAQ,CAAC,mBAAmB,CAAC;KAC9D,MAAM,CAAC,6BAA6B,EAAE,QAAQ,CAAC,6BAA6B,CAAC;KAC7E,MAAM,CACL,iCAAiC,EACjC,QAAQ,CAAC,iCAAiC,CAC3C;KACA,MAAM,CAAC,4BAA4B,EAAE,QAAQ,CAAC,2BAA2B,CAAC;KAC1E,MAAM,CACL,wCAAwC,EACxC,QAAQ,CAAC,mCAAmC,CAC7C;KACA,MAAM,CACL,mCAAmC,EACnC,QAAQ,CAAC,iCAAiC,CAC3C;KACA,MAAM,CACL,mCAAmC,EACnC,QAAQ,CAAC,iCAAiC,CAC3C;KACA,MAAM,CACL,8BAA8B,EAC9B,QAAQ,CAAC,6BAA6B,CACvC;KACA,MAAM,CACL,6CAA6C,EAC7C,QAAQ,CAAC,kCAAkC,CAC5C;KACA,MAAM,CACL,oCAAoC,EACpC,QAAQ,CAAC,mCAAmC,CAC7C;KACA,MAAM,CAAC,6BAA6B,EAAE,QAAQ,CAAC,4BAA4B,CAAC;KAC5E,MAAM,CACL,uCAAuC,EACvC,QAAQ,CAAC,qCAAqC,CAC/C;KACA,MAAM,CACL,mCAAmC,EACnC,QAAQ,CAAC,iCAAiC,CAC3C;KACA,MAAM,CACL,0BAA0B,EAC1B,QAAQ,CAAC,iCAAiC,CAC3C;KACA,MAAM,CACL,2CAA2C,EAC3C,QAAQ,CAAC,0CAA0C,CACpD;KACA,MAAM,CAAC,uBAAuB,EAAE,QAAQ,CAAC,cAAc,CAAC;KACxD,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC;KACpC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;IACjC,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;IACnE,MAAM,eAAe,CAAC,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;AAC1D,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,iBAAiB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;KAC5C,MAAM,CAAC,QAAQ,CAAC;KAChB,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,EAAE,qBAAqB,EAAE,GAC7B,MAAM,MAAM,CAAC,+BAA+B,CAAC,CAAC;IAChD,MAAM,qBAAqB,CAAC,OAAO,CAAC,CAAC;AACvC,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,iBAAiB,CAAC;KAC1B,WAAW,CAAC,QAAQ,CAAC,iBAAiB,CAAC;KACvC,MAAM,CAAC,iBAAiB,EAAE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;KACvD,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE;IAChC,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;IAC/D,MAAM,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACvC,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,kBAAkB,CAAC;KAC3B,WAAW,CAAC,QAAQ,CAAC,kBAAkB,CAAC;KACxC,MAAM,CAAC,iBAAiB,EAAE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;KACvD,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE;IAChC,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;IACjE,MAAM,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACxC,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,eAAe,CAAC;KACxB,WAAW,CAAC,QAAQ,CAAC,iBAAiB,CAAC;KACvC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC;KACrC,MAAM,CAAC,uBAAuB,EAAE,QAAQ,CAAC,cAAc,CAAC;KACxD,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,GAAG,EAAE,OAAO,EAAE,EAAE;IAC1C,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;IAC/D,MAAM,aAAa,CAAC,UAAU,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;AAC3D,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,cAAc,CAAC;KACvB,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC;KACpC,MAAM,CAAC,iBAAiB,EAAE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;KACvD,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC;KACpC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC;KACrC,MAAM,CAAC,uBAAuB,EAAE,QAAQ,CAAC,cAAc,CAAC;KACxD,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,EAAE,OAAO,EAAE,EAAE;IAC3C,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;IACzD,MAAM,UAAU,CAAC,MAAM,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;AACpD,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,qBAAqB,CAAC;KAC9B,WAAW,CAAC,QAAQ,CAAC,eAAe,CAAC;KACrC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC;KACrC,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,aAAa,CAAC;KAC3C,MAAM,CAAC,uBAAuB,EAAE,QAAQ,CAAC,cAAc,CAAC;KACxD,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE;IACnC,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAC3D,MAAM,WAAW,CAAC,SAAS,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;AACxD,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,kBAAkB,CAAC;KAC3B,WAAW,CAAC,QAAQ,CAAC,kBAAkB,CAAC;KACxC,MAAM,CAAC,kBAAkB,EAAE,QAAQ,CAAC,oBAAoB,EAAE,GAAG,CAAC;KAC9D,MAAM,CAAC,sBAAsB,EAAE,QAAQ,CAAC,sBAAsB,CAAC;KAC/D,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC;KACpC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC;KACrC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE;IAChC,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;IACjE,cAAc,CACZ,MAAM,EACN,cAAc,CAAC,OAAO,CAKrB,CACF,CAAC;AACJ,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,qBAAqB,CAAC;KAC9B,WAAW,CAAC,QAAQ,CAAC,iBAAiB,CAAC;KACvC,MAAM,CAAC,iBAAiB,EAAE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;KACvD,MAAM,CAAC,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;KAC7D,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC;KACpC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC;KACrC,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,mBAAmB,CAAC;KAClD,MAAM,CAAC,gBAAgB,EAAE,QAAQ,CAAC,iBAAiB,CAAC;KACpD,MAAM,CAAC,qBAAqB,EAAE,QAAQ,CAAC,sBAAsB,CAAC;KAC9D,MAAM,CAAC,uBAAuB,EAAE,QAAQ,CAAC,cAAc,CAAC;KACxD,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE;IACpC,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;IAC/D,MAAM,aAAa,CAAC;QAClB,GAAG,cAAc,CAAC,OAAO,CAAC;QAC1B,UAAU,EAAE,oBAAoB,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC;KAChE,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,qBAAqB,CAAC;KAC9B,WAAW,CAAC,QAAQ,CAAC,iBAAiB,CAAC;KACvC,MAAM,CAAC,iBAAiB,EAAE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;KACvD,MAAM,CAAC,iBAAiB,EAAE,QAAQ,CAAC,kBAAkB,EAAE,QAAQ,CAAC;KAChE,MAAM,CAAC,uBAAuB,EAAE,QAAQ,CAAC,cAAc,CAAC;KACxD,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC;KACrC,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE;IACpC,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;IAC/D,MAAM,aAAa,CAAC;QAClB,GAAG,cAAc,CAAC,OAAO,CAAC;QAC1B,UAAU,EAAE,oBAAoB,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC;KAChE,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,wBAAwB,CAAC;KACjC,WAAW,CAAC,QAAQ,CAAC,oBAAoB,CAAC;KAC1C,MAAM,CAAC,iBAAiB,EAAE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;KACvD,MAAM,CAAC,iBAAiB,EAAE,QAAQ,CAAC,kBAAkB,EAAE,QAAQ,CAAC;KAChE,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC;KACpC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC;KACrC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,oBAAoB,CAAC;KAChD,MAAM,CAAC,aAAa,EAAE,QAAQ,CAAC,cAAc,CAAC;KAC9C,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE;IACpC,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;IACrE,MAAM,gBAAgB,CAAC;QACrB,GAAG,cAAc,CAAC,OAAO,CAAC;QAC1B,UAAU,EAAE,oBAAoB,CAAC,UAAU,EAAE,OAAO,EAAE,WAAW,CAAC;KACnE,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,gBAAgB,CAAC;KACzB,WAAW,CAAC,QAAQ,CAAC,gBAAgB,CAAC;KACtC,MAAM,CAAC,iBAAiB,EAAE,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;KAC7D,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC;KACrC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE;IAChC,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;IAC7D,MAAM,YAAY,CAAC,MAAM,EAAE;QACzB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,KAAK,EAAE,OAAO,CAAC,KAAK;KACrB,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,iBAAiB,CAAC;KAC1B,WAAW,CACV,iEAAiE,CAClE;KACA,MAAM,CAAC,sBAAsB,EAAE,wCAAwC,CAAC;KACxE,MAAM,CAAC,0BAA0B,EAAE,mCAAmC,CAAC;KACvE,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC;KAC/B,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE;IAChC,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;IAC/D,MAAM,aAAa,CAAC,MAAM,EAAE;QAC1B,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,IAAI,EAAE,OAAO,CAAC,IAAI;KACnB,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -7,7 +7,7 @@ import { parseAgentSelection, parseInstallScope, resolveAgents, } from '../../do
7
7
  import { ALL_RULES, ALL_SKILLS, CODEX_PROMPTS, hookScriptsForAgent, scriptsForAgent, } from '../../domains/skill/assets.js';
8
8
  import { resolveRuntimeLanguage } from '../../domains/config/cli-help.js';
9
9
  import { managedText } from '../../domains/managed-work/i18n.js';
10
- import { missingCodexSuperpowerSkills, REQUIRED_CODEX_SUPERPOWER_SKILLS, } from '../../domains/deps.js';
10
+ import { inspectCodexSuperpowers, REQUIRED_CODEX_SUPERPOWER_SKILLS, } from '../../domains/deps.js';
11
11
  import { resolveMcpServerPath } from './mcp.js';
12
12
  const VALID_STATE_FIELDS = new Set([
13
13
  'workflow',
@@ -122,7 +122,13 @@ export async function collectDoctor(options = {}, runtime = {}) {
122
122
  : managedText(language, '未检测', 'not detected'),
123
123
  });
124
124
  if (agent === 'codex') {
125
- const missingSkills = new Set(missingCodexSuperpowerSkills());
125
+ const installation = await inspectCodexSuperpowers(run);
126
+ const missingSkills = new Set(installation.missing);
127
+ checks.push({
128
+ check: 'superpowers:codex:installation',
129
+ status: installation.error ? 'fail' : 'pass',
130
+ message: installation.error ?? `${installation.plugin?.pluginId} ${installation.plugin?.version}`,
131
+ });
126
132
  for (const skill of REQUIRED_CODEX_SUPERPOWER_SKILLS) {
127
133
  const available = !missingSkills.has(skill);
128
134
  checks.push({
@@ -132,7 +138,7 @@ export async function collectDoctor(options = {}, runtime = {}) {
132
138
  ? managedText(language, '已检测;新会话可加载', 'detected; available to new sessions')
133
139
  : managedText(language, '缺失', 'missing'),
134
140
  ...(available ? {} : {
135
- remediation: managedText(language, '运行 superflow update --agent codex --scope global,并重启 Codex Host', 'Run superflow update --agent codex --scope global, then restart the Codex host'),
141
+ remediation: managedText(language, '运行 superflow update --agent codex --scope global --with-dependencies,并重启 Codex Host', 'Run superflow update --agent codex --scope global --with-dependencies, then restart the Codex host'),
136
142
  }),
137
143
  });
138
144
  }