sneakoscope 6.0.3 → 6.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (378) hide show
  1. package/README.md +29 -12
  2. package/config/codex-releases/{rust-v0.142.0.json → rust-v0.144.1.json} +6 -6
  3. package/crates/sks-core/Cargo.lock +1 -1
  4. package/crates/sks-core/Cargo.toml +1 -1
  5. package/dist/bin/fast-inline.js +18 -14
  6. package/dist/bin/sks-dispatch.js +2 -4
  7. package/dist/cli/args.js +2 -0
  8. package/dist/cli/command-manifest-lite.js +2 -3
  9. package/dist/cli/command-registry.js +3 -4
  10. package/dist/cli/help-fast.js +1 -1
  11. package/dist/cli/install-helpers.js +348 -763
  12. package/dist/cli/install-tool-helpers.js +287 -0
  13. package/dist/cli/router.js +91 -6
  14. package/dist/commands/codex-lb.js +188 -53
  15. package/dist/commands/codex.js +44 -5
  16. package/dist/commands/doctor.js +302 -46
  17. package/dist/commands/tmux.js +5 -1
  18. package/dist/commands/versioning.js +7 -0
  19. package/dist/commands/zellij-monitor-pane.js +2 -0
  20. package/dist/commands/zellij-viewport-pane.js +3 -1
  21. package/dist/commands/zellij.js +1 -1
  22. package/dist/config/skills-manifest.json +59 -59
  23. package/dist/core/agent-bridge/agent-manifest.js +48 -0
  24. package/dist/core/agents/agent-central-ledger.js +9 -0
  25. package/dist/core/agents/agent-cleanup-executor.js +334 -41
  26. package/dist/core/agents/agent-cleanup.js +20 -1
  27. package/dist/core/agents/agent-command-surface.js +3 -1
  28. package/dist/core/agents/agent-effort-policy.js +30 -38
  29. package/dist/core/agents/agent-janitor.js +9 -10
  30. package/dist/core/agents/agent-namespace-safety.js +56 -0
  31. package/dist/core/agents/agent-orchestrator.js +25 -3
  32. package/dist/core/agents/agent-output-validator.js +1 -1
  33. package/dist/core/agents/agent-plan.js +100 -21
  34. package/dist/core/agents/agent-role-config.js +43 -49
  35. package/dist/core/agents/agent-runner-codex-exec.js +18 -3
  36. package/dist/core/agents/agent-runner-process.js +1 -0
  37. package/dist/core/agents/agent-schema.js +3 -2
  38. package/dist/core/agents/fast-mode-policy.js +3 -5
  39. package/dist/core/agents/native-cli-session-swarm.js +1 -1
  40. package/dist/core/agents/native-worker-backend-router.js +2 -1
  41. package/dist/core/agents/work-partition/repo-inventory.js +68 -7
  42. package/dist/core/agents/zellij-right-lane-cockpit.js +2 -2
  43. package/dist/core/code-structure.js +5 -4
  44. package/dist/core/codex/agent-config-file-repair.js +94 -193
  45. package/dist/core/codex/codex-cli-update.js +723 -0
  46. package/dist/core/codex/codex-config-guard.js +38 -11
  47. package/dist/core/codex/codex-project-config-policy.js +3 -6
  48. package/dist/core/codex/codex-startup-config-postcheck.js +52 -42
  49. package/dist/core/codex-adapter.js +35 -22
  50. package/dist/core/codex-app/codex-agent-role-sync.js +13 -54
  51. package/dist/core/codex-app/codex-app-fast-ui-repair.js +51 -20
  52. package/dist/core/codex-app/codex-app-launcher.js +48 -17
  53. package/dist/core/codex-app/codex-app-restart.js +23 -2
  54. package/dist/core/codex-app/codex-app-ui-state-snapshot.js +11 -3
  55. package/dist/core/codex-app/sks-menubar.js +136 -5
  56. package/dist/core/codex-app.js +35 -14
  57. package/dist/core/codex-compat/codex-hook-warning-detector.js +10 -1
  58. package/dist/core/codex-compat/codex-release-manifest.js +6 -6
  59. package/dist/core/codex-control/codex-0139-doctor-real-probe.js +7 -1
  60. package/dist/core/codex-control/codex-0139-image-path-real-probe.js +29 -12
  61. package/dist/core/codex-control/codex-0139-probe-runner.js +103 -28
  62. package/dist/core/codex-control/codex-0139-real-probe-summary.js +7 -3
  63. package/dist/core/codex-control/codex-0139-real-probes.js +21 -6
  64. package/dist/core/codex-control/codex-0139-sandbox-real-probe.js +39 -13
  65. package/dist/core/codex-control/codex-0139-web-search-probe.js +28 -14
  66. package/dist/core/codex-control/{codex-0142-capability.js → codex-0144-capability.js} +22 -22
  67. package/dist/core/codex-control/codex-0144-collab-agent-real-probe.js +63 -0
  68. package/dist/core/codex-control/codex-lb-launch-recovery.js +278 -0
  69. package/dist/core/codex-control/codex-multi-agent-event-normalizer.js +5 -1
  70. package/dist/core/codex-control/codex-reliability-shield.js +93 -30
  71. package/dist/core/codex-control/codex-sdk-adapter.js +96 -13
  72. package/dist/core/codex-control/codex-sdk-config-policy.js +2 -1
  73. package/dist/core/codex-control/codex-sdk-sandbox-policy.js +6 -3
  74. package/dist/core/codex-control/codex-task-runner.js +62 -9
  75. package/dist/core/codex-control/python-codex-sdk-adapter.js +30 -3
  76. package/dist/core/codex-exec-output-schema.js +35 -6
  77. package/dist/core/codex-lb/codex-lb-env.js +30 -1
  78. package/dist/core/codex-lb/codex-lb-tool-catalog.js +478 -0
  79. package/dist/core/codex-lb/codex-lb-tool-output-recovery.js +291 -0
  80. package/dist/core/codex-native/codex-native-feature-broker.js +31 -38
  81. package/dist/core/codex-native/codex-native-feature-matrix.js +2 -2
  82. package/dist/core/codex-native/codex-native-repair-transaction.js +1 -1
  83. package/dist/core/codex-native/core-skill-manifest.js +8 -4
  84. package/dist/core/codex-native/native-capability-postcheck.js +16 -8
  85. package/dist/core/codex-native/native-capability-repair-matrix.js +76 -27
  86. package/dist/core/codex-plugins/codex-plugin-json.js +67 -21
  87. package/dist/core/codex-plugins/codex-plugin-repair.js +118 -0
  88. package/dist/core/codex-runtime/codex-desktop-config-policy.js +305 -0
  89. package/dist/core/commands/agent-bridge-command.js +23 -2
  90. package/dist/core/commands/agent-command.js +38 -5
  91. package/dist/core/commands/basic-cli.js +77 -30
  92. package/dist/core/commands/command-utils.js +1 -1
  93. package/dist/core/commands/gc-command.js +27 -4
  94. package/dist/core/commands/image-ux-review-command.js +55 -24
  95. package/dist/core/commands/mad-sks-command.js +182 -137
  96. package/dist/core/commands/naruto-command.js +643 -1153
  97. package/dist/core/commands/pipeline-command.js +1 -0
  98. package/dist/core/commands/research-command.js +293 -231
  99. package/dist/core/commands/run-command.js +100 -23
  100. package/dist/core/commands/team-command.js +2 -3
  101. package/dist/core/commands/team-legacy-observe-command.js +94 -359
  102. package/dist/core/commands/wiki-command.js +179 -83
  103. package/dist/core/computer-use-live-evidence.js +166 -3
  104. package/dist/core/computer-use-status.js +5 -2
  105. package/dist/core/daemon/sksd-hook-daemon-entrypoint.js +2 -2
  106. package/dist/core/daemon/sksd-hook-daemon.js +171 -28
  107. package/dist/core/daemon/sksd-hook-dispatch.js +2 -2
  108. package/dist/core/db-safety.js +2 -2
  109. package/dist/core/decision-lattice.js +6 -6
  110. package/dist/core/dfix/verification-selector.js +6 -4
  111. package/dist/core/doctor/browser-use-repair.js +54 -13
  112. package/dist/core/doctor/codex-0139-doctor.js +3 -2
  113. package/dist/core/doctor/codex-startup-config-repair.js +8 -3
  114. package/dist/core/doctor/computer-use-repair.js +28 -39
  115. package/dist/core/doctor/doctor-codex-startup-repair.js +24 -149
  116. package/dist/core/doctor/doctor-context7-repair.js +1 -1
  117. package/dist/core/doctor/doctor-dirty-planner.js +1 -1
  118. package/dist/core/doctor/doctor-native-capability-repair.js +74 -3
  119. package/dist/core/doctor/imagegen-repair.js +47 -12
  120. package/dist/core/doctor/legacy-global-hook-cleanup.js +179 -0
  121. package/dist/core/feature-fixture-executor.js +71 -7
  122. package/dist/core/feature-fixture-runner.js +53 -12
  123. package/dist/core/feature-fixtures.js +47 -14
  124. package/dist/core/feature-registry.js +53 -58
  125. package/dist/core/fsx.js +54 -6
  126. package/dist/core/harness-conflicts.js +19 -10
  127. package/dist/core/hooks-runtime/code-pack-freshness-preflight.js +5 -4
  128. package/dist/core/hooks-runtime/hook-invocation-dedupe.js +147 -0
  129. package/dist/core/hooks-runtime/hook-io.js +14 -4
  130. package/dist/core/hooks-runtime/light-turn.js +70 -0
  131. package/dist/core/hooks-runtime/payload-signals.js +270 -0
  132. package/dist/core/hooks-runtime/team-digest.js +0 -1
  133. package/dist/core/hooks-runtime/tool-output-quarantine.js +93 -0
  134. package/dist/core/hooks-runtime.js +418 -250
  135. package/dist/core/image/image-artifact-path-contract.js +8 -6
  136. package/dist/core/image/image-artifact-registry.js +5 -1
  137. package/dist/core/image-ux-review/imagegen-adapter.js +5 -2
  138. package/dist/core/imagegen/imagegen-capability.js +10 -13
  139. package/dist/core/imagegen/require-imagegen.js +37 -11
  140. package/dist/core/init/skills.js +16 -30
  141. package/dist/core/init.js +144 -36
  142. package/dist/core/managed-assets/managed-assets-manifest.js +417 -14
  143. package/dist/core/mission.js +24 -1
  144. package/dist/core/naruto/naruto-work-graph.js +70 -4
  145. package/dist/core/ops/reporting.js +3 -0
  146. package/dist/core/pipeline-internals/runtime-core.js +578 -180
  147. package/dist/core/pipeline-internals/runtime-gates.js +191 -49
  148. package/dist/core/ppt/style-tokens.js +1 -1
  149. package/dist/core/ppt-review/index.js +1 -1
  150. package/dist/core/ppt-review/slide-exporter.js +23 -17
  151. package/dist/core/ppt-review/slide-imagegen-review.js +1 -1
  152. package/dist/core/ppt-review/slide-issue-extraction.js +4 -2
  153. package/dist/core/preflight/parallel-preflight-engine.js +50 -1
  154. package/dist/core/product-design-plugin.js +2 -2
  155. package/dist/core/proof/route-finalizer.js +1 -1
  156. package/dist/core/proof/route-proof-gate.js +7 -2
  157. package/dist/core/proof-field.js +3 -3
  158. package/dist/core/provider/model-router.js +38 -32
  159. package/dist/core/recallpulse/policy.js +12 -28
  160. package/dist/core/recallpulse.js +11 -6
  161. package/dist/core/release/gate-manifest.js +18 -12
  162. package/dist/core/release/gate-pack-manifest.js +1 -1
  163. package/dist/core/release/npm-pack-proof.js +247 -0
  164. package/dist/core/release/package-dist-snapshot.js +151 -0
  165. package/dist/core/release/package-size-budget.js +5 -0
  166. package/dist/core/release/release-authorization-snapshot.js +115 -0
  167. package/dist/core/release/release-gate-affected-selector.js +15 -3
  168. package/dist/core/release/release-gate-cache-v2.js +30 -0
  169. package/dist/core/release/release-gate-contract.js +161 -0
  170. package/dist/core/release/release-gate-dag.js +44 -3
  171. package/dist/core/release/release-gate-hermetic-env.js +28 -17
  172. package/dist/core/release/release-real-contract.js +496 -0
  173. package/dist/core/release-parallel-full-coverage.js +31 -143
  174. package/dist/core/research/claim-evidence-matrix.js +41 -6
  175. package/dist/core/research/experiment-plan.js +14 -10
  176. package/dist/core/research/falsification.js +9 -2
  177. package/dist/core/research/implementation-blueprint-densifier.js +82 -60
  178. package/dist/core/research/implementation-blueprint.js +32 -26
  179. package/dist/core/research/mock-result.js +122 -11
  180. package/dist/core/research/replication-pack.js +15 -8
  181. package/dist/core/research/research-adversarial-review.js +1068 -0
  182. package/dist/core/research/research-claim-builder.js +69 -17
  183. package/dist/core/research/research-claim-synthesizer.js +343 -0
  184. package/dist/core/research/research-cycle-runner.js +53 -3
  185. package/dist/core/research/research-falsification-runner.js +176 -0
  186. package/dist/core/research/research-final-reviewer.js +44 -125
  187. package/dist/core/research/research-realistic-report.js +14 -6
  188. package/dist/core/research/research-review-artifact-digest.js +66 -0
  189. package/dist/core/research/research-source-evidence.js +144 -0
  190. package/dist/core/research/research-source-layer-catalog.js +68 -0
  191. package/dist/core/research/research-source-ledger-merge.js +250 -12
  192. package/dist/core/research/research-source-shards.js +26 -70
  193. package/dist/core/research/research-stage-runner.js +237 -247
  194. package/dist/core/research/research-super-search.js +184 -0
  195. package/dist/core/research/research-synthesis-prompt.js +20 -1
  196. package/dist/core/research/research-synthesis-writer.js +86 -5
  197. package/dist/core/research/research-work-graph.js +25 -18
  198. package/dist/core/research/source-quality-report.js +21 -0
  199. package/dist/core/research.js +429 -280
  200. package/dist/core/retention/retention-budget.js +25 -6
  201. package/dist/core/retention.js +980 -101
  202. package/dist/core/routes/constants.js +1 -1
  203. package/dist/core/routes/dollar-manifest-lite.js +11 -11
  204. package/dist/core/routes/evidence.js +4 -4
  205. package/dist/core/routes/ppt-policy.js +1 -1
  206. package/dist/core/routes.js +92 -64
  207. package/dist/core/runtime/task-profile.js +66 -0
  208. package/dist/core/runtime/verification-budget.js +12 -0
  209. package/dist/core/secret-redaction.js +4 -0
  210. package/dist/core/security/high-risk-contracts.js +6 -6
  211. package/dist/core/stop-gate/stop-gate-check.js +49 -12
  212. package/dist/core/subagents/agent-catalog.js +215 -0
  213. package/dist/core/subagents/model-policy.js +118 -0
  214. package/dist/core/subagents/naruto-help-contract.js +40 -0
  215. package/dist/core/subagents/official-subagent-config.js +488 -0
  216. package/dist/core/subagents/official-subagent-preparation.js +251 -0
  217. package/dist/core/subagents/official-subagent-prompt.js +137 -0
  218. package/dist/core/subagents/official-subagent-runner.js +129 -0
  219. package/dist/core/subagents/subagent-evidence.js +663 -0
  220. package/dist/core/subagents/terminology.js +16 -0
  221. package/dist/core/subagents/thread-budget.js +21 -0
  222. package/dist/core/subagents/triwiki-attention.js +65 -0
  223. package/dist/core/super-search/runtime-helpers.js +173 -19
  224. package/dist/core/super-search/runtime.js +140 -15
  225. package/dist/core/super-search/source-records.js +49 -8
  226. package/dist/core/team-review-policy.js +15 -0
  227. package/dist/core/triwiki/code-pack.js +8 -2
  228. package/dist/core/triwiki/triwiki-cache-key.js +108 -29
  229. package/dist/core/triwiki/triwiki-module-card.js +1 -1
  230. package/dist/core/triwiki-attention.js +13 -6
  231. package/dist/core/triwiki-provenance.js +274 -0
  232. package/dist/core/triwiki-runtime.js +21 -7
  233. package/dist/core/triwiki-wrongness/wrongness-ledger.js +187 -61
  234. package/dist/core/triwiki-wrongness/wrongness-retrieval.js +11 -2
  235. package/dist/core/triwiki-wrongness/wrongness-trust-policy.js +2 -0
  236. package/dist/core/update-check.js +23 -15
  237. package/dist/core/version-manager.js +51 -1
  238. package/dist/core/version.js +1 -1
  239. package/dist/core/wiki-coordinate.js +128 -12
  240. package/dist/core/work-order-ledger.js +208 -10
  241. package/dist/core/zellij/zellij-command.js +12 -1
  242. package/dist/core/zellij/zellij-dashboard-pane.js +3 -3
  243. package/dist/core/zellij/zellij-fake-adapter.js +3 -1
  244. package/dist/core/zellij/zellij-launcher.js +51 -21
  245. package/dist/core/zellij/zellij-layout-builder.js +14 -5
  246. package/dist/core/zellij/zellij-official-subagent-activity.js +477 -0
  247. package/dist/core/zellij/zellij-official-subagent-telemetry.js +264 -0
  248. package/dist/core/zellij/zellij-pane-proof.js +32 -6
  249. package/dist/core/zellij/zellij-slot-pane-renderer.js +17 -5
  250. package/dist/core/zellij/zellij-slot-telemetry.js +15 -3
  251. package/dist/core/zellij/zellij-ui-mode.js +1 -1
  252. package/dist/core/zellij/zellij-viewport-binder.js +3 -0
  253. package/dist/core/zellij/zellij-worker-pane-manager.js +5 -3
  254. package/dist/scripts/agent-fast-mode-default-check.js +48 -29
  255. package/dist/scripts/agent-role-config-repair-check.js +34 -15
  256. package/dist/scripts/agent-wiki-context-proof-check.js +16 -2
  257. package/dist/scripts/all-feature-deep-completion-check.js +14 -4
  258. package/dist/scripts/architecture-guard-check.js +8 -1
  259. package/dist/scripts/build-dist.js +17 -5
  260. package/dist/scripts/canonical-test-runner.js +188 -0
  261. package/dist/scripts/check-command-module-budget.js +38 -16
  262. package/dist/scripts/check-legacy-free.js +1 -1
  263. package/dist/scripts/check-route-modularity.js +0 -1
  264. package/dist/scripts/check-ts-contracts.js +1 -1
  265. package/dist/scripts/codex-0139-interrupt-agent-check.js +5 -1
  266. package/dist/scripts/{codex-0142-app-server-v2-check.js → codex-0144-app-server-v2-check.js} +11 -10
  267. package/dist/scripts/{codex-0142-binary-identity-check.js → codex-0144-binary-identity-check.js} +4 -4
  268. package/dist/scripts/codex-0144-capability-check.js +21 -0
  269. package/dist/scripts/{codex-0139-real-probes-check.js → codex-0144-core-real-probes-check.js} +19 -5
  270. package/dist/scripts/{codex-0142-doctor-wiring-check.js → codex-0144-doctor-wiring-check.js} +6 -6
  271. package/dist/scripts/{codex-0142-manifest-check.js → codex-0144-manifest-check.js} +11 -3
  272. package/dist/scripts/{codex-0142-policy-check.js → codex-0144-policy-check.js} +2 -2
  273. package/dist/scripts/{codex-0142-thread-store-check.js → codex-0144-thread-store-check.js} +3 -3
  274. package/dist/scripts/codex-app-provider-model-ui-check.js +53 -19
  275. package/dist/scripts/codex-app-ui-preservation-check.js +35 -4
  276. package/dist/scripts/codex-control-all-pipelines-check.js +7 -3
  277. package/dist/scripts/codex-control-side-effect-scope-check.js +2 -2
  278. package/dist/scripts/codex-control-tool-output-continuity-audit-check.js +27 -0
  279. package/dist/scripts/codex-effort-auto-discovery-check.js +1 -1
  280. package/dist/scripts/codex-lb-fast-mode-truth-check.js +1 -0
  281. package/dist/scripts/{codex-lb-gpt55-fast-profile-check.js → codex-lb-gpt56-fast-profile-check.js} +56 -5
  282. package/dist/scripts/codex-model-metadata-check.js +1 -1
  283. package/dist/scripts/codex-native-agent-role-content-check.js +15 -7
  284. package/dist/scripts/codex-native-repair-transaction-check.js +3 -1
  285. package/dist/scripts/codex-sdk-all-pipelines-check.js +7 -4
  286. package/dist/scripts/codex-sdk-research-pipeline-check.js +30 -8
  287. package/dist/scripts/codex-sdk-sandbox-policy-check.js +5 -1
  288. package/dist/scripts/codex-sdk-version-compat-check.js +2 -1
  289. package/dist/scripts/db-route-materialization-check.js +33 -0
  290. package/dist/scripts/dfix-fixture-check.js +1 -1
  291. package/dist/scripts/docs-truthfulness-check.js +4 -2
  292. package/dist/scripts/doctor-codex-startup-repair-check.js +47 -25
  293. package/dist/scripts/doctor-context7-repair-check.js +2 -1
  294. package/dist/scripts/doctor-fix-production-blackbox.js +12 -2
  295. package/dist/scripts/doctor-fixes-codex-app-fast-ui-check.js +34 -7
  296. package/dist/scripts/doctor-imagegen-repair-check.js +14 -4
  297. package/dist/scripts/doctor-startup-config-repair-blackbox.js +9 -3
  298. package/dist/scripts/doctor-startup-config-repair-check.js +13 -3
  299. package/dist/scripts/install-update-preserves-config-check.js +7 -2
  300. package/dist/scripts/legacy-gate-inventory-check.js +7 -5
  301. package/dist/scripts/legacy-strong-inventory-check.js +7 -5
  302. package/dist/scripts/legacy-upgrade-matrix-check.js +4 -4
  303. package/dist/scripts/lib/native-cli-session-swarm-check-lib.js +173 -13
  304. package/dist/scripts/mad-sks-app-ui-no-mutation-check.js +165 -6
  305. package/dist/scripts/managed-role-manifest-parity-check.js +5 -4
  306. package/dist/scripts/mutation-callsite-coverage-check.js +0 -11
  307. package/dist/scripts/naruto-codex-e2e-check.js +14 -7
  308. package/dist/scripts/naruto-shadow-clone-swarm-check.js +4 -201
  309. package/dist/scripts/npm-publish-performance-check.js +20 -12
  310. package/dist/scripts/official-subagent-workflow-check.js +145 -0
  311. package/dist/scripts/package-published-contract-check.js +6 -20
  312. package/dist/scripts/packlist-performance-check.js +17 -3
  313. package/dist/scripts/parallel-verification-engine-check.js +2 -2
  314. package/dist/scripts/postinstall-safe-side-effects-check.js +8 -3
  315. package/dist/scripts/ppt-no-mock-as-real-check.js +3 -1
  316. package/dist/scripts/prepublish-release-check-or-fast.js +23 -86
  317. package/dist/scripts/product-design-plugin-routing-check.js +1 -1
  318. package/dist/scripts/release-affected-selector-check.js +74 -1
  319. package/dist/scripts/release-check-stamp.js +324 -239
  320. package/dist/scripts/release-dag-full-coverage-check.js +7 -15
  321. package/dist/scripts/release-dynamic-presets-check.js +10 -1
  322. package/dist/scripts/release-gate-dag-runner-check.js +3 -3
  323. package/dist/scripts/release-gate-dag-runner.js +35 -11
  324. package/dist/scripts/release-gate-existence-audit.js +1 -2
  325. package/dist/scripts/release-gate-script-parity-check.js +1 -1
  326. package/dist/scripts/release-parallel-full-coverage-check.js +12 -6
  327. package/dist/scripts/release-parallel-speed-budget-check.js +18 -2
  328. package/dist/scripts/release-real-check.js +390 -157
  329. package/dist/scripts/release-registry-check.js +61 -16
  330. package/dist/scripts/release-runtime-truth-matrix-check.js +22 -0
  331. package/dist/scripts/research-blueprint-densifier-check.js +2 -2
  332. package/dist/scripts/research-real-cycle-no-legacy-final-md-check.js +11 -7
  333. package/dist/scripts/route-proof-artifact-structure-check.js +1 -0
  334. package/dist/scripts/search-visibility-gate-lib.js +1 -1
  335. package/dist/scripts/seo-geo-route-identity-check.js +30 -4
  336. package/dist/scripts/sizecheck.js +4 -4
  337. package/dist/scripts/sks-1-11-gate-lib.js +53 -6
  338. package/dist/scripts/sks-3-1-4-directive-check-lib.js +8 -2
  339. package/dist/scripts/sks-3-1-5-directive-check-lib.js +3 -2
  340. package/dist/scripts/sks-3-1-6-directive-check-lib.js +5 -3
  341. package/dist/scripts/sks-menubar-install-check.js +8 -0
  342. package/dist/scripts/sks-uninstall-regression-check.js +1 -1
  343. package/dist/scripts/sksd-daemon-check.js +16 -6
  344. package/dist/scripts/trust-fixture-check.js +32 -10
  345. package/dist/scripts/write-build-manifest.js +2 -1
  346. package/dist/scripts/wrongness-fixture-check.js +1 -1
  347. package/dist/scripts/zellij-layout-valid-check.js +36 -11
  348. package/dist/scripts/zellij-pane-proof-check.js +33 -2
  349. package/dist/scripts/zellij-real-session-cleanup-check.js +122 -2
  350. package/dist/scripts/zellij-real-session-launch-check.js +76 -5
  351. package/dist/scripts/zellij-slot-pane-renderer-check.js +4 -4
  352. package/dist/scripts/zellij-spawn-on-demand-layout-check.js +3 -3
  353. package/docs/demo.tape +1 -1
  354. package/infra-harness-gates.json +1486 -0
  355. package/package.json +32 -19
  356. package/release-gates.v2.json +4060 -0
  357. package/runtime-required-scripts.json +9 -0
  358. package/schemas/codex/{app-server-0.142 → app-server-0.144}/codex_app_server_protocol.v2.schemas.json +1146 -781
  359. package/schemas/codex/codex-0139-real-probe-result.schema.json +39 -5
  360. package/schemas/codex/ppt-slide-issue-ledger.schema.json +2 -1
  361. package/dist/commands/db.js +0 -6
  362. package/dist/core/codex-control/codex-0139-multi-agent-real-probe.js +0 -107
  363. package/dist/core/commands/db-command.js +0 -146
  364. package/dist/core/research/prompt.js +0 -15
  365. package/dist/scripts/agent-native-release-gate.js +0 -274
  366. package/dist/scripts/codex-0142-capability-check.js +0 -21
  367. package/dist/scripts/codex-control-tool-call-sequence-repair-check.js +0 -14
  368. package/dist/scripts/command-performance-scorecard-check.js +0 -204
  369. package/dist/scripts/config-managed-merge-callsite-coverage-check.js +0 -212
  370. package/dist/scripts/dollar-performance-scorecard-check.js +0 -257
  371. package/dist/scripts/gate-timing-check.js +0 -16
  372. package/dist/scripts/ops-maturity-scorecard-check.js +0 -12
  373. package/dist/scripts/performance-baseline-check.js +0 -12
  374. package/dist/scripts/performance-improvement-report-check.js +0 -58
  375. package/dist/scripts/release-parallel-check.js +0 -389
  376. package/dist/scripts/release-runner-efficiency-check.js +0 -15
  377. package/dist/scripts/retention-long-run-smoke-check.js +0 -299
  378. package/docs/assets/sneakoscope-architecture-pipeline.jpg +0 -0
