@t275005746/gse 0.1.0 → 0.1.2

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 (228) hide show
  1. package/.github/ISSUE_TEMPLATE/bug_report.yml +42 -42
  2. package/.github/ISSUE_TEMPLATE/change_request.yml +50 -50
  3. package/.github/ISSUE_TEMPLATE/config.yml +5 -5
  4. package/.github/PULL_REQUEST_TEMPLATE.md +38 -38
  5. package/.github/workflows/validate-gse.yml +33 -33
  6. package/.gse/README.md +18 -18
  7. package/.gse/gse-development-protocol.md +50 -50
  8. package/.gse/project-profile.md +29 -29
  9. package/.gse/quality-gates.md +25 -25
  10. package/.gse/releases/public-registry-publication-npm.md +49 -0
  11. package/.gse/releases/public-release-owner-required.md +65 -65
  12. package/.gse/releases/public-security-contact-owner-required.md +45 -45
  13. package/.gse/state.json +147 -27
  14. package/CHANGELOG.md +31 -15
  15. package/CONTRIBUTING.md +64 -64
  16. package/LICENSE +21 -21
  17. package/README.md +14 -7
  18. package/README.zh-CN.md +14 -7
  19. package/SECURITY.md +41 -41
  20. package/SKILL.md +32 -12
  21. package/SUPPORT.md +38 -38
  22. package/assets/marketplace/README.md +7 -7
  23. package/assets/marketplace/gse-listing.json +75 -75
  24. package/assets/templates/acceptance-execution-packet.md +73 -73
  25. package/assets/templates/adr.md +14 -14
  26. package/assets/templates/change-brief.md +16 -16
  27. package/assets/templates/design.md +18 -18
  28. package/assets/templates/dispatch-packet.md +100 -92
  29. package/assets/templates/evidence.md +15 -9
  30. package/assets/templates/execution-quality-pack.md +65 -65
  31. package/assets/templates/goal-map.md +21 -21
  32. package/assets/templates/host-adapter.md +48 -48
  33. package/assets/templates/host-ui-invocation-record.md +42 -42
  34. package/assets/templates/incident-review.md +60 -60
  35. package/assets/templates/public-channel-publication-record.md +49 -49
  36. package/assets/templates/public-ci-run-record.md +53 -53
  37. package/assets/templates/public-release-record.md +65 -65
  38. package/assets/templates/public-repository-settings-record.md +59 -59
  39. package/assets/templates/public-security-contact-record.md +45 -45
  40. package/assets/templates/release-trust-record.md +32 -32
  41. package/assets/templates/review.md +18 -18
  42. package/assets/templates/role-fallback-packet.md +49 -0
  43. package/assets/templates/spec.md +16 -16
  44. package/assets/templates/target-adoption-evidence.md +29 -29
  45. package/assets/templates/tasks.md +17 -17
  46. package/assets/templates/update-release-acceptance-record.md +58 -58
  47. package/examples/README.md +22 -22
  48. package/examples/agent-runtime-host/.claude/gse-adapter.md +6 -6
  49. package/examples/agent-runtime-host/.codex/gse-adapter.md +7 -7
  50. package/examples/agent-runtime-host/.gse/goal-map.md +7 -7
  51. package/examples/agent-runtime-host/.gse/project-profile.md +27 -27
  52. package/examples/agent-runtime-host/.gse/tooling.md +5 -5
  53. package/examples/agent-runtime-host/.mcp.json +9 -9
  54. package/examples/agent-runtime-host/AGENTS.md +5 -5
  55. package/examples/agent-runtime-host/README.md +10 -10
  56. package/examples/agent-runtime-host/docs/model-routing.md +5 -5
  57. package/examples/cli-tool/.gse/project-profile.md +21 -21
  58. package/examples/cli-tool/AGENTS.md +5 -5
  59. package/examples/cli-tool/README.md +12 -12
  60. package/examples/cli-tool/package.json +21 -21
  61. package/examples/small-app/.env.example +2 -2
  62. package/examples/small-app/.github/workflows/ci.yml +8 -8
  63. package/examples/small-app/AGENTS.md +5 -5
  64. package/examples/small-app/README.md +12 -12
  65. package/examples/small-app/package.json +26 -26
  66. package/examples/small-app/playwright.config.ts +4 -4
  67. package/package.json +52 -44
  68. package/references/adoption-recipes.md +171 -171
  69. package/references/agent-roles.md +42 -21
  70. package/references/architecture-health.md +101 -101
  71. package/references/benchmark-audit.md +73 -73
  72. package/references/commands.md +74 -45
  73. package/references/community-channels.md +46 -46
  74. package/references/compatibility.md +70 -70
  75. package/references/design-basis.md +38 -38
  76. package/references/domain-model.md +129 -129
  77. package/references/domain-quality-gates.md +75 -75
  78. package/references/drift-audit.md +81 -80
  79. package/references/evidence-taxonomy.md +145 -108
  80. package/references/file-ownership.md +97 -93
  81. package/references/final-form-roadmap.md +201 -0
  82. package/references/final-readiness.md +84 -84
  83. package/references/forward-test.md +133 -133
  84. package/references/goal-map.md +36 -36
  85. package/references/host-adapters.md +129 -101
  86. package/references/learning-system.md +42 -26
  87. package/references/maintenance-cadence.md +51 -0
  88. package/references/marketplace-discovery.md +46 -46
  89. package/references/model-routing.md +103 -103
  90. package/references/open-source-defaults.md +39 -39
  91. package/references/operating-model.md +52 -52
  92. package/references/packaging.md +277 -277
  93. package/references/project-agent-workspace.md +89 -89
  94. package/references/project-bootstrap.md +122 -122
  95. package/references/project-guards.md +52 -0
  96. package/references/project-profile.md +57 -57
  97. package/references/public-release.md +174 -174
  98. package/references/quality-gates.md +96 -89
  99. package/references/recovery.md +176 -176
  100. package/references/release-trust.md +43 -43
  101. package/references/release.md +126 -126
  102. package/references/review.md +141 -141
  103. package/references/role-dispatch-fallback.md +54 -0
  104. package/references/router.md +90 -90
  105. package/references/spec-workflow.md +66 -66
  106. package/references/task-levels.md +81 -81
  107. package/references/tool-adapters.md +80 -70
  108. package/scripts/audit-acceptance-execution-packet.mjs +133 -133
  109. package/scripts/audit-adoption-recipes.mjs +99 -99
  110. package/scripts/audit-change-lifecycle.mjs +77 -77
  111. package/scripts/audit-change-system.mjs +134 -134
  112. package/scripts/audit-ci-readiness.mjs +107 -107
  113. package/scripts/audit-close-gate-hardening.mjs +188 -0
  114. package/scripts/audit-close-gate.mjs +448 -262
  115. package/scripts/audit-command-adapters.mjs +91 -91
  116. package/scripts/audit-command-execution.mjs +212 -199
  117. package/scripts/audit-commands.mjs +7 -5
  118. package/scripts/audit-compatibility.mjs +149 -149
  119. package/scripts/audit-completion-plan-drill.mjs +230 -0
  120. package/scripts/audit-completion-readiness.mjs +290 -287
  121. package/scripts/audit-continue-preflight.mjs +234 -0
  122. package/scripts/audit-distribution.mjs +251 -251
  123. package/scripts/audit-domain-quality-gates.mjs +108 -108
  124. package/scripts/audit-evidence-levels.mjs +217 -0
  125. package/scripts/audit-evidence-placeholders.mjs +126 -126
  126. package/scripts/audit-evidence-review-queue.mjs +206 -0
  127. package/scripts/audit-final-acceptance-packet.mjs +9 -9
  128. package/scripts/audit-final-form-progress-report.mjs +19 -18
  129. package/scripts/audit-final-form-roadmap.mjs +157 -0
  130. package/scripts/audit-final-form-stale-copy.mjs +2 -2
  131. package/scripts/audit-final-readiness-promotion.mjs +255 -255
  132. package/scripts/audit-final-readiness.mjs +226 -226
  133. package/scripts/audit-fixtures.mjs +154 -154
  134. package/scripts/audit-fresh-session-readiness.mjs +177 -177
  135. package/scripts/audit-host-capabilities.mjs +237 -0
  136. package/scripts/audit-host-runtime-evidence-handoff.mjs +159 -159
  137. package/scripts/audit-host-runtime-invocation-drill.mjs +240 -240
  138. package/scripts/audit-host-runtime-invocations.mjs +254 -254
  139. package/scripts/audit-host-ui-invocation.mjs +132 -132
  140. package/scripts/audit-installed-sync.mjs +203 -0
  141. package/scripts/audit-learning-drift.mjs +292 -0
  142. package/scripts/audit-learning-promotion.mjs +351 -0
  143. package/scripts/audit-learning-system.mjs +24 -14
  144. package/scripts/audit-local-final-form-completion.mjs +11 -10
  145. package/scripts/audit-maintenance-cadence.mjs +139 -0
  146. package/scripts/audit-maintenance-snapshot.mjs +181 -0
  147. package/scripts/audit-marketplace-discovery.mjs +122 -122
  148. package/scripts/audit-npm-package-metadata.mjs +160 -154
  149. package/scripts/audit-npm-publish-dry-run.mjs +194 -166
  150. package/scripts/audit-npm-tarball-install.mjs +195 -189
  151. package/scripts/audit-open-source-defaults.mjs +92 -92
  152. package/scripts/audit-open-source-readiness.mjs +97 -97
  153. package/scripts/audit-owner-external-gate-kit.mjs +12 -11
  154. package/scripts/audit-project-guards.mjs +189 -0
  155. package/scripts/audit-project.mjs +144 -141
  156. package/scripts/audit-public-acceptance-command-dry-run-drill.mjs +203 -203
  157. package/scripts/audit-public-acceptance-handoff.mjs +10 -10
  158. package/scripts/audit-public-acceptance-readiness.mjs +222 -222
  159. package/scripts/audit-public-channel-publication.mjs +248 -248
  160. package/scripts/audit-public-ci-run.mjs +184 -184
  161. package/scripts/audit-public-collaboration-templates.mjs +98 -98
  162. package/scripts/audit-public-external-gate-probe.mjs +206 -206
  163. package/scripts/audit-public-release-checklist.mjs +17 -15
  164. package/scripts/audit-public-release-decision.mjs +201 -201
  165. package/scripts/audit-public-release-metadata.mjs +176 -176
  166. package/scripts/audit-public-repository-settings.mjs +237 -237
  167. package/scripts/audit-public-security-contact.mjs +171 -171
  168. package/scripts/audit-readme-docs.mjs +6 -4
  169. package/scripts/audit-recovery-readiness.mjs +98 -98
  170. package/scripts/audit-release-bundle.mjs +13 -11
  171. package/scripts/audit-release-owner-action-plan-drill.mjs +5 -4
  172. package/scripts/audit-release-owner-action-plan.mjs +10 -10
  173. package/scripts/audit-release-readiness.mjs +106 -106
  174. package/scripts/audit-release-status-manifest.mjs +4 -4
  175. package/scripts/audit-release-trust.mjs +62 -62
  176. package/scripts/audit-remote-distribution.mjs +266 -266
  177. package/scripts/audit-roadmap-consistency.mjs +234 -230
  178. package/scripts/audit-role-dispatch-fallback.mjs +212 -0
  179. package/scripts/audit-session-sync.mjs +127 -0
  180. package/scripts/audit-signing.mjs +147 -147
  181. package/scripts/audit-state-freshness.mjs +20 -14
  182. package/scripts/audit-state-repair.mjs +360 -0
  183. package/scripts/audit-target-adoption-evidence.mjs +117 -117
  184. package/scripts/audit-target-hardening-drills.mjs +267 -0
  185. package/scripts/audit-target-project.mjs +507 -507
  186. package/scripts/audit-tool-fallback-policy.mjs +180 -0
  187. package/scripts/audit-ui-browser-evidence-policy.mjs +191 -0
  188. package/scripts/audit-update-release-acceptance.mjs +136 -136
  189. package/scripts/audit-v1-target-validation.mjs +269 -269
  190. package/scripts/audit-validation-profiles.mjs +125 -123
  191. package/scripts/backfill-evidence-levels.mjs +98 -0
  192. package/scripts/check-encoding.mjs +72 -0
  193. package/scripts/close-change.mjs +116 -116
  194. package/scripts/discover-project-profile.mjs +307 -307
  195. package/scripts/generate-command-adapter.mjs +231 -231
  196. package/scripts/generate-continue-packet.mjs +1214 -0
  197. package/scripts/generate-final-acceptance-packet.mjs +188 -173
  198. package/scripts/generate-final-form-progress-report.mjs +191 -189
  199. package/scripts/generate-host-runtime-evidence-handoff.mjs +198 -191
  200. package/scripts/generate-maintenance-snapshot.mjs +216 -0
  201. package/scripts/generate-owner-external-gate-kit.mjs +295 -295
  202. package/scripts/generate-public-acceptance-handoff.mjs +168 -156
  203. package/scripts/generate-public-release-checklist.mjs +207 -207
  204. package/scripts/generate-release-bundle.mjs +505 -505
  205. package/scripts/generate-release-owner-action-plan.mjs +172 -171
  206. package/scripts/generate-release-status-manifest.mjs +199 -198
  207. package/scripts/generate-session-prompt.mjs +188 -188
  208. package/scripts/gse.mjs +67 -67
  209. package/scripts/init-change.mjs +265 -265
  210. package/scripts/init-project.mjs +793 -712
  211. package/scripts/install-gse.mjs +234 -234
  212. package/scripts/lib/evidence-placeholders.mjs +28 -28
  213. package/scripts/package-gse.mjs +174 -174
  214. package/scripts/probe-public-external-gates.mjs +167 -167
  215. package/scripts/record-host-invocation.mjs +151 -151
  216. package/scripts/record-learning.mjs +37 -8
  217. package/scripts/record-public-channel-publication.mjs +178 -178
  218. package/scripts/record-public-ci-run.mjs +180 -180
  219. package/scripts/record-public-release.mjs +175 -175
  220. package/scripts/record-public-repository-settings.mjs +209 -209
  221. package/scripts/record-public-security-contact.mjs +157 -157
  222. package/scripts/record-session-sync.mjs +87 -0
  223. package/scripts/run-gse-command.mjs +79 -47
  224. package/scripts/run-validation-profile.mjs +24 -5
  225. package/scripts/sign-gse-package.mjs +83 -83
  226. package/scripts/update-project-state.mjs +223 -223
  227. package/scripts/validate-gse.mjs +216 -0
  228. package/scripts/verify-gse-package.mjs +85 -85
@@ -1,292 +1,295 @@
1
- #!/usr/bin/env node
2
- import fs from 'node:fs'
3
- import path from 'node:path'
4
-
5
- const args = process.argv.slice(2)
6
-
7
- function readArg(name, fallback = null) {
8
- const index = args.indexOf(name)
9
- if (index === -1) return fallback
10
- return args[index + 1] ?? fallback
11
- }
12
-
13
- const root = path.resolve(readArg('--root', path.join(import.meta.dirname, '..')))
14
- const jsonOnly = args.includes('--json')
15
-
16
- function read(relativePath) {
17
- const fullPath = path.join(root, relativePath)
18
- return fs.existsSync(fullPath) ? fs.readFileSync(fullPath, 'utf8') : ''
19
- }
20
-
21
- function exists(relativePath) {
22
- return fs.existsSync(path.join(root, relativePath))
23
- }
24
-
25
- function check(id, label, ok, evidence, risk = '') {
26
- return { id, label, status: ok ? 'passed' : 'failed', evidence, risk }
27
- }
28
-
29
- const masterPlan = read('.gse/gse-design-master-plan.md')
30
- const goalMap = read('.gse/goal-map.md')
31
- const currentSlice = read('.gse/current-slice.md')
32
- const evidence = read('.gse/evidence/2026-07-05.md')
33
- const validate = read('scripts/validate-gse.mjs')
34
- const ownerAcceptanceRecorded =
35
- evidence.includes('Owner-approved AION project-local GSE adoption acceptance') &&
36
- evidence.includes('Evidence status: accepted') &&
37
- evidence.includes('Accepted by: owner-approved project write policy')
38
-
39
- const localCapabilityAudits = [
40
- 'audit-gse.mjs',
41
- 'audit-project.mjs',
42
- 'audit-fixtures.mjs',
43
- 'audit-adoption.mjs',
44
- 'audit-host-adapters.mjs',
45
- 'audit-compatibility.mjs',
46
- 'audit-fresh-session-readiness.mjs',
47
- 'audit-release-readiness.mjs',
48
- 'audit-npm-package-metadata.mjs',
49
- 'audit-update-release-acceptance.mjs',
50
- 'audit-target-adoption-evidence.mjs',
51
- 'audit-target-project.mjs',
52
- 'audit-acceptance-execution-packet.mjs',
53
- 'audit-roadmap-consistency.mjs',
54
- 'audit-recovery-readiness.mjs',
55
- 'audit-domain-quality-gates.mjs',
56
- 'audit-adoption-recipes.mjs',
57
- 'audit-commands.mjs',
58
- 'audit-readme-docs.mjs',
59
- 'generate-session-prompt.mjs',
60
- 'run-gse-command.mjs',
61
- 'audit-command-execution.mjs',
62
- 'audit-close-gate.mjs',
63
- 'update-project-state.mjs',
64
- 'audit-v1-target-validation.mjs',
65
- 'audit-command-adapters.mjs',
66
- 'audit-change-lifecycle.mjs',
67
- 'audit-remote-distribution.mjs',
68
- 'audit-signing.mjs',
69
- 'audit-release-trust.mjs',
70
- 'audit-open-source-defaults.mjs',
71
- 'audit-public-release-metadata.mjs',
72
- 'record-public-release.mjs',
73
- 'audit-public-release-decision.mjs',
74
- 'audit-evidence-placeholders.mjs',
75
- 'record-public-ci-run.mjs',
76
- 'audit-public-ci-run.mjs',
77
- 'audit-release-bundle.mjs',
78
- 'generate-release-bundle.mjs',
79
- 'audit-open-source-readiness.mjs',
80
- 'audit-ci-readiness.mjs',
81
- 'audit-public-collaboration-templates.mjs',
82
- 'record-public-security-contact.mjs',
83
- 'audit-public-security-contact.mjs',
84
- 'record-public-repository-settings.mjs',
85
- 'audit-public-repository-settings.mjs',
86
- 'record-public-channel-publication.mjs',
87
- 'audit-public-channel-publication.mjs',
88
- 'audit-marketplace-discovery.mjs',
89
- 'audit-validation-profiles.mjs',
90
- 'audit-host-ui-invocation.mjs',
91
- 'audit-host-runtime-invocations.mjs',
92
- 'audit-host-runtime-invocation-drill.mjs',
93
- 'audit-final-readiness.mjs',
94
- 'audit-final-readiness-promotion.mjs',
95
- 'audit-public-acceptance-readiness.mjs',
96
- 'audit-public-acceptance-command-dry-run-drill.mjs',
97
- 'audit-public-external-gate-probe.mjs',
98
- 'audit-public-acceptance-handoff.mjs',
99
- 'audit-release-status-manifest.mjs',
100
- 'audit-release-owner-action-plan.mjs',
101
- 'audit-public-release-checklist.mjs',
102
- 'audit-release-owner-action-plan-drill.mjs',
1
+ #!/usr/bin/env node
2
+ import fs from 'node:fs'
3
+ import path from 'node:path'
4
+
5
+ const args = process.argv.slice(2)
6
+
7
+ function readArg(name, fallback = null) {
8
+ const index = args.indexOf(name)
9
+ if (index === -1) return fallback
10
+ return args[index + 1] ?? fallback
11
+ }
12
+
13
+ const root = path.resolve(readArg('--root', path.join(import.meta.dirname, '..')))
14
+ const jsonOnly = args.includes('--json')
15
+
16
+ function read(relativePath) {
17
+ const fullPath = path.join(root, relativePath)
18
+ return fs.existsSync(fullPath) ? fs.readFileSync(fullPath, 'utf8') : ''
19
+ }
20
+
21
+ function exists(relativePath) {
22
+ return fs.existsSync(path.join(root, relativePath))
23
+ }
24
+
25
+ function check(id, label, ok, evidence, risk = '') {
26
+ return { id, label, status: ok ? 'passed' : 'failed', evidence, risk }
27
+ }
28
+
29
+ const masterPlan = read('.gse/gse-design-master-plan.md')
30
+ const goalMap = read('.gse/goal-map.md')
31
+ const currentSlice = read('.gse/current-slice.md')
32
+ const evidence = read('.gse/evidence/2026-07-05.md')
33
+ const validate = read('scripts/validate-gse.mjs')
34
+ const ownerAcceptanceRecorded =
35
+ evidence.includes('Owner-approved AION project-local GSE adoption acceptance') &&
36
+ evidence.includes('Evidence status: accepted') &&
37
+ evidence.includes('Accepted by: owner-approved project write policy')
38
+
39
+ const localCapabilityAudits = [
40
+ 'audit-gse.mjs',
41
+ 'audit-project.mjs',
42
+ 'audit-fixtures.mjs',
43
+ 'audit-adoption.mjs',
44
+ 'audit-host-adapters.mjs',
45
+ 'audit-compatibility.mjs',
46
+ 'audit-fresh-session-readiness.mjs',
47
+ 'audit-release-readiness.mjs',
48
+ 'audit-npm-package-metadata.mjs',
49
+ 'audit-update-release-acceptance.mjs',
50
+ 'audit-target-adoption-evidence.mjs',
51
+ 'audit-target-project.mjs',
52
+ 'audit-acceptance-execution-packet.mjs',
53
+ 'audit-roadmap-consistency.mjs',
54
+ 'audit-recovery-readiness.mjs',
55
+ 'audit-domain-quality-gates.mjs',
56
+ 'audit-adoption-recipes.mjs',
57
+ 'audit-commands.mjs',
58
+ 'audit-readme-docs.mjs',
59
+ 'generate-session-prompt.mjs',
60
+ 'run-gse-command.mjs',
61
+ 'audit-command-execution.mjs',
62
+ 'audit-close-gate.mjs',
63
+ 'update-project-state.mjs',
64
+ 'audit-v1-target-validation.mjs',
65
+ 'audit-command-adapters.mjs',
66
+ 'audit-change-lifecycle.mjs',
67
+ 'audit-remote-distribution.mjs',
68
+ 'audit-signing.mjs',
69
+ 'audit-release-trust.mjs',
70
+ 'audit-open-source-defaults.mjs',
71
+ 'audit-public-release-metadata.mjs',
72
+ 'record-public-release.mjs',
73
+ 'audit-public-release-decision.mjs',
74
+ 'audit-evidence-placeholders.mjs',
75
+ 'record-public-ci-run.mjs',
76
+ 'audit-public-ci-run.mjs',
77
+ 'audit-release-bundle.mjs',
78
+ 'generate-release-bundle.mjs',
79
+ 'audit-open-source-readiness.mjs',
80
+ 'audit-ci-readiness.mjs',
81
+ 'audit-public-collaboration-templates.mjs',
82
+ 'record-public-security-contact.mjs',
83
+ 'audit-public-security-contact.mjs',
84
+ 'record-public-repository-settings.mjs',
85
+ 'audit-public-repository-settings.mjs',
86
+ 'record-public-channel-publication.mjs',
87
+ 'audit-public-channel-publication.mjs',
88
+ 'audit-marketplace-discovery.mjs',
89
+ 'audit-validation-profiles.mjs',
90
+ 'audit-host-ui-invocation.mjs',
91
+ 'audit-host-runtime-invocations.mjs',
92
+ 'audit-host-runtime-invocation-drill.mjs',
93
+ 'audit-final-readiness.mjs',
94
+ 'audit-final-readiness-promotion.mjs',
95
+ 'audit-public-acceptance-readiness.mjs',
96
+ 'audit-public-acceptance-command-dry-run-drill.mjs',
97
+ 'audit-public-external-gate-probe.mjs',
98
+ 'audit-public-acceptance-handoff.mjs',
99
+ 'audit-release-status-manifest.mjs',
100
+ 'audit-release-owner-action-plan.mjs',
101
+ 'audit-public-release-checklist.mjs',
102
+ 'audit-release-owner-action-plan-drill.mjs',
103
103
  'audit-final-form-progress-report.mjs',
104
+ 'audit-final-form-roadmap.mjs',
104
105
  'audit-local-final-form-completion.mjs',
105
- 'audit-final-form-stale-copy.mjs',
106
- 'audit-npm-tarball-install.mjs',
107
- 'audit-npm-publish-dry-run.mjs',
108
- 'audit-host-runtime-evidence-handoff.mjs',
109
- 'audit-owner-external-gate-kit.mjs',
110
- 'generate-final-acceptance-packet.mjs',
111
- 'audit-final-acceptance-packet.mjs',
112
- ]
113
-
114
- const requiredArtifacts = [
115
- 'SKILL.md',
116
- '.gse/gse-design-master-plan.md',
117
- '.gse/goal-map.md',
118
- '.gse/current-slice.md',
119
- 'assets/templates/acceptance-execution-packet.md',
120
- 'assets/templates/target-adoption-evidence.md',
121
- 'assets/templates/update-release-acceptance-record.md',
122
- 'references/evidence-taxonomy.md',
123
- 'references/forward-test.md',
124
- 'references/adoption-recipes.md',
125
- 'references/commands.md',
126
- 'README.md',
127
- 'README.zh-CN.md',
128
- 'CONTRIBUTING.md',
129
- 'SECURITY.md',
130
- 'SUPPORT.md',
131
- '.github/workflows/validate-gse.yml',
132
- '.github/PULL_REQUEST_TEMPLATE.md',
133
- '.github/ISSUE_TEMPLATE/bug_report.yml',
134
- '.github/ISSUE_TEMPLATE/change_request.yml',
135
- 'assets/templates/public-channel-publication-record.md',
136
- 'assets/templates/public-ci-run-record.md',
137
- 'assets/templates/public-security-contact-record.md',
138
- 'assets/templates/public-repository-settings-record.md',
139
- '.gse/state.json',
140
- '.gse/evidence/index.jsonl',
141
- 'scripts/generate-session-prompt.mjs',
142
- 'scripts/run-gse-command.mjs',
143
- 'scripts/audit-command-execution.mjs',
144
- 'scripts/audit-close-gate.mjs',
145
- 'scripts/update-project-state.mjs',
146
- 'scripts/audit-v1-target-validation.mjs',
147
- 'scripts/package-gse.mjs',
148
- 'scripts/install-gse.mjs',
149
- 'scripts/audit-npm-package-metadata.mjs',
150
- 'scripts/generate-command-adapter.mjs',
151
- 'scripts/audit-command-adapters.mjs',
152
- 'scripts/close-change.mjs',
153
- 'scripts/audit-change-lifecycle.mjs',
154
- 'scripts/audit-remote-distribution.mjs',
155
- 'scripts/sign-gse-package.mjs',
156
- 'scripts/verify-gse-package.mjs',
157
- 'scripts/audit-signing.mjs',
158
- 'references/release-trust.md',
159
- 'assets/templates/release-trust-record.md',
160
- 'scripts/audit-release-trust.mjs',
161
- 'scripts/audit-open-source-defaults.mjs',
162
- 'references/public-release.md',
163
- 'assets/templates/public-release-record.md',
164
- 'scripts/audit-public-release-metadata.mjs',
165
- 'scripts/record-public-release.mjs',
166
- 'scripts/audit-public-release-decision.mjs',
167
- 'scripts/audit-evidence-placeholders.mjs',
168
- 'scripts/record-public-ci-run.mjs',
169
- 'scripts/audit-public-ci-run.mjs',
170
- 'scripts/generate-release-bundle.mjs',
171
- 'scripts/audit-release-bundle.mjs',
172
- 'scripts/audit-open-source-readiness.mjs',
173
- 'scripts/audit-ci-readiness.mjs',
174
- 'scripts/audit-public-collaboration-templates.mjs',
175
- 'scripts/record-public-security-contact.mjs',
176
- 'scripts/audit-public-security-contact.mjs',
177
- 'scripts/record-public-repository-settings.mjs',
178
- 'scripts/audit-public-repository-settings.mjs',
179
- 'scripts/record-public-channel-publication.mjs',
180
- 'scripts/audit-public-channel-publication.mjs',
181
- '.gse/releases/public-release-owner-required.md',
182
- '.gse/releases/public-security-contact-owner-required.md',
183
- 'references/marketplace-discovery.md',
184
- 'assets/marketplace/gse-listing.json',
185
- 'scripts/audit-marketplace-discovery.mjs',
186
- 'scripts/audit-validation-profiles.mjs',
187
- 'scripts/run-validation-profile.mjs',
188
- 'assets/templates/host-ui-invocation-record.md',
189
- 'scripts/audit-host-ui-invocation.mjs',
190
- 'scripts/record-host-invocation.mjs',
191
- 'scripts/audit-host-runtime-invocations.mjs',
192
- 'scripts/audit-host-runtime-invocation-drill.mjs',
193
- 'references/final-readiness.md',
194
- 'scripts/audit-final-readiness.mjs',
195
- 'scripts/audit-final-readiness-promotion.mjs',
196
- 'scripts/audit-public-acceptance-readiness.mjs',
197
- 'scripts/audit-public-acceptance-command-dry-run-drill.mjs',
198
- 'scripts/probe-public-external-gates.mjs',
199
- 'scripts/audit-public-external-gate-probe.mjs',
200
- 'scripts/generate-public-acceptance-handoff.mjs',
201
- 'scripts/audit-public-acceptance-handoff.mjs',
202
- 'scripts/generate-release-status-manifest.mjs',
203
- 'scripts/audit-release-status-manifest.mjs',
204
- 'scripts/generate-release-owner-action-plan.mjs',
205
- 'scripts/audit-release-owner-action-plan.mjs',
206
- 'scripts/generate-public-release-checklist.mjs',
207
- 'scripts/audit-public-release-checklist.mjs',
208
- 'scripts/audit-release-owner-action-plan-drill.mjs',
106
+ 'audit-final-form-stale-copy.mjs',
107
+ 'audit-npm-tarball-install.mjs',
108
+ 'audit-npm-publish-dry-run.mjs',
109
+ 'audit-host-runtime-evidence-handoff.mjs',
110
+ 'audit-owner-external-gate-kit.mjs',
111
+ 'generate-final-acceptance-packet.mjs',
112
+ 'audit-final-acceptance-packet.mjs',
113
+ ]
114
+
115
+ const requiredArtifacts = [
116
+ 'SKILL.md',
117
+ '.gse/gse-design-master-plan.md',
118
+ '.gse/goal-map.md',
119
+ '.gse/current-slice.md',
120
+ 'assets/templates/acceptance-execution-packet.md',
121
+ 'assets/templates/target-adoption-evidence.md',
122
+ 'assets/templates/update-release-acceptance-record.md',
123
+ 'references/evidence-taxonomy.md',
124
+ 'references/forward-test.md',
125
+ 'references/adoption-recipes.md',
126
+ 'references/commands.md',
127
+ 'README.md',
128
+ 'README.zh-CN.md',
129
+ 'CONTRIBUTING.md',
130
+ 'SECURITY.md',
131
+ 'SUPPORT.md',
132
+ '.github/workflows/validate-gse.yml',
133
+ '.github/PULL_REQUEST_TEMPLATE.md',
134
+ '.github/ISSUE_TEMPLATE/bug_report.yml',
135
+ '.github/ISSUE_TEMPLATE/change_request.yml',
136
+ 'assets/templates/public-channel-publication-record.md',
137
+ 'assets/templates/public-ci-run-record.md',
138
+ 'assets/templates/public-security-contact-record.md',
139
+ 'assets/templates/public-repository-settings-record.md',
140
+ '.gse/state.json',
141
+ '.gse/evidence/index.jsonl',
142
+ 'scripts/generate-session-prompt.mjs',
143
+ 'scripts/run-gse-command.mjs',
144
+ 'scripts/audit-command-execution.mjs',
145
+ 'scripts/audit-close-gate.mjs',
146
+ 'scripts/update-project-state.mjs',
147
+ 'scripts/audit-v1-target-validation.mjs',
148
+ 'scripts/package-gse.mjs',
149
+ 'scripts/install-gse.mjs',
150
+ 'scripts/audit-npm-package-metadata.mjs',
151
+ 'scripts/generate-command-adapter.mjs',
152
+ 'scripts/audit-command-adapters.mjs',
153
+ 'scripts/close-change.mjs',
154
+ 'scripts/audit-change-lifecycle.mjs',
155
+ 'scripts/audit-remote-distribution.mjs',
156
+ 'scripts/sign-gse-package.mjs',
157
+ 'scripts/verify-gse-package.mjs',
158
+ 'scripts/audit-signing.mjs',
159
+ 'references/release-trust.md',
160
+ 'assets/templates/release-trust-record.md',
161
+ 'scripts/audit-release-trust.mjs',
162
+ 'scripts/audit-open-source-defaults.mjs',
163
+ 'references/public-release.md',
164
+ 'assets/templates/public-release-record.md',
165
+ 'scripts/audit-public-release-metadata.mjs',
166
+ 'scripts/record-public-release.mjs',
167
+ 'scripts/audit-public-release-decision.mjs',
168
+ 'scripts/audit-evidence-placeholders.mjs',
169
+ 'scripts/record-public-ci-run.mjs',
170
+ 'scripts/audit-public-ci-run.mjs',
171
+ 'scripts/generate-release-bundle.mjs',
172
+ 'scripts/audit-release-bundle.mjs',
173
+ 'scripts/audit-open-source-readiness.mjs',
174
+ 'scripts/audit-ci-readiness.mjs',
175
+ 'scripts/audit-public-collaboration-templates.mjs',
176
+ 'scripts/record-public-security-contact.mjs',
177
+ 'scripts/audit-public-security-contact.mjs',
178
+ 'scripts/record-public-repository-settings.mjs',
179
+ 'scripts/audit-public-repository-settings.mjs',
180
+ 'scripts/record-public-channel-publication.mjs',
181
+ 'scripts/audit-public-channel-publication.mjs',
182
+ '.gse/releases/public-release-owner-required.md',
183
+ '.gse/releases/public-security-contact-owner-required.md',
184
+ 'references/marketplace-discovery.md',
185
+ 'assets/marketplace/gse-listing.json',
186
+ 'scripts/audit-marketplace-discovery.mjs',
187
+ 'scripts/audit-validation-profiles.mjs',
188
+ 'scripts/run-validation-profile.mjs',
189
+ 'assets/templates/host-ui-invocation-record.md',
190
+ 'scripts/audit-host-ui-invocation.mjs',
191
+ 'scripts/record-host-invocation.mjs',
192
+ 'scripts/audit-host-runtime-invocations.mjs',
193
+ 'scripts/audit-host-runtime-invocation-drill.mjs',
194
+ 'references/final-readiness.md',
195
+ 'scripts/audit-final-readiness.mjs',
196
+ 'scripts/audit-final-readiness-promotion.mjs',
197
+ 'scripts/audit-public-acceptance-readiness.mjs',
198
+ 'scripts/audit-public-acceptance-command-dry-run-drill.mjs',
199
+ 'scripts/probe-public-external-gates.mjs',
200
+ 'scripts/audit-public-external-gate-probe.mjs',
201
+ 'scripts/generate-public-acceptance-handoff.mjs',
202
+ 'scripts/audit-public-acceptance-handoff.mjs',
203
+ 'scripts/generate-release-status-manifest.mjs',
204
+ 'scripts/audit-release-status-manifest.mjs',
205
+ 'scripts/generate-release-owner-action-plan.mjs',
206
+ 'scripts/audit-release-owner-action-plan.mjs',
207
+ 'scripts/generate-public-release-checklist.mjs',
208
+ 'scripts/audit-public-release-checklist.mjs',
209
+ 'scripts/audit-release-owner-action-plan-drill.mjs',
209
210
  'scripts/generate-final-form-progress-report.mjs',
210
211
  'scripts/audit-final-form-progress-report.mjs',
212
+ 'references/final-form-roadmap.md',
213
+ 'scripts/audit-final-form-roadmap.mjs',
211
214
  'scripts/audit-local-final-form-completion.mjs',
212
- 'scripts/audit-final-form-stale-copy.mjs',
213
- 'scripts/audit-npm-tarball-install.mjs',
214
- 'scripts/audit-npm-publish-dry-run.mjs',
215
- 'scripts/generate-host-runtime-evidence-handoff.mjs',
216
- 'scripts/audit-host-runtime-evidence-handoff.mjs',
217
- 'scripts/generate-owner-external-gate-kit.mjs',
218
- 'scripts/audit-owner-external-gate-kit.mjs',
219
- 'scripts/generate-final-acceptance-packet.mjs',
220
- 'scripts/audit-final-acceptance-packet.mjs',
221
- '.gse/acceptance/final-form-progress-report.md',
222
- '.gse/acceptance/final-form-progress-report.json',
223
- '.gse/acceptance/public-acceptance-handoff.md',
224
- '.gse/acceptance/release-status-manifest.json',
225
- '.gse/acceptance/release-owner-action-plan.md',
226
- '.gse/acceptance/public-release-checklist.md',
227
- '.gse/acceptance/owner-external-gate-kit/README.md',
228
- '.gse/acceptance/owner-external-gate-kit/kit-manifest.json',
229
- '.gse/release-bundles/gse-release-bundle-audit/installable-package/gse-package-manifest.json',
230
- '.gse/release-bundles/gse-release-bundle-audit/public-release-checklist.md',
231
- '.gse/release-bundles/gse-release-bundle-audit/provenance.json',
232
- '.gse/release-bundles/gse-release-bundle-audit/checksums.sha256',
233
- ]
234
-
235
- const checks = [
236
- check('CR01', 'completion readiness audit is wired into validator', validate.includes('audit-completion-readiness.mjs'), 'scripts/validate-gse.mjs'),
237
- check('CR02', 'all local capability audits are wired into validator', localCapabilityAudits.every((item) => validate.includes(item)), localCapabilityAudits.join(', ')),
238
- check('CR03', 'required completion artifacts exist', requiredArtifacts.every(exists), requiredArtifacts.join(', ')),
239
- check('CR04', 'master plan records verified v1 execution-state target validation and current license state', masterPlan.includes('owner-approved AION project-write acceptance is executed') && masterPlan.includes('Status: verified.') && masterPlan.includes('AION/MuseFlow v1 target validation are verified') && masterPlan.includes('MIT license decision') && !masterPlan.includes('owner license selection remains required before an accepted public release'), '.gse/gse-design-master-plan.md'),
240
- check('CR05', 'current slice preserves required GSE slice fields after acceptance', currentSlice.includes('## Outcome') && currentSlice.includes('## Scope') && currentSlice.includes('## Acceptance') && currentSlice.includes('## Evidence Plan') && currentSlice.includes('## Risk') && currentSlice.includes('## Next Action'), '.gse/current-slice.md'),
241
- check('CR06', 'goal map records v1 execution-state work as verified', goalMap.includes('GSE-008') && goalMap.includes('Productize v1.0 execution-state workflow') && goalMap.includes('verified') && goalMap.includes('audit-v1-target-validation.mjs'), '.gse/goal-map.md'),
242
- check('CR07', 'evidence log records owner-approved external acceptance', ownerAcceptanceRecorded, '.gse/evidence/2026-07-05.md'),
243
- check('CR08', 'final-form limits are explicit after current scope can be claimed', masterPlan.includes('Remaining final-form work is real public security contact approval, real public repository settings, public CI run, real public registry publication, real public marketplace approval, host-native slash-command support, and other host runtime invocation records.') && goalMap.includes('Final-form gaps'), 'control docs keep final-form limits scoped'),
244
- ]
245
-
246
- const passed = checks.filter((item) => item.status === 'passed').length
247
- const failed = checks.length - passed
248
- const report = {
249
- root,
250
- generatedAt: new Date().toISOString(),
251
- summary: { status: failed === 0 ? 'passed' : 'failed', passed, failed, total: checks.length },
252
- workflows: { completionReadiness: failed === 0 ? 'current-scope-validated' : 'failed' },
253
- completionStatus: failed === 0 ? 'complete for current verified scope: target validation, local distribution, npm package metadata, npm tarball installability, remote URL distribution with integrity, package signing/verification, portable command execution, validation profiles, release trust policy, open-source defaults, public release metadata workflow, MIT license decision, public release decision lifecycle, public evidence placeholder rejection, public CI run record mechanics, public channel publication record mechanics, public external gate live probe mechanics, release bundle generation, release status manifest, release owner action plan, release owner action plan drill, open-source repository readiness, CI workflow readiness, public collaboration templates, public security contact record mechanics, public repository settings record mechanics, marketplace discovery metadata, host runtime invocation record mechanics, host runtime invocation fixture drill, host runtime evidence handoff, final readiness matrix, final readiness accepted-record promotion, public acceptance doctor, public acceptance command dry-run drill, public acceptance handoff, final-form progress report, final acceptance packet, owner/external gate kit and canonical freshness audit, final-form stale-copy audit, Codex text-command host invocation, command-adapter generation, and real-workspace change archive lifecycle are verified; public security contact acceptance, public repository settings evidence, public CI run, public registry publication, public marketplace approval, native slash-command support, and other host runtime invocation records remain external or owner-gated work' : 'not ready: roadmap or evidence state is inconsistent',
254
- limits: [
255
- 'This audit verifies GSE scaffold readiness and v1 execution-state target validation tracking.',
256
- 'It does not certify arbitrary repositories, public registry publication, marketplace install, CI, MCP, LSP, subagent runtime, or fresh-session execution.',
257
- 'It does not certify real remote-machine network conditions, marketplace approval, native slash-command execution, other host runtime invocation, or arbitrary repositories.',
258
- ],
259
- checks,
260
- }
261
-
262
- function renderMarkdown(data) {
263
- const lines = []
264
- lines.push('# GSE Completion Readiness Audit')
265
- lines.push('')
266
- lines.push('Generated: ' + data.generatedAt)
267
- lines.push('Root: ' + data.root)
268
- lines.push('')
269
- lines.push('## Summary')
270
- lines.push('')
271
- lines.push('- Status: ' + data.summary.status)
272
- lines.push('- Checks: ' + data.summary.passed + '/' + data.summary.total)
273
- lines.push('- Completion readiness: ' + data.workflows.completionReadiness)
274
- lines.push('- Completion status: ' + data.completionStatus)
275
- lines.push('')
276
- lines.push('## Checks')
277
- lines.push('')
278
- for (const item of data.checks) {
279
- const marker = item.status === 'passed' ? '[x]' : '[ ]'
280
- lines.push('- ' + marker + ' ' + item.id + ' ' + item.label + ': ' + item.evidence)
281
- }
282
- lines.push('')
283
- lines.push('## Limits')
284
- lines.push('')
285
- for (const item of data.limits) lines.push('- ' + item)
286
- return lines.join('\n') + '\n'
287
- }
288
-
289
- if (jsonOnly) console.log(JSON.stringify(report, null, 2))
290
- else console.log(renderMarkdown(report))
291
-
292
- if (failed > 0) process.exit(1)
215
+ 'scripts/audit-final-form-stale-copy.mjs',
216
+ 'scripts/audit-npm-tarball-install.mjs',
217
+ 'scripts/audit-npm-publish-dry-run.mjs',
218
+ 'scripts/generate-host-runtime-evidence-handoff.mjs',
219
+ 'scripts/audit-host-runtime-evidence-handoff.mjs',
220
+ 'scripts/generate-owner-external-gate-kit.mjs',
221
+ 'scripts/audit-owner-external-gate-kit.mjs',
222
+ 'scripts/generate-final-acceptance-packet.mjs',
223
+ 'scripts/audit-final-acceptance-packet.mjs',
224
+ '.gse/acceptance/final-form-progress-report.md',
225
+ '.gse/acceptance/final-form-progress-report.json',
226
+ '.gse/acceptance/public-acceptance-handoff.md',
227
+ '.gse/acceptance/release-status-manifest.json',
228
+ '.gse/acceptance/release-owner-action-plan.md',
229
+ '.gse/acceptance/public-release-checklist.md',
230
+ '.gse/acceptance/owner-external-gate-kit/README.md',
231
+ '.gse/acceptance/owner-external-gate-kit/kit-manifest.json',
232
+ '.gse/release-bundles/gse-release-bundle-audit/installable-package/gse-package-manifest.json',
233
+ '.gse/release-bundles/gse-release-bundle-audit/public-release-checklist.md',
234
+ '.gse/release-bundles/gse-release-bundle-audit/provenance.json',
235
+ '.gse/release-bundles/gse-release-bundle-audit/checksums.sha256',
236
+ ]
237
+
238
+ const checks = [
239
+ check('CR01', 'completion readiness audit is wired into validator', validate.includes('audit-completion-readiness.mjs'), 'scripts/validate-gse.mjs'),
240
+ check('CR02', 'all local capability audits are wired into validator', localCapabilityAudits.every((item) => validate.includes(item)), localCapabilityAudits.join(', ')),
241
+ check('CR03', 'required completion artifacts exist', requiredArtifacts.every(exists), requiredArtifacts.join(', ')),
242
+ check('CR04', 'master plan records verified v1 execution-state target validation and current license state', masterPlan.includes('owner-approved AION project-write acceptance is executed') && masterPlan.includes('Status: verified.') && masterPlan.includes('AION/MuseFlow v1 target validation are verified') && masterPlan.includes('MIT license decision') && !masterPlan.includes('owner license selection remains required before an accepted public release'), '.gse/gse-design-master-plan.md'),
243
+ check('CR05', 'current slice preserves required GSE slice fields after acceptance', currentSlice.includes('## Outcome') && currentSlice.includes('## Scope') && currentSlice.includes('## Acceptance') && currentSlice.includes('## Evidence Plan') && currentSlice.includes('## Risk') && currentSlice.includes('## Next Action'), '.gse/current-slice.md'),
244
+ check('CR06', 'goal map records v1 execution-state work as verified', goalMap.includes('GSE-008') && goalMap.includes('Productize v1.0 execution-state workflow') && goalMap.includes('verified') && goalMap.includes('audit-v1-target-validation.mjs'), '.gse/goal-map.md'),
245
+ check('CR07', 'evidence log records owner-approved external acceptance', ownerAcceptanceRecorded, '.gse/evidence/2026-07-05.md'),
246
+ check('CR08', 'final-form limits are explicit after current scope can be claimed', masterPlan.includes('The Final Form Roadmap now lives in `references/final-form-roadmap.md`') && masterPlan.includes('live claim boundary') && (goalMap.includes('Native slash command') || goalMap.includes('host-native slash-command support')) && goalMap.includes('Final-form gaps'), 'control docs keep final-form limits scoped'),
247
+ ]
248
+
249
+ const passed = checks.filter((item) => item.status === 'passed').length
250
+ const failed = checks.length - passed
251
+ const report = {
252
+ root,
253
+ generatedAt: new Date().toISOString(),
254
+ summary: { status: failed === 0 ? 'passed' : 'failed', passed, failed, total: checks.length },
255
+ workflows: { completionReadiness: failed === 0 ? 'current-scope-validated' : 'failed' },
256
+ completionStatus: failed === 0 ? 'complete for current verified scope: target validation, local distribution, npm package metadata, npm tarball installability, remote URL distribution with integrity, package signing/verification, portable command execution, validation profiles, release trust policy, open-source defaults, public release metadata workflow, MIT license decision, public release decision lifecycle, public evidence placeholder rejection, public CI run record mechanics, public channel publication record mechanics, public external gate live probe mechanics, release bundle generation, release status manifest, release owner action plan, release owner action plan drill, open-source repository readiness, CI workflow readiness, public collaboration templates, public security contact record mechanics, public repository settings record mechanics, marketplace discovery metadata, npm public registry publication evidence, host runtime invocation record mechanics, host runtime invocation fixture drill, host runtime evidence handoff, final readiness matrix, final readiness accepted-record promotion, public acceptance doctor, public acceptance command dry-run drill, public acceptance handoff, final-form progress report, final acceptance packet, owner/external gate kit and canonical freshness audit, final-form stale-copy audit, Codex text-command host invocation, command-adapter generation, and real-workspace change archive lifecycle are verified; native slash-command support remains external-gated work' : 'not ready: roadmap or evidence state is inconsistent',
257
+ limits: [
258
+ 'This audit verifies GSE scaffold readiness and v1 execution-state target validation tracking.',
259
+ 'It does not certify arbitrary repositories, public registry publication, marketplace install, CI, MCP, LSP, subagent runtime, or fresh-session execution.',
260
+ 'It does not certify real remote-machine network conditions, marketplace approval, native slash-command execution, other host runtime invocation, or arbitrary repositories.',
261
+ ],
262
+ checks,
263
+ }
264
+
265
+ function renderMarkdown(data) {
266
+ const lines = []
267
+ lines.push('# GSE Completion Readiness Audit')
268
+ lines.push('')
269
+ lines.push('Generated: ' + data.generatedAt)
270
+ lines.push('Root: ' + data.root)
271
+ lines.push('')
272
+ lines.push('## Summary')
273
+ lines.push('')
274
+ lines.push('- Status: ' + data.summary.status)
275
+ lines.push('- Checks: ' + data.summary.passed + '/' + data.summary.total)
276
+ lines.push('- Completion readiness: ' + data.workflows.completionReadiness)
277
+ lines.push('- Completion status: ' + data.completionStatus)
278
+ lines.push('')
279
+ lines.push('## Checks')
280
+ lines.push('')
281
+ for (const item of data.checks) {
282
+ const marker = item.status === 'passed' ? '[x]' : '[ ]'
283
+ lines.push('- ' + marker + ' ' + item.id + ' ' + item.label + ': ' + item.evidence)
284
+ }
285
+ lines.push('')
286
+ lines.push('## Limits')
287
+ lines.push('')
288
+ for (const item of data.limits) lines.push('- ' + item)
289
+ return lines.join('\n') + '\n'
290
+ }
291
+
292
+ if (jsonOnly) console.log(JSON.stringify(report, null, 2))
293
+ else console.log(renderMarkdown(report))
294
+
295
+ if (failed > 0) process.exit(1)