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
package/dist/core/init.js CHANGED
@@ -18,6 +18,7 @@ import { AUTHORITATIVE_SKS_SKILL_ROOT_REFERENCE } from './codex-native/sks-skill
18
18
  import { currentGeneratedFileInventory, installCodexAgents, pruneStaleGeneratedFiles, REMOVED_SKS_SKILL_NAMES } from './init/skills.js';
19
19
  import { reconcileManagedSkillInstallation } from './init/managed-skill-install.js';
20
20
  import { backupInvalidToml, inspectOfficialSubagentToml, mergeOfficialSubagentConfig, officialSubagentConfigOwnershipProof, officialSubagentConfigWarnings, readInheritedOfficialSubagentConfigText, resolveInheritedOfficialSubagentConfigPath } from './subagents/official-subagent-config.js';
21
+ import { escapeRegExp } from './text/regex.js';
21
22
  export { installGlobalSkills, installProjectSkills, installSkills } from './init/skills.js';
22
23
  const REFLECTION_MEMORY_PATH = '.sneakoscope/memory/q2_facts/post-route-reflection.md';
23
24
  const REMOVED_SKILL_TOKENS = new Set(REMOVED_SKS_SKILL_NAMES.map((name) => name.replace(/[^a-z0-9]/g, '')));
@@ -72,7 +73,6 @@ const SKS_SKILL_MANIFEST_FILE = '.sks-generated.json';
72
73
  const GENERATED_PRUNE_POLICY = 'remove_previous_sks_generated_paths_absent_from_current_manifest';
73
74
  export const REQUIRED_GENERATED_CODEX_APP_FEATURE_FLAGS = [
74
75
  'hooks',
75
- 'multi_agent',
76
76
  'fast_mode',
77
77
  'apps'
78
78
  ];
@@ -283,6 +283,7 @@ const AGENTS_BLOCK = [
283
283
  '- Keep trust-boundary validation, secrets, permissions, data integrity, rollback, accessibility, and explicit user requirements intact.',
284
284
  '- Database and destructive operations are read-only by default. Live mutation, publishing, deployment, credential changes, and other irreversible external actions require explicit scoped authorization.',
285
285
  '- Never fabricate fallback implementations or success evidence. If the real requested path is unavailable, stop with evidence.',
286
+ '- Never run `sks doctor --fix` yourself. When repair is needed, tell the user to run it in their own terminal and wait for confirmation.',
286
287
  '- Conflicting third-party Codex harness markers are removed from the live surface only via `sks conflicts cleanup --yes`; a backup is kept under `.sneakoscope/quarantine/other-harness/`.',
287
288
  '',
288
289
  '## Codex App',
@@ -630,11 +631,11 @@ export async function initProject(root, opts = {}) {
630
631
  project_install: 'npm i -D sneakoscope && npx sks setup --install-scope project'
631
632
  };
632
633
  }
633
- const MANAGED_CODEX_FEATURE_FLAGS = ['hooks', 'multi_agent', 'fast_mode', 'apps'];
634
+ const MANAGED_CODEX_FEATURE_FLAGS = ['hooks', 'fast_mode', 'apps'];
634
635
  const REMOVED_CODEX_FEATURE_FLAGS = [
635
636
  'remote_control', 'fast_mode_ui', 'codex_git_commit', 'computer_use', 'browser_use',
636
637
  'browser_use_external', 'image_generation', 'in_app_browser', 'guardian_approval',
637
- 'tool_suggest', 'plugins', 'codex_hooks'
638
+ 'tool_suggest', 'plugins', 'codex_hooks', 'multi_agent'
638
639
  ];
639
640
  function mergeManagedCodexConfigToml(existingContent = '', opts = {}) {
640
641
  let next = String(existingContent || '').trimEnd();
@@ -1155,6 +1156,3 @@ export function codexAppQuickReference(scope, commandPrefix) {
1155
1156
  'Publishing, deployment, live database mutation, destructive actions, and other irreversible external effects require explicit scoped authorization.'
1156
1157
  ].join('\n') + '\n';
1157
1158
  }
1158
- function escapeRegExp(value) {
1159
- return String(value).replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
1160
- }
@@ -0,0 +1,9 @@
1
+ export function isRecord(value) {
2
+ return value !== null && typeof value === 'object' && !Array.isArray(value);
3
+ }
4
+ export function asRecordOrNull(value) {
5
+ return isRecord(value) ? value : null;
6
+ }
7
+ export function asRecordOrEmpty(value) {
8
+ return isRecord(value) ? value : {};
9
+ }
@@ -1,3 +1,4 @@
1
+ import { isRecord } from './json/records.js';
1
2
  export function validateJsonSchema(value, schema, opts = {}) {
2
3
  const issues = [];
3
4
  const unsupported = [];
@@ -207,9 +208,6 @@ function runtimeType(value) {
207
208
  return 'integer';
208
209
  return typeof value;
209
210
  }
210
- function isRecord(value) {
211
- return Boolean(value) && typeof value === 'object' && !Array.isArray(value);
212
- }
213
211
  function escapePath(value) {
214
212
  return /^[A-Za-z_$][\w$]*$/.test(value) ? value : JSON.stringify(value);
215
213
  }
@@ -2,6 +2,7 @@ import { createHash } from 'node:crypto';
2
2
  export const LEAN_ENGINEERING_POLICY_ID = 'sks.lean-engineering-policy.v1';
3
3
  export const LEAN_DECISION_SCHEMA = 'sks.lean-decision.v1';
4
4
  export const LEAN_CHANGE_EVIDENCE_SCHEMA = 'sks.lean-change-evidence.v1';
5
+ export const ENGINEERING_SANITY_POLICY_ID = 'sks.engineering-sanity-policy.v1';
5
6
  export const LEAN_SOLUTION_RUNGS = Object.freeze([
6
7
  'skip',
7
8
  'reuse-existing',
@@ -17,6 +18,10 @@ const CORE_ENGINEERING_DIRECTIVE_LINES = Object.freeze([
17
18
  'Use the real project mechanism. Follow current code and specifications and use authoritative tools or data; never substitute invented mocks, guessed heuristics, remembered architectures, or unsupported fallbacks.',
18
19
  'Preserve security, permissions, data integrity, rollback, accessibility, and explicit user requirements. If the real path is unavailable, stop and report evidence.'
19
20
  ]);
21
+ const ENGINEERING_SANITY_POLICY_LINES = Object.freeze([
22
+ 'Continuously review changed code and its real callers for basic SOLID boundaries, N+1 or repeated I/O, unbounded render/recursion/event/retry/polling loops, and disabled checks, swallowed failures, or other verification bypasses.',
23
+ 'For database work, inspect the existing canonical data-access path first. Preserve one owned connection/pool lifecycle with bounded acquire, release, shutdown, and reconnect behavior; require atomic transactions, rollback and error propagation, idempotency, and post-commit invariant checks for sensitive, payment, ledger, or multi-step mutations.'
24
+ ]);
20
25
  const LEAN_ENGINEERING_POLICY_CANONICAL = CORE_ENGINEERING_DIRECTIVE_LINES.join('\n');
21
26
  export const LEAN_ENGINEERING_POLICY_HASH = createHash('sha256')
22
27
  .update(LEAN_ENGINEERING_POLICY_CANONICAL)
@@ -24,6 +29,10 @@ export const LEAN_ENGINEERING_POLICY_HASH = createHash('sha256')
24
29
  .slice(0, 16);
25
30
  export const CORE_ENGINEERING_DIRECTIVE_ID = 'sks.core-engineering-directive.v1';
26
31
  export const CORE_ENGINEERING_DIRECTIVE_HASH = LEAN_ENGINEERING_POLICY_HASH;
32
+ export const ENGINEERING_SANITY_POLICY_HASH = createHash('sha256')
33
+ .update(ENGINEERING_SANITY_POLICY_LINES.join('\n'))
34
+ .digest('hex')
35
+ .slice(0, 16);
27
36
  export function leanPolicyReference() {
28
37
  return {
29
38
  policy_id: LEAN_ENGINEERING_POLICY_ID,
@@ -42,6 +51,12 @@ export function coreEngineeringDirectiveText() {
42
51
  export function coreEngineeringDirectiveReferenceText() {
43
52
  return `Apply the Core Engineering Directive (${CORE_ENGINEERING_DIRECTIVE_ID}/${CORE_ENGINEERING_DIRECTIVE_HASH}) from AGENTS.md exactly; do not expand it with legacy global rules.`;
44
53
  }
54
+ export function engineeringSanityPolicyText() {
55
+ return [
56
+ `Engineering Sanity Policy (${ENGINEERING_SANITY_POLICY_ID}/${ENGINEERING_SANITY_POLICY_HASH}):`,
57
+ ...ENGINEERING_SANITY_POLICY_LINES
58
+ ].join('\n');
59
+ }
45
60
  export function leanEngineeringCompactText() {
46
61
  return coreEngineeringDirectiveText();
47
62
  }
@@ -157,3 +172,42 @@ function booleanValue(value, fallback) {
157
172
  function record(value) {
158
173
  return value && typeof value === 'object' && !Array.isArray(value) ? value : {};
159
174
  }
175
+ const MONEY_SENSITIVE_PATTERN = /(^|[\/_.-])(payment|payout|billing|invoice|charge|refund|ledger|settlement|transaction|subscription|checkout|wallet|balance|payroll)([\/_.-]|s?\.|$)/i;
176
+ export function isMoneySensitivePath(file) {
177
+ return MONEY_SENSITIVE_PATTERN.test(String(file || ''));
178
+ }
179
+ export function isTestPath(file) {
180
+ const path = String(file || '');
181
+ return /(^|\/)(__tests__|test|tests)(\/|$)/.test(path) || /\.(test|spec)\.[cm]?[jt]sx?$/.test(path);
182
+ }
183
+ export const TEST_VOLUME_ABSOLUTE_FLOOR = 200;
184
+ export const TEST_VOLUME_RATIO_LIMIT = 4;
185
+ export function assessTestVolume(entries = []) {
186
+ let addedTestLines = 0;
187
+ let addedSourceLines = 0;
188
+ let moneySensitive = false;
189
+ for (const entry of entries) {
190
+ const added = Number(entry?.lines_added || 0);
191
+ if (!Number.isFinite(added) || added <= 0)
192
+ continue;
193
+ if (isTestPath(entry?.path))
194
+ addedTestLines += added;
195
+ else {
196
+ addedSourceLines += added;
197
+ if (isMoneySensitivePath(entry?.path))
198
+ moneySensitive = true;
199
+ }
200
+ }
201
+ const ratio = addedSourceLines > 0 ? addedTestLines / addedSourceLines : null;
202
+ const overBudget = !moneySensitive
203
+ && addedTestLines >= TEST_VOLUME_ABSOLUTE_FLOOR
204
+ && ratio !== null
205
+ && ratio >= TEST_VOLUME_RATIO_LIMIT;
206
+ return {
207
+ added_test_lines: addedTestLines,
208
+ added_source_lines: addedSourceLines,
209
+ ratio,
210
+ money_sensitive: moneySensitive,
211
+ over_budget: overBudget
212
+ };
213
+ }
@@ -1,6 +1,7 @@
1
1
  import path from 'node:path';
2
2
  import { nowIso, readJson, writeJsonAtomic } from '../fsx.js';
3
3
  import { loopPlanPath } from './loop-artifacts.js';
4
+ import { isRecord } from '../json/records.js';
4
5
  export async function evaluateLoopContinuation(input) {
5
6
  const root = path.resolve(input.root || process.cwd());
6
7
  const plan = await readJson(loopPlanPath(root, input.missionId), null);
@@ -34,6 +35,3 @@ function loopNodes(value) {
34
35
  return value.graph.nodes
35
36
  .filter((node) => isRecord(node) && typeof node.loop_id === 'string');
36
37
  }
37
- function isRecord(value) {
38
- return Boolean(value) && typeof value === 'object' && !Array.isArray(value);
39
- }
@@ -1,5 +1,6 @@
1
1
  import { performance } from 'node:perf_hooks';
2
2
  import { nowIso, sha256 } from '../../fsx.js';
3
+ import { PACKAGE_VERSION } from '../../version.js';
3
4
  export class MadSksSqlPlaneMcpExecutor {
4
5
  profile;
5
6
  opts;
@@ -14,7 +15,7 @@ export class MadSksSqlPlaneMcpExecutor {
14
15
  if (this.client)
15
16
  return;
16
17
  const { Client, StreamableHTTPClientTransport } = await loadMcpSdk();
17
- this.client = new Client({ name: 'sneakoscope-mad-sks-sql-plane', version: '4.2.0' });
18
+ this.client = new Client({ name: 'sneakoscope-mad-sks-sql-plane', version: PACKAGE_VERSION });
18
19
  const headers = authHeaders();
19
20
  const options = headers ? { requestInit: { headers } } : {};
20
21
  this.transport = new StreamableHTTPClientTransport(new URL(this.profile.server_url), options);
@@ -177,7 +177,8 @@ description: Enforce Sneakoscope Codex database safety before using SQL, Supabas
177
177
  ---
178
178
 
179
179
  Rules:
180
- - Default non-MAD-SKS mode is read-only and routes writes/destructive SQL to the DB safety gate.
180
+ - Default non-MAD-SKS mode is read-only. When a migration is required, produce exactly one mission-local manual-migration.sql with active forward SQL and a complete rollback section that remains commented out, then tell the user to apply it manually.
181
+ - Before any DB change, inspect the existing canonical adapter/query helper, pool/client ownership and acquire/release/shutdown/reconnect behavior, N+1/repeated I/O, and transaction integrity for sensitive or multi-step mutations.
181
182
  - Supabase MCP must be read-only and project-scoped by default.
182
183
  - Live execute_sql writes are blocked unless a bound active MAD-SKS sql-plane capability v2 is present.
183
184
  - Active MAD-SKS sql-plane is the explicit exception: SQL-plane mutations requested by $MAD-SKS or sks mad-sks sql|apply-migration are allowed, including DROP, DELETE, TRUNCATE, RLS/policy changes, and execute_sql/apply_migration, and must be executed with read-back verification.
@@ -1,7 +1,8 @@
1
1
  import { sha256 } from '../fsx.js';
2
+ import { PACKAGE_VERSION } from '../version.js';
2
3
  import { subagentModelProfile } from '../subagents/model-policy.js';
3
4
  export const MANAGED_ASSET_SCHEMA_VERSION = 1;
4
- export const MANAGED_ASSET_VERSION = '7.1.0';
5
+ export const MANAGED_ASSET_VERSION = PACKAGE_VERSION;
5
6
  export const MANAGED_ASSET_MARKER = 'SKS-MANAGED-ASSET';
6
7
  export const MANAGED_OFFICIAL_SUBAGENT_MARKER = 'SKS-MANAGED-OFFICIAL-SUBAGENT';
7
8
  export const RETIRED_MANAGED_AGENT_ROLE_TOMBSTONES = Object.freeze([
@@ -23,7 +24,7 @@ export const MANAGED_OFFICIAL_SUBAGENT_ROLES = Object.freeze([
23
24
  codexName: 'worker',
24
25
  description: 'Luna Max execution subagent only for tiny, short-context, mechanical work with an explicit done condition.',
25
26
  policy: 'luna_max_mechanical',
26
- keywords: ['tiny', 'short context', 'single file', 'mechanical', 'repeatable', 'exact rename', 'format only', 'typo'],
27
+ keywords: ['tiny', 'short context', 'single file', 'mechanical', 'repeatable', 'exact rename', 'format only', 'typo', 'simple search', 'typing', '단순 검색', '타이핑'],
27
28
  nicknames: ['Kite', 'Moss', 'Pico', 'Reed', 'Vale', 'Wren'],
28
29
  instructions: `You are a bounded execution subagent.
29
30
 
@@ -87,7 +88,7 @@ Return a concise result, evidence, risks, and next action.`
87
88
  description: 'Terra Medium read-only codebase explorer for read-heavy scans, entry points, ownership, dependencies, and distilled evidence.',
88
89
  policy: 'terra_medium_context_tools',
89
90
  sandbox: 'read-only',
90
- keywords: ['explore', 'map', 'trace', 'inventory', 'locate', 'search', 'read-only'],
91
+ keywords: ['explore', 'map', 'trace', 'inventory', 'locate', 'search', 'read-only', 'large search', 'repository-wide search', '대규모 검색'],
91
92
  nicknames: ['Beacon', 'Compass', 'Maple', 'Scout'],
92
93
  instructions: `You are the read-only code explorer.
93
94
 
@@ -2,6 +2,7 @@ import fsp from 'node:fs/promises';
2
2
  import os from 'node:os';
3
3
  import path from 'node:path';
4
4
  import { runProcess, which } from '../fsx.js';
5
+ import { isRecord } from '../json/records.js';
5
6
  export class CodexMcpCliAdapter {
6
7
  configuredPath;
7
8
  findExecutable;
@@ -157,9 +158,6 @@ function failedTransform(publicError) {
157
158
  public_error: publicError
158
159
  };
159
160
  }
160
- function isRecord(value) {
161
- return value !== null && typeof value === 'object' && !Array.isArray(value);
162
- }
163
161
  async function defaultRun(command, args, options) {
164
162
  return runProcess(command, [...args], options);
165
163
  }
@@ -3,6 +3,8 @@ import { parseCodexConfigToml } from '../codex/codex-config-toml.js';
3
3
  import { publicMcpCommand, redactMcpError, redactMcpUrl, sanitizeMcpArgs } from './redaction.js';
4
4
  import { normalizeApprovalMode } from './secret-policy.js';
5
5
  import { MCP_DEFAULT_STARTUP_TIMEOUT_SEC, MCP_DEFAULT_TOOL_TIMEOUT_SEC, MCP_SERVER_CONFIG_SCHEMA } from './types.js';
6
+ import { isRecord } from '../json/records.js';
7
+ export { isRecord };
6
8
  export class McpConfigReadError extends Error {
7
9
  code;
8
10
  constructor(code, cause) {
@@ -117,9 +119,6 @@ export function privateInlineEnvironment(value) {
117
119
  export function rawStringArray(value) {
118
120
  return stringArray(value);
119
121
  }
120
- export function isRecord(value) {
121
- return value !== null && typeof value === 'object' && !Array.isArray(value);
122
- }
123
122
  function parseToolApprovalModes(value) {
124
123
  if (!isRecord(value))
125
124
  return {};
@@ -1,3 +1,4 @@
1
+ import { escapeRegExp } from '../text/regex.js';
1
2
  export function replaceOrAppendMcpServer(text, name, block) {
2
3
  const source = String(text || '');
3
4
  const range = serverRange(source, name);
@@ -256,4 +257,3 @@ function escapedAt(value, index) {
256
257
  function tomlString(value) { return JSON.stringify(String(value)); }
257
258
  function tomlKey(value) { return tomlString(value); }
258
259
  function tomlArray(values) { return `[${values.map(tomlString).join(', ')}]`; }
259
- function escapeRegExp(value) { return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); }
@@ -7,6 +7,7 @@ import { redactMcpError } from './redaction.js';
7
7
  import { normalizeMcpServerName } from './secret-policy.js';
8
8
  import { resolveMcpScope } from './scope.js';
9
9
  import { MCP_HEALTH_SCHEMA } from './types.js';
10
+ import { PACKAGE_VERSION } from '../version.js';
10
11
  const PROTOCOL_VERSION = '2024-11-05';
11
12
  const OUTPUT_CAP = 64 * 1024;
12
13
  let activeHealthChecks = 0;
@@ -303,7 +304,7 @@ function parseHttpPayload(text) {
303
304
  function initializeRequest() {
304
305
  return {
305
306
  jsonrpc: '2.0', id: 1, method: 'initialize',
306
- params: { protocolVersion: PROTOCOL_VERSION, capabilities: {}, clientInfo: { name: 'sks-mcp-health', version: '6.3.0' } }
307
+ params: { protocolVersion: PROTOCOL_VERSION, capabilities: {}, clientInfo: { name: 'sks-mcp-health', version: PACKAGE_VERSION } }
307
308
  };
308
309
  }
309
310
  function timeoutMs(value, fallback) {
@@ -9,6 +9,7 @@ import { redactMcpError, redactMcpErrorWithSecrets } from './redaction.js';
9
9
  import { isOfficialMcpServerName, McpSecretPolicyError, normalizeApprovalMode, normalizeMcpMutationInput, normalizeMcpServerName } from './secret-policy.js';
10
10
  import { McpScopeError, resolveMcpScope } from './scope.js';
11
11
  import { MCP_MUTATION_SCHEMA } from './types.js';
12
+ import { messageOf } from '../errors/message.js';
12
13
  export async function addMcpServer(input, scope, options = {}) {
13
14
  let normalized;
14
15
  try {
@@ -363,4 +364,3 @@ function fallbackGenerated(text, reason) {
363
364
  function generatedFailure(blockers, publicError = null) {
364
365
  return { ok: false, text: null, cliUsed: false, fallbackUsed: false, warnings: [], blockers, publicError };
365
366
  }
366
- function messageOf(error) { return error instanceof Error ? error.message : String(error); }
@@ -7,6 +7,7 @@ import { listMcpInventory } from './inventory.js';
7
7
  import { redactMcpError } from './redaction.js';
8
8
  import { McpScopeError, resolveMcpScope } from './scope.js';
9
9
  import { MCP_MUTATION_SCHEMA } from './types.js';
10
+ import { messageOf } from '../errors/message.js';
10
11
  export async function restoreMcpBackup(backupId, scope, options = {}) {
11
12
  let ref;
12
13
  try {
@@ -103,4 +104,3 @@ function failure(scope, blockers, publicError = null) {
103
104
  public_error: publicError
104
105
  };
105
106
  }
106
- function messageOf(error) { return error instanceof Error ? error.message : String(error); }
@@ -1,5 +1,6 @@
1
1
  import { MCP_APPROVAL_MODES } from './types.js';
2
2
  import { isSensitiveMcpArgumentName, looksLikeMcpSecretValue } from './redaction.js';
3
+ import { isRecord } from '../json/records.js';
3
4
  const ENV_NAME = /^[A-Za-z_][A-Za-z0-9_]*$/;
4
5
  const SERVER_NAME = /^[A-Za-z0-9][A-Za-z0-9_.-]{0,63}$/;
5
6
  const TOOL_NAME = /^[A-Za-z0-9][A-Za-z0-9_.:/-]{0,127}$/;
@@ -191,6 +192,3 @@ function boundedString(value, max) {
191
192
  const text = value.trim();
192
193
  return text && Buffer.byteLength(text) <= max && !/[\r\n\0]/.test(text) ? text : null;
193
194
  }
194
- function isRecord(value) {
195
- return value !== null && typeof value === 'object' && !Array.isArray(value);
196
- }
@@ -1,8 +1,8 @@
1
1
  import path from 'node:path';
2
2
  import crypto from 'node:crypto';
3
3
  import { appendJsonl, ensureDir, nowIso } from '../fsx.js';
4
+ import { PACKAGE_VERSION } from '../version.js';
4
5
  export const MIGRATION_JOURNAL_SCHEMA = 'sks.migration-journal.v1';
5
- export const MIGRATION_JOURNAL_VERSION = '1.20.1';
6
6
  export function hashConfigText(text) {
7
7
  return crypto.createHash('sha256').update(String(text ?? '')).digest('hex');
8
8
  }
@@ -13,7 +13,7 @@ export function buildMigrationEvent(input) {
13
13
  const rollbackAvailable = input.rollbackAvailable ?? Boolean(input.backupPath);
14
14
  const event = {
15
15
  ts: nowIso(),
16
- migration: MIGRATION_JOURNAL_VERSION,
16
+ migration: PACKAGE_VERSION,
17
17
  step: input.step,
18
18
  target: input.target,
19
19
  before_hash: beforeHash,
@@ -32,7 +32,7 @@ export function migrationJournalPath(root, opts = {}) {
32
32
  const base = opts.missionId
33
33
  ? path.join(root, '.sneakoscope', 'missions', opts.missionId)
34
34
  : path.join(root, '.sneakoscope', 'reports');
35
- return path.join(base, `migration-${MIGRATION_JOURNAL_VERSION}-journal.jsonl`);
35
+ return path.join(base, 'migration-journal.jsonl');
36
36
  }
37
37
  export async function appendMigrationEvents(root, events, opts = {}) {
38
38
  const journalPath = migrationJournalPath(root, opts);
@@ -77,10 +77,10 @@ export function decideNarutoConcurrency(input = {}) {
77
77
  };
78
78
  }
79
79
  function normalizeParallelismMode(value) {
80
- const text = String(value || process.env.SKS_NARUTO_PARALLELISM || 'safe').toLowerCase();
80
+ const text = String(value || process.env.SKS_NARUTO_PARALLELISM || 'extreme').toLowerCase();
81
81
  if (text === 'safe' || text === 'balanced' || text === 'extreme')
82
82
  return text;
83
- return 'safe';
83
+ return 'extreme';
84
84
  }
85
85
  function normalizePositiveInt(value, fallback) {
86
86
  const parsed = Number(value);
@@ -1,7 +1,31 @@
1
1
  import fsp from 'node:fs/promises';
2
2
  import path from 'node:path';
3
3
  import { writeJsonAtomic } from '../fsx.js';
4
+ const NARUTO_AGENT_BRIDGE_FORBIDDEN_MODULES = [
5
+ forbidden('command-registry', /src\/cli\/command-registry\.ts$/),
6
+ forbidden('route-table', /src\/core\/routes\.ts$/),
7
+ forbidden('telegram', /src\/core\/(?:commands\/telegram-command\.ts|telegram(?:\/|\.ts$))/),
8
+ forbidden('remote', /src\/core\/(?:commands\/remote-command\.ts|remote(?:\/|\.ts$))/),
9
+ forbidden('menubar', /(?:^|\/)(?:menubar|sks-menubar)(?:\/|[-.])/),
10
+ forbidden('provider-ui', /(?:openrouter|provider-card|provider-model-ui|multi-provider)/i),
11
+ forbidden('image-research-route', /src\/core\/(?:wiki-image|image-ux-review|research|search-visibility)(?:\/|\.ts$)/),
12
+ forbidden('release-publish', /src\/core\/release\/(?:main-push|macos-menubar|npm-stage|publish|release-publish)/)
13
+ ];
4
14
  const IMPORT_BUDGETS = [
15
+ {
16
+ fastPath: 'naruto official runner',
17
+ files: ['src/core/subagents/official-subagent-runner.ts'],
18
+ traverseStaticImports: true,
19
+ forbidden: [],
20
+ forbiddenModules: NARUTO_AGENT_BRIDGE_FORBIDDEN_MODULES
21
+ },
22
+ {
23
+ fastPath: 'agent-bridge manifest',
24
+ files: ['src/core/agent-bridge/agent-manifest.ts'],
25
+ traverseStaticImports: true,
26
+ forbidden: [],
27
+ forbiddenModules: NARUTO_AGENT_BRIDGE_FORBIDDEN_MODULES
28
+ },
5
29
  {
6
30
  fastPath: '--version',
7
31
  files: ['src/bin/sks.ts'],
@@ -61,10 +85,24 @@ export async function checkImportGraphBudget(root) {
61
85
  const checked = new Set();
62
86
  const violations = [];
63
87
  for (const budget of IMPORT_BUDGETS) {
64
- for (const file of budget.files) {
88
+ const files = budget.traverseStaticImports
89
+ ? await staticImportClosure(root, budget.files)
90
+ : budget.files;
91
+ for (const file of files) {
65
92
  checked.add(file);
66
93
  const text = await fsp.readFile(path.join(root, file), 'utf8').catch(() => '');
67
94
  const checkText = budget.sourceSlice ? budget.sourceSlice(file, text) : text;
95
+ for (const rule of budget.forbiddenModules || []) {
96
+ const match = file.match(rule.pattern);
97
+ if (!match)
98
+ continue;
99
+ violations.push({
100
+ fast_path: budget.fastPath,
101
+ file,
102
+ forbidden: rule.id,
103
+ matched: match[0].slice(0, 160)
104
+ });
105
+ }
68
106
  for (const rule of budget.forbidden) {
69
107
  const match = checkText.match(rule.pattern);
70
108
  if (!match)
@@ -91,6 +129,58 @@ export async function writeImportGraphBudgetReport(root) {
91
129
  await writeJsonAtomic(path.join(root, '.sneakoscope', 'reports', 'import-graph-budget.json'), report);
92
130
  return report;
93
131
  }
132
+ async function staticImportClosure(root, entryFiles) {
133
+ const visited = new Set();
134
+ const queue = [...entryFiles];
135
+ while (queue.length) {
136
+ const file = queue.shift();
137
+ if (visited.has(file))
138
+ continue;
139
+ visited.add(file);
140
+ const text = await fsp.readFile(path.join(root, file), 'utf8').catch(() => '');
141
+ for (const specifier of staticModuleSpecifiers(text)) {
142
+ const resolved = await resolveSourceModule(root, file, specifier);
143
+ if (resolved && !visited.has(resolved))
144
+ queue.push(resolved);
145
+ }
146
+ queue.sort();
147
+ }
148
+ return [...visited].sort();
149
+ }
150
+ function staticModuleSpecifiers(text) {
151
+ const specifiers = new Set();
152
+ const pattern = /(?:^|\n)\s*(?:import|export)\s+(?!type\b)(?:[^;'"]{0,2000}?\sfrom\s+)?['"]([^'"]+)['"]/g;
153
+ for (const match of text.matchAll(pattern)) {
154
+ if (match[1]?.startsWith('.'))
155
+ specifiers.add(match[1]);
156
+ }
157
+ return [...specifiers].sort();
158
+ }
159
+ async function resolveSourceModule(root, importer, specifier) {
160
+ const importerDir = path.dirname(path.join(root, importer));
161
+ const raw = path.resolve(importerDir, specifier);
162
+ const candidates = new Set([raw]);
163
+ if (/\.[cm]?js$/.test(raw)) {
164
+ candidates.add(raw.replace(/\.js$/, '.ts'));
165
+ candidates.add(raw.replace(/\.mjs$/, '.mts'));
166
+ candidates.add(raw.replace(/\.cjs$/, '.cts'));
167
+ }
168
+ else if (!path.extname(raw)) {
169
+ candidates.add(`${raw}.ts`);
170
+ candidates.add(`${raw}.mts`);
171
+ candidates.add(`${raw}.cts`);
172
+ candidates.add(path.join(raw, 'index.ts'));
173
+ }
174
+ for (const candidate of candidates) {
175
+ const stat = await fsp.stat(candidate).catch(() => null);
176
+ if (!stat?.isFile())
177
+ continue;
178
+ const relative = path.relative(root, candidate).split(path.sep).join('/');
179
+ if (!relative.startsWith('../') && !path.isAbsolute(relative))
180
+ return relative;
181
+ }
182
+ return null;
183
+ }
94
184
  function forbidden(id, pattern) {
95
185
  return { id, pattern };
96
186
  }
@@ -1 +1 @@
1
- export { PIPELINE_PLAN_ARTIFACT, PIPELINE_PLAN_SCHEMA_VERSION, routePrompt, buildPipelinePlan, writePipelinePlan, validatePipelinePlan } from '../pipeline-internals/runtime-core.js';
1
+ export { PIPELINE_PLAN_ARTIFACT, PIPELINE_PLAN_SCHEMA_VERSION, routePrompt, buildPipelinePlan, writePipelinePlan, validatePipelinePlan, pipelinePlanState } from '../pipeline-internals/runtime-core.js';