@@ -1,274 +0,0 @@
1
- #!/usr/bin/env node
2
- // @ts-nocheck
3
- import fs from 'node:fs';
4
- import path from 'node:path';
5
- import { assertGate, emitGate, root, runSksJson } from './sks-1-11-gate-lib.js';
6
- const gate = process.argv[2] || path.basename(process.argv[1], '.mjs').replace(/-check$/, '');
7
- const pkg = JSON.parse(fs.readFileSync(path.join(root, 'package.json'), 'utf8'));
8
- const runtimeFiles = [
9
- 'src/core/commands/team-command.ts',
10
- 'src/core/team-dag.ts',
11
- 'src/core/team-live.ts',
12
- 'src/core/research.ts',
13
- 'src/core/commands/research-command.ts',
14
- 'src/core/commands/qa-loop-command.ts',
15
- 'src/core/pipeline-internals/runtime-core.ts',
16
- 'src/core/pipeline-internals/runtime-gates.ts',
17
- 'src/core/proof/auto-finalize.ts',
18
- 'src/core/proof/route-finalizer.ts',
19
- 'src/core/proof/route-proof-gate.ts'
20
- ];
21
- const agentFiles = [
22
- 'src/core/agents/agent-schema.ts',
23
- 'src/core/agents/agent-command-surface.ts',
24
- 'src/core/agents/agent-orchestrator.ts',
25
- 'src/core/agents/agent-worker-pipeline.ts',
26
- 'src/core/agents/agent-runner-codex-exec.ts',
27
- 'src/core/agents/agent-runner-process.ts',
28
- 'src/core/agents/agent-runner-fake.ts',
29
- 'src/core/agents/agent-runner-zellij.ts',
30
- 'src/core/agents/zellij-right-lane-cockpit.ts',
31
- 'src/core/agents/zellij-lane-supervisor.ts',
32
- 'src/core/agents/agent-persona.ts',
33
- 'src/core/agents/agent-roster.ts',
34
- 'src/core/agents/agent-effort-policy.ts',
35
- 'src/core/agents/route-collaboration-ledger.ts',
36
- 'src/core/agents/agent-task-slicer.ts',
37
- 'src/core/agents/agent-work-partition.ts',
38
- 'src/core/agents/agent-lease.ts',
39
- 'src/core/agents/agent-conflict-graph.ts',
40
- 'src/core/agents/agent-central-ledger.ts',
41
- 'src/core/agents/agent-ledger-schemas.ts',
42
- 'src/core/agents/agent-message-bus.ts',
43
- 'src/core/agents/agent-lifecycle.ts',
44
- 'src/core/agents/agent-heartbeat.ts',
45
- 'src/core/agents/agent-consensus.ts',
46
- 'src/core/agents/agent-proof-evidence.ts',
47
- 'src/core/agents/agent-recursion-guard.ts',
48
- 'src/core/agents/agent-output-validator.ts',
49
- 'src/core/agents/agent-cleanup.ts',
50
- 'src/core/agents/agent-trust-report.ts',
51
- 'src/core/agents/agent-wrongness.ts',
52
- 'src/core/commands/agent-command.ts'
53
- ];
54
- const workPartitionFiles = [
55
- 'src/core/agents/work-partition/repo-inventory.ts',
56
- 'src/core/agents/work-partition/dependency-graph.ts',
57
- 'src/core/agents/work-partition/semantic-domain-graph.ts',
58
- 'src/core/agents/work-partition/task-slicer.ts',
59
- 'src/core/agents/work-partition/lease-planner.ts',
60
- 'src/core/agents/work-partition/conflict-detector.ts',
61
- 'src/core/agents/work-partition/no-overlap-proof.ts'
62
- ];
63
- function text(rel) {
64
- return fs.readFileSync(path.join(root, rel), 'utf8');
65
- }
66
- function exists(rel) {
67
- return fs.existsSync(path.join(root, rel));
68
- }
69
- function assertFiles(files) {
70
- for (const file of files)
71
- assertGate(exists(file), `missing required file: ${file}`);
72
- }
73
- function assertLegacyMultiagentRemoved() {
74
- const forbidden = [
75
- /\brunFiveScoutIntake\b/,
76
- /\bsks\s+scouts\s+run\b/,
77
- /\bparallel_analysis_scouting\b/,
78
- /\banalysis_scout(?:_\d+)?\b/
79
- ];
80
- for (const file of runtimeFiles) {
81
- const body = text(file);
82
- const hits = forbidden.filter((re) => re.test(body)).map(String);
83
- assertGate(hits.length === 0, `legacy multi-agent runtime reference found in ${file}`, { hits });
84
- }
85
- for (const rel of ['src/core/scouts', 'src/core/commands/scouts-command.ts', 'src/commands/scouts.ts', 'schemas/codex/scout-result.schema.json']) {
86
- assertGate(!exists(rel), `legacy multi-agent surface still present: ${rel}`);
87
- }
88
- const registry = text('src/cli/command-registry.ts');
89
- assertGate(!/\bscouts?\s*:\s*entry\b/.test(registry), 'command registry must not expose legacy multi-agent commands');
90
- }
91
- function assertAgentSurface() {
92
- assertFiles(agentFiles);
93
- const registry = text('src/cli/command-registry.ts');
94
- const zellij = text('src/core/agents/agent-runner-zellij.ts');
95
- assertGate(/\bagent:\s+entry/.test(registry), 'command registry must expose sks agent');
96
- assertGate(/'--agent': 'agent'/.test(registry), 'CLI parser must route --agent to agent command');
97
- assertGate(zellij.includes('buildZellijAgentPanePlan') && zellij.includes('persistent_worker_slot') && zellij.includes('agent-zellij-report.json'), 'Zellij agent backend must declare lane plan and report policy');
98
- }
99
- function assertNonRecursive() {
100
- const pipeline = text('src/core/agents/agent-worker-pipeline.ts');
101
- const guard = text('src/core/agents/agent-recursion-guard.ts');
102
- const docs = text('docs/agent-non-recursive-pipeline.md');
103
- const orchestrator = text('src/core/agents/agent-orchestrator.ts');
104
- const hooks = text('src/core/hooks-runtime.ts');
105
- assertGate(exists('src/scripts/non-recursive-pipeline-check.ts'), 'missing non-recursive pipeline checker script');
106
- assertGate(exists('schemas/codex/non-recursive-pipeline-report.schema.json'), 'missing non-recursive pipeline report schema');
107
- for (const token of ['AGENT_WORKER_PIPELINE', 'SKS_AGENT_WORKER', 'SKS_PIPELINE_MODE', 'SKS_DISABLE_ROUTE_RECURSION', 'SKS_AGENT_SESSION_ID', 'SKS_AGENT_ID']) {
108
- assertGate(pipeline.includes(token), `agent worker pipeline missing ${token}`);
109
- }
110
- for (const token of ['sks team', 'sks --agent', 'sks agent run', 'sks research run', 'sks autoresearch run', 'sks goal', '$Team', '$Research', '$AutoResearch', '$QA-LOOP', '$Goal']) {
111
- assertGate(guard.includes(token), `agent recursion denylist missing ${token}`);
112
- }
113
- assertGate(guard.includes('agent-recursion-guard.json'), 'recursion guard report must be written');
114
- for (const token of ['NON_RECURSIVE_PIPELINE_REPORT_SCHEMA', 'scanNonRecursivePipelinePolicy', 'wrongness_records', 'trust_report', 'evidence_router', 'next_action', 'local_only', 'secret_redaction_ok', 'performance_budget_ms']) {
115
- assertGate(guard.includes(token), `non-recursive policy module missing ${token}`);
116
- }
117
- for (const token of ['env guard', 'command denylist', 'route denylist', 'worker mission creation block', 'current.json write block', 'stdout transcript scan', 'stderr transcript scan', 'agent result scan', 'wrongness record']) {
118
- assertGate(guard.includes(token), `non-recursive policy contract missing ${token}`);
119
- }
120
- assertGate(docs.includes('Non-Recursive Pipeline Policy Report'), 'non-recursive policy docs section missing');
121
- assertGate(orchestrator.includes('writeAgentRecursionGuardReport'), 'orchestrator must detect recursion attempts');
122
- assertGate(hooks.includes('agentWorkerHookRecursionDecision') && hooks.includes('scanAgentTextForRecursion'), 'Codex PreToolUse hook must integrate agent recursion guard');
123
- }
124
- function assertCentralLedger() {
125
- const ledger = text('src/core/agents/agent-central-ledger.ts');
126
- const schemas = text('src/core/agents/agent-ledger-schemas.ts');
127
- for (const token of ['agent-events.jsonl', 'agent-sessions.json', 'agent-roster.json', 'agent-task-board.json', 'agent-task-board.md', 'agent-messages.jsonl', 'agent-handoffs.jsonl', 'agent-leases.json', 'agent-conflict-graph.json', 'agent-consensus.json', 'agent-proof-evidence.json', 'current_hash', 'previous_hash']) {
128
- assertGate(ledger.includes(token), `central ledger missing ${token}`);
129
- }
130
- for (const token of ['sks.agent-event.v1', 'sks.agent-message.v1', 'sks.agent-task-board.v1', 'sks.agent-session-record.v1', 'sks.agent-lease-ledger.v1', 'sks.agent-conflict-graph.v1', 'sks.agent-consensus.v1', 'sks.agent-proof-evidence.v1', 'sks.agent-cleanup.v1', 'sks.agent-non-recursive-pipeline.v1', 'additionalProperties: false', 'validateJsonSchemaRecursive']) {
131
- assertGate(schemas.includes(token), `central ledger schema registry missing ${token}`);
132
- }
133
- for (const token of ['validateAgentLedgerWriteScope', 'agent_cannot_modify_other_session_record', 'agent_cannot_modify_orchestrator_only_file']) {
134
- assertGate(ledger.includes(token), `central ledger write-scope policy missing ${token}`);
135
- }
136
- const lifecycle = text('src/core/agents/agent-lifecycle.ts');
137
- for (const token of ['agent-lifecycle-policy.json', 'agent-lifecycle-aggregate.json', 'agent-timeout-kill-report.json', 'killTimedOutAgentSessions', 'agentHardTimeoutMs', 'SKS_AGENT_HARD_TIMEOUT_MS', 'sks.agent-session-record.v1']) {
138
- assertGate(lifecycle.includes(token), `agent lifecycle missing ${token}`);
139
- }
140
- }
141
- function assertWorkPartition() {
142
- assertFiles(workPartitionFiles);
143
- const partition = text('src/core/agents/agent-work-partition.ts');
144
- for (const token of ['inventory', 'dependency', 'semantic', 'lease', 'conflict', 'no_overlap_proof']) {
145
- assertGate(partition.includes(token), `work partition missing ${token}`);
146
- }
147
- }
148
- function assertOutputSchema() {
149
- const schema = JSON.parse(text('schemas/codex/agent-result.schema.json'));
150
- assertGate(schema.additionalProperties === false, 'agent result schema must close additionalProperties');
151
- for (const key of ['mission_id', 'agent_id', 'session_id', 'persona_id', 'task_slice_id', 'status', 'summary', 'findings', 'proposed_changes', 'changed_files', 'lease_compliance', 'recursion_guard', 'verification', 'blockers', 'confidence', 'handoff_notes']) {
152
- assertGate(schema.required.includes(key), `agent result schema missing required ${key}`);
153
- }
154
- const validator = text('src/core/agents/agent-output-validator.ts');
155
- const worker = text('src/core/agents/agent-worker-pipeline.ts');
156
- assertGate(validator.includes('validateJsonSchemaRecursive'), 'agent output schema must use recursive validator');
157
- assertGate(worker.includes('schema_invalid:'), 'agent output invalid result must block proof');
158
- }
159
- function assertProofAndTrustArtifacts() {
160
- const proof = text('src/core/agents/agent-proof-evidence.ts');
161
- const orchestrator = text('src/core/agents/agent-orchestrator.ts');
162
- const writers = {
163
- 'agent-cleanup.json': 'writeAgentCleanupReport',
164
- 'agent-trust-report.json': 'writeAgentTrustReport',
165
- 'agent-wrongness-records.json': 'writeAgentWrongnessRecords',
166
- 'agent-output-tails.json': 'writeAgentOutputTailReport',
167
- 'agent-timeout-kill-report.json': 'killTimedOutAgentSessions'
168
- };
169
- for (const [token, writer] of Object.entries(writers)) {
170
- assertGate(proof.includes(token), `agent proof missing ${token}`);
171
- assertGate(orchestrator.includes(writer), `agent orchestrator does not write ${token}`);
172
- }
173
- }
174
- function assertPersonaAndCaps() {
175
- const persona = text('src/core/agents/agent-persona.ts');
176
- const roster = text('src/core/agents/agent-roster.ts');
177
- const schema = text('src/core/agents/agent-schema.ts');
178
- for (const role of ['architect', 'implementer', 'verifier', 'safety', 'integrator']) {
179
- assertGate(persona.includes(role), `default persona missing ${role}`);
180
- }
181
- assertGate(schema.includes('DEFAULT_AGENT_COUNT = 5'), 'default agent count must be 5');
182
- assertGate(schema.includes('MAX_AGENT_COUNT = 20'), 'max agent count must be 20');
183
- assertGate(roster.includes('validatePersonaUniqueness'), 'persona uniqueness must be validated');
184
- assertGate(roster.includes('buildAgentEffortPolicy') && text('src/core/agents/agent-effort-policy.ts').includes('escalation_triggers'), 'agent effort policy must be dynamic and recorded');
185
- assertGate(roster.includes('exceeds max'), 'agent max cap must block overflow');
186
- }
187
- function assertReleaseScripts() {
188
- const required = [
189
- 'agent:non-recursive-pipeline',
190
- 'agent:non-recursive-pipeline-report',
191
- 'agent:legacy-multiagent-removed',
192
- 'agent:central-ledger',
193
- 'agent:work-partition',
194
- 'agent:no-overlap-proof',
195
- 'agent:persona-uniqueness',
196
- 'agent:max-cap',
197
- 'agent:fake-backend-blackbox',
198
- 'agent:lifecycle-close',
199
- 'agent:output-schema',
200
- 'agent:lease-conflicts',
201
- 'agent:proof-graph',
202
- 'team:native-agent-backend',
203
- 'research:native-agent-backend',
204
- 'qa:native-agent-backend'
205
- ];
206
- for (const name of required) {
207
- assertGate(Boolean(pkg.scripts?.[name]), `package script missing ${name}`);
208
- }
209
- const releaseCheck = String(pkg.scripts?.['release:check'] || '');
210
- const affectedReleaseCheck = String(pkg.scripts?.['release:check:affected'] || '');
211
- const delegatesToParallel = releaseCheck.includes('release:check:parallel');
212
- const delegatesToAffectedDag = releaseCheck.includes('release:check:affected')
213
- && affectedReleaseCheck.includes('release-gate-dag-runner')
214
- && /--preset\s+affected/.test(affectedReleaseCheck);
215
- const delegatesDirectlyToDag = releaseCheck.includes('release-gate-dag-runner')
216
- && /--preset\s+(?:release|affected)/.test(releaseCheck);
217
- assertGate(delegatesToParallel || delegatesToAffectedDag || delegatesDirectlyToDag, 'release:check must delegate to the parallel P0 DAG or v2 affected/release DAG', { release_check: releaseCheck, release_check_affected: affectedReleaseCheck });
218
- }
219
- function assertRouteNativeBlackbox(routeName) {
220
- const routeFixtureArgs = ['--agents', '5', '--work-items', '8', '--target-active-slots', '5', '--minimum-work-items', '5', '--max-queue-expansion', '10', '--mock', '--json'];
221
- if (routeName === 'team') {
222
- const result = runSksJson(['team', 'native backend fixture', ...routeFixtureArgs, '--no-open-zellij']);
223
- assertGate(result.mock === true, 'Team mock blackbox did not execute', result);
224
- assertGate(result.native_agent_run?.proof?.ok === true, 'Team blackbox missing native agent proof', result.native_agent_run?.proof);
225
- assertGate(!JSON.stringify(result).includes('analysis_scout'), 'Team runtime artifact leaked legacy analysis_scout');
226
- }
227
- if (routeName === 'research') {
228
- const prepared = runSksJson(['research', 'prepare', 'native backend fixture', '--json']);
229
- const result = runSksJson(['research', 'run', prepared.mission_id, ...routeFixtureArgs, '--native-proof-only']);
230
- assertGate(result.ok === true, 'Research mock blackbox did not pass', result);
231
- assertGate(result.gate?.gate?.native_agent_proof === true || result.gate?.native_agent_proof === true || result.proof?.ok === true, 'Research proof missing native agent evidence artifact', result);
232
- assertGate(!JSON.stringify(result).includes('scout-ledger'), 'Research runtime artifact leaked scout-ledger as SSOT');
233
- }
234
- if (routeName === 'qa') {
235
- const prepared = runSksJson(['qa-loop', 'prepare', 'native backend API fixture', '--json']);
236
- const result = runSksJson(['qa-loop', 'run', prepared.mission_id, ...routeFixtureArgs, '--native-proof-only']);
237
- assertGate(result.ok === true, 'QA mock blackbox did not pass', result);
238
- assertGate(result.gate?.gate?.native_agent_proof === true || result.gate?.native_agent_proof === true || result.proof?.ok === true, 'QA proof missing native agent evidence artifact', result);
239
- }
240
- }
241
- function assertBlackboxAgent() {
242
- const result = runSksJson(['agent', 'run', 'fixture', '--mock', '--json']);
243
- assertGate(result.ok === true, 'fake agent blackbox run failed', result);
244
- assertGate(result.proof?.fake_backend_disclaimer, 'fake backend disclaimer missing', result.proof);
245
- assertGate(result.proof?.all_sessions_closed === true, 'agent lifecycle close proof missing', result.proof);
246
- assertGate(result.proof?.no_overlap_ok === true, 'agent no-overlap proof missing', result.proof);
247
- assertGate(result.proof?.ledger_hash_chain_ok === true, 'agent ledger hash proof missing', result.proof);
248
- }
249
- assertAgentSurface();
250
- assertReleaseScripts();
251
- if (gate.includes('legacy-multiagent') || gate === 'team-native-agent-backend' || gate === 'research-native-agent-backend' || gate === 'qa-native-agent-backend')
252
- assertLegacyMultiagentRemoved();
253
- if (gate === 'team-native-agent-backend')
254
- assertRouteNativeBlackbox('team');
255
- if (gate === 'research-native-agent-backend')
256
- assertRouteNativeBlackbox('research');
257
- if (gate === 'qa-native-agent-backend')
258
- assertRouteNativeBlackbox('qa');
259
- if (gate.includes('non-recursive'))
260
- assertNonRecursive();
261
- if (gate.includes('central-ledger'))
262
- assertCentralLedger();
263
- if (gate.includes('work-partition') || gate.includes('no-overlap') || gate.includes('lease-conflicts'))
264
- assertWorkPartition();
265
- if (gate.includes('persona') || gate.includes('max-cap'))
266
- assertPersonaAndCaps();
267
- if (gate.includes('output-schema'))
268
- assertOutputSchema();
269
- if (gate.includes('proof-graph') || gate.includes('lifecycle-close') || gate.includes('lease-conflicts'))
270
- assertProofAndTrustArtifacts();
271
- if (gate.includes('fake-backend') || gate.includes('lifecycle-close') || gate.includes('proof-graph') || gate.includes('no-overlap') || gate.includes('lease-conflicts'))
272
- assertBlackboxAgent();
273
- emitGate(gate, { version: pkg.version, native_agent_kernel: true });
274
- //# sourceMappingURL=agent-native-release-gate.js.map
@@ -1,21 +0,0 @@
1
- #!/usr/bin/env node
2
- import { assertGate, emitGate } from './sks-1-18-gate-lib.js';
3
- import { CODEX_0142_FEATURE_KEYS, detectCodex0142Capability, writeCodex0142CapabilityArtifacts } from '../core/codex-control/codex-0142-capability.js';
4
- const requireReal = process.argv.includes('--require-real') || process.env.SKS_REQUIRE_CODEX_0142 === '1';
5
- if (!requireReal)
6
- process.env.SKS_CODEX_0142_FAKE = '1';
7
- const cap = await detectCodex0142Capability({ requireReal });
8
- assertGate(cap.ok === true, 'Codex 0.142 capability probe must pass', cap);
9
- assertGate(Object.keys(cap.feature_states).length === CODEX_0142_FEATURE_KEYS.length, 'Codex 0.142 feature count mismatch', cap);
10
- assertGate(Object.values(cap.feature_states).every((state) => String(state.certainty) !== 'assumed_by_version'), 'Codex 0.142 capability must not use assumed_by_version evidence', cap);
11
- if (requireReal) {
12
- assertGate(cap.probe_mode === 'real-schema', 'Codex 0.142 require-real must use generated schema evidence', cap);
13
- assertGate(cap.release_authorizing === true, 'Codex 0.142 require-real must be release-authorizing', cap);
14
- await writeCodex0142CapabilityArtifacts(process.cwd(), { requireReal: true });
15
- }
16
- emitGate('codex:0142-capability', {
17
- features: CODEX_0142_FEATURE_KEYS.length,
18
- probe_mode: cap.probe_mode,
19
- release_authorizing: cap.release_authorizing
20
- });
21
- //# sourceMappingURL=codex-0142-capability-check.js.map
@@ -1,14 +0,0 @@
1
- #!/usr/bin/env node
2
- // @ts-nocheck
3
- import { assertGate, emitGate, importDist } from './sks-1-18-gate-lib.js';
4
- const mod = await importDist('core/codex-control/codex-reliability-shield.js');
5
- const repaired = mod.repairToolCallSequence([
6
- { type: 'thread.started' },
7
- { type: 'item.completed', item: { id: 'call-1', type: 'mcp_tool_call', tool: 'fixture' } },
8
- { type: 'item.completed', item: { id: 'call-2', type: 'mcp_tool_call', tool: 'fixture' } },
9
- { type: 'tool_result.completed', item: { tool_call_id: 'call-1', type: 'tool_result', text: 'ok' } }
10
- ]);
11
- assertGate(repaired.repairedToolResultCount === 1, 'one missing parallel tool result must be repaired', repaired);
12
- assertGate(repaired.events.some((event) => event.type === 'tool_result.stubbed' && event.item?.tool_call_id === 'call-2'), 'missing tool result stub not found', repaired);
13
- emitGate('codex-control:tool-call-sequence-repair', { repaired_tool_result_count: repaired.repairedToolResultCount });
14
- //# sourceMappingURL=codex-control-tool-call-sequence-repair-check.js.map
@@ -1,204 +0,0 @@
1
- #!/usr/bin/env node
2
- // @ts-nocheck
3
- import fs from 'node:fs';
4
- import path from 'node:path';
5
- import { performance } from 'node:perf_hooks';
6
- import { fileURLToPath } from 'node:url';
7
- import { assertGate, emitGate, importDist, root } from './sks-1-18-gate-lib.js';
8
- import { runProcess } from '../core/fsx.js';
9
- export const CRITICAL_COMMANDS = new Set([
10
- 'doctor',
11
- 'setup',
12
- 'bootstrap',
13
- 'update',
14
- 'run',
15
- 'naruto',
16
- 'super-search',
17
- 'seo-geo-optimizer',
18
- 'db',
19
- 'mad-sks',
20
- 'qa-loop',
21
- 'review',
22
- 'release',
23
- 'rollback',
24
- 'commit-and-push'
25
- ]);
26
- export const COMMAND_SMOKE_MAX_AGE_MS = 60 * 60 * 1000;
27
- export const smokeCommands = [
28
- { name: 'version', argv: ['--version'], budget_p95_ms: 120 },
29
- { name: 'commands', argv: ['commands', '--json'], budget_p95_ms: 200 },
30
- { name: 'root', argv: ['root', '--json'], budget_p95_ms: 150 },
31
- { name: 'dollar-commands', argv: ['dollar-commands', '--json'], budget_p95_ms: 220 },
32
- { name: 'super-search', argv: ['super-search', 'doctor', '--json'], budget_p95_ms: 180 },
33
- { name: 'doctor', argv: ['doctor', '--json'], budget_p95_ms: 1200 },
34
- { name: 'setup', budget_p95_ms: 0, kind: 'fixture', evidence: 'setup_dry_run_contract' },
35
- { name: 'bootstrap', budget_p95_ms: 0, kind: 'fixture', evidence: 'bootstrap_fixture_contract' },
36
- { name: 'update', budget_p95_ms: 0, kind: 'fixture', evidence: 'update_now_dry_run_contract' },
37
- { name: 'run', budget_p95_ms: 0, kind: 'fixture', evidence: 'run_route_classification_fixture' },
38
- { name: 'naruto', budget_p95_ms: 0, kind: 'fixture', evidence: 'naruto_route_fixture' },
39
- { name: 'seo-geo-optimizer', budget_p95_ms: 0, kind: 'fixture', evidence: 'seo_geo_optimizer_fixture' },
40
- { name: 'db', budget_p95_ms: 0, kind: 'blocked_negative', evidence: 'db_destructive_sql_block_contract' },
41
- { name: 'mad-sks', budget_p95_ms: 0, kind: 'blocked_negative', evidence: 'mad_sks_restore_and_readback_contract' },
42
- { name: 'qa-loop', budget_p95_ms: 0, kind: 'fixture', evidence: 'qa_loop_route_fixture' },
43
- { name: 'review', budget_p95_ms: 0, kind: 'fixture', evidence: 'review_diff_fixture' },
44
- { name: 'release', budget_p95_ms: 0, kind: 'fixture', evidence: 'release_gate_fixture' },
45
- { name: 'rollback', budget_p95_ms: 0, kind: 'blocked_negative', evidence: 'rollback_apply_requires_id_contract' },
46
- { name: 'commit-and-push', budget_p95_ms: 0, kind: 'blocked_negative', evidence: 'commit_and_push_remote_contract' }
47
- ];
48
- if (isMainModule())
49
- await main();
50
- export async function main() {
51
- const { COMMAND_MANIFEST_LITE } = await importDist('cli/command-manifest-lite.js');
52
- const timings = [];
53
- for (const smoke of smokeCommands)
54
- timings.push(await measure(smoke));
55
- const timingByName = new Map(timings.map((row) => [row.name, row]));
56
- const entries = COMMAND_MANIFEST_LITE.filter((entry) => entry.hidden !== true);
57
- const rows = entries.map((entry) => scoreEntry(entry, timingByName.get(entry.name)));
58
- const average = rows.reduce((sum, row) => sum + row.score, 0) / Math.max(1, rows.length);
59
- const blockers = [
60
- ...rows.filter((row) => row.critical && row.score === 0).map((row) => `${row.name}:critical_smoke_missing_or_failed`),
61
- ...(average >= 94 ? [] : [`average_below_94:${average.toFixed(2)}`])
62
- ];
63
- const report = {
64
- schema: 'sks.command-performance-scorecard.v1',
65
- ok: blockers.length === 0,
66
- generated_at: new Date().toISOString(),
67
- average_score: Number(average.toFixed(2)),
68
- command_count: rows.length,
69
- timings,
70
- rows,
71
- blockers
72
- };
73
- const out = path.join(root, '.sneakoscope', 'reports', 'command-performance-scorecard.json');
74
- fs.mkdirSync(path.dirname(out), { recursive: true });
75
- fs.writeFileSync(out, `${JSON.stringify(report, null, 2)}\n`);
76
- assertGate(report.ok, 'command performance scorecard failed', report);
77
- emitGate('command:performance-scorecard', { average_score: report.average_score, command_count: rows.length, report: '.sneakoscope/reports/command-performance-scorecard.json' });
78
- }
79
- export function scoreEntry(entry, timing, options = {}) {
80
- const now = options.now ? new Date(options.now) : new Date();
81
- const critical = CRITICAL_COMMANDS.has(entry.name);
82
- const smokeStatus = classifySmoke(timing, now);
83
- if (critical && smokeStatus !== 'pass') {
84
- return { name: entry.name, maturity: entry.maturity, critical, score: 0, p95_ms: timing?.p95_ms ?? null, smoke: Boolean(timing), smoke_status: smokeStatus, evidence_tier: criticalCommandEvidenceTier(timing), summary: entry.summary };
85
- }
86
- const hasRunnableSurface = Boolean(timing || entry.summary || entry.readonly || entry.diagnostic || entry.skipMigrationGate || entry.mutatesRouteState);
87
- const p95Ok = timing ? (timing.kind === 'blocked_negative' ? timing.blocked === true : timing.ok === true) : true;
88
- const jsonContract = timing ? (timing.kind === 'blocked_negative' ? true : timing.json_contract !== false) : true;
89
- const failureSummary = Boolean(entry.summary);
90
- const installedReady = Array.isArray(entry.packageRequiredFiles)
91
- ? entry.packageRequiredFiles.every((file) => fs.existsSync(path.join(root, file)))
92
- : true;
93
- const lifecyclePenalty = (entry.hidden === true || entry.deprecated === true) && !entry.deprecationReason && !entry.hiddenReason ? 25 : 0;
94
- const score = (hasRunnableSurface ? 25 : 0) +
95
- (p95Ok ? 25 : 0) +
96
- (jsonContract ? 15 : 0) +
97
- (failureSummary ? 15 : 0) +
98
- (installedReady ? 20 : 0) -
99
- lifecyclePenalty;
100
- const cappedScore = critical ? Math.min(score, criticalCommandEvidenceMaxScore(timing)) : score;
101
- return { name: entry.name, maturity: entry.maturity, critical, score: Math.max(0, cappedScore), p95_ms: timing?.p95_ms ?? null, smoke: Boolean(timing), smoke_status: smokeStatus, evidence_tier: criticalCommandEvidenceTier(timing), summary: entry.summary };
102
- }
103
- export function criticalCommandEvidenceTier(timing) {
104
- if (!timing)
105
- return 'metadata';
106
- if (timing.kind === 'fixture')
107
- return 'fixture';
108
- if (timing.kind === 'blocked_negative')
109
- return 'blocked_negative';
110
- if (timing.kind === 'dry_run')
111
- return 'dry_run';
112
- return 'read_only';
113
- }
114
- export function criticalCommandEvidenceMaxScore(timing) {
115
- const tier = criticalCommandEvidenceTier(timing);
116
- if (tier === 'metadata')
117
- return 0;
118
- if (tier === 'fixture')
119
- return 70;
120
- if (tier === 'blocked_negative')
121
- return 90;
122
- return 100;
123
- }
124
- export function classifySmoke(timing, now = new Date()) {
125
- if (!timing)
126
- return 'missing';
127
- if (isSmokeStale(timing, now))
128
- return 'stale';
129
- if (timing.kind === 'blocked_negative')
130
- return timing.blocked === true && timing.ok !== true ? 'pass' : 'failed';
131
- return timing.ok === true ? 'pass' : 'failed';
132
- }
133
- export function isSmokeStale(timing, now = new Date()) {
134
- if (!timing.generated_at)
135
- return false;
136
- const generated = new Date(timing.generated_at).getTime();
137
- return !Number.isFinite(generated) || now.getTime() - generated > COMMAND_SMOKE_MAX_AGE_MS;
138
- }
139
- export async function measure(smoke) {
140
- if (smoke.kind === 'fixture') {
141
- return {
142
- name: smoke.name,
143
- kind: 'fixture',
144
- evidence: smoke.evidence,
145
- generated_at: new Date().toISOString(),
146
- p95_ms: 0,
147
- budget_p95_ms: smoke.budget_p95_ms,
148
- ok: true,
149
- blocked: false,
150
- exit_codes: [],
151
- json_contract: true
152
- };
153
- }
154
- if (smoke.kind === 'blocked_negative' && !smoke.argv) {
155
- return {
156
- name: smoke.name,
157
- kind: 'blocked_negative',
158
- evidence: smoke.evidence,
159
- generated_at: new Date().toISOString(),
160
- p95_ms: 0,
161
- budget_p95_ms: smoke.budget_p95_ms,
162
- ok: false,
163
- blocked: true,
164
- exit_codes: [],
165
- json_contract: false
166
- };
167
- }
168
- const durations = [];
169
- const exitCodes = [];
170
- let jsonContract = false;
171
- let blocked = false;
172
- for (let i = 0; i < 3; i++) {
173
- const started = performance.now();
174
- const result = await runProcess(process.execPath, [path.join(root, 'dist', 'bin', 'sks.js'), ...smoke.argv], {
175
- cwd: root,
176
- timeoutMs: 15_000,
177
- maxOutputBytes: 128 * 1024,
178
- env: { SKS_DISABLE_NETWORK: '1', SKS_DISABLE_UPDATE_CHECK: '1', SKS_PERF_MEASURE: '1' }
179
- });
180
- durations.push(Math.round(performance.now() - started));
181
- exitCodes.push(result.code);
182
- jsonContract ||= smoke.argv.includes('--json') ? parsesJson(result.stdout) : String(result.stdout || '').trim().length > 0;
183
- blocked ||= result.code !== 0 && /block|required|missing|denied|explicit/i.test(`${result.stdout || ''}\n${result.stderr || ''}`);
184
- }
185
- durations.sort((a, b) => a - b);
186
- const p95 = durations[Math.min(durations.length - 1, Math.ceil(durations.length * 0.95) - 1)] || 0;
187
- const ok = smoke.kind === 'blocked_negative'
188
- ? false
189
- : p95 <= smoke.budget_p95_ms && exitCodes.every((code) => code === 0);
190
- return { name: smoke.name, kind: smoke.kind || 'read_only', generated_at: new Date().toISOString(), p95_ms: p95, budget_p95_ms: smoke.budget_p95_ms, ok, blocked, exit_codes: exitCodes, json_contract: jsonContract };
191
- }
192
- function parsesJson(value) {
193
- try {
194
- JSON.parse(String(value || ''));
195
- return true;
196
- }
197
- catch {
198
- return false;
199
- }
200
- }
201
- function isMainModule() {
202
- return process.argv[1] && fileURLToPath(import.meta.url) === path.resolve(process.argv[1]);
203
- }
204
- //# sourceMappingURL=command-performance-scorecard-check.js.map