sneakoscope 7.1.0 → 7.3.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 (534) hide show
  1. package/README.md +9 -1
  2. package/config/architecture-budgets.v1.json +1 -8
  3. package/crates/sks-core/Cargo.lock +225 -1
  4. package/crates/sks-core/Cargo.toml +8 -1
  5. package/crates/sks-core/src/main.rs +7 -1
  6. package/crates/sks-core/src/search/files.rs +114 -0
  7. package/crates/sks-core/src/search/mod.rs +274 -0
  8. package/crates/sks-core/src/search/text.rs +175 -0
  9. package/dist/bin/sks-dispatch.js +4 -3
  10. package/dist/cli/command-manifest-lite.js +177 -6
  11. package/dist/cli/command-registry.js +42 -8
  12. package/dist/cli/help.js +30 -0
  13. package/dist/cli/install-helpers-codex-lb-config.js +9 -6
  14. package/dist/cli/install-helpers-codex-lb-selftest-chain.js +1 -1
  15. package/dist/cli/install-helpers-install-support.js +1 -1
  16. package/dist/cli/install-helpers.js +19 -9
  17. package/dist/cli/router.js +16 -3
  18. package/dist/commands/codex-app.js +40 -5
  19. package/dist/commands/doctor-profile.js +78 -0
  20. package/dist/commands/doctor.js +29 -69
  21. package/dist/commands/search.js +4 -0
  22. package/dist/config/skills-manifest.json +53 -60
  23. package/dist/core/agent-bridge/agent-manifest.js +22 -26
  24. package/dist/core/agent-bridge/host-capability-policy.js +109 -8
  25. package/dist/core/agent-bridge/host-capability-runtime.js +178 -50
  26. package/dist/core/agent-guidance/directive-registry.js +123 -0
  27. package/dist/core/agents/agent-effort-policy.js +45 -6
  28. package/dist/core/agents/agent-worker-pipeline.js +1 -3
  29. package/dist/core/agents/native-worker-backend-router.js +43 -19
  30. package/dist/core/auto-review.js +1 -3
  31. package/dist/core/code-structure.js +282 -19
  32. package/dist/core/codex/codex-config-guard.js +14 -4
  33. package/dist/core/codex/codex-config-toml.js +1 -3
  34. package/dist/core/codex-app/codex-agent-role-sync.js +1 -3
  35. package/dist/core/codex-app/codex-app-fast-ui-repair.js +14 -1
  36. package/dist/core/codex-app/codex-app-types.js +2 -3
  37. package/dist/core/codex-app/codex-desktop-routing-ownership.js +91 -0
  38. package/dist/core/codex-app/codex-hook-approval-probe.js +1 -3
  39. package/dist/core/codex-app/codex-hook-lifecycle.js +1 -3
  40. package/dist/core/codex-app/codex-init-deep.js +22 -10
  41. package/dist/core/codex-app/codex-model-catalog.js +384 -0
  42. package/dist/core/codex-app/codex-models-cache.js +160 -0
  43. package/dist/core/codex-app/desktop-routing-snapshot.js +233 -0
  44. package/dist/core/codex-app/glm-profile-installer.js +1 -3
  45. package/dist/core/codex-app/mcp-manager.js +1 -3
  46. package/dist/core/codex-app/menubar/constants.js +3 -0
  47. package/dist/core/codex-app/menubar/installer.js +11 -1
  48. package/dist/core/codex-app/multi-provider-router-support.js +202 -0
  49. package/dist/core/codex-app/multi-provider-router.js +379 -0
  50. package/dist/core/codex-app/openrouter-activate.js +189 -26
  51. package/dist/core/codex-app/openrouter-base-instructions.js +1 -0
  52. package/dist/core/codex-app/openrouter-model-catalog.js +217 -0
  53. package/dist/core/codex-app/role-model-catalog-priority.js +61 -0
  54. package/dist/core/codex-app.js +30 -6
  55. package/dist/core/codex-compat/codex-hook-semantic-validator.js +1 -3
  56. package/dist/core/codex-control/codex-app-server-v2-client.js +39 -2
  57. package/dist/core/codex-lb/codex-lb-env.js +1 -3
  58. package/dist/core/codex-lb/codex-lb-tool-catalog.js +6 -1
  59. package/dist/core/codex-native/codex-native-feature-broker.js +2 -6
  60. package/dist/core/codex-native/codex-native-interop-policy.js +1 -3
  61. package/dist/core/codex-native/codex-native-reference-cache.js +1 -3
  62. package/dist/core/codex-native/codex-native-reference-source.js +1 -3
  63. package/dist/core/codex-native/codex-native-repair-transaction.js +1 -3
  64. package/dist/core/codex-native/core-skill-manifest.js +3 -2
  65. package/dist/core/codex-native/native-capability-repair-matrix.js +1 -3
  66. package/dist/core/codex-plugins/codex-plugin-repair.js +1 -3
  67. package/dist/core/codex-runtime/codex-desktop-config-policy.js +4 -4
  68. package/dist/core/commands/agent-bridge-command.js +24 -3
  69. package/dist/core/commands/image-ux-review-command.js +5 -11
  70. package/dist/core/commands/menubar-command.js +1 -1
  71. package/dist/core/commands/naruto-command.js +40 -13
  72. package/dist/core/commands/pipeline-command.js +5 -2
  73. package/dist/core/commands/release-command.js +63 -1
  74. package/dist/core/commands/remote-command.js +18 -0
  75. package/dist/core/commands/search-command.js +151 -0
  76. package/dist/core/commands/telegram-command.js +251 -108
  77. package/dist/core/commands/uninstall-command.js +1 -1
  78. package/dist/core/config/secret-preservation.js +1 -3
  79. package/dist/core/context7-client.js +2 -1
  80. package/dist/core/db-review.js +704 -0
  81. package/dist/core/db-safety.js +17 -23
  82. package/dist/core/doctor/browser-use-repair.js +1 -3
  83. package/dist/core/doctor/codex-startup-config-repair.js +1 -3
  84. package/dist/core/doctor/computer-use-repair.js +1 -3
  85. package/dist/core/doctor/context7-mcp-repair.js +1 -3
  86. package/dist/core/doctor/current-project-guidance.js +1 -3
  87. package/dist/core/doctor/doctor-codex-startup-repair.js +1 -3
  88. package/dist/core/doctor/doctor-dirty-planner.js +2 -2
  89. package/dist/core/doctor/doctor-native-capability-repair.js +1 -3
  90. package/dist/core/doctor/doctor-transaction.js +1 -3
  91. package/dist/core/doctor/imagegen-repair.js +1 -3
  92. package/dist/core/doctor/legacy-global-hook-cleanup.js +1 -3
  93. package/dist/core/doctor/mcp-transport-collision-repair.js +1 -3
  94. package/dist/core/doctor/retired-managed-residue-private.js +1 -3
  95. package/dist/core/doctor/supabase-mcp-repair.js +1 -3
  96. package/dist/core/engineering-sanity-review.js +186 -0
  97. package/dist/core/errors/message.js +3 -0
  98. package/dist/core/evidence/evidence-schema.js +1 -3
  99. package/dist/core/feature-fixtures.js +1 -0
  100. package/dist/core/feature-registry.js +1 -3
  101. package/dist/core/fsx.js +13 -0
  102. package/dist/core/git-hygiene/shared-memory-publish.js +1 -3
  103. package/dist/core/git-hygiene/validators.js +1 -3
  104. package/dist/core/harness-guard.js +21 -3
  105. package/dist/core/hooks-runtime/hook-context.js +2 -2
  106. package/dist/core/image-ux-review/imagegen-adapter.js +52 -56
  107. package/dist/core/image-ux-review/real-callout-extractor.js +6 -1
  108. package/dist/core/image-ux-review.js +3 -5
  109. package/dist/core/imagegen/codex-lb-imagegen-target.js +70 -0
  110. package/dist/core/imagegen/imagegen-capability.js +11 -11
  111. package/dist/core/imagegen/imagegen-evidence.js +32 -0
  112. package/dist/core/init/skills.js +9 -11
  113. package/dist/core/init.js +4 -6
  114. package/dist/core/json/records.js +9 -0
  115. package/dist/core/json-schema-validator.js +1 -3
  116. package/dist/core/lean-engineering-policy.js +54 -0
  117. package/dist/core/loops/loop-continuation-enforcer.js +1 -3
  118. package/dist/core/mad-sks/sql-plane/mcp-executor.js +2 -1
  119. package/dist/core/mad-sks/sql-plane/policy.js +2 -1
  120. package/dist/core/managed-assets/managed-assets-manifest.js +4 -3
  121. package/dist/core/mcp-config/codex-cli-adapter.js +1 -3
  122. package/dist/core/mcp-config/config-reader.js +2 -3
  123. package/dist/core/mcp-config/guarded-patch.js +1 -1
  124. package/dist/core/mcp-config/health-check.js +2 -1
  125. package/dist/core/mcp-config/mutation.js +1 -1
  126. package/dist/core/mcp-config/restore.js +1 -1
  127. package/dist/core/mcp-config/secret-policy.js +1 -3
  128. package/dist/core/migration/migration-transaction-journal.js +3 -3
  129. package/dist/core/naruto/naruto-concurrency-governor.js +2 -2
  130. package/dist/core/perf/import-graph-budget.js +91 -1
  131. package/dist/core/pipeline/pipeline-plan-writer.js +1 -1
  132. package/dist/core/pipeline-internals/runtime-core.js +121 -23
  133. package/dist/core/pipeline-internals/runtime-gates.js +193 -4
  134. package/dist/core/pipeline.js +1 -1
  135. package/dist/core/ppt-review/slide-imagegen-review.js +7 -7
  136. package/dist/core/ppt.js +3 -3
  137. package/dist/core/product-design-app-server.js +2 -1
  138. package/dist/core/proof/fake-real-proof-policy.js +1 -3
  139. package/dist/core/proof/root-cause-policy.js +1 -3
  140. package/dist/core/proof/validation.js +1 -3
  141. package/dist/core/provider/model-router.js +4 -0
  142. package/dist/core/provider/provider-context.js +1 -3
  143. package/dist/core/providers/openrouter/openrouter-account.js +1 -3
  144. package/dist/core/quality/helper-dedup.js +0 -0
  145. package/dist/core/recallpulse.js +1 -1
  146. package/dist/core/release/file-ownership.js +26 -17
  147. package/dist/core/release/macos-menubar-proof.js +59 -1
  148. package/dist/core/release/main-push-guard.js +288 -24
  149. package/dist/core/release/main-push-receipt.js +10 -45
  150. package/dist/core/release/package-size-budget.js +1 -1
  151. package/dist/core/release/release-gate-contract.js +2 -0
  152. package/dist/core/release/release-pack-receipt.js +1 -1
  153. package/dist/core/release/release-proof-io.js +33 -0
  154. package/dist/core/release/release-upgrade-baseline.js +9 -0
  155. package/dist/core/release/runtime-script-pack-closure.js +153 -4
  156. package/dist/core/release/stage-publish.js +194 -0
  157. package/dist/core/remote/index.js +2 -0
  158. package/dist/core/remote/local-worker-client.js +35 -0
  159. package/dist/core/remote/machine-registry.js +18 -13
  160. package/dist/core/remote/owner-proof.js +1 -3
  161. package/dist/core/remote/protocol.js +1 -3
  162. package/dist/core/remote/readiness.js +1 -3
  163. package/dist/core/remote/session-binding.js +153 -0
  164. package/dist/core/remote/session-index.js +1 -3
  165. package/dist/core/remote/types.js +1 -0
  166. package/dist/core/remote/worker.js +228 -14
  167. package/dist/core/responses-stream.js +151 -0
  168. package/dist/core/routes/dollar-manifest-lite.js +1 -1
  169. package/dist/core/routes.js +8 -8
  170. package/dist/core/rust-accelerator.js +12 -2
  171. package/dist/core/safety/ssot-guard.js +1 -3
  172. package/dist/core/search/benchmark.js +358 -0
  173. package/dist/core/search/cache.js +65 -0
  174. package/dist/core/search/context.js +144 -0
  175. package/dist/core/search/doctor.js +74 -0
  176. package/dist/core/search/files.js +192 -0
  177. package/dist/core/search/index.js +5 -0
  178. package/dist/core/search/ipc.js +64 -0
  179. package/dist/core/search/provider.js +142 -0
  180. package/dist/core/search/rust-bridge.js +24 -0
  181. package/dist/core/search/structure.js +230 -0
  182. package/dist/core/search/symbol.js +272 -0
  183. package/dist/core/search/text.js +146 -0
  184. package/dist/core/search/types.js +22 -0
  185. package/dist/core/search/typescript-ls.js +215 -0
  186. package/dist/core/search-visibility/discovery.js +1 -3
  187. package/dist/core/skill-forge.js +1 -1
  188. package/dist/core/stop-gate/gate-evaluator.js +3 -3
  189. package/dist/core/stop-gate/stop-gate-check.js +1 -3
  190. package/dist/core/structured-output-adapter.js +62 -2
  191. package/dist/core/subagents/agent-catalog.js +56 -43
  192. package/dist/core/subagents/model-policy.js +17 -7
  193. package/dist/core/subagents/naruto-proof-projection.js +2 -6
  194. package/dist/core/subagents/official-subagent-config.js +1 -3
  195. package/dist/core/subagents/official-subagent-preparation.js +73 -10
  196. package/dist/core/subagents/official-subagent-prompt.js +85 -18
  197. package/dist/core/subagents/official-subagent-runner.js +10 -5
  198. package/dist/core/subagents/role-model-preferences.js +202 -44
  199. package/dist/core/subagents/subagent-evidence.js +1 -3
  200. package/dist/core/subagents/thread-budget.js +1 -1
  201. package/dist/core/subagents/triwiki-attention.js +1 -5
  202. package/dist/core/telegram/config.js +29 -12
  203. package/dist/core/telegram/hub.js +8 -2
  204. package/dist/core/telegram/index.js +2 -0
  205. package/dist/core/telegram/messages.js +8 -2
  206. package/dist/core/telegram/runtime-projection.js +8 -5
  207. package/dist/core/telegram/runtime.js +19 -9
  208. package/dist/core/telegram/service.js +181 -0
  209. package/dist/core/telegram/setup.js +220 -0
  210. package/dist/core/text/regex.js +3 -0
  211. package/dist/core/text/strings.js +6 -0
  212. package/dist/core/triwiki-wrongness/image-wrongness.js +1 -3
  213. package/dist/core/triwiki-wrongness/wrongness-ledger.js +1 -3
  214. package/dist/core/triwiki-wrongness/wrongness-proof-linker.js +1 -3
  215. package/dist/core/triwiki-wrongness/wrongness-retrieval.js +1 -3
  216. package/dist/core/triwiki-wrongness/wrongness-schema.js +1 -3
  217. package/dist/core/triwiki-wrongness/wrongness-trust-policy.js +1 -3
  218. package/dist/core/trust-kernel/completion-contract.js +1 -3
  219. package/dist/core/trust-kernel/route-contract.js +1 -3
  220. package/dist/core/update/update-migration-state.js +1 -3
  221. package/dist/core/update-check.js +20 -6
  222. package/dist/core/verification/diff-quality.js +3 -4
  223. package/dist/core/verification/impact-scan.js +36 -89
  224. package/dist/core/verification/mistake-rule-compiler.js +17 -4
  225. package/dist/core/version-manager.js +3 -20
  226. package/dist/core/version.js +1 -1
  227. package/dist/native/sks-menubar/Sources/ControlCenterWindowController.swift +23 -3
  228. package/dist/native/sks-menubar/Sources/ControlKit.swift +102 -0
  229. package/dist/native/sks-menubar/Sources/DiagnosticsViewController.swift +23 -11
  230. package/dist/native/sks-menubar/Sources/MCPServersViewController.swift +7 -3
  231. package/dist/native/sks-menubar/Sources/OperationCoordinator.swift +17 -1
  232. package/dist/native/sks-menubar/Sources/OverviewViewController.swift +22 -15
  233. package/dist/native/sks-menubar/Sources/ProcessClient.swift +15 -5
  234. package/dist/native/sks-menubar/Sources/ProvidersMultiProvider.swift +324 -0
  235. package/dist/native/sks-menubar/Sources/ProvidersOpenRouter.swift +154 -214
  236. package/dist/native/sks-menubar/Sources/ProvidersRoleModels.swift +252 -0
  237. package/dist/native/sks-menubar/Sources/ProvidersViewController.swift +77 -71
  238. package/dist/native/sks-menubar/Sources/RemoteTelegramViewController.swift +167 -51
  239. package/dist/native/sks-menubar/Sources/SettingsViewController.swift +14 -5
  240. package/dist/native/sks-menubar/Sources/SidebarItem.swift +15 -1
  241. package/dist/native/sks-menubar/Sources/StatusItemController.swift +2 -2
  242. package/dist/native/sks-menubar/Sources/UpdatesViewController.swift +16 -12
  243. package/dist/scripts/agent-guidance-dedup-check.js +23 -0
  244. package/dist/scripts/agent-message-bus-reader-check.js +1 -1
  245. package/dist/scripts/all-feature-deep-completion-check.js +1 -1
  246. package/dist/scripts/appshots-thread-attachment-discovery-check.js +1 -1
  247. package/dist/scripts/architecture-guard-check.js +1 -2
  248. package/dist/scripts/certificate-sla-check.js +1 -1
  249. package/dist/scripts/cli-output-consistency-check.js +1 -1
  250. package/dist/scripts/codex-0-134-runner-truth-check.js +1 -1
  251. package/dist/scripts/codex-0138-capability-artifact-check.js +1 -1
  252. package/dist/scripts/codex-0138-capability-check.js +1 -1
  253. package/dist/scripts/codex-0138-doctor-check.js +1 -1
  254. package/dist/scripts/codex-0138-feature-probes-check.js +1 -1
  255. package/dist/scripts/codex-0144-app-server-v2-check.js +1 -1
  256. package/dist/scripts/codex-0144-binary-identity-check.js +1 -1
  257. package/dist/scripts/codex-0144-capability-check.js +1 -1
  258. package/dist/scripts/codex-0144-core-real-probes-check.js +1 -1
  259. package/dist/scripts/codex-0144-manifest-check.js +1 -1
  260. package/dist/scripts/codex-0144-policy-check.js +1 -1
  261. package/dist/scripts/codex-0144-thread-store-check.js +1 -1
  262. package/dist/scripts/codex-agent-role-rich-content-check.js +2 -2
  263. package/dist/scripts/codex-agent-role-sync-check.js +2 -2
  264. package/dist/scripts/codex-agent-type-routing-check.js +2 -2
  265. package/dist/scripts/codex-app-execution-profile-check.js +2 -2
  266. package/dist/scripts/codex-app-handoff-check.js +1 -1
  267. package/dist/scripts/codex-app-handoff-launch-check.js +1 -1
  268. package/dist/scripts/codex-control-tool-output-continuity-audit-check.js +1 -1
  269. package/dist/scripts/codex-lb-fast-ui-preservation-check.js +1 -3
  270. package/dist/scripts/codex-native-feature-broker-blackbox.js +2 -2
  271. package/dist/scripts/codex-native-feature-broker-check.js +2 -2
  272. package/dist/scripts/{sks-3-1-6-directive-check-lib.js → codex-native-gate-lib.js} +5 -5
  273. package/dist/scripts/codex-native-harness-compat-check.js +2 -2
  274. package/dist/scripts/codex-native-hook-lifecycle-proof-check.js +2 -2
  275. package/dist/scripts/codex-plugin-app-template-policy-check.js +1 -1
  276. package/dist/scripts/codex-sdk-backend-router-check.js +1 -1
  277. package/dist/scripts/codex-sdk-capability-check.js +1 -1
  278. package/dist/scripts/context7-evidence-dedupe-check.js +1 -1
  279. package/dist/scripts/core-skill-card-schema-check.js +1 -1
  280. package/dist/scripts/core-skill-deployment-snapshot-check.js +1 -1
  281. package/dist/scripts/core-skill-heldout-validation-check.js +1 -1
  282. package/dist/scripts/core-skill-no-inference-optimizer-check.js +1 -1
  283. package/dist/scripts/core-skill-patch-check.js +1 -1
  284. package/dist/scripts/core-skill-route-runtime-integration-check.js +1 -1
  285. package/dist/scripts/current-command-surface-check.js +1 -1
  286. package/dist/scripts/current-surface-update-e2e-check.js +4 -1
  287. package/dist/scripts/current-upgrade-matrix-check.js +1 -1
  288. package/dist/scripts/dfix-fixture-check.js +1 -1
  289. package/dist/scripts/dfix-patch-handoff-check.js +1 -1
  290. package/dist/scripts/dfix-verification-check.js +1 -1
  291. package/dist/scripts/dfix-verification-recommendation-check.js +1 -1
  292. package/dist/scripts/docs-truthfulness-check.js +16 -3
  293. package/dist/scripts/doctor-codex-app-harness-check.js +2 -2
  294. package/dist/scripts/evidence-flagship-coverage-check.js +1 -1
  295. package/dist/scripts/{sks-1-18-gate-lib.js → gate-lib.js} +1 -1
  296. package/dist/scripts/gate-policy-audit-check.js +4 -1
  297. package/dist/scripts/git-worktree-checkpoint-check.js +1 -1
  298. package/dist/scripts/git-worktree-cross-rebase-check.js +1 -1
  299. package/dist/scripts/git-worktree-diff-envelope-check.js +1 -1
  300. package/dist/scripts/git-worktree-dirty-lock-check.js +1 -1
  301. package/dist/scripts/git-worktree-dirty-main-detection-check.js +1 -1
  302. package/dist/scripts/git-worktree-integration-primary-check.js +1 -1
  303. package/dist/scripts/git-worktree-manifest-append-check.js +1 -1
  304. package/dist/scripts/git-worktree-untracked-diff-check.js +1 -1
  305. package/dist/scripts/harness-benchmark-check.js +1 -1
  306. package/dist/scripts/helper-dedup-check.js +62 -0
  307. package/dist/scripts/hook-latency-budget-check.js +1 -1
  308. package/dist/scripts/image-artifact-path-contract-check.js +1 -1
  309. package/dist/scripts/imagegen-real-smoke-check.js +2 -5
  310. package/dist/scripts/installed-package-smoke-check.js +1 -1
  311. package/dist/scripts/legacy-gate-inventory-check.js +1 -1
  312. package/dist/scripts/legacy-gate-purge-check.js +1 -1
  313. package/dist/scripts/legacy-strong-inventory-check.js +1 -1
  314. package/dist/scripts/lib/codex-sdk-gate-lib.js +1 -1
  315. package/dist/scripts/mad-sks-launch-sql-plane-boundary-check.js +1 -1
  316. package/dist/scripts/mad-sks-sql-plane-capability-check.js +1 -1
  317. package/dist/scripts/mad-sks-sql-plane-lifecycle-hook-decision-check.js +1 -1
  318. package/dist/scripts/mad-sks-sql-plane-result-lifecycle-check.js +1 -1
  319. package/dist/scripts/managed-config-merge-check.js +1 -1
  320. package/dist/scripts/mcp-plugin-inventory-check.js +1 -1
  321. package/dist/scripts/model-call-concurrency-check.js +1 -1
  322. package/dist/scripts/mutation-callsite-coverage-check.js +1 -1
  323. package/dist/scripts/naruto-ssot-gate-aliases-check.js +1 -1
  324. package/dist/scripts/naruto-ssot-pipeline-default-check.js +1 -1
  325. package/dist/scripts/naruto-ssot-route-normalization-check.js +1 -1
  326. package/dist/scripts/naruto-ssot-routing-check.js +1 -1
  327. package/dist/scripts/naruto-worktree-coding-blackbox.js +1 -1
  328. package/dist/scripts/native-capability-repair-matrix-check.js +1 -1
  329. package/dist/scripts/native-image-generation-repair-check.js +1 -1
  330. package/dist/scripts/official-subagent-workflow-check.js +3 -3
  331. package/dist/scripts/package-published-contract-check.js +37 -4
  332. package/dist/scripts/packlist-performance-check.js +17 -1
  333. package/dist/scripts/pipeline-codex-native-doctor-mad-routing-real-blackbox.js +1 -3
  334. package/dist/scripts/ppt-real-export-adapter-check.js +1 -1
  335. package/dist/scripts/ppt-real-imagegen-wiring-check.js +1 -1
  336. package/dist/scripts/ppt-reexport-rereview-check.js +1 -1
  337. package/dist/scripts/prepublish-fast-check.js +1 -1
  338. package/dist/scripts/probe-memoization-check.js +2 -2
  339. package/dist/scripts/prompt-placeholder-guard-check.js +1 -1
  340. package/dist/scripts/qa-loop-app-handoff-capability-check.js +1 -1
  341. package/dist/scripts/qa-loop-app-handoff-check.js +1 -1
  342. package/dist/scripts/qa-loop-app-handoff-cli-check.js +1 -1
  343. package/dist/scripts/qa-loop-app-handoff-confirmation-check.js +1 -1
  344. package/dist/scripts/qa-loop-app-handoff-gate-lifecycle-check.js +1 -1
  345. package/dist/scripts/qa-loop-app-handoff-launch-check.js +1 -1
  346. package/dist/scripts/qa-loop-app-handoff-status-lifecycle-check.js +1 -1
  347. package/dist/scripts/qa-loop-budget-policy-check.js +1 -1
  348. package/dist/scripts/qa-loop-effort-escalation-check.js +1 -1
  349. package/dist/scripts/qa-loop-execution-profile-routing-check.js +2 -2
  350. package/dist/scripts/qa-loop-image-path-exposure-check.js +1 -1
  351. package/dist/scripts/qa-loop-image-path-prompt-injection-check.js +1 -1
  352. package/dist/scripts/{sks-1-12-real-execution-check-lib.js → real-execution-check-lib.js} +1 -1
  353. package/dist/scripts/release-affected-selector-check.js +1 -1
  354. package/dist/scripts/release-aggressive-resource-governor-check.js +1 -1
  355. package/dist/scripts/release-cache-glob-hashing-check.js +1 -1
  356. package/dist/scripts/release-cache-input-classifier-check.js +1 -1
  357. package/dist/scripts/release-cache-neutralization-report-check.js +1 -1
  358. package/dist/scripts/release-cache-version-neutral-fixture-check.js +1 -1
  359. package/dist/scripts/release-dynamic-presets-check.js +2 -2
  360. package/dist/scripts/release-full-parallelism-blackbox.js +1 -1
  361. package/dist/scripts/release-gate-batch-runner-check.js +1 -1
  362. package/dist/scripts/release-gate-budget-check.js +1 -1
  363. package/dist/scripts/release-gate-dag-runner-check.js +1 -1
  364. package/dist/scripts/release-latency-slo-check.js +1 -1
  365. package/dist/scripts/release-metadata-check.js +256 -2
  366. package/dist/scripts/release-parallel-speed-budget-check.js +1 -1
  367. package/dist/scripts/release-proof-truth-check.js +1 -1
  368. package/dist/scripts/release-provenance-check.js +4 -2
  369. package/dist/scripts/release-runtime-truth-matrix-check.js +1 -1
  370. package/dist/scripts/research-blueprint-densifier-check.js +1 -1
  371. package/dist/scripts/research-claim-builder-check.js +1 -1
  372. package/dist/scripts/research-complete-package-fixture-check.js +1 -1
  373. package/dist/scripts/research-execution-profile-routing-check.js +2 -2
  374. package/dist/scripts/research-final-reviewer-blackbox.js +1 -1
  375. package/dist/scripts/{sks-3-1-4-directive-check-lib.js → runtime-domain-gate-lib.js} +2 -2
  376. package/dist/scripts/runtime-proof-summary-check.js +1 -1
  377. package/dist/scripts/runtime-script-pack-closure-check.js +7 -1
  378. package/dist/scripts/scheduler-batch-dispatch-check.js +1 -1
  379. package/dist/scripts/scheduler-parallel-proof-consistency-check.js +1 -1
  380. package/dist/scripts/scheduler-utilization-integral-check.js +1 -1
  381. package/dist/scripts/search-visibility-gate-lib.js +1 -1
  382. package/dist/scripts/secret-preservation-check.js +1 -1
  383. package/dist/scripts/seo-geo-geo-disambiguation-check.js +1 -1
  384. package/dist/scripts/seo-geo-skill-rich-content-check.js +1 -1
  385. package/dist/scripts/side-effect-runtime-report-check.js +1 -1
  386. package/dist/scripts/{sks-3-1-8-check-lib.js → skill-fixture-check-lib.js} +1 -1
  387. package/dist/scripts/skill-name-canonicalizer-check.js +1 -1
  388. package/dist/scripts/skills-manifest-continuity-check.js +1 -1
  389. package/dist/scripts/sks-uninstall-regression-check.js +1 -1
  390. package/dist/scripts/sksd-daemon-check.js +1 -1
  391. package/dist/scripts/super-search-provider-interface-check.js +1 -1
  392. package/dist/scripts/triwiki-cache-key-check.js +1 -1
  393. package/dist/scripts/triwiki-proof-bank-blackbox.js +2 -2
  394. package/dist/scripts/triwiki-proof-bank-check.js +1 -1
  395. package/dist/scripts/triwiki-proof-card-check.js +1 -1
  396. package/dist/scripts/type-surface-codex-app-check.js +2 -2
  397. package/dist/scripts/{sks-3-1-5-directive-check-lib.js → typed-routing-gate-lib.js} +2 -2
  398. package/dist/scripts/ultra-router-auto-router-check.js +1 -1
  399. package/dist/scripts/ux-review-extract-wires-real-extractor-check.js +1 -1
  400. package/dist/scripts/ux-review-patch-diff-recheck-check.js +1 -1
  401. package/dist/scripts/ux-review-run-wires-imagegen-check.js +9 -2
  402. package/package.json +5 -7
  403. package/release-gates.v2.json +66 -11
  404. package/runtime-required-scripts.json +138 -14
  405. package/config/bench-baseline.json +0 -7
  406. package/dist/core/codex-app/sks-menubar.js +0 -1
  407. package/dist/core/release/release-closure-contract.js +0 -30
  408. package/dist/core/release/release-closure-helpers.js +0 -293
  409. package/dist/core/release/release-closure-validation.js +0 -284
  410. package/dist/core/release/release-closure.js +0 -163
  411. package/dist/scripts/build-dist.js +0 -124
  412. package/dist/scripts/build-once-runner-check.js +0 -6
  413. package/dist/scripts/canonical-test-runner.js +0 -234
  414. package/dist/scripts/changelog-check.js +0 -45
  415. package/dist/scripts/check-architecture.js +0 -295
  416. package/dist/scripts/check-cli-entrypoint.js +0 -41
  417. package/dist/scripts/check-command-module-budget.js +0 -77
  418. package/dist/scripts/check-feature-quality.js +0 -51
  419. package/dist/scripts/check-legacy-free.js +0 -64
  420. package/dist/scripts/check-pipeline-budget.js +0 -49
  421. package/dist/scripts/check-pipeline-runtime.js +0 -16
  422. package/dist/scripts/check-publish-tag.js +0 -56
  423. package/dist/scripts/check-route-modularity.js +0 -72
  424. package/dist/scripts/codex-0140-capability-check.js +0 -14
  425. package/dist/scripts/codex-0140-feature-probes-check.js +0 -23
  426. package/dist/scripts/codex-permission-profiles-check.js +0 -34
  427. package/dist/scripts/codex-project-config-policy-splitter-check.js +0 -49
  428. package/dist/scripts/competitor-scorecard-check.js +0 -24
  429. package/dist/scripts/core-skill-no-drift-check.js +0 -23
  430. package/dist/scripts/db-route-materialization-check.js +0 -32
  431. package/dist/scripts/doctor-context7-mcp-repair-blackbox.js +0 -15
  432. package/dist/scripts/doctor-fastpath-check.js +0 -25
  433. package/dist/scripts/doctor-fix-production-blackbox.js +0 -35
  434. package/dist/scripts/doctor-idempotence-check.js +0 -6
  435. package/dist/scripts/doctor-ops-semantics-check.js +0 -83
  436. package/dist/scripts/doctor-startup-config-repair-blackbox.js +0 -18
  437. package/dist/scripts/doctor-supabase-mcp-repair-blackbox.js +0 -13
  438. package/dist/scripts/ensure-bin-executable.js +0 -16
  439. package/dist/scripts/fsx-hotpath-check.js +0 -9
  440. package/dist/scripts/high-risk-contracts-check.js +0 -183
  441. package/dist/scripts/hook-latency-quantum-check.js +0 -120
  442. package/dist/scripts/import-graph-budget-check.js +0 -9
  443. package/dist/scripts/mcp-tool-naming-parity-check.js +0 -14
  444. package/dist/scripts/naruto-codex-e2e-check.js +0 -105
  445. package/dist/scripts/naruto-write-e2e-check.js +0 -31
  446. package/dist/scripts/native-capability-postcheck-check.js +0 -16
  447. package/dist/scripts/ops-diagnostics-bundle-check.js +0 -11
  448. package/dist/scripts/parallel-production-smoke-check.js +0 -20
  449. package/dist/scripts/perf-budget-check.js +0 -12
  450. package/dist/scripts/project-skill-dedupe-blackbox.js +0 -62
  451. package/dist/scripts/release-dag-full-coverage-check.js +0 -98
  452. package/dist/scripts/release-dist-freshness-check.js +0 -6
  453. package/dist/scripts/release-file-ownership-check.js +0 -35
  454. package/dist/scripts/release-gate-script-parity-check.js +0 -148
  455. package/dist/scripts/release-macos-menubar-proof.js +0 -167
  456. package/dist/scripts/release-main-push-guard.js +0 -37
  457. package/dist/scripts/release-main-push-receipt.js +0 -43
  458. package/dist/scripts/release-metadata-1-19-check.js +0 -257
  459. package/dist/scripts/release-version-truth-check.js +0 -138
  460. package/dist/scripts/retention-apply-smoke-check.js +0 -19
  461. package/dist/scripts/retention-budget-check.js +0 -6
  462. package/dist/scripts/retention-dry-run-check.js +0 -8
  463. package/dist/scripts/rollback-recovery-smoke-check.js +0 -70
  464. package/dist/scripts/route-intent-regression-check.js +0 -42
  465. package/dist/scripts/runtime-current-terminal-check.js +0 -108
  466. package/dist/scripts/runtime-dist-parity-check.js +0 -76
  467. package/dist/scripts/runtime-no-src-mjs-check.js +0 -30
  468. package/dist/scripts/runtime-ts-rust-boundary-check.js +0 -58
  469. package/dist/scripts/runtime-ts-source-of-truth-check.js +0 -53
  470. package/dist/scripts/secret-preservation-guard-check.js +0 -36
  471. package/dist/scripts/seo-marketing-truthfulness-check.js +0 -98
  472. package/dist/scripts/seo-metadata-sync-check.js +0 -60
  473. package/dist/scripts/sizecheck.js +0 -148
  474. package/dist/scripts/sks-menubar-install-check.js +0 -333
  475. package/dist/scripts/supabase-secret-preservation-blackbox.js +0 -28
  476. package/dist/scripts/super-search-live-smoke-check.js +0 -115
  477. package/dist/scripts/super-search-local-http-smoke-check.js +0 -16
  478. package/dist/scripts/super-search-offline-contract-check.js +0 -43
  479. package/dist/scripts/update-fastpath-check.js +0 -28
  480. package/dist/scripts/update-preserves-supabase-keys-blackbox.js +0 -26
  481. package/dist/scripts/upgrade-migration-matrix-check.js +0 -351
  482. package/dist/scripts/write-build-manifest.js +0 -70
  483. package/dist/scripts/zellij-capability-check.js +0 -13
  484. package/dist/scripts/zellij-developer-controls-check.js +0 -16
  485. package/dist/scripts/zellij-doctor-readiness-check.js +0 -49
  486. package/dist/scripts/zellij-dynamic-pane-lifecycle-check.js +0 -19
  487. package/dist/scripts/zellij-fake-adapter-check.js +0 -31
  488. package/dist/scripts/zellij-first-slot-down-stack-check.js +0 -20
  489. package/dist/scripts/zellij-first-slot-down-stack-real-check.js +0 -348
  490. package/dist/scripts/zellij-homebrew-policy-check.js +0 -3
  491. package/dist/scripts/zellij-initial-main-only-blackbox.js +0 -21
  492. package/dist/scripts/zellij-lane-renderer-check.js +0 -78
  493. package/dist/scripts/zellij-launch-command-truth-check.js +0 -62
  494. package/dist/scripts/zellij-layout-valid-check.js +0 -120
  495. package/dist/scripts/zellij-pane-creation-lock-metrics-check.js +0 -10
  496. package/dist/scripts/zellij-pane-lock-concurrency-blackbox.js +0 -78
  497. package/dist/scripts/zellij-pane-lock-does-not-block-worker-check.js +0 -12
  498. package/dist/scripts/zellij-pane-lock-open-worker-integration-blackbox.js +0 -134
  499. package/dist/scripts/zellij-qa-app-handoff-status-check.js +0 -7
  500. package/dist/scripts/zellij-right-column-geometry-proof.js +0 -158
  501. package/dist/scripts/zellij-right-column-headless-overflow-check.js +0 -20
  502. package/dist/scripts/zellij-right-column-manager-check.js +0 -24
  503. package/dist/scripts/zellij-self-heal-check.js +0 -3
  504. package/dist/scripts/zellij-self-heal-dry-run-check.js +0 -3
  505. package/dist/scripts/zellij-self-heal-status-contract-check.js +0 -3
  506. package/dist/scripts/zellij-self-heal-typed-blackbox.js +0 -3
  507. package/dist/scripts/zellij-slot-column-anchor-check.js +0 -65
  508. package/dist/scripts/zellij-slot-column-anchor-telemetry-check.js +0 -8
  509. package/dist/scripts/zellij-slot-only-ui-check.js +0 -29
  510. package/dist/scripts/zellij-slot-pane-renderer-check.js +0 -149
  511. package/dist/scripts/zellij-slot-pane-stale-detection-check.js +0 -65
  512. package/dist/scripts/zellij-slot-pane-telemetry-renderer-check.js +0 -11
  513. package/dist/scripts/zellij-slot-renderer-proof-semantics-check.js +0 -58
  514. package/dist/scripts/zellij-slot-telemetry-check.js +0 -38
  515. package/dist/scripts/zellij-slot-telemetry-incremental-check.js +0 -46
  516. package/dist/scripts/zellij-slot-telemetry-live-flush-check.js +0 -55
  517. package/dist/scripts/zellij-slot-telemetry-performance-check.js +0 -32
  518. package/dist/scripts/zellij-slot-telemetry-real-blackbox.js +0 -19
  519. package/dist/scripts/zellij-slot-telemetry-renderer-check.js +0 -11
  520. package/dist/scripts/zellij-slot-telemetry-runtime-check.js +0 -23
  521. package/dist/scripts/zellij-spawn-on-demand-layout-check.js +0 -45
  522. package/dist/scripts/zellij-stacked-capability-routing-check.js +0 -9
  523. package/dist/scripts/zellij-stacked-fallback-integration-blackbox.js +0 -78
  524. package/dist/scripts/zellij-stacked-version-matrix-check.js +0 -29
  525. package/dist/scripts/zellij-stacked-version-parser-check.js +0 -19
  526. package/dist/scripts/zellij-ui-design-check.js +0 -92
  527. package/dist/scripts/zellij-update-missing-self-heal-check.js +0 -3
  528. package/dist/scripts/zellij-update-prompt-matrix-check.js +0 -16
  529. package/dist/scripts/zellij-update-prompt-mode-check.js +0 -18
  530. package/dist/scripts/zellij-update-prompt-safety-check.js +0 -8
  531. package/dist/scripts/zellij-worker-pane-manager-check.js +0 -108
  532. package/dist/scripts/zellij-worker-pane-manager-single-owner-check.js +0 -47
  533. package/dist/scripts/zellij-worker-pane-real-ui-blackbox.js +0 -199
  534. /package/dist/scripts/{sks-1-11-gate-lib.js → sks-cli-gate-lib.js} +0 -0
@@ -1,72 +0,0 @@
1
- #!/usr/bin/env node
2
- import fs from 'node:fs';
3
- import path from 'node:path';
4
- const root = process.cwd();
5
- const failures = [];
6
- const routeCli = path.join(root, 'src', 'core', 'commands', 'route-cli.mjs');
7
- if (fs.existsSync(routeCli))
8
- failures.push('src/core/commands/route-cli.mjs must not exist in runtime source');
9
- const legacyCommandsDir = path.join(root, 'src', 'commands');
10
- if (fs.existsSync(legacyCommandsDir)) {
11
- for (const file of listFiles(legacyCommandsDir, '.mjs')) {
12
- const text = fs.readFileSync(file, 'utf8');
13
- if (text.includes('route-cli.mjs'))
14
- failures.push(`${rel(file)} imports route-cli.mjs`);
15
- }
16
- }
17
- for (const relModule of registeredCommandModules()) {
18
- if (!fs.existsSync(path.join(root, relModule)))
19
- failures.push(`registered command module missing: ${relModule}`);
20
- }
21
- const disallowedImports = {
22
- 'qa-loop-command.ts': ['research-command', 'ppt-command', 'gx-command'],
23
- 'research-command.ts': ['qa-loop-command', 'ppt-command', 'gx-command'],
24
- 'wiki-command.ts': ['research-command', 'qa-loop-command', 'ppt-command']
25
- };
26
- for (const [name, needles] of Object.entries(disallowedImports)) {
27
- const file = commandModulePath(name);
28
- if (!fs.existsSync(file))
29
- continue;
30
- const text = fs.readFileSync(file, 'utf8');
31
- for (const needle of needles) {
32
- if (text.includes(needle))
33
- failures.push(`${name} imports unrelated ${needle}`);
34
- }
35
- }
36
- if (failures.length) {
37
- console.error('Route modularity check failed:');
38
- for (const failure of failures)
39
- console.error(`- ${failure}`);
40
- process.exit(1);
41
- }
42
- console.log('Route modularity check passed');
43
- function registeredCommandModules() {
44
- const registry = fs.readFileSync(path.join(root, 'src', 'cli', 'command-registry.ts'), 'utf8');
45
- const out = new Set();
46
- for (const match of registry.matchAll(/['"]dist\/core\/commands\/([^'"]+)\.js['"]/g)) {
47
- const stem = match[1];
48
- if (stem)
49
- out.add(`src/core/commands/${stem}.ts`);
50
- }
51
- return [...out].sort();
52
- }
53
- function listFiles(dir, ext) {
54
- const out = [];
55
- for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
56
- const file = path.join(dir, entry.name);
57
- if (entry.isDirectory())
58
- out.push(...listFiles(file, ext));
59
- else if (entry.name.endsWith(ext))
60
- out.push(file);
61
- }
62
- return out;
63
- }
64
- function rel(file) {
65
- return path.relative(root, file).split(path.sep).join('/');
66
- }
67
- function commandModulePath(name) {
68
- const base = path.join(root, 'src', 'core', 'commands');
69
- const mjs = path.join(base, name.replace(/\.ts$/, '.mjs'));
70
- const ts = path.join(base, name.replace(/\.mjs$/, '.ts'));
71
- return fs.existsSync(mjs) ? mjs : ts;
72
- }
@@ -1,14 +0,0 @@
1
- #!/usr/bin/env node
2
- import { assertGate, emitGate } from './sks-1-18-gate-lib.js';
3
- import { detectCodex0140Capability } from '../core/codex-control/codex-0140-capability.js';
4
- process.env.SKS_CODEX_0140_FAKE = '1';
5
- process.env.SKS_CODEX_VERSION_FAKE = 'codex-cli 0.140.0';
6
- delete process.env.SKS_CODEX_0140_PROBE;
7
- const cap = await detectCodex0140Capability({ codexBin: 'codex' });
8
- assertGate(cap.ok === true && cap.supports_0140 === true, 'Codex 0.140 capability fixture must pass', cap);
9
- assertGate(Object.values(cap.feature_states).every((state) => state.supported === true && state.certainty === 'assumed_by_version'), 'version-only mode must mark 0.140 features as assumed, not probed', cap);
10
- assertGate(cap.warnings.some((warning) => warning.endsWith('_assumed_by_version')), 'version-only mode must warn about assumed feature support', cap);
11
- process.env.SKS_CODEX_VERSION_FAKE = 'codex-cli 0.139.0';
12
- const old = await detectCodex0140Capability({ codexBin: 'codex' });
13
- assertGate(old.ok === false && old.blockers.includes('codex_0_140_required_for_0140_features'), 'Codex 0.139 must not satisfy 0.140 capability', old);
14
- emitGate('codex:0140-capability', { features: Object.keys(cap.features).length });
@@ -1,23 +0,0 @@
1
- #!/usr/bin/env node
2
- import { assertGate, emitGate } from './sks-1-18-gate-lib.js';
3
- import { detectCodex0140Capability } from '../core/codex-control/codex-0140-capability.js';
4
- process.env.SKS_CODEX_0140_FAKE = '1';
5
- process.env.SKS_CODEX_VERSION_FAKE = 'codex-cli 0.140.0';
6
- process.env.SKS_CODEX_0140_PROBE = '1';
7
- clearFailureEnv();
8
- const cap = await detectCodex0140Capability({ codexBin: 'codex' });
9
- assertGate(cap.ok === true && cap.probe_mode === 'feature-probe', 'Codex 0.140 feature probe fixture must pass', cap);
10
- for (const [name, status] of Object.entries(cap.feature_probe_results || {})) {
11
- assertGate(status === 'passed', `Codex 0.140 feature probe must pass: ${name}`, cap.feature_probe_results);
12
- }
13
- process.env.SKS_CODEX_0140_FAKE_USAGE_VIEWS_FAIL = '1';
14
- const failed = await detectCodex0140Capability({ codexBin: 'codex' });
15
- assertGate(failed.ok === false && failed.blockers.includes('codex_0140_usage_views_probe_failed'), 'failed 0.140 feature probe must block capability', failed);
16
- clearFailureEnv();
17
- emitGate('codex:0140-feature-probes', { probe_count: Object.keys(cap.feature_probe_results || {}).length });
18
- function clearFailureEnv() {
19
- for (const key of Object.keys(process.env)) {
20
- if (/^SKS_CODEX_0140_FAKE_.*_FAIL$/.test(key))
21
- delete process.env[key];
22
- }
23
- }
@@ -1,34 +0,0 @@
1
- #!/usr/bin/env node
2
- import fs from 'node:fs/promises';
3
- import path from 'node:path';
4
- import { pathToFileURL } from 'node:url';
5
- import { ensureDistFresh, root } from './lib/ensure-dist-fresh.js';
6
- const freshness = ensureDistFresh({ rebuild: true });
7
- if (!freshness.ok)
8
- fail('dist_not_fresh', { freshness });
9
- const mod = await import(pathToFileURL(path.join(root, 'dist', 'core', 'codex', 'codex-permission-profiles.js')).href);
10
- const report = await mod.inventoryCodexPermissionProfiles(root, { writeReport: true });
11
- const names = new Set(report.sks_profiles.map((profile) => profile.name));
12
- const deprecatedPolicy = `${'on'}-failure`;
13
- const deprecatedProfiles = report.sks_profiles.filter((profile) => profile.approval_policy === deprecatedPolicy).map((profile) => profile.name);
14
- const productionFiles = [
15
- 'src/core/codex/codex-permission-profiles.ts',
16
- 'src/core/permission-gates.ts',
17
- 'package.json'
18
- ];
19
- const deprecatedMatches = [];
20
- for (const rel of productionFiles) {
21
- const file = path.join(root, rel);
22
- const text = await fs.readFile(file, 'utf8').catch(() => '');
23
- if (text.includes(deprecatedPolicy))
24
- deprecatedMatches.push(rel);
25
- }
26
- const ok = ['sks-safe', 'sks-fast', 'sks-mad', 'sks-mad-target-write', 'sks-mad-system'].every((name) => names.has(name))
27
- && report.codex_config_profile_field === 'codex_config_profile'
28
- && report.codex_permission_profile_field === 'codex_permission_profile'
29
- && deprecatedProfiles.length === 0
30
- && deprecatedMatches.length === 0;
31
- emit({ schema: 'sks.codex-permission-profiles-check.v1', ok, report, deprecated_profiles: deprecatedProfiles, deprecated_matches: deprecatedMatches });
32
- function emit(report) { console.log(JSON.stringify(report, null, 2)); if (!report.ok)
33
- process.exitCode = 1; }
34
- function fail(blocker, detail) { emit({ schema: 'sks.codex-permission-profiles-check.v1', ok: false, blockers: [blocker], detail }); process.exit(1); }
@@ -1,49 +0,0 @@
1
- #!/usr/bin/env node
2
- import fs from 'node:fs/promises';
3
- import os from 'node:os';
4
- import path from 'node:path';
5
- import { pathToFileURL } from 'node:url';
6
- import { ensureDistFresh, root as repoRoot } from './lib/ensure-dist-fresh.js';
7
- const freshness = ensureDistFresh({ rebuild: true });
8
- if (!freshness.ok)
9
- fail('dist_not_fresh', { freshness });
10
- const fixture = await fs.mkdtemp(path.join(os.tmpdir(), 'sks-config-splitter-'));
11
- const codexHome = path.join(fixture, 'home', '.codex');
12
- const deprecatedPolicy = `${'on'}-failure`;
13
- await fs.mkdir(path.join(fixture, '.codex'), { recursive: true });
14
- await fs.writeFile(path.join(fixture, '.codex', 'config.toml'), [
15
- '# project comment',
16
- 'profile = "sks-mad-high"',
17
- `approval_policy = "${deprecatedPolicy}"`,
18
- 'sandbox_mode = "workspace-write"',
19
- 'instructions = """',
20
- '[not.a.table]',
21
- 'keep this text',
22
- '"""',
23
- 'project_inline = { keep = true, value = "[literal]" }',
24
- '',
25
- '[profiles.sks-mad-high]',
26
- 'model_reasoning_effort = "high"',
27
- '',
28
- '[model_providers.codex-lb]',
29
- 'base_url = "https://lb.example.test"',
30
- ''
31
- ].join('\n'));
32
- const mod = await import(pathToFileURL(path.join(repoRoot, 'dist', 'core', 'codex', 'codex-project-config-policy.js')).href);
33
- const report = await mod.splitCodexProjectConfigPolicy(fixture, { apply: true, codexHome });
34
- const project = await fs.readFile(path.join(fixture, '.codex', 'config.toml'), 'utf8');
35
- const user = await fs.readFile(path.join(codexHome, 'config.toml'), 'utf8');
36
- const ok = report.ok === true
37
- && !/^profile\s*=/m.test(project)
38
- && !project.includes(deprecatedPolicy)
39
- && /approval_policy = "on-request"/.test(project)
40
- && /project_inline = \{ keep = true/.test(project)
41
- && /\[not\.a\.table\]/.test(project)
42
- && /^\[model_providers\.codex-lb\]/m.test(user);
43
- console.log(JSON.stringify({ schema: 'sks.codex-project-config-policy-splitter-check.v1', ok, report }, null, 2));
44
- if (!ok)
45
- process.exitCode = 1;
46
- function fail(blocker, detail) {
47
- console.log(JSON.stringify({ schema: 'sks.codex-project-config-policy-splitter-check.v1', ok: false, blocker, detail }, null, 2));
48
- process.exit(1);
49
- }
@@ -1,24 +0,0 @@
1
- #!/usr/bin/env node
2
- import path from 'node:path';
3
- import { fileURLToPath } from 'node:url';
4
- import { generateCompetitorScorecard } from '../core/quality/competitor-scorecard.js';
5
- import { readJson, writeJsonAtomic } from '../core/fsx.js';
6
- const root = process.env.SKS_REPO_ROOT
7
- ? path.resolve(process.env.SKS_REPO_ROOT)
8
- : path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..', '..');
9
- const baselinePath = process.env.SKS_COMPETITOR_SCORECARD_BASELINE
10
- ? path.resolve(process.env.SKS_COMPETITOR_SCORECARD_BASELINE)
11
- : path.join(root, 'config', 'competitor-scorecard-baseline.json');
12
- const reportPath = process.env.SKS_COMPETITOR_SCORECARD_REPORT
13
- ? path.resolve(process.env.SKS_COMPETITOR_SCORECARD_REPORT)
14
- : path.join(root, '.sneakoscope', 'reports', 'competitor-scorecard.json');
15
- const baseline = await readJson(baselinePath);
16
- const result = await generateCompetitorScorecard(root, baseline);
17
- await writeJsonAtomic(reportPath, {
18
- ...result.scorecard,
19
- evidence: result.evidence,
20
- ok: result.ok
21
- });
22
- console.log(JSON.stringify(result.scorecard, null, 2));
23
- if (!result.ok)
24
- process.exit(1);
@@ -1,23 +0,0 @@
1
- #!/usr/bin/env node
2
- import fs from 'node:fs/promises';
3
- import path from 'node:path';
4
- import { assertGate, emitGate, makeTempRoot, writeText, writeUserSkill } from './sks-3-1-8-check-lib.js';
5
- import { syncCoreSkillsIntegrity } from '../core/codex-native/core-skill-integrity.js';
6
- import { buildSksCoreSkillManifest, renderCoreSkillTemplate } from '../core/codex-native/core-skill-manifest.js';
7
- import { sha256 } from '../core/fsx.js';
8
- const root = await makeTempRoot('sks-core-no-drift-');
9
- const skillsRoot = path.join(root, '.agents', 'skills');
10
- const manifest = buildSksCoreSkillManifest('1970-01-01T00:00:00.000Z');
11
- await syncCoreSkillsIntegrity({ root, apply: true, skillsRoot });
12
- for (const skill of manifest.skills) {
13
- const text = await fs.readFile(path.join(skillsRoot, skill.canonical_name, 'SKILL.md'), 'utf8');
14
- assertGate(sha256(text) === skill.content_sha256, `rendered core skill drifted: ${skill.canonical_name}`, skill);
15
- }
16
- await writeText(path.join(skillsRoot, 'sks-qa-loop', 'SKILL.md'), `${renderCoreSkillTemplate('qa-loop')}\n# drift\n`);
17
- const restored = await syncCoreSkillsIntegrity({ root, apply: true, skillsRoot });
18
- assertGate(restored.restored.length === 1, 'managed drift must be restored', restored);
19
- const userRoot = path.join(root, 'user-skills');
20
- await writeUserSkill(root, 'user-skills', 'sks-loop', 'sks-loop');
21
- const user = await syncCoreSkillsIntegrity({ root, apply: true, skillsRoot: userRoot });
22
- assertGate(user.skipped_user_authored.length === 1, 'user-authored same-name core skill must be preserved', user);
23
- emitGate('core-skill:no-drift', { skills: manifest.skills.length });
@@ -1,32 +0,0 @@
1
- #!/usr/bin/env node
2
- import fsp from 'node:fs/promises';
3
- import os from 'node:os';
4
- import path from 'node:path';
5
- import { prepareRoute } from '../core/pipeline-internals/runtime-core.js';
6
- const root = await fsp.mkdtemp(path.join(os.tmpdir(), 'sks-db-route-materialization-'));
7
- try {
8
- await fsp.writeFile(path.join(root, 'package.json'), `${JSON.stringify({ name: 'sks-db-route-fixture', private: true }, null, 2)}\n`);
9
- const prepared = await prepareRoute(root, '$DB inspect the local migration safely', {});
10
- const missionId = String(prepared?.mission_id || '');
11
- if (!missionId || prepared?.route?.id !== 'DB')
12
- throw new Error('DB route did not materialize a mission');
13
- const dir = path.join(root, '.sneakoscope', 'missions', missionId);
14
- const scan = JSON.parse(await fsp.readFile(path.join(dir, 'db-safety-scan.json'), 'utf8'));
15
- const review = JSON.parse(await fsp.readFile(path.join(dir, 'db-review.json'), 'utf8'));
16
- if (typeof scan?.ok !== 'boolean')
17
- throw new Error('db-safety-scan.json is missing an ok decision');
18
- if (typeof review?.scan_ok !== 'boolean' || review?.destructive_operation_zero !== true) {
19
- throw new Error('db-review.json is missing the fail-closed safety baseline');
20
- }
21
- console.log(JSON.stringify({
22
- schema: 'sks.db-route-materialization-check.v1',
23
- ok: true,
24
- route: '$DB',
25
- mission_id: missionId,
26
- artifacts: ['db-safety-scan.json', 'db-review.json'],
27
- legacy_cli_registered: false
28
- }, null, 2));
29
- }
30
- finally {
31
- await fsp.rm(root, { recursive: true, force: true });
32
- }
@@ -1,15 +0,0 @@
1
- #!/usr/bin/env node
2
- import fs from 'node:fs/promises';
3
- import path from 'node:path';
4
- import { assertGate, emitGate, makeTempRoot, writeText } from './sks-3-1-8-check-lib.js';
5
- import { repairContext7Mcp } from '../core/doctor/context7-mcp-repair.js';
6
- const root = await makeTempRoot('sks-context7-blackbox-');
7
- const configPath = path.join(root, '.codex', 'config.toml');
8
- await writeText(configPath, '[mcp_servers.context7]\ncommand = "npx"\n');
9
- const repaired = await repairContext7Mcp({ root, apply: true });
10
- const text = await fs.readFile(configPath, 'utf8');
11
- assertGate(repaired.ok === true && text.includes('https://mcp.context7.com/mcp'), 'Context7 blackbox must write remote URL', { repaired, text });
12
- await writeText(configPath, '[mcp_servers.context7]\ndisabled = true\ncommand = "npx"\n');
13
- const disabled = await repairContext7Mcp({ root, apply: true });
14
- assertGate(disabled.after_transport === 'disabled' && disabled.repaired === false && disabled.disabled_preserved === true, 'Context7 blackbox must preserve explicitly disabled server', disabled);
15
- emitGate('doctor:context7-mcp-repair-blackbox');
@@ -1,25 +0,0 @@
1
- #!/usr/bin/env node
2
- import { spawnSync } from 'node:child_process';
3
- import { assertGate, emitGate, root } from './sks-1-18-gate-lib.js';
4
- const started = Date.now();
5
- const result = spawnSync(process.execPath, ['dist/bin/sks.js', 'doctor', '--json'], {
6
- cwd: root,
7
- encoding: 'utf8',
8
- maxBuffer: 16 * 1024 * 1024
9
- });
10
- const elapsedMs = Date.now() - started;
11
- const parsed = JSON.parse(result.stdout || '{}');
12
- assertGate(result.status === 0, 'doctor --json must exit 0', { status: result.status, stderr: result.stderr.slice(-2000), stdout: result.stdout.slice(-2000) });
13
- assertGate(parsed.schema === 'sks.doctor-status.v3', 'doctor --json fast path must emit v3 doctor status schema', parsed);
14
- assertGate(parsed.ok === true, 'doctor --json fast path must report fast readonly success only', parsed);
15
- assertGate(parsed.status === 'fast_readonly_ok', 'doctor --json fast path must use fast_readonly_ok status', parsed);
16
- assertGate(parsed.diagnostic_depth === 'fast', 'doctor --json fast path must declare fast diagnostic depth', parsed);
17
- assertGate(parsed.deep_diagnostics_skipped === true, 'doctor --json fast path must explicitly skip deep diagnostics', parsed);
18
- assertGate(parsed.deep_ok === null, 'doctor --json fast path must not claim deep diagnostics passed', parsed);
19
- assertGate(parsed.not_counted_as_full_doctor === true, 'doctor --json fast path must not count as full doctor', parsed);
20
- assertGate(Array.isArray(parsed.next_actions) && parsed.next_actions.some((action) => String(action).includes('sks doctor --full --json')), 'doctor --json fast path must point to full diagnostics next action', parsed.next_actions);
21
- assertGate(parsed.doctor_fix_transaction === null, 'doctor --json no-fix must not run fix transaction', parsed.doctor_fix_transaction);
22
- assertGate(parsed.repair?.setup === null, 'doctor --json no-fix must not run setup repair', parsed.repair?.setup);
23
- assertGate(parsed.repair?.sks_temp_sweep?.skipped === true, 'doctor --json no-fix must not sweep runtime state', parsed.repair?.sks_temp_sweep);
24
- assertGate(elapsedMs <= 1200, 'doctor --json fast path must stay under 1200ms p95 target in this gate', { elapsed_ms: elapsedMs });
25
- emitGate('doctor:fastpath', { elapsed_ms: elapsedMs });
@@ -1,35 +0,0 @@
1
- #!/usr/bin/env node
2
- import fs from 'node:fs/promises';
3
- import path from 'node:path';
4
- import { parse } from 'smol-toml';
5
- import { assertGate, emitGate, makeTempRoot, writeText } from './sks-3-1-8-check-lib.js';
6
- import { repairCodexStartupConfig } from '../core/doctor/codex-startup-config-repair.js';
7
- import { repairContext7Mcp } from '../core/doctor/context7-mcp-repair.js';
8
- import { repairSupabaseMcp } from '../core/doctor/supabase-mcp-repair.js';
9
- import { runDoctorFixTransaction } from '../core/doctor/doctor-transaction.js';
10
- import { doctorRepairPostcheck } from '../core/doctor/doctor-repair-postcheck.js';
11
- const root = await makeTempRoot('sks-doctor-production-');
12
- await writeText(path.join(root, '.codex', 'config.toml'), '# SKS-MANAGED-CODEX-CONFIG\n[mcp_servers.context7]\ncommand = "npx"\n\n[mcp_servers.supabase]\nurl = "https://supabase.example/mcp"\nread_only = true\n\n[agents.analysis_scout]\nconfig_file = ".codex/agents/stale.toml"\nmessage_role_prefix = "legacy"\n');
13
- const startup = await repairCodexStartupConfig({ root, apply: true, home: path.join(root, 'home'), codexHome: path.join(root, 'codex-home') });
14
- const startupText = await fs.readFile(path.join(root, '.codex', 'config.toml'), 'utf8');
15
- const startupConfig = parse(startupText);
16
- const startupAgents = startupConfig.agents || {};
17
- const startupAgentFiles = (await fs.readdir(path.join(root, '.codex', 'agents'))).sort();
18
- assertGate(startup.ok === true, 'doctor production startup repair must pass', startup);
19
- assertGate((startupAgents.max_concurrent_threads_per_session === 12 || startupAgents.max_threads === 12) && startupAgents.max_depth === 1 && startupAgents.interrupt_message === true && startupAgents.enabled === true, 'doctor production startup repair must write official config defaults', startupAgents);
20
- assertGate(startupAgentFiles.join(',') === 'expert.toml,worker.toml', 'doctor production startup repair must create only official worker/expert TOMLs', startupAgentFiles);
21
- assertGate(startupText.includes('[agents.analysis_scout]') && startupText.includes('config_file = ".codex/agents/stale.toml"'), 'doctor production startup repair must preserve legacy config tables', startupText);
22
- const context7 = await repairContext7Mcp({ root, apply: true });
23
- const supabase = await repairSupabaseMcp({ root, apply: true });
24
- const tx = await runDoctorFixTransaction({ root, phases: [
25
- { id: 'preflight', run: async () => ({ id: 'preflight', ok: true }) },
26
- { id: 'codex_startup_config_repair', run: async () => ({ id: 'codex_startup_config_repair', ok: startup.ok, repaired: true, blockers: startup.blockers, rollback_evidence: 'fixture_config_backup' }) },
27
- { id: 'context7_mcp_repair', run: async () => ({ id: 'context7_mcp_repair', ok: context7.ok, repaired: context7.repaired, blockers: context7.blockers, rollback_evidence: 'fixture_context7_backup' }) },
28
- { id: 'supabase_mcp_repair', required_for_ready: false, run: async () => ({ id: 'supabase_mcp_repair', ok: supabase.ok, manual_required: supabase.manual_required, required_for_ready: false, blockers: supabase.blockers, warnings: supabase.warnings, rollback_evidence: 'optional_supabase_fixture' }) },
29
- { id: 'postcheck', run: async () => ({ id: 'postcheck', ok: true }) }
30
- ] });
31
- const postcheck = doctorRepairPostcheck(tx);
32
- assertGate(tx.schema === 'sks.doctor-fix-transaction.v2' && tx.raw_secret_values_recorded === false, 'doctor transaction must write production schema without raw secrets', tx);
33
- assertGate(tx.phases.every((phase) => typeof phase.duration_ms === 'number' && phase.started_at && phase.completed_at), 'doctor transaction phases must include runtime evidence', tx);
34
- assertGate(postcheck.ok === true, 'doctor repair postcheck must pass when only manual-required optional phases remain', postcheck);
35
- emitGate('doctor:fix-production-blackbox', { phases: tx.phases.length });
@@ -1,6 +0,0 @@
1
- #!/usr/bin/env node
2
- import { assertGate, emitGate, importDist, root } from './sks-1-18-gate-lib.js';
3
- const { runDoctorIdempotence } = await importDist('core/doctor/doctor-idempotence.js');
4
- const report = await runDoctorIdempotence(root);
5
- assertGate(report.ok, 'doctor_idempotence_failed', report);
6
- emitGate('doctor:idempotence', { rollback_manifest_exists: report.rollback_manifest_exists });
@@ -1,83 +0,0 @@
1
- #!/usr/bin/env node
2
- import fs from 'node:fs/promises';
3
- import os from 'node:os';
4
- import path from 'node:path';
5
- import { spawnSync } from 'node:child_process';
6
- import { assertGate, emitGate, root } from './sks-1-18-gate-lib.js';
7
- const tmp = await fs.mkdtemp(path.join(os.tmpdir(), 'sks-doctor-ops-semantics-'));
8
- const projectRoot = path.join(tmp, 'project');
9
- const codexHome = path.join(tmp, 'codex-home');
10
- try {
11
- await fs.mkdir(projectRoot, { recursive: true });
12
- await fs.mkdir(codexHome, { recursive: true });
13
- await fs.writeFile(path.join(projectRoot, 'package.json'), '{"name":"doctor-ops-semantics-fixture","private":true}\n');
14
- const fast = runDoctor(['doctor', '--json']);
15
- const full = runDoctor(['doctor', '--full', '--json']);
16
- const fix1 = runDoctor(['doctor', '--fix', '--yes', '--json']);
17
- const fix2 = runDoctor(['doctor', '--fix', '--yes', '--json']);
18
- const blockers = [
19
- ...shapeBlockers('fast', fast, (json) => json.schema === 'sks.doctor-status.v3' && json.diagnostic_depth === 'fast' && json.not_counted_as_full_doctor === true && json.deep_ok === null),
20
- ...shapeBlockers('full', full, (json) => json.schema === 'sks.doctor-status.v3' && json.diagnostic_depth === 'full' && json.not_counted_as_full_doctor === false && typeof json.deep_ok === 'boolean'),
21
- ...shapeBlockers('fix', fix1, (json) => json.schema === 'sks.doctor-fix-result.v2' || json.doctor_fix_transaction?.schema === 'sks.doctor-fix-transaction.v2'),
22
- ...(fix1.json?.ok === true && Array.isArray(fix1.json?.blockers) && fix1.json.blockers.length ? ['fix_ok_true_with_blockers'] : []),
23
- ...(fix2.json?.ok === true && Array.isArray(fix2.json?.blockers) && fix2.json.blockers.length ? ['second_fix_ok_true_with_blockers'] : [])
24
- ];
25
- const report = {
26
- schema: 'sks.doctor-ops-semantics.v1',
27
- ok: blockers.length === 0,
28
- generated_at: new Date().toISOString(),
29
- fixture_root: projectRoot,
30
- fast: summarize(fast),
31
- full: summarize(full),
32
- fix: summarize(fix1),
33
- second_fix: summarize(fix2),
34
- blockers
35
- };
36
- const reportPath = path.join(root, '.sneakoscope', 'reports', 'doctor-ops-semantics.json');
37
- await fs.mkdir(path.dirname(reportPath), { recursive: true });
38
- await fs.writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`);
39
- assertGate(report.ok, 'doctor ops semantics failed', report);
40
- emitGate('doctor:ops-semantics', { report: reportPath.replace(`${root}/`, '') });
41
- }
42
- finally {
43
- await fs.rm(tmp, { recursive: true, force: true }).catch(() => undefined);
44
- }
45
- function runDoctor(args) {
46
- const result = spawnSync(process.execPath, [path.join(root, 'dist', 'bin', 'sks.js'), ...args], {
47
- cwd: projectRoot,
48
- encoding: 'utf8',
49
- maxBuffer: 16 * 1024 * 1024,
50
- env: { ...process.env, CODEX_HOME: codexHome, SKS_DISABLE_NETWORK: '1', SKS_DISABLE_UPDATE_CHECK: '1', SKS_NO_QUESTION: '1' }
51
- });
52
- return { status: result.status, stdout: result.stdout, stderr: result.stderr, json: parseJson(result.stdout) };
53
- }
54
- function shapeBlockers(label, result, predicate) {
55
- if (!result.json)
56
- return [`${label}_json_missing`];
57
- if (result.status !== 0 && result.json.status !== 'blocked')
58
- return [`${label}_unexpected_exit:${result.status}`];
59
- if (result.json.ok === true && Array.isArray(result.json.blockers) && result.json.blockers.length)
60
- return [`${label}_ok_true_with_blockers`];
61
- if (!predicate(result.json))
62
- return [`${label}_schema_mismatch`];
63
- return [];
64
- }
65
- function summarize(result) {
66
- return {
67
- exit_code: result.status,
68
- schema: result.json?.schema || result.json?.doctor_fix_transaction?.schema || null,
69
- ok: result.json?.ok ?? null,
70
- status: result.json?.status || null,
71
- diagnostic_depth: result.json?.diagnostic_depth || null,
72
- blockers: Array.isArray(result.json?.blockers) ? result.json.blockers : [],
73
- stderr_tail: result.stderr.slice(-1000)
74
- };
75
- }
76
- function parseJson(value) {
77
- try {
78
- return JSON.parse(value || '{}');
79
- }
80
- catch {
81
- return null;
82
- }
83
- }
@@ -1,18 +0,0 @@
1
- #!/usr/bin/env node
2
- import fs from 'node:fs/promises';
3
- import path from 'node:path';
4
- import { assertGate, emitGate, makeTempRoot, writeText } from './sks-3-1-8-check-lib.js';
5
- import { repairCodexStartupConfig } from '../core/doctor/codex-startup-config-repair.js';
6
- import { parse } from 'smol-toml';
7
- const root = await makeTempRoot('sks-startup-config-blackbox-');
8
- await writeText(path.join(root, '.codex', 'config.toml'), '# SKS managed Codex config fixture\n[agents.analysis_scout]\nconfig_file = ".codex/agents/stale.toml"\nmessage_role_prefix = "legacy"\n');
9
- const report = await repairCodexStartupConfig({ root, apply: true, home: path.join(root, 'home'), codexHome: path.join(root, 'codex-home') });
10
- const text = await fs.readFile(path.join(root, '.codex', 'config.toml'), 'utf8');
11
- const parsed = parse(text);
12
- const agents = parsed.agents || {};
13
- const files = (await fs.readdir(path.join(root, '.codex', 'agents'))).sort();
14
- assertGate(report.ok === true, 'startup config blackbox must pass postcheck', report);
15
- assertGate((agents.max_concurrent_threads_per_session === 12 || agents.max_threads === 12) && agents.max_depth === 1 && agents.interrupt_message === true && agents.enabled === true, 'startup config blackbox must persist official settings', agents);
16
- assertGate(files.join(',') === 'expert.toml,worker.toml', 'startup config blackbox must create only official worker/expert TOMLs', files);
17
- assertGate(text.includes('config_file = ".codex/agents/stale.toml"') && text.includes('message_role_prefix = "legacy"'), 'startup config blackbox must preserve legacy compatibility tables', { text });
18
- emitGate('doctor:startup-config-repair-blackbox');
@@ -1,13 +0,0 @@
1
- #!/usr/bin/env node
2
- import path from 'node:path';
3
- import { assertGate, emitGate, makeTempRoot, writeText } from './sks-3-1-8-check-lib.js';
4
- import { repairSupabaseMcp } from '../core/doctor/supabase-mcp-repair.js';
5
- const root = await makeTempRoot('sks-supabase-mcp-blackbox-');
6
- delete process.env.SUPABASE_ACCESS_TOKEN;
7
- await writeText(path.join(root, '.codex', 'config.toml'), '[mcp_servers.supabase]\nurl = "https://supabase.example/mcp"\nSUPABASE_ACCESS_TOKEN = "env:SUPABASE_ACCESS_TOKEN"\n');
8
- const unsafe = await repairSupabaseMcp({ root, apply: true });
9
- assertGate(unsafe.ok === true && unsafe.manual_required === true && unsafe.read_only_migrated === true && unsafe.ready_blocking === false, 'Supabase unsafe write access must be migrated to read-only without passing silently as write-ready', unsafe);
10
- await writeText(path.join(root, '.codex', 'config.toml'), '[mcp_servers.supabase_sauron]\ndisabled = true\n');
11
- const optional = await repairSupabaseMcp({ root, apply: true });
12
- assertGate(optional.ok === true && optional.disabled === true && optional.disabled_preserved === true, 'optional disabled Supabase config must be preserved', optional);
13
- emitGate('doctor:supabase-mcp-repair-blackbox');
@@ -1,16 +0,0 @@
1
- #!/usr/bin/env node
2
- import fsp from 'node:fs/promises';
3
- import path from 'node:path';
4
- import { fileURLToPath } from 'node:url';
5
- const root = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..', '..');
6
- const bins = [
7
- path.join(root, 'dist', 'bin', 'sks.js'),
8
- path.join(root, 'dist', 'bin', 'install.js')
9
- ];
10
- for (const bin of bins) {
11
- await fsp.chmod(bin, 0o755).catch((err) => {
12
- if (err?.code !== 'ENOENT')
13
- throw err;
14
- });
15
- console.log(`bin executable: ${path.relative(root, bin)}`);
16
- }
@@ -1,9 +0,0 @@
1
- #!/usr/bin/env node
2
- import { assertGate, emitGate, importDist, root } from './sks-1-18-gate-lib.js';
3
- const { writeFsxHotpathReport } = await importDist('core/perf/fsx-hotpath.js');
4
- const report = await writeFsxHotpathReport(root);
5
- assertGate(report.ok, 'fsx_hotpath_failed', report);
6
- emitGate('fsx:hotpath', {
7
- checked_files: report.checked_files.length,
8
- report_path: '.sneakoscope/reports/fsx-hotpath.json'
9
- });