@captain_z/zsk 1.8.4 → 1.8.5

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 (125) hide show
  1. package/dist/bin.js +13 -0
  2. package/dist/bin.js.map +1 -1
  3. package/dist/commands/check.js +14 -575
  4. package/dist/commands/check.js.map +1 -1
  5. package/dist/commands/config.js +1 -1
  6. package/dist/commands/config.js.map +1 -1
  7. package/dist/commands/demo.d.ts +5 -0
  8. package/dist/commands/demo.js +70 -297
  9. package/dist/commands/demo.js.map +1 -1
  10. package/dist/commands/doctor.js +9 -4
  11. package/dist/commands/doctor.js.map +1 -1
  12. package/dist/commands/gate.d.ts +1 -0
  13. package/dist/commands/gate.js +8 -2
  14. package/dist/commands/gate.js.map +1 -1
  15. package/dist/commands/prepare.js +7 -1
  16. package/dist/commands/prepare.js.map +1 -1
  17. package/dist/commands/project-init.js +30 -8
  18. package/dist/commands/project-init.js.map +1 -1
  19. package/dist/core/config.d.ts +68 -0
  20. package/dist/core/config.js +198 -15
  21. package/dist/core/config.js.map +1 -1
  22. package/dist/core/demo-auth.d.ts +30 -0
  23. package/dist/core/demo-auth.js +213 -0
  24. package/dist/core/demo-auth.js.map +1 -0
  25. package/dist/core/demo-scenarios.d.ts +62 -0
  26. package/dist/core/demo-scenarios.js +276 -0
  27. package/dist/core/demo-scenarios.js.map +1 -0
  28. package/dist/core/demo-sources.d.ts +37 -0
  29. package/dist/core/demo-sources.js +198 -0
  30. package/dist/core/demo-sources.js.map +1 -0
  31. package/dist/core/mcp-registry-discovery.d.ts +16 -0
  32. package/dist/core/mcp-registry-discovery.js +187 -0
  33. package/dist/core/mcp-registry-discovery.js.map +1 -0
  34. package/dist/core/origin-detection.js +1 -1
  35. package/dist/core/origin-detection.js.map +1 -1
  36. package/dist/core/prepare-artifacts.d.ts +16 -0
  37. package/dist/core/prepare-artifacts.js +25 -0
  38. package/dist/core/prepare-artifacts.js.map +1 -0
  39. package/dist/core/prepare-auth-helper.d.ts +8 -0
  40. package/dist/core/prepare-auth-helper.js +32 -0
  41. package/dist/core/prepare-auth-helper.js.map +1 -0
  42. package/dist/core/prepare-materialization.d.ts +8 -0
  43. package/dist/core/prepare-materialization.js +26 -0
  44. package/dist/core/prepare-materialization.js.map +1 -0
  45. package/dist/core/prepare-migration.d.ts +6 -0
  46. package/dist/core/prepare-migration.js +57 -0
  47. package/dist/core/prepare-migration.js.map +1 -0
  48. package/dist/core/prepare-reporting.d.ts +5 -0
  49. package/dist/core/prepare-reporting.js +106 -0
  50. package/dist/core/prepare-reporting.js.map +1 -0
  51. package/dist/core/prepare-routing.d.ts +12 -0
  52. package/dist/core/prepare-routing.js +182 -0
  53. package/dist/core/prepare-routing.js.map +1 -0
  54. package/dist/core/prepare-sync.d.ts +11 -22
  55. package/dist/core/prepare-sync.js +811 -260
  56. package/dist/core/prepare-sync.js.map +1 -1
  57. package/dist/core/prepare-utils.d.ts +6 -0
  58. package/dist/core/prepare-utils.js +35 -0
  59. package/dist/core/prepare-utils.js.map +1 -0
  60. package/dist/core/provider-policy.d.ts +26 -0
  61. package/dist/core/provider-policy.js +180 -0
  62. package/dist/core/provider-policy.js.map +1 -0
  63. package/dist/core/provider-readiness.d.ts +39 -0
  64. package/dist/core/provider-readiness.js +78 -0
  65. package/dist/core/provider-readiness.js.map +1 -0
  66. package/dist/core/source-adapter-normalization.d.ts +31 -0
  67. package/dist/core/source-adapter-normalization.js +235 -0
  68. package/dist/core/source-adapter-normalization.js.map +1 -0
  69. package/dist/core/source-snapshot-adapters.d.ts +3 -3
  70. package/dist/core/source-snapshot-adapters.js +2 -24
  71. package/dist/core/source-snapshot-adapters.js.map +1 -1
  72. package/dist/core/staffing-plan.d.ts +1 -0
  73. package/dist/core/staffing-plan.js +61 -3
  74. package/dist/core/staffing-plan.js.map +1 -1
  75. package/dist/core/stage-clarity-verification.js +21 -18
  76. package/dist/core/stage-clarity-verification.js.map +1 -1
  77. package/dist/core/stage-output-quality.d.ts +3 -0
  78. package/dist/core/stage-output-quality.js +122 -0
  79. package/dist/core/stage-output-quality.js.map +1 -0
  80. package/dist/core/stage-quality-contracts.d.ts +19 -0
  81. package/dist/core/stage-quality-contracts.js.map +1 -1
  82. package/dist/core/stage-quality-criteria.js +0 -37
  83. package/dist/core/stage-quality-criteria.js.map +1 -1
  84. package/dist/core/stage-quality-rendering.d.ts +4 -2
  85. package/dist/core/stage-quality-rendering.js +130 -12
  86. package/dist/core/stage-quality-rendering.js.map +1 -1
  87. package/dist/core/stage-quality.js +17 -6
  88. package/dist/core/stage-quality.js.map +1 -1
  89. package/dist/core/template-registry.js +12 -15
  90. package/dist/core/template-registry.js.map +1 -1
  91. package/dist/core/workspace-conformance.d.ts +39 -0
  92. package/dist/core/workspace-conformance.js +603 -0
  93. package/dist/core/workspace-conformance.js.map +1 -0
  94. package/package.json +2 -2
  95. package/schemas/providers.schema.json +74 -0
  96. package/schemas/zsk-config.schema.json +417 -1
  97. package/templates/project-init/.zsk/README.md +48 -0
  98. package/templates/project-init/.zsk/config.yaml +37 -33
  99. package/templates/project-init/.zsk/docs/CONFIG-SCHEMA.md +127 -0
  100. package/templates/project-init/.zsk/docs/PROJECT-CONFIG.md +26 -21
  101. package/templates/project-init/.zsk/docs/README.md +10 -0
  102. package/templates/project-init/.zsk/docs/SECURITY.md +34 -0
  103. package/templates/project-init/.zsk/docs/SYSTEM-SPEC.md +20 -8
  104. package/templates/project-init/.zsk/evidence/README.md +15 -0
  105. package/templates/project-init/.zsk/issues/README.md +10 -0
  106. package/templates/project-init/.zsk/modules/README.md +19 -0
  107. package/templates/project-init/.zsk/modules/index.md +9 -5
  108. package/templates/project-init/.zsk/raws/README.md +34 -0
  109. package/templates/project-init/.zsk/roles.yaml +36 -105
  110. package/templates/project-init/.zsk/templates/config.examples.yaml +83 -0
  111. package/templates/project-init/.zsk/templates/issue-card.md +23 -0
  112. package/templates/project-init/.zsk/templates/module/README.md +13 -0
  113. package/templates/project-init/.zsk/templates/module/design.md +22 -0
  114. package/templates/project-init/.zsk/templates/module/module.yaml +15 -0
  115. package/templates/project-init/.zsk/templates/module/proposal.md +20 -0
  116. package/templates/project-init/.zsk/templates/module/spec.md +22 -0
  117. package/templates/project-init/.zsk/templates/module/tasks.md +16 -0
  118. package/templates/project-init/.zsk/raws/index.md +0 -34
  119. package/templates/project-init/.zsk/raws/manifest.json +0 -4
  120. package/templates/project-init/.zsk/raws/prepare/backend/index.md +0 -4
  121. package/templates/project-init/.zsk/raws/prepare/design/index.md +0 -21
  122. package/templates/project-init/.zsk/raws/prepare/index.md +0 -37
  123. package/templates/project-init/.zsk/raws/prepare/product/index.md +0 -4
  124. package/templates/project-init/.zsk/raws/prepare/qa/index.md +0 -4
  125. package/templates/project-init/.zsk/raws/prepare/ux/index.md +0 -22
@@ -1,59 +1,12 @@
1
1
  import pc from "picocolors";
2
- import { access, readFile, readdir, stat } from "node:fs/promises";
3
- import { basename, dirname, extname, join, relative, resolve } from "node:path";
2
+ import { readFile } from "node:fs/promises";
4
3
  import YAML from "yaml";
5
4
  import { resolvePath } from "../core/targets.js";
6
5
  import { checkProjectConfig, findModuleConfigFiles, flattenProjectSources, formatConfigIssues, readProjectConfig, resolveSourceSnapshot, } from "../core/config.js";
7
- import { inferSourceOrigin } from "../core/origin-detection.js";
8
- import { getWorkspacePath, resolveWorkspaceLayout } from "../core/workspace-layout.js";
9
- const STALE_PREPARE_RAW_LANES = new Set([
10
- "qa-engineer",
11
- "test-engineer",
12
- "backend-engineer",
13
- "frontend-engineer",
14
- "product-manager",
15
- "designer",
16
- "jira",
17
- "manual",
18
- "provider",
19
- "version",
20
- ]);
21
- const RUNTIME_ARTIFACT_EXTS = new Set([
22
- ".log",
23
- ".png",
24
- ".jpg",
25
- ".jpeg",
26
- ".gif",
27
- ".webp",
28
- ".har",
29
- ".mp4",
30
- ".mov",
31
- ".zip",
32
- ]);
33
- const STAGE_DOCS_REQUIRING_FEEDBACK = [
34
- "proposal.md",
35
- "spec.md",
36
- "design.md",
37
- "tasks.md",
38
- "smoke.md",
39
- "review.md",
40
- "commit.md",
41
- "deploy.md",
42
- "demo-outline.md",
43
- "demo-report.md",
44
- "ready.md",
45
- "verify.md",
46
- "verification.md",
47
- "acceptance.md",
48
- "archive.md",
49
- ];
50
- const SPLITTABLE_STAGE_DOCS = new Set(["proposal", "spec", "design", "tasks"]);
51
- const PLAYWRIGHT_TEST_FILE_RE = /\.(spec|test)\.[cm]?[jt]sx?$/i;
6
+ import { assessWorkspaceConformance, } from "../core/workspace-conformance.js";
52
7
  export async function run(opts = {}) {
53
8
  const target = opts.target ? resolvePath(opts.target) : process.cwd();
54
9
  const configCheck = await checkProjectConfig(target);
55
- const issues = [];
56
- const warnings = [];
57
10
  for (const warning of configCheck.warnings) {
58
11
  console.warn(pc.yellow(`! ${warning.file}: ${warning.message}`));
59
12
  }
@@ -65,30 +18,21 @@ export async function run(opts = {}) {
65
18
  const config = await readProjectConfig(target);
66
19
  const moduleFiles = await findModuleConfigFiles(target, config);
67
20
  const moduleConfigs = await readModuleConfigs(moduleFiles);
68
- await checkWorkspacePathLeaks(target, issues);
69
- await checkStageDirectoryArtifacts(target, getWorkspacePath(config, "modulesRoot"), issues);
70
- await checkRawTestingMapped(target, [
71
- getWorkspacePath(config, "resourcesTesting"),
72
- join(getWorkspacePath(config, "resourcesRoot"), "qa", "testing"),
73
- ], moduleConfigs, issues);
74
- await checkPrepareRawTopology(target, getWorkspacePath(config, "resourcesRoot"), issues);
75
- await checkConfiguredSourceOrigins(target, configCheck.configFile, config, warnings);
76
- await checkMissingCurrentRawReferences(target, config, warnings, issues);
77
- await checkDocsArtifacts(target, [
78
- getWorkspacePath(config, "docsRoot"),
79
- getWorkspacePath(config, "modulesRoot"),
80
- "docs",
81
- ], getWorkspacePath(config, "evidenceRoot"), issues);
82
- await checkPlaywrightSpecGates(target, [getWorkspacePath(config, "playwrightRoot"), getWorkspacePath(config, "modulesRoot")], issues);
83
- await checkAuthStatePlacement(target, config, issues);
84
- await checkCompletedDemoEvidence(target, [getWorkspacePath(config, "playwrightRoot"), getWorkspacePath(config, "modulesRoot")], issues);
85
- await checkDocumentationFeedback(target, moduleConfigs, issues);
86
- for (const warning of warnings) {
21
+ const sources = flattenProjectSources(config.sources);
22
+ const conformance = await assessWorkspaceConformance({
23
+ target,
24
+ configFile: configCheck.configFile,
25
+ config,
26
+ modules: moduleConfigs,
27
+ sources,
28
+ resolveSourceSnapshot: (entry) => resolveSourceSnapshot(config, entry),
29
+ });
30
+ for (const warning of conformance.warnings) {
87
31
  console.warn(pc.yellow(`! ${warning.file}: ${warning.message}`));
88
32
  }
89
- if (issues.length > 0) {
33
+ if (conformance.issues.length > 0) {
90
34
  console.error(pc.red("✗ zsk check failed"));
91
- for (const issue of issues)
35
+ for (const issue of conformance.issues)
92
36
  console.error(`${issue.file}: ${issue.message}`);
93
37
  process.exit(1);
94
38
  }
@@ -104,509 +48,4 @@ async function readModuleConfigs(files) {
104
48
  }
105
49
  return result;
106
50
  }
107
- async function checkRawTestingMapped(target, testingPaths, modules, issues) {
108
- const rawFiles = [];
109
- for (const testingPath of unique(testingPaths)) {
110
- const testingRoot = resolve(target, testingPath);
111
- rawFiles.push(...(await collectFiles(testingRoot)).filter((file) => !file.endsWith("/README.md") && !file.endsWith("/index.md")));
112
- }
113
- if (rawFiles.length === 0)
114
- return;
115
- const mapped = new Set();
116
- for (const mod of modules) {
117
- for (const p of mod.config.tests?.raw_cases ?? [])
118
- mapped.add(resolve(target, p));
119
- for (const p of mod.config.sources?.testing ?? [])
120
- mapped.add(resolve(target, p));
121
- }
122
- for (const file of rawFiles) {
123
- if (mapped.has(file))
124
- continue;
125
- issues.push({
126
- file,
127
- message: "raw test case is not mapped to any module.yaml tests.raw_cases or sources.testing entry",
128
- });
129
- }
130
- }
131
- async function checkPrepareRawTopology(target, rawsPath, issues) {
132
- const prepareRoot = resolve(target, rawsPath, "prepare");
133
- try {
134
- const entries = await readdir(prepareRoot, { withFileTypes: true });
135
- for (const entry of entries) {
136
- if (entry.isFile() && ["index.md", "README.md"].includes(entry.name))
137
- continue;
138
- if (!entry.isDirectory()) {
139
- issues.push({
140
- file: join(prepareRoot, entry.name),
141
- message: "prepare raw source entries must live under a responsibility lane such as product, backend, design, ux, qa, or a project-defined extension",
142
- });
143
- continue;
144
- }
145
- if (!isDisallowedPrepareLane(entry.name))
146
- continue;
147
- issues.push({
148
- file: join(prepareRoot, entry.name),
149
- message: "stale prepare raw lane; use current responsibility lanes such as product, backend, design, ux, qa, or a project-defined extension lane",
150
- });
151
- }
152
- }
153
- catch {
154
- // prepare/ is optional for legacy workspaces.
155
- }
156
- const zskRoot = resolve(target, ".zsk");
157
- const maintainedFiles = (await collectFiles(zskRoot)).filter((file) => isMaintainedTextArtifact(file));
158
- const staleReferencePattern = /\.zsk\/raws\/prepare\/([A-Za-z0-9_-]+)/g;
159
- for (const file of maintainedFiles) {
160
- const content = await readFile(file, "utf8");
161
- for (const match of content.matchAll(staleReferencePattern)) {
162
- const lane = match[1];
163
- if (!lane || !isDisallowedPrepareLane(lane))
164
- continue;
165
- issues.push({
166
- file,
167
- message: `stale prepare raw lane referenced: ${lane}`,
168
- });
169
- }
170
- }
171
- }
172
- async function checkDocsArtifacts(target, docsPaths, evidencePath, issues) {
173
- const roots = unique(docsPaths).map((docsPath) => resolve(target, docsPath));
174
- const files = [];
175
- for (const root of roots)
176
- files.push(...(await collectFiles(root)));
177
- for (const file of files) {
178
- const ext = extname(file).toLowerCase();
179
- const root = roots.find((candidate) => isInside(candidate, file)) ?? target;
180
- const name = relative(root, file).toLowerCase();
181
- if (name.split("/").some((part) => ["_issues", "_evidence", "_playwright"].includes(part)))
182
- continue;
183
- const isPlaywrightSpec = PLAYWRIGHT_TEST_FILE_RE.test(name);
184
- const isPlaywrightRuntime = name.includes("/playwright-report/") ||
185
- name.includes("/test-results/") ||
186
- name.includes("/.auth/") ||
187
- name.endsWith("/storage-state.json") ||
188
- name.endsWith("/storagestate.json");
189
- if (isPlaywrightSpec || isPlaywrightRuntime) {
190
- issues.push({
191
- file,
192
- message: "Playwright specs and runtime artifacts belong under .zsk/modules/{module}/_playwright or shared .zsk/playwright, not docs roots",
193
- });
194
- continue;
195
- }
196
- const isEvidence = RUNTIME_ARTIFACT_EXTS.has(ext) ||
197
- name.includes("debug-log") ||
198
- name.includes("debug-logs") ||
199
- name.includes("evidence") ||
200
- name.includes("failed-verification") ||
201
- name.includes("console.log") ||
202
- ([".txt", ".json"].includes(ext) &&
203
- /debug|evidence|console|screenshot|failed-verification/.test(name));
204
- if (!isEvidence)
205
- continue;
206
- issues.push({
207
- file,
208
- message: `runtime evidence belongs under ${evidencePath} or .zsk/modules/{module}/_evidence, not a docs or module-docs root`,
209
- });
210
- }
211
- }
212
- async function checkConfiguredSourceOrigins(target, configFile, config, warnings) {
213
- for (const entry of flattenProjectSources(config.sources)) {
214
- const origin = inferSourceOrigin(entry.source);
215
- if (origin.method !== "local" || !origin.ref)
216
- continue;
217
- const originPath = resolve(target, origin.ref);
218
- if (await exists(originPath))
219
- continue;
220
- const snapshot = resolveSourceSnapshot(config, entry);
221
- const snapshotExists = await exists(resolve(target, snapshot));
222
- warnings.push({
223
- file: configFile,
224
- message: `configured local source origin is missing for ${entry.path}: ${origin.ref}; ${snapshotExists ? `snapshot exists at ${snapshot}` : `snapshot is also missing at ${snapshot}`}. Update source metadata or restore the origin, then refresh .zsk/raws/manifest.json and raw indexes after migration.`,
225
- });
226
- }
227
- }
228
- async function checkMissingCurrentRawReferences(target, config, warnings, issues) {
229
- const roots = [
230
- resolve(target, ".zsk", "config.yaml"),
231
- resolve(target, getWorkspacePath(config, "docsRoot")),
232
- resolve(target, getWorkspacePath(config, "resourcesRoot")),
233
- ];
234
- const files = unique((await Promise.all(roots.map((root) => collectAuthorityFiles(root)))).flat());
235
- const seen = new Set();
236
- for (const file of files) {
237
- const content = await readFile(file, "utf8");
238
- for (const match of content.matchAll(/(^|[^\w.])(\.(?:raws|issues|playwright)\/[A-Za-z0-9._/-]+)/g)) {
239
- if (allowsRootWorkspaceReference(content))
240
- continue;
241
- const ref = trimRawReference(match[2] ?? "");
242
- if (!ref)
243
- continue;
244
- const key = `${file}\0${ref}`;
245
- if (seen.has(key))
246
- continue;
247
- seen.add(key);
248
- issues.push({
249
- file,
250
- message: `current authority artifact references legacy root workspace path ${ref}; use configured .zsk workspace paths or record zsk-check: allow-root-workspace-reference with rationale`,
251
- });
252
- }
253
- for (const match of content.matchAll(/\.zsk\/raws\/[A-Za-z0-9._/-]+/g)) {
254
- const ref = trimRawReference(match[0] ?? "");
255
- if (!ref || ref === ".zsk/raws")
256
- continue;
257
- if (!extname(ref))
258
- continue;
259
- const resolved = resolve(target, ref);
260
- if (await exists(resolved))
261
- continue;
262
- const key = `${file}\0${ref}`;
263
- if (seen.has(key))
264
- continue;
265
- seen.add(key);
266
- warnings.push({
267
- file,
268
- message: `current authority artifact references missing raw path ${ref}; after source migration, update config/docs/raw indexes or record why this historical reference is intentionally retained.`,
269
- });
270
- }
271
- }
272
- }
273
- function allowsRootWorkspaceReference(content) {
274
- return /zsk-check:\s*allow-root-workspace-reference|waived-root-workspace-reference/i.test(content);
275
- }
276
- async function checkWorkspacePathLeaks(target, issues) {
277
- for (const path of [".raws", ".issues", ".playwright"]) {
278
- const resolved = resolve(target, path);
279
- if (!(await exists(resolved)))
280
- continue;
281
- if (await allowsRootWorkspacePath(resolved))
282
- continue;
283
- const targetHint = path === ".raws"
284
- ? "use .zsk/raws for raw source snapshots"
285
- : path === ".issues"
286
- ? "use .zsk/issues/{shared|global|public} for cross-module issues or .zsk/modules/{module}/_issues for module-private issues"
287
- : "use .zsk/playwright for shared Playwright artifacts or .zsk/modules/{module}/_playwright for module-private specs/auth/results";
288
- const issue = {
289
- file: resolve(target, path),
290
- message: `legacy root zsk workspace path detected; ${targetHint}; migrate/export root copies explicitly`,
291
- };
292
- issues.push(issue);
293
- }
294
- if (await exists(resolve(target, ".zsk/resources"))) {
295
- issues.push({
296
- file: resolve(target, ".zsk/resources"),
297
- message: "legacy .zsk/resources path detected; use .zsk/raws or set paths.resources only for compatibility migration",
298
- });
299
- }
300
- const rootDocs = resolve(target, "docs");
301
- const docsFiles = await collectFiles(rootDocs);
302
- for (const file of docsFiles) {
303
- const name = basename(file);
304
- const parentName = basename(dirname(file)).toLowerCase();
305
- const rel = relative(rootDocs, file);
306
- const looksZskManaged = name === "module.yaml" ||
307
- ["proposal.md", "spec.md", "design.md", "tasks.md"].includes(name) ||
308
- (name === "index.md" && SPLITTABLE_STAGE_DOCS.has(parentName)) ||
309
- rel.split("/").includes("scenarios");
310
- if (!looksZskManaged)
311
- continue;
312
- const issue = {
313
- file,
314
- message: "zsk-managed stage docs belong under .zsk/modules/{module}/{proposal,spec,design,tasks}.md or {proposal,spec,design,tasks}/index.md; root docs should only be written by explicit export/promote",
315
- };
316
- issues.push(issue);
317
- }
318
- for (const root of ["plans", join(".omx", "plans")]) {
319
- const planFiles = (await collectFiles(resolve(target, root))).filter((file) => extname(file).toLowerCase() === ".md");
320
- for (const file of planFiles) {
321
- const content = await readFile(file, "utf8");
322
- if (!/\bMode:\s*zskplan\b|^#\s+ZSK Plan\b|Plan artifact:\s*\.zsk\/plans\//im.test(content))
323
- continue;
324
- issues.push({
325
- file,
326
- message: "ZSK plan artifacts belong under .zsk/plans, not root plans or .omx/plans",
327
- });
328
- }
329
- }
330
- }
331
- async function checkStageDirectoryArtifacts(target, modulesPath, issues) {
332
- const modulesRoot = resolve(target, modulesPath);
333
- try {
334
- const modules = await readdir(modulesRoot, { withFileTypes: true });
335
- for (const mod of modules) {
336
- if (!mod.isDirectory() || mod.name.startsWith("_"))
337
- continue;
338
- const moduleDir = join(modulesRoot, mod.name);
339
- for (const stage of SPLITTABLE_STAGE_DOCS) {
340
- const stageDir = join(moduleDir, stage);
341
- let stageInfo;
342
- try {
343
- stageInfo = await stat(stageDir);
344
- }
345
- catch {
346
- continue;
347
- }
348
- if (!stageInfo.isDirectory())
349
- continue;
350
- const indexPath = join(stageDir, "index.md");
351
- if (!await exists(indexPath)) {
352
- issues.push({
353
- file: stageDir,
354
- message: "split stage artifact directory must contain index.md as the review entrypoint",
355
- });
356
- continue;
357
- }
358
- const indexContent = await readFile(indexPath, "utf8");
359
- const linkedChildren = linkedStageChildren(indexContent, stageDir);
360
- const childDocs = (await collectFiles(stageDir)).filter((file) => {
361
- const childName = basename(file);
362
- return extname(file).toLowerCase() === ".md" && childName !== "index.md" && childName !== "README.md";
363
- });
364
- for (const child of childDocs) {
365
- if (linkedChildren.has(child))
366
- continue;
367
- issues.push({
368
- file: child,
369
- message: "split stage child document must be linked from the stage index.md entrypoint",
370
- });
371
- }
372
- }
373
- }
374
- }
375
- catch {
376
- // modules root is optional for freshly initialized or config-only projects.
377
- }
378
- }
379
- async function allowsRootWorkspacePath(path) {
380
- const readme = resolve(path, "README.md");
381
- if (!(await exists(readme)))
382
- return false;
383
- return allowsRootWorkspaceReference(await readFile(readme, "utf8"));
384
- }
385
- async function checkPlaywrightSpecGates(target, playwrightPaths, issues) {
386
- const files = [];
387
- for (const playwrightPath of playwrightPaths) {
388
- files.push(...(await collectFiles(resolve(target, playwrightPath))));
389
- }
390
- const specFiles = unique(files).filter((file) => PLAYWRIGHT_TEST_FILE_RE.test(file));
391
- for (const file of specFiles) {
392
- const content = await readFile(file, "utf8");
393
- if (/\bTODO\b/i.test(content)) {
394
- issues.push({ file, message: "Playwright spec contains TODO; refine or keep it out of the promoted spec path" });
395
- }
396
- if (/\btest\.fixme\s*\(/.test(content)) {
397
- issues.push({ file, message: "Playwright spec contains test.fixme; promoted specs must represent executable intent" });
398
- }
399
- if (/\btest(?:\.describe)?\.skip\s*\(/.test(content)) {
400
- issues.push({ file, message: "Playwright spec contains test.skip; record a blocker or waiver instead of promoting a skipped spec" });
401
- }
402
- if (/\.first\s*\(|ZSK_GENERATED_REFINEMENT_REQUIRED|Refine locator names/i.test(content)) {
403
- issues.push({ file, message: "Playwright spec still contains generated or unrefined locators; refine locator names before promotion" });
404
- }
405
- }
406
- }
407
- async function checkAuthStatePlacement(target, config, issues) {
408
- const layout = resolveWorkspaceLayout(config);
409
- const allowedSharedRoot = resolve(target, layout.playwrightRoot);
410
- const allowedModulesRoot = resolve(target, layout.modulesRoot);
411
- const roots = unique([
412
- ".auth",
413
- "playwright",
414
- ".playwright",
415
- "docs",
416
- layout.docsRoot,
417
- layout.modulesRoot,
418
- layout.resourcesRoot,
419
- layout.issuesRoot,
420
- layout.evidenceRoot,
421
- ]);
422
- const files = [];
423
- for (const root of roots)
424
- files.push(...(await collectFiles(resolve(target, root))));
425
- for (const file of files) {
426
- if (!looksLikeAuthState(file))
427
- continue;
428
- const parts = file.split("/");
429
- const allowedShared = isInside(allowedSharedRoot, file) && parts.includes(".auth");
430
- const allowedModulePrivate = isInside(allowedModulesRoot, file) && parts.includes("_playwright") && parts.includes(".auth");
431
- const allowed = allowedShared || allowedModulePrivate;
432
- if (allowed)
433
- continue;
434
- issues.push({
435
- file,
436
- message: "auth/storage state belongs under module _playwright/.auth or shared .zsk/playwright/.auth and must not leak into docs, evidence, raws, or root Playwright paths",
437
- });
438
- }
439
- }
440
- async function checkCompletedDemoEvidence(target, playwrightPaths, issues) {
441
- const files = [];
442
- for (const playwrightPath of playwrightPaths) {
443
- files.push(...(await collectFiles(resolve(target, playwrightPath))));
444
- }
445
- const executionFiles = unique(files).filter((file) => file.endsWith("/execution/current.json"));
446
- for (const file of executionFiles) {
447
- let session;
448
- try {
449
- session = JSON.parse(await readFile(file, "utf8"));
450
- }
451
- catch {
452
- issues.push({ file, message: "demo execution session is not valid JSON" });
453
- continue;
454
- }
455
- if (session.status !== "completed")
456
- continue;
457
- const hasWaiver = /waiver|豁免|免除/i.test(session.note ?? "");
458
- const hasPassedExecution = await hasPassedPlaywrightExecution(file);
459
- if (hasWaiver || hasPassedExecution)
460
- continue;
461
- issues.push({
462
- file,
463
- message: "completed demo session needs passed Playwright execution evidence or an explicit waiver",
464
- });
465
- }
466
- }
467
- async function hasPassedPlaywrightExecution(sessionFile) {
468
- const executionFile = join(dirname(sessionFile), "playwright-execution.json");
469
- let execution;
470
- try {
471
- execution = JSON.parse(await readFile(executionFile, "utf8"));
472
- }
473
- catch {
474
- return false;
475
- }
476
- if (!/^(passed|completed)$/i.test(execution.status ?? ""))
477
- return false;
478
- const evidence = execution.evidence ?? {};
479
- return Object.values(evidence).some((value) => typeof value === "string" && value.trim().length > 0);
480
- }
481
- async function checkDocumentationFeedback(target, modules, issues) {
482
- for (const mod of modules) {
483
- const docsDir = mod.config.outputs?.docs ? resolve(target, mod.config.outputs.docs) : null;
484
- if (!docsDir)
485
- continue;
486
- const candidates = [
487
- ...STAGE_DOCS_REQUIRING_FEEDBACK.map((name) => join(docsDir, name)),
488
- ...[...SPLITTABLE_STAGE_DOCS].map((name) => join(docsDir, name, "index.md")),
489
- ];
490
- const existing = [];
491
- for (const file of candidates) {
492
- try {
493
- existing.push({ file, content: await readFile(file, "utf8") });
494
- }
495
- catch {
496
- // Optional until the module exists.
497
- }
498
- }
499
- if (existing.length === 0)
500
- continue;
501
- for (const item of existing) {
502
- if (hasDocumentationFeedback(item.content))
503
- continue;
504
- issues.push({
505
- file: item.file,
506
- message: "stage doc should include Documentation Feedback with updates, or an explicit no-update rationale",
507
- });
508
- }
509
- }
510
- }
511
- function hasDocumentationFeedback(content) {
512
- const marker = content.match(/^##+\s+Documentation Feedback\b([\s\S]*)$/im);
513
- if (!marker)
514
- return false;
515
- const body = (marker[1] ?? "").trim();
516
- if (body.length === 0)
517
- return false;
518
- return /no[- ]update|无需更新|无更新|not applicable|N\/A/i.test(body) || /-\s+\[[ x]\]/i.test(body) || /\|/.test(body);
519
- }
520
- async function collectFiles(root) {
521
- try {
522
- const entries = await readdir(root, { withFileTypes: true });
523
- const files = [];
524
- for (const entry of entries) {
525
- const path = join(root, entry.name);
526
- if (entry.isDirectory())
527
- files.push(...(await collectFiles(path)));
528
- if (entry.isFile())
529
- files.push(path);
530
- }
531
- return files;
532
- }
533
- catch {
534
- return [];
535
- }
536
- }
537
- async function collectAuthorityFiles(root) {
538
- if (!await exists(root))
539
- return [];
540
- try {
541
- const info = await stat(root);
542
- if (info.isFile())
543
- return isMaintainedTextArtifact(root) ? [root] : [];
544
- }
545
- catch {
546
- return [];
547
- }
548
- const files = await collectFiles(root);
549
- return files.filter((file) => {
550
- if (!isMaintainedTextArtifact(file))
551
- return false;
552
- if (file.includes("/.zsk/evidence/"))
553
- return false;
554
- if (file.includes("/.zsk/issues/"))
555
- return false;
556
- if (file.includes("/.zsk/playwright/"))
557
- return false;
558
- return true;
559
- });
560
- }
561
- function trimRawReference(value) {
562
- return value.replace(/[)\],.;:'"`]+$/g, "");
563
- }
564
- function looksLikeAuthState(file) {
565
- const lower = file.toLowerCase();
566
- const name = basename(lower);
567
- return (lower.includes("/.auth/") ||
568
- lower.includes("storagestate") ||
569
- lower.includes("storage-state") ||
570
- ["auth.json", "user.json", "state.json", "cookies.json", "storage.json"].includes(name));
571
- }
572
- function isMaintainedTextArtifact(file) {
573
- const lower = file.toLowerCase();
574
- if (lower.includes("/.auth/"))
575
- return false;
576
- return [".md", ".json", ".yaml", ".yml", ".ts", ".tsx", ".js", ".mjs"].includes(extname(lower));
577
- }
578
- function isDisallowedPrepareLane(value) {
579
- return (STALE_PREPARE_RAW_LANES.has(value) ||
580
- /^v?\d+(?:[._-]\d+)*$/i.test(value) ||
581
- /^(sprint|iteration|release)[-_]?\d*/i.test(value));
582
- }
583
- function linkedStageChildren(content, dir) {
584
- const files = new Set();
585
- for (const match of content.matchAll(/\[[^\]]+\]\(([^)]+?\.md)(?:#[^)]+)?\)/gi)) {
586
- const raw = match[1]?.trim();
587
- if (!raw || /^[a-z][a-z0-9+.-]*:/i.test(raw) || raw.startsWith("/"))
588
- continue;
589
- const child = resolve(dir, raw);
590
- if (!isInside(dir, child) || child === resolve(dir, "index.md"))
591
- continue;
592
- files.add(child);
593
- }
594
- return files;
595
- }
596
- function unique(values) {
597
- return [...new Set(values)];
598
- }
599
- function isInside(root, target) {
600
- const rel = relative(root, target);
601
- return rel === "" || (!rel.startsWith("..") && !rel.startsWith("/") && rel !== target);
602
- }
603
- async function exists(path) {
604
- try {
605
- await access(path);
606
- return true;
607
- }
608
- catch {
609
- return false;
610
- }
611
- }
612
51
  //# sourceMappingURL=check.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,0BAA0B,GAE3B,MAAM,kCAAkC,CAAC;AAO1C,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,OAAqB,EAAE;IAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;IACtE,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACrD,KAAK,MAAM,OAAO,IAAI,WAAW,CAAC,QAAQ,EAAE,CAAC;QAC3C,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACnE,CAAC;IACD,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC,CAAC;QACjE,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;QACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,WAAW,GAAG,MAAM,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChE,MAAM,aAAa,GAAG,MAAM,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAC3D,MAAM,OAAO,GAAG,qBAAqB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACtD,MAAM,WAAW,GAAG,MAAM,0BAA0B,CAAC;QACnD,MAAM;QACN,UAAU,EAAE,WAAW,CAAC,UAAU;QAClC,MAAM;QACN,OAAO,EAAE,aAAa;QACtB,OAAO;QACP,qBAAqB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,qBAAqB,CAAC,MAAM,EAAE,KAAK,CAAC;KACvE,CAAC,CAAC;IAEH,KAAK,MAAM,OAAO,IAAI,WAAW,CAAC,QAAQ,EAAE,CAAC;QAC3C,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,IAAI,WAAW,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC;QAC5C,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,MAAM;YAAE,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACzF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAC5C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,WAAW,CAAC,MAAM,mBAAmB,CAAC,CAAC,CAAC;IACtE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,2HAA2H,CAAC,CAAC,CAAC;AACnJ,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,KAAe;IAC9C,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAY,CAAC;QACnE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,MAAM,IAAI,EAAE,CAAqC,EAAE,CAAC,CAAC;IACpF,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}