@opengsd/gsd-core 1.13.0 → 1.14.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 (257) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/agents/gsd-advisor-researcher.compact.md +85 -0
  4. package/agents/gsd-ai-researcher.compact.md +96 -0
  5. package/agents/gsd-assumptions-analyzer.compact.md +81 -0
  6. package/agents/gsd-code-fixer.compact.md +458 -0
  7. package/agents/gsd-code-fixer.md +5 -5
  8. package/agents/gsd-code-reviewer.compact.md +269 -0
  9. package/agents/gsd-code-reviewer.md +15 -3
  10. package/agents/gsd-codebase-mapper.compact.md +760 -0
  11. package/agents/gsd-debug-session-manager.compact.md +345 -0
  12. package/agents/gsd-doc-classifier.compact.md +192 -0
  13. package/agents/gsd-doc-synthesizer.compact.md +200 -0
  14. package/agents/gsd-doc-verifier.compact.md +143 -0
  15. package/agents/gsd-doc-writer.compact.md +440 -0
  16. package/agents/gsd-dom-verifier.compact.md +138 -0
  17. package/agents/gsd-domain-researcher.compact.md +141 -0
  18. package/agents/gsd-eval-auditor.compact.md +160 -0
  19. package/agents/gsd-eval-planner.compact.md +137 -0
  20. package/agents/gsd-framework-selector.compact.md +82 -0
  21. package/agents/gsd-integration-checker.compact.md +245 -0
  22. package/agents/gsd-intel-updater.compact.md +226 -0
  23. package/agents/gsd-mempalace-curator.compact.md +45 -0
  24. package/agents/gsd-nyquist-auditor.compact.md +179 -0
  25. package/agents/gsd-pattern-mapper.compact.md +275 -0
  26. package/agents/gsd-project-researcher.compact.md +587 -0
  27. package/agents/gsd-research-synthesizer.compact.md +212 -0
  28. package/agents/gsd-roadmapper.compact.md +454 -0
  29. package/agents/gsd-roadmapper.md +13 -0
  30. package/agents/gsd-security-auditor.compact.md +162 -0
  31. package/agents/gsd-ui-auditor.compact.md +404 -0
  32. package/agents/gsd-ui-checker.compact.md +277 -0
  33. package/agents/gsd-ui-researcher.compact.md +282 -0
  34. package/agents/gsd-user-profiler.compact.md +108 -0
  35. package/bin/install.js +206 -68
  36. package/commands/gsd/cleanup.md +1 -0
  37. package/commands/gsd/code-review.md +2 -1
  38. package/commands/gsd/complete-milestone.md +1 -0
  39. package/commands/gsd/config.md +1 -0
  40. package/commands/gsd/debug.md +1 -0
  41. package/commands/gsd/graphify.md +1 -0
  42. package/commands/gsd/health.md +1 -0
  43. package/commands/gsd/mempalace-capture.md +1 -0
  44. package/commands/gsd/mempalace-recall.md +1 -0
  45. package/commands/gsd/new-milestone.md +1 -0
  46. package/commands/gsd/new-project.md +1 -0
  47. package/commands/gsd/next.md +1 -0
  48. package/commands/gsd/pause-work.md +1 -0
  49. package/commands/gsd/phase.md +1 -0
  50. package/commands/gsd/pr-branch.md +1 -0
  51. package/commands/gsd/resume-work.md +1 -0
  52. package/commands/gsd/review-backlog.md +1 -0
  53. package/commands/gsd/settings.md +2 -1
  54. package/commands/gsd/stats.md +1 -0
  55. package/commands/gsd/thread.md +1 -0
  56. package/commands/gsd/workspace.md +1 -0
  57. package/commands/gsd/workstreams.md +1 -0
  58. package/gsd-core/bin/check-latest-version.cjs +8 -3
  59. package/gsd-core/bin/gsd-tools.cjs +338 -125
  60. package/gsd-core/bin/lib/adr-parser.cjs +1 -1
  61. package/gsd-core/bin/lib/artifacts.cjs +2 -1
  62. package/gsd-core/bin/lib/audit.cjs +39 -22
  63. package/gsd-core/bin/lib/broken-windows.cjs +168 -49
  64. package/gsd-core/bin/lib/capability-lifecycle.cjs +10 -6
  65. package/gsd-core/bin/lib/capability-loader.cjs +135 -1
  66. package/gsd-core/bin/lib/capability-registry.cjs +79 -67
  67. package/gsd-core/bin/lib/capability-source.cjs +19 -2
  68. package/gsd-core/bin/lib/capability-validator.cjs +14 -1
  69. package/gsd-core/bin/lib/check-command-router.cjs +113 -36
  70. package/gsd-core/bin/lib/code-review-depth.cjs +2 -2
  71. package/gsd-core/bin/lib/commands.cjs +650 -72
  72. package/gsd-core/bin/lib/config-loader.cjs +1 -0
  73. package/gsd-core/bin/lib/config.cjs +153 -38
  74. package/gsd-core/bin/lib/coverage.cjs +1 -1
  75. package/gsd-core/bin/lib/decisions.cjs +137 -34
  76. package/gsd-core/bin/lib/external-descriptor-trust.cjs +29 -14
  77. package/gsd-core/bin/lib/gsd2-import.cjs +1 -2
  78. package/gsd-core/bin/lib/health-diagnostic-rules/state-consistency.cjs +12 -1
  79. package/gsd-core/bin/lib/health-diagnostic-rules/worktree-health.cjs +1 -1
  80. package/gsd-core/bin/lib/init.cjs +409 -47
  81. package/gsd-core/bin/lib/install-engine.cjs +16 -3
  82. package/gsd-core/bin/lib/install-profiles.cjs +14 -0
  83. package/gsd-core/bin/lib/installer-migrations.cjs +33 -4
  84. package/gsd-core/bin/lib/loop-resolver.cjs +50 -31
  85. package/gsd-core/bin/lib/mcp-catalog.cjs +2 -2
  86. package/gsd-core/bin/lib/milestone.cjs +19 -8
  87. package/gsd-core/bin/lib/model-resolver.cjs +101 -10
  88. package/gsd-core/bin/lib/phase-command-router.cjs +7 -1
  89. package/gsd-core/bin/lib/phase-id.cjs +161 -22
  90. package/gsd-core/bin/lib/phase-lifecycle.cjs +61 -0
  91. package/gsd-core/bin/lib/phase.cjs +167 -63
  92. package/gsd-core/bin/lib/planning-inspect.cjs +34 -18
  93. package/gsd-core/bin/lib/planning-snapshot.cjs +61 -12
  94. package/gsd-core/bin/lib/planning-workspace.cjs +50 -1
  95. package/gsd-core/bin/lib/pristine-baseline.cjs +182 -0
  96. package/gsd-core/bin/lib/prohibition-enforcement.cjs +91 -4
  97. package/gsd-core/bin/lib/quick-batch.cjs +1 -1
  98. package/gsd-core/bin/lib/refactor-trigger-command-router.cjs +61 -2
  99. package/gsd-core/bin/lib/research-store.cjs +11 -12
  100. package/gsd-core/bin/lib/review-lane-invocation.cjs +23 -0
  101. package/gsd-core/bin/lib/reviewer-step-dispatch.cjs +337 -0
  102. package/gsd-core/bin/lib/roadmap-parser.cjs +56 -15
  103. package/gsd-core/bin/lib/roadmap.cjs +108 -14
  104. package/gsd-core/bin/lib/runtime-artifact-conversion.cjs +27 -10
  105. package/gsd-core/bin/lib/runtime-artifact-install-plan.cjs +12 -3
  106. package/gsd-core/bin/lib/runtime-artifact-layout.cjs +13 -5
  107. package/gsd-core/bin/lib/runtime-hooks-surface.cjs +193 -4
  108. package/gsd-core/bin/lib/security.cjs +126 -7
  109. package/gsd-core/bin/lib/state-document.cjs +130 -28
  110. package/gsd-core/bin/lib/state-md-schema.cjs +21 -14
  111. package/gsd-core/bin/lib/state-transition.cjs +142 -28
  112. package/gsd-core/bin/lib/state.cjs +223 -27
  113. package/gsd-core/bin/lib/surface.cjs +60 -2
  114. package/gsd-core/bin/lib/task-command-router.cjs +12 -6
  115. package/gsd-core/bin/lib/uat.cjs +1 -1
  116. package/gsd-core/bin/lib/update-context.cjs +30 -24
  117. package/gsd-core/bin/lib/vendor/js-yaml.cjs +11 -3
  118. package/gsd-core/bin/lib/verification.cjs +47 -15
  119. package/gsd-core/bin/lib/verify-command-grounding.cjs +1 -1
  120. package/gsd-core/bin/lib/verify.cjs +188 -23
  121. package/gsd-core/bin/lib/workstream-inventory.cjs +1 -0
  122. package/gsd-core/bin/lib/worktree-safety.cjs +13 -7
  123. package/gsd-core/bin/shared/config-defaults.manifest.json +1 -0
  124. package/gsd-core/bin/shared/config-schema.manifest.json +5 -0
  125. package/gsd-core/bin/verify-reapply-patches.cjs +439 -80
  126. package/gsd-core/references/compact-content-gate.md +66 -0
  127. package/gsd-core/references/loop-hook-dispatch.md +18 -0
  128. package/gsd-core/references/model-profiles.md +12 -3
  129. package/gsd-core/references/planning-config.md +3 -0
  130. package/gsd-core/references/tdd.md +5 -2
  131. package/gsd-core/references/thinking-models-planning.md +18 -2
  132. package/gsd-core/references/verification-patterns.md +17 -4
  133. package/gsd-core/references/worktree-path-safety.md +112 -2
  134. package/gsd-core/templates/README.md +7 -1
  135. package/gsd-core/templates/state.md +6 -3
  136. package/gsd-core/templates/summary.compact.md +212 -0
  137. package/gsd-core/templates/user-setup.compact.md +199 -0
  138. package/gsd-core/templates/user-setup.md +0 -9
  139. package/gsd-core/workflows/add-todo.md +3 -2
  140. package/gsd-core/workflows/autonomous.md +13 -10
  141. package/gsd-core/workflows/check-todos.md +4 -2
  142. package/gsd-core/workflows/cleanup.md +3 -1
  143. package/gsd-core/workflows/code-review/steps/structural-pre-pass.md +7 -0
  144. package/gsd-core/workflows/code-review-fix.md +3 -3
  145. package/gsd-core/workflows/code-review.md +156 -30
  146. package/gsd-core/workflows/complete-milestone/detail/elaboration.md +274 -0
  147. package/gsd-core/workflows/complete-milestone.md +39 -262
  148. package/gsd-core/workflows/docs-update/detail/elaboration.md +179 -0
  149. package/gsd-core/workflows/docs-update.md +14 -155
  150. package/gsd-core/workflows/execute-phase/detail/elaboration.md +124 -0
  151. package/gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md +18 -3
  152. package/gsd-core/workflows/execute-phase/steps/completion-reconciliation.md +56 -0
  153. package/gsd-core/workflows/execute-phase/steps/executor-isolation-dispatch.md +7 -2
  154. package/gsd-core/workflows/execute-phase/steps/executor-progress-policy.md +43 -0
  155. package/gsd-core/workflows/execute-phase/steps/sequential-root-pin.md +35 -0
  156. package/gsd-core/workflows/execute-phase.md +53 -152
  157. package/gsd-core/workflows/execute-plan.md +20 -7
  158. package/gsd-core/workflows/help/modes/full.compact.md +398 -0
  159. package/gsd-core/workflows/help.md +1 -1
  160. package/gsd-core/workflows/map-codebase.md +50 -3
  161. package/gsd-core/workflows/new-milestone.md +54 -12
  162. package/gsd-core/workflows/new-project/detail/elaboration.md +216 -0
  163. package/gsd-core/workflows/new-project.md +32 -202
  164. package/gsd-core/workflows/plan-phase/detail/elaboration.md +209 -0
  165. package/gsd-core/workflows/plan-phase.md +22 -181
  166. package/gsd-core/workflows/pr-branch.md +19 -7
  167. package/gsd-core/workflows/quick.md +8 -1
  168. package/gsd-core/workflows/reapply-patches.md +77 -3
  169. package/gsd-core/workflows/settings.md +18 -5
  170. package/gsd-core/workflows/update.md +7 -5
  171. package/gsd-core/workflows/verify-work/detail/elaboration.md +230 -0
  172. package/gsd-core/workflows/verify-work.md +20 -180
  173. package/hooks/dist/gsd-agent-isolation-guard.js +42 -16
  174. package/hooks/dist/gsd-context-monitor.js +88 -15
  175. package/hooks/dist/gsd-cursor-subagent-start.js +34 -14
  176. package/hooks/dist/gsd-secret-read-guard.js +44 -18
  177. package/hooks/dist/gsd-statusline.js +11 -7
  178. package/hooks/dist/gsd-validate-commit.sh +34 -4
  179. package/hooks/dist/gsd-worktree-path-guard.js +25 -14
  180. package/hooks/dist/gsd-write-guard.js +46 -1
  181. package/hooks/dist/lib/dispatch-identity.js +187 -0
  182. package/hooks/dist/lib/filename-classification.js +64 -0
  183. package/hooks/dist/lib/isolation-deny-reason.js +53 -1
  184. package/hooks/dist/lib/isolation-sentinel.js +58 -19
  185. package/hooks/gsd-agent-isolation-guard.js +42 -16
  186. package/hooks/gsd-context-monitor.js +88 -15
  187. package/hooks/gsd-cursor-subagent-start.js +34 -14
  188. package/hooks/gsd-secret-read-guard.js +44 -18
  189. package/hooks/gsd-statusline.js +11 -7
  190. package/hooks/gsd-validate-commit.sh +34 -4
  191. package/hooks/gsd-worktree-path-guard.js +25 -14
  192. package/hooks/gsd-write-guard.js +46 -1
  193. package/hooks/lib/dispatch-identity.js +187 -0
  194. package/hooks/lib/filename-classification.js +64 -0
  195. package/hooks/lib/isolation-deny-reason.js +53 -1
  196. package/hooks/lib/isolation-sentinel.js +58 -19
  197. package/package.json +10 -6
  198. package/scripts/benchmark-compact-content-variants.cjs +298 -0
  199. package/scripts/benchmark-compact-content.cjs +368 -0
  200. package/scripts/check-contract-drift.cjs +4 -1
  201. package/scripts/check-env.cjs +36 -8
  202. package/scripts/check-glossary-refs.cjs +25 -21
  203. package/scripts/ci-next-health.cjs +271 -0
  204. package/scripts/ci-prepare-test-scope.cjs +7 -7
  205. package/scripts/ci-test-scope.cjs +126 -20
  206. package/scripts/ci-timeout-report.cjs +1 -1
  207. package/scripts/diff-touches-shipped-paths.cjs +1 -1
  208. package/scripts/docs-guard-registry.cjs +7 -2
  209. package/scripts/gen-adr-index.cjs +8 -2
  210. package/scripts/gen-inventory-manifest.cjs +12 -0
  211. package/scripts/gen-platform-conformance-tier.cjs +557 -0
  212. package/scripts/lib/drift-scan.cjs +1 -1
  213. package/scripts/lib/macos-conformance-tier.generated.cjs +210 -0
  214. package/scripts/lib/npm-version-check-diagnosis.cjs +59 -0
  215. package/scripts/lib/platform-conformance-tier.generated.cjs +276 -0
  216. package/scripts/lib/suite-detection.cjs +32 -0
  217. package/scripts/lint-allowed-tools-parity.cjs +221 -0
  218. package/scripts/lint-docs-guard-registration.exempt-baseline.cjs +19 -2
  219. package/scripts/lint-phase-id-drift.cjs +338 -13
  220. package/scripts/lint-response-language-coverage.cjs +9 -3
  221. package/scripts/lint-source-test-name-collision.cjs +1 -1
  222. package/scripts/lint-test-file-count.allowlist.json +1 -0
  223. package/scripts/lint-vendored-deps.cjs +128 -17
  224. package/scripts/lint-workflow-shellcheck-baseline.json +85 -0
  225. package/scripts/prompt-injection-scan.sh +14 -0
  226. package/scripts/workflow-size.cjs +139 -0
  227. package/skills/gsd-cleanup/SKILL.md +1 -0
  228. package/skills/gsd-code-review/SKILL.md +2 -1
  229. package/skills/gsd-complete-milestone/SKILL.md +1 -0
  230. package/skills/gsd-config/SKILL.md +1 -0
  231. package/skills/gsd-debug/SKILL.md +1 -0
  232. package/skills/gsd-graphify/SKILL.md +1 -0
  233. package/skills/gsd-health/SKILL.md +1 -0
  234. package/skills/gsd-mempalace-capture/SKILL.md +1 -0
  235. package/skills/gsd-mempalace-recall/SKILL.md +1 -0
  236. package/skills/gsd-new-milestone/SKILL.md +1 -0
  237. package/skills/gsd-new-project/SKILL.md +1 -0
  238. package/skills/gsd-next/SKILL.md +1 -0
  239. package/skills/gsd-pause-work/SKILL.md +1 -0
  240. package/skills/gsd-phase/SKILL.md +1 -0
  241. package/skills/gsd-pr-branch/SKILL.md +1 -0
  242. package/skills/gsd-resume-work/SKILL.md +1 -0
  243. package/skills/gsd-review-backlog/SKILL.md +1 -0
  244. package/skills/gsd-settings/SKILL.md +2 -1
  245. package/skills/gsd-stats/SKILL.md +1 -0
  246. package/skills/gsd-thread/SKILL.md +1 -0
  247. package/skills/gsd-workspace/SKILL.md +1 -0
  248. package/skills/gsd-workstreams/SKILL.md +1 -0
  249. package/vscode/package.json +1 -1
  250. package/gsd-core/templates/claude-md.md +0 -145
  251. package/gsd-core/templates/codebase/concerns.md +0 -310
  252. package/gsd-core/templates/codebase/conventions.md +0 -307
  253. package/gsd-core/templates/codebase/integrations.md +0 -280
  254. package/gsd-core/templates/codebase/structure.md +0 -285
  255. package/gsd-core/templates/codebase/testing.md +0 -480
  256. package/gsd-core/templates/debug-subagent-prompt.md +0 -91
  257. package/gsd-core/templates/discovery.md +0 -146
@@ -0,0 +1,210 @@
1
+ // GENERATED FILE — do not hand-edit. Run `node scripts/gen-platform-conformance-tier.cjs --target macos --write` to regenerate.
2
+ // macOS-specific conformance tier (#4593), separate from and narrower than the general/
3
+ // Windows-oriented tier in platform-conformance-tier.generated.cjs — see
4
+ // docs/adr/4593-macos-conformance-tier-architecture.md for the full rationale.
5
+ 'use strict';
6
+
7
+ module.exports = {
8
+ MACOS_CONFORMANCE_TIER_FILES: [
9
+ "tests/adr-612-bracket-phase-counting.test.cjs",
10
+ "tests/adr-index-gate.test.cjs",
11
+ "tests/adr-parser.property.test.cjs",
12
+ "tests/adr-parser.unit.test.cjs",
13
+ "tests/agent-classification-parity.test.cjs",
14
+ "tests/agent-install-check.test.cjs",
15
+ "tests/agent-skills.test.cjs",
16
+ "tests/api-coverage-gate-e2e.test.cjs",
17
+ "tests/api-coverage.test.cjs",
18
+ "tests/ask-user-questions-fallback.test.cjs",
19
+ "tests/audit-command-cutover.test.cjs",
20
+ "tests/broken-windows.test.cjs",
21
+ "tests/capability-cli.test.cjs",
22
+ "tests/capability-command-dispatch.test.cjs",
23
+ "tests/capability-consent.test.cjs",
24
+ "tests/capability-ledger.test.cjs",
25
+ "tests/capability-lifecycle.test.cjs",
26
+ "tests/capability-loader.test.cjs",
27
+ "tests/capability-lock-mkdir-failure-3987.test.cjs",
28
+ "tests/capability-registry.test.cjs",
29
+ "tests/capability-source.test.cjs",
30
+ "tests/capability-state.test.cjs",
31
+ "tests/capability-trust.test.cjs",
32
+ "tests/changeset-parse.test.cjs",
33
+ "tests/check-contract-drift.test.cjs",
34
+ "tests/check-predicate.test.cjs",
35
+ "tests/check-ui-safety-gate.test.cjs",
36
+ "tests/check-update-config-dir.test.cjs",
37
+ "tests/chunked-planning-parallel.test.cjs",
38
+ "tests/ci-docs-guard-registry.test.cjs",
39
+ "tests/ci-test-scope.test.cjs",
40
+ "tests/cline-install.test.cjs",
41
+ "tests/code-review-pipeline-regression.test.cjs",
42
+ "tests/codex-config-agents.test.cjs",
43
+ "tests/codex-config-hooks.test.cjs",
44
+ "tests/codex-config-install.test.cjs",
45
+ "tests/codex-config.test.cjs",
46
+ "tests/commands.test.cjs",
47
+ "tests/commit-docs-bypass.test.cjs",
48
+ "tests/commit-files-deletion.test.cjs",
49
+ "tests/commit-files-pathspec.test.cjs",
50
+ "tests/commonjs-marker.test.cjs",
51
+ "tests/completion-ratio-scope-withholding.test.cjs",
52
+ "tests/config-loader.test.cjs",
53
+ "tests/config-schema.property.test.cjs",
54
+ "tests/config.test.cjs",
55
+ "tests/contributor-standards.test.cjs",
56
+ "tests/core-utils.test.cjs",
57
+ "tests/cursor-subagent-isolation.test.cjs",
58
+ "tests/debugger-semantic-recall.test.cjs",
59
+ "tests/default-flip-documentation-lint.test.cjs",
60
+ "tests/discuss-phase-power.test.cjs",
61
+ "tests/docs-parity-live-registry.test.cjs",
62
+ "tests/effort-surface-axis.test.cjs",
63
+ "tests/effort-sync-installed-runtime.test.cjs",
64
+ "tests/emitted-attribution.test.cjs",
65
+ "tests/ensure-runtime-build.test.cjs",
66
+ "tests/execute-phase-decimal-arithmetic.test.cjs",
67
+ "tests/executed-plan.test.cjs",
68
+ "tests/executor-mvp-tdd-section.test.cjs",
69
+ "tests/external-job.test.cjs",
70
+ "tests/failing-direction.test.cjs",
71
+ "tests/fallow-runner.test.cjs",
72
+ "tests/feat-2483-review-claude-mds-guard.test.cjs",
73
+ "tests/features-index-gate.test.cjs",
74
+ "tests/frontmatter.unit.test.cjs",
75
+ "tests/gap-checker.property.test.cjs",
76
+ "tests/gen-context-index.test.cjs",
77
+ "tests/gen-section-manifest.test.cjs",
78
+ "tests/git-base-branch.test.cjs",
79
+ "tests/graphify-query.test.cjs",
80
+ "tests/graphify-visualization.test.cjs",
81
+ "tests/gsd-secret-read-guard.test.cjs",
82
+ "tests/gsd-settings-advanced.test.cjs",
83
+ "tests/gsd-statusline.test.cjs",
84
+ "tests/gsd-tools-path-refs.test.cjs",
85
+ "tests/gsd-validate-commit-crash-policy.test.cjs",
86
+ "tests/gsd-write-guard.test.cjs",
87
+ "tests/health-diagnostic-rules/worktree-health.test.cjs",
88
+ "tests/health-diagnostic.test.cjs",
89
+ "tests/helpers-cleanup.test.cjs",
90
+ "tests/helpers-process-isolation.test.cjs",
91
+ "tests/hooks-crash-policy.test.cjs",
92
+ "tests/hooks-opt-in.test.cjs",
93
+ "tests/host-integration.test.cjs",
94
+ "tests/init-manager.test.cjs",
95
+ "tests/init.test.cjs",
96
+ "tests/install-minimal-hooks.test.cjs",
97
+ "tests/install-path-detection.test.cjs",
98
+ "tests/install-regressions.test.cjs",
99
+ "tests/install-runtime-artifacts.test.cjs",
100
+ "tests/install-write-confinement.test.cjs",
101
+ "tests/install.test.cjs",
102
+ "tests/installer-migration-antigravity-retire-confighome-artifacts.test.cjs",
103
+ "tests/installer-migration-config-root-marker.test.cjs",
104
+ "tests/installer-migration-pi-retire-hooks-dir.test.cjs",
105
+ "tests/installer-migration-prune-stale-pristine.test.cjs",
106
+ "tests/installer-migration-rename-gsd-core.test.cjs",
107
+ "tests/installer-migrations.test.cjs",
108
+ "tests/intel.test.cjs",
109
+ "tests/inventory-nested-families.test.cjs",
110
+ "tests/isolation-sentinel.test.cjs",
111
+ "tests/issue-version-gate.test.cjs",
112
+ "tests/kimi-upgrades.test.cjs",
113
+ "tests/lint-docs-command-form.test.cjs",
114
+ "tests/lint-workflow-shellcheck-fetch.test.cjs",
115
+ "tests/list-seeds.test.cjs",
116
+ "tests/markdown-sectionizer.test.cjs",
117
+ "tests/mcp-catalog.test.cjs",
118
+ "tests/milestone-archive.test.cjs",
119
+ "tests/milestone-window-single-owner.test.cjs",
120
+ "tests/model-catalog.unit.test.cjs",
121
+ "tests/model-resolver.test.cjs",
122
+ "tests/no-exact-case-env-access.rule.test.cjs",
123
+ "tests/no-pending-3212-markers.test.cjs",
124
+ "tests/no-phantom-issue-refs.test.cjs",
125
+ "tests/no-posix-mode-bit-assert.rule.test.cjs",
126
+ "tests/no-private-binary-resolution.rule.test.cjs",
127
+ "tests/no-unguarded-nonportable-exec.rule.test.cjs",
128
+ "tests/observability/event.test.cjs",
129
+ "tests/onboard-command.test.cjs",
130
+ "tests/opencode-plugin-adapter.test.cjs",
131
+ "tests/pause-work-context-detection.test.cjs",
132
+ "tests/pause-work-improvements.test.cjs",
133
+ "tests/perf-317-context-monitor-fs.test.cjs",
134
+ "tests/phase-completion-single-owner.test.cjs",
135
+ "tests/phase-estimation.test.cjs",
136
+ "tests/phase-id-drift-guard.test.cjs",
137
+ "tests/phase-id.test.cjs",
138
+ "tests/phase-locator.test.cjs",
139
+ "tests/phase.test.cjs",
140
+ "tests/plan-count-single-owner.test.cjs",
141
+ "tests/plan-phase-stall-detection.test.cjs",
142
+ "tests/plan-review-convergence.test.cjs",
143
+ "tests/planning-inspect.test.cjs",
144
+ "tests/planning-inspect.unit.test.cjs",
145
+ "tests/planning-lock-mkdir-failure-1884.test.cjs",
146
+ "tests/planning-snapshot.test.cjs",
147
+ "tests/planning-workspace.test.cjs",
148
+ "tests/platform-conformance-tier.test.cjs",
149
+ "tests/plugin-manifest.test.cjs",
150
+ "tests/policy-shell-pinning.test.cjs",
151
+ "tests/portability-rule-disable-ban.test.cjs",
152
+ "tests/precommit-alias-drift-hook.test.cjs",
153
+ "tests/prepush-enterprise-email-hook.test.cjs",
154
+ "tests/process-seam.test.cjs",
155
+ "tests/profile-output.test.cjs",
156
+ "tests/profile-pipeline.test.cjs",
157
+ "tests/quick-batch.test.cjs",
158
+ "tests/quick-branching.test.cjs",
159
+ "tests/quick-research.test.cjs",
160
+ "tests/reapply-verify-hunks.test.cjs",
161
+ "tests/refactor-1390-t3-characterization.test.cjs",
162
+ "tests/require-issue-link-policy.test.cjs",
163
+ "tests/response-language-coverage.test.cjs",
164
+ "tests/retired-artifact-cleanup.test.cjs",
165
+ "tests/review-build-prompt-optional-sections.test.cjs",
166
+ "tests/review-lane-runner.test.cjs",
167
+ "tests/review-lane-windows-spawn-resolution.test.cjs",
168
+ "tests/review-parallel-lanes.test.cjs",
169
+ "tests/review-plan-coverage-manifest.test.cjs",
170
+ "tests/review-reviewer-selection.test.cjs",
171
+ "tests/reviewer-manifest-body.test.cjs",
172
+ "tests/reviewer-step-dispatch.test.cjs",
173
+ "tests/roadmap-mode-field.test.cjs",
174
+ "tests/roadmap-parser.test.cjs",
175
+ "tests/roadmap-phase-fallback.test.cjs",
176
+ "tests/roadmap.test.cjs",
177
+ "tests/runtime-artifact-layout.test.cjs",
178
+ "tests/runtime-identity.test.cjs",
179
+ "tests/runtime-launcher-parity.test.cjs",
180
+ "tests/security.test.cjs",
181
+ "tests/settings-jsonc.test.cjs",
182
+ "tests/shared-hooks-dir-resolution.test.cjs",
183
+ "tests/shell-command-projection-dispatch.test.cjs",
184
+ "tests/spawn-liveness-banner.test.cjs",
185
+ "tests/state-document.test.cjs",
186
+ "tests/state-transition.test.cjs",
187
+ "tests/state.test.cjs",
188
+ "tests/todos-workstream-scope.test.cjs",
189
+ "tests/tracer-bullet.test.cjs",
190
+ "tests/uat.test.cjs",
191
+ "tests/ui-safety-gate.test.cjs",
192
+ "tests/ui-spec-inventory-provenance.test.cjs",
193
+ "tests/unreachable-guard-drift.test.cjs",
194
+ "tests/unreachable-shell-guard.test.cjs",
195
+ "tests/unusable-input.test.cjs",
196
+ "tests/update-custom-backup.test.cjs",
197
+ "tests/user-artifact-staging.test.cjs",
198
+ "tests/verification-overrides.test.cjs",
199
+ "tests/verification-status.test.cjs",
200
+ "tests/verify-archive-dirs-live-path.test.cjs",
201
+ "tests/verify-command-grounding.test.cjs",
202
+ "tests/verify.test.cjs",
203
+ "tests/workflow-fragments.test.cjs",
204
+ "tests/workflow-shell-pinning.test.cjs",
205
+ "tests/workstream-inventory.test.cjs",
206
+ "tests/workstream.test.cjs",
207
+ "tests/worktree-safety.test.cjs",
208
+ "tests/worktree.test.cjs",
209
+ ],
210
+ };
@@ -0,0 +1,59 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * #4460: distinguishes WHY scripts/check-env.cjs's npm-version check's
5
+ * spawnSync(npmCmd, ['--version'], ...) produced no usable output, instead
6
+ * of collapsing every case into "npm binary not found on PATH" -- a
7
+ * message that used to fire identically for a genuinely-missing binary AND
8
+ * for a spawnSync TIMEOUT under CI load (exitCode stays non-zero, stdout
9
+ * stays empty, either way). Root-caused live: an unrelated PR's Windows CI
10
+ * shard failed this check twice in a row while running ~51 concurrent test
11
+ * files; npm.cmd's own cold-start plausibly exceeded the check's original
12
+ * 10s window under that contention, and the misleading message made a real
13
+ * timeout indistinguishable from npm actually being absent.
14
+ *
15
+ * Expects `result.timedOut` to already be computed the same way this
16
+ * repo's canonical OS-shell-projection seam (execNpm / isSpawnTimeout,
17
+ * src/shell-command-projection.cts) computes it: `error.code ===
18
+ * 'ETIMEDOUT'`, which Node's spawnSync guarantees when its own `timeout`
19
+ * option fires. NOT imported directly here -- check-env.cjs deliberately
20
+ * cannot depend on that seam's compiled output (gsd-core/bin/lib/*.cjs), a
21
+ * tsc build artifact that does not exist yet when check-env.cjs runs as its
22
+ * own standalone pre-`npm ci` CI step (confirmed live: an earlier version
23
+ * of this fix routed through execNpm directly and crashed every real CI
24
+ * job with MODULE_NOT_FOUND) -- so the same ETIMEDOUT check is computed
25
+ * inline in check-env.cjs instead. Checking `result.signal === 'SIGTERM'`
26
+ * directly (what an earlier version of this fix did) is platform-fragile
27
+ * per that seam's own documented reasoning, with a specifically-called-out
28
+ * risk of a false NEGATIVE on Windows -- the exact platform this failure
29
+ * was discovered on.
30
+ *
31
+ * Kept out of scripts/check-env.cjs itself (which runs its CLI unconditionally
32
+ * on require, with no `require.main === module` guard) so this pure logic
33
+ * can be required directly by tests without triggering a real environment
34
+ * check.
35
+ *
36
+ * @param {{exitCode: number, stdout: string, signal: string|null, error: (Error & {code?: string})|null, timedOut: boolean}} result
37
+ * @returns {string}
38
+ */
39
+ function describeNpmVersionCheckFailure(result) {
40
+ if (result.error && result.error.code === 'ENOENT') {
41
+ return 'npm binary not found on PATH';
42
+ }
43
+ if (result.timedOut) {
44
+ return `npm --version timed out under CI load -- not a missing binary`;
45
+ }
46
+ if (result.exitCode !== 0) {
47
+ return `npm --version exited ${result.exitCode} with no usable output`;
48
+ }
49
+ if (result.exitCode === 0) {
50
+ // npm ran and exited cleanly but printed nothing -- distinct from every
51
+ // case above (which all involve a failed/absent spawn), so it gets its
52
+ // own message rather than falling through to "not found on PATH", which
53
+ // would misdescribe a real npm binary that simply produced no output.
54
+ return 'npm --version exited 0 but produced no output';
55
+ }
56
+ return 'npm binary not found on PATH';
57
+ }
58
+
59
+ module.exports = { describeNpmVersionCheckFailure };
@@ -0,0 +1,276 @@
1
+ // GENERATED FILE — do not hand-edit. Run `node scripts/gen-platform-conformance-tier.cjs --write` to regenerate.
2
+ 'use strict';
3
+
4
+ module.exports = {
5
+ CONFORMANCE_TIER_FILES: [
6
+ "tests/adr-index-gate.test.cjs",
7
+ "tests/adr857-core-without-capabilities.test.cjs",
8
+ "tests/agent-install-check.test.cjs",
9
+ "tests/agent-install-validation.test.cjs",
10
+ "tests/agent-skills.test.cjs",
11
+ "tests/antigravity-upgrades.test.cjs",
12
+ "tests/api-coverage-gate-e2e.test.cjs",
13
+ "tests/api-coverage.test.cjs",
14
+ "tests/assumption-delta-checkpoint-e2e.test.cjs",
15
+ "tests/assumption-delta.test.cjs",
16
+ "tests/audit-command-cutover.test.cjs",
17
+ "tests/augment-upgrades.test.cjs",
18
+ "tests/broken-windows.test.cjs",
19
+ "tests/capability-cli.test.cjs",
20
+ "tests/capability-command-dispatch.test.cjs",
21
+ "tests/capability-consent.test.cjs",
22
+ "tests/capability-ledger.test.cjs",
23
+ "tests/capability-lifecycle.test.cjs",
24
+ "tests/capability-loader.test.cjs",
25
+ "tests/capability-lock-mkdir-failure-3987.test.cjs",
26
+ "tests/capability-probe-fallback.test.cjs",
27
+ "tests/capability-source.test.cjs",
28
+ "tests/capability-state.test.cjs",
29
+ "tests/changeset-new.test.cjs",
30
+ "tests/check-env.test.cjs",
31
+ "tests/check-gap-analysis-plan-post-e2e.test.cjs",
32
+ "tests/check-glossary-refs.test.cjs",
33
+ "tests/check-predicate.test.cjs",
34
+ "tests/check-tdd-review-checkpoint-e2e.test.cjs",
35
+ "tests/check-ui-safety-gate.test.cjs",
36
+ "tests/check-update-config-dir.test.cjs",
37
+ "tests/chunked-planning-parallel.test.cjs",
38
+ "tests/ci-docs-guard-registry.test.cjs",
39
+ "tests/ci-rebase-check.test.cjs",
40
+ "tests/ci-test-scope.test.cjs",
41
+ "tests/cjs-command-router-adapter.test.cjs",
42
+ "tests/claude-md.test.cjs",
43
+ "tests/cline-install.test.cjs",
44
+ "tests/close-phase-todos-padded-resolves.test.cjs",
45
+ "tests/code-review-pipeline-regression.test.cjs",
46
+ "tests/code-review-tier3-files-override-scoping.test.cjs",
47
+ "tests/code-review.test.cjs",
48
+ "tests/codex-config-agents.test.cjs",
49
+ "tests/codex-config-hooks.test.cjs",
50
+ "tests/codex-config-install.test.cjs",
51
+ "tests/codex-config.test.cjs",
52
+ "tests/codex-inherit-smoke.test.cjs",
53
+ "tests/command-routing-hub.test.cjs",
54
+ "tests/commands.test.cjs",
55
+ "tests/commit-files-deletion.test.cjs",
56
+ "tests/commit-files-pathspec.test.cjs",
57
+ "tests/commonjs-marker.test.cjs",
58
+ "tests/compact-content-4139.test.cjs",
59
+ "tests/completion-ratio-scope-withholding.test.cjs",
60
+ "tests/config-defaults-runtime-exclusion.test.cjs",
61
+ "tests/config-get-default.test.cjs",
62
+ "tests/config-loader.test.cjs",
63
+ "tests/config-schema.property.test.cjs",
64
+ "tests/config.test.cjs",
65
+ "tests/copilot-install.test.cjs",
66
+ "tests/copilot-upgrades.test.cjs",
67
+ "tests/core-utils.test.cjs",
68
+ "tests/cursor-hook-workspace-roots.test.cjs",
69
+ "tests/cursor-hooks.test.cjs",
70
+ "tests/cursor-subagent-isolation.test.cjs",
71
+ "tests/dispatch-identity.test.cjs",
72
+ "tests/dispatcher.test.cjs",
73
+ "tests/drift-detection.test.cjs",
74
+ "tests/effort-surface-axis.test.cjs",
75
+ "tests/effort-sync-installed-runtime.test.cjs",
76
+ "tests/emitted-ack-trailer.test.cjs",
77
+ "tests/emitted-attribution.test.cjs",
78
+ "tests/emitted-provenance.test.cjs",
79
+ "tests/ensure-runtime-build.test.cjs",
80
+ "tests/eslint-rules.test.cjs",
81
+ "tests/execute-phase-decimal-arithmetic.test.cjs",
82
+ "tests/execute-phase-worktree-guard.test.cjs",
83
+ "tests/execute-plan-update-codebase-map-diff-base.test.cjs",
84
+ "tests/execute-wave-post-gate-pipeline-e2e.test.cjs",
85
+ "tests/executed-plan.test.cjs",
86
+ "tests/executor-mvp-tdd-section.test.cjs",
87
+ "tests/external-descriptor-confinement.test.cjs",
88
+ "tests/failing-direction.test.cjs",
89
+ "tests/fallow-runner.test.cjs",
90
+ "tests/faulty-deps.test.cjs",
91
+ "tests/feat-2483-review-claude-mds-guard.test.cjs",
92
+ "tests/features-index-gate.test.cjs",
93
+ "tests/frontmatter.test.cjs",
94
+ "tests/gap-checker.property.test.cjs",
95
+ "tests/gemini-runtime-removed.test.cjs",
96
+ "tests/gen-context-index.test.cjs",
97
+ "tests/gen-health-docs.test.cjs",
98
+ "tests/gen-section-manifest.test.cjs",
99
+ "tests/git-base-branch.test.cjs",
100
+ "tests/golden-install-tree.test.cjs",
101
+ "tests/graphify-graph-path.test.cjs",
102
+ "tests/graphify-visualization.test.cjs",
103
+ "tests/graphify.test.cjs",
104
+ "tests/gsd-agent-isolation-guard.test.cjs",
105
+ "tests/gsd-check-update-worker-atomic-cache.test.cjs",
106
+ "tests/gsd-check-update-worker-platform-gate.test.cjs",
107
+ "tests/gsd-mcp-server-bin.test.cjs",
108
+ "tests/gsd-statusline.test.cjs",
109
+ "tests/gsd-validate-commit-crash-policy.test.cjs",
110
+ "tests/gsd-write-guard.test.cjs",
111
+ "tests/health-diagnostic-rules/config-validation.test.cjs",
112
+ "tests/health-diagnostic-rules/worktree-health.test.cjs",
113
+ "tests/health-diagnostic.test.cjs",
114
+ "tests/helpers-cleanup.test.cjs",
115
+ "tests/helpers-process-isolation.test.cjs",
116
+ "tests/hermes-skills-migration.test.cjs",
117
+ "tests/hooks-commonjs-marker.test.cjs",
118
+ "tests/hooks-crash-policy.test.cjs",
119
+ "tests/hooks-opt-in.test.cjs",
120
+ "tests/host-integration.test.cjs",
121
+ "tests/init-manager.test.cjs",
122
+ "tests/init.test.cjs",
123
+ "tests/install-minimal-hooks.test.cjs",
124
+ "tests/install-nested-layout.test.cjs",
125
+ "tests/install-path-detection.test.cjs",
126
+ "tests/install-regressions.test.cjs",
127
+ "tests/install-runtime-artifacts.test.cjs",
128
+ "tests/install-write-confinement.test.cjs",
129
+ "tests/install.test.cjs",
130
+ "tests/installer-migration-antigravity-retire-confighome-artifacts.test.cjs",
131
+ "tests/installer-migration-config-root-marker.test.cjs",
132
+ "tests/installer-migration-pi-retire-hooks-dir.test.cjs",
133
+ "tests/installer-migration-prune-stale-pristine.test.cjs",
134
+ "tests/installer-migration-rename-gsd-core.test.cjs",
135
+ "tests/installer-migrations.test.cjs",
136
+ "tests/intel.test.cjs",
137
+ "tests/inventory-nested-families.test.cjs",
138
+ "tests/io.test.cjs",
139
+ "tests/isolation-sentinel.test.cjs",
140
+ "tests/kilo-upgrades.test.cjs",
141
+ "tests/kimi-agent-converter.test.cjs",
142
+ "tests/kimi-upgrades.test.cjs",
143
+ "tests/kimi-variant-disambiguation.test.cjs",
144
+ "tests/lint-workflow-shellcheck-fetch.test.cjs",
145
+ "tests/live-config-guard.test.cjs",
146
+ "tests/lockfile-cve-audit.test.cjs",
147
+ "tests/locking-bugs-1909-1916-1925-1927.test.cjs",
148
+ "tests/loop-hooks-empty-points-e2e.test.cjs",
149
+ "tests/loop-hooks-ship-pre-e2e.test.cjs",
150
+ "tests/loop-hooks-verify-post-e2e.test.cjs",
151
+ "tests/mcp-catalog.property.test.cjs",
152
+ "tests/mcp-catalog.test.cjs",
153
+ "tests/milestone-archive.test.cjs",
154
+ "tests/milestone-window-single-owner.test.cjs",
155
+ "tests/model-resolver.test.cjs",
156
+ "tests/mutation-workflow-base-ref.test.cjs",
157
+ "tests/new-milestone-clear-phases.test.cjs",
158
+ "tests/no-bare-npm-exec.rule.test.cjs",
159
+ "tests/no-exact-case-env-access.rule.test.cjs",
160
+ "tests/no-path-literal-in-assert.rule.test.cjs",
161
+ "tests/no-pending-3212-markers.test.cjs",
162
+ "tests/no-phantom-issue-refs.test.cjs",
163
+ "tests/no-posix-mode-bit-assert.rule.test.cjs",
164
+ "tests/no-private-binary-resolution.rule.test.cjs",
165
+ "tests/no-unbounded-dirname-walk.rule.test.cjs",
166
+ "tests/no-unbounded-spawn.test.cjs",
167
+ "tests/no-unguarded-nonportable-exec.rule.test.cjs",
168
+ "tests/npm-audit-baseline.test.cjs",
169
+ "tests/npm-integrity-gate.test.cjs",
170
+ "tests/nsegment-phase-grammar.test.cjs",
171
+ "tests/onboard-command.test.cjs",
172
+ "tests/opencode-command-dir-plural.test.cjs",
173
+ "tests/opencode-plugin-adapter.test.cjs",
174
+ "tests/overlay-repo-helpers.test.cjs",
175
+ "tests/packaging-shipped-scripts-require-only-shipped.test.cjs",
176
+ "tests/path-replacement.test.cjs",
177
+ "tests/pause-work-context-detection.test.cjs",
178
+ "tests/pause-work-improvements.test.cjs",
179
+ "tests/perf-317-context-monitor-fs.test.cjs",
180
+ "tests/phase-completion-single-owner.test.cjs",
181
+ "tests/phase-estimation.test.cjs",
182
+ "tests/phase-locator.test.cjs",
183
+ "tests/phase.test.cjs",
184
+ "tests/phase6-capstone-conformance.test.cjs",
185
+ "tests/pi-config-dir-env-override.test.cjs",
186
+ "tests/plan-count-single-owner.test.cjs",
187
+ "tests/plan-phase-stall-detection.test.cjs",
188
+ "tests/plan-pre-hook-e2e.test.cjs",
189
+ "tests/plan-review-convergence.test.cjs",
190
+ "tests/planning-inspect.test.cjs",
191
+ "tests/planning-inspect.unit.test.cjs",
192
+ "tests/planning-lock-mkdir-failure-1884.test.cjs",
193
+ "tests/planning-prompt-drift.test.cjs",
194
+ "tests/planning-snapshot.test.cjs",
195
+ "tests/planning-workspace.test.cjs",
196
+ "tests/platform-conformance-tier.test.cjs",
197
+ "tests/platform-guard.unit.test.cjs",
198
+ "tests/plugin-manifest.test.cjs",
199
+ "tests/policy-160-route0-resume.test.cjs",
200
+ "tests/policy-shell-pinning.test.cjs",
201
+ "tests/portability-rule-disable-ban.test.cjs",
202
+ "tests/pr-branch-planning-filter.test.cjs",
203
+ "tests/precommit-alias-drift-hook.test.cjs",
204
+ "tests/prepush-enterprise-email-hook.test.cjs",
205
+ "tests/process-seam.test.cjs",
206
+ "tests/profile-output.test.cjs",
207
+ "tests/profile-pipeline.test.cjs",
208
+ "tests/prohibition-enforcement.test.cjs",
209
+ "tests/project-root.test.cjs",
210
+ "tests/quick-batch.test.cjs",
211
+ "tests/quick-branching.test.cjs",
212
+ "tests/quick-research.test.cjs",
213
+ "tests/quick-review-scope-tip-bound.test.cjs",
214
+ "tests/read-guard.test.cjs",
215
+ "tests/reapply-verify-hunks.test.cjs",
216
+ "tests/repo-layout.test.cjs",
217
+ "tests/representative-corpus.test.cjs",
218
+ "tests/require-fs-op-fallback.rule.test.cjs",
219
+ "tests/require-full-tmpdir-triad.rule.test.cjs",
220
+ "tests/require-userprofile-with-home.rule.test.cjs",
221
+ "tests/response-language-coverage.test.cjs",
222
+ "tests/retired-artifact-cleanup.test.cjs",
223
+ "tests/review-build-prompt-optional-sections.test.cjs",
224
+ "tests/review-default-reviewers-config.test.cjs",
225
+ "tests/review-lane-runner.test.cjs",
226
+ "tests/review-lane-windows-spawn-resolution.test.cjs",
227
+ "tests/review-model-config.test.cjs",
228
+ "tests/review-parallel-lanes.test.cjs",
229
+ "tests/review-plan-coverage-manifest.test.cjs",
230
+ "tests/reviewer-manifest-body.test.cjs",
231
+ "tests/reviewer-step-dispatch.test.cjs",
232
+ "tests/revision-remediation-binding.test.cjs",
233
+ "tests/roadmap-parser.test.cjs",
234
+ "tests/roadmap.test.cjs",
235
+ "tests/run-tests-harness.test.cjs",
236
+ "tests/run-tests-temp-root.test.cjs",
237
+ "tests/run-with-timeout.test.cjs",
238
+ "tests/runtime-artifact-layout-surface.test.cjs",
239
+ "tests/runtime-artifact-layout.test.cjs",
240
+ "tests/runtime-converters.test.cjs",
241
+ "tests/runtime-homes-descriptor-drive.test.cjs",
242
+ "tests/runtime-identity.test.cjs",
243
+ "tests/runtime-launcher-parity.test.cjs",
244
+ "tests/security.test.cjs",
245
+ "tests/settings-jsonc.test.cjs",
246
+ "tests/sh-hook-paths.test.cjs",
247
+ "tests/shared-hooks-dir-resolution.test.cjs",
248
+ "tests/shell-command-projection-dispatch.test.cjs",
249
+ "tests/shell-command-projection-path-sep.test.cjs",
250
+ "tests/ship-notes-wedged-pr.test.cjs",
251
+ "tests/skill-manifest.test.cjs",
252
+ "tests/slug-derivation-drift-guard.test.cjs",
253
+ "tests/state-todos-render.test.cjs",
254
+ "tests/state.test.cjs",
255
+ "tests/teams-status.test.cjs",
256
+ "tests/todos-workstream-scope.test.cjs",
257
+ "tests/unreachable-guard-drift.test.cjs",
258
+ "tests/unreachable-shell-guard.test.cjs",
259
+ "tests/unusable-input.test.cjs",
260
+ "tests/update-custom-backup.test.cjs",
261
+ "tests/user-artifact-staging.test.cjs",
262
+ "tests/verification-status.test.cjs",
263
+ "tests/verify-archive-dirs-live-path.test.cjs",
264
+ "tests/verify-command-grounding.test.cjs",
265
+ "tests/verify.test.cjs",
266
+ "tests/windsurf-hooks-bridge.test.cjs",
267
+ "tests/workflow-guard.test.cjs",
268
+ "tests/workflow-shell-pinning.test.cjs",
269
+ "tests/workstream-inventory.test.cjs",
270
+ "tests/workstream-scoped-paths.test.cjs",
271
+ "tests/workstream.test.cjs",
272
+ "tests/worktree-cleanup.test.cjs",
273
+ "tests/worktree-safety.test.cjs",
274
+ "tests/worktree.test.cjs",
275
+ ],
276
+ };
@@ -0,0 +1,32 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * Suite classification by filename suffix (#4591 packaging fix — extracted
5
+ * from scripts/run-tests.cjs so a SHIPPED script, e.g.
6
+ * scripts/gen-platform-conformance-tier.cjs, can depend on it: run-tests.cjs
7
+ * itself does not ship (it is a repo-development-only tool), so a shipped
8
+ * file requiring it directly is MODULE_NOT_FOUND in a published install
9
+ * (tests/packaging-shipped-scripts-require-only-shipped.test.cjs, #2858).
10
+ * run-tests.cjs re-exports suiteOf from here unchanged for full backward
11
+ * compatibility — this is a pure relocation, not a behavior change.
12
+ *
13
+ * A file with no suite suffix (plain `foo.test.cjs`) belongs to the `unit`
14
+ * suite and returns `null` here; a suite-tagged file (`foo.install.test.cjs`)
15
+ * returns its marker string.
16
+ */
17
+
18
+ const { basename } = require('node:path');
19
+
20
+ const MARKED_SUITES = ['integration', 'install', 'security', 'slow', 'qa'];
21
+
22
+ function suiteOf(filename) {
23
+ const name = basename(filename);
24
+ if (!name.endsWith('.test.cjs')) return null;
25
+ const base = name.slice(0, -'.test.cjs'.length);
26
+ const lastDot = base.lastIndexOf('.');
27
+ if (lastDot === -1) return null;
28
+ const marker = base.slice(lastDot + 1);
29
+ return MARKED_SUITES.includes(marker) ? marker : null;
30
+ }
31
+
32
+ module.exports = { MARKED_SUITES, suiteOf };