sneakoscope 4.8.6 → 5.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 (390) hide show
  1. package/README.md +51 -726
  2. package/bench/tasks/t01-off-by-one/repo/package.json +9 -0
  3. package/bench/tasks/t01-off-by-one/repo/src/pagination.js +5 -0
  4. package/bench/tasks/t01-off-by-one/repo/test.js +5 -0
  5. package/bench/tasks/t01-off-by-one/task.json +13 -0
  6. package/bench/tasks/t02-signature-cochange/repo/package.json +9 -0
  7. package/bench/tasks/t02-signature-cochange/repo/src/admin.js +5 -0
  8. package/bench/tasks/t02-signature-cochange/repo/src/audit.js +5 -0
  9. package/bench/tasks/t02-signature-cochange/repo/src/labels.js +3 -0
  10. package/bench/tasks/t02-signature-cochange/repo/src/profile.js +5 -0
  11. package/bench/tasks/t02-signature-cochange/repo/test.js +9 -0
  12. package/bench/tasks/t02-signature-cochange/task.json +12 -0
  13. package/bench/tasks/t03-type-puzzle/repo/package.json +9 -0
  14. package/bench/tasks/t03-type-puzzle/repo/src/config.js +4 -0
  15. package/bench/tasks/t03-type-puzzle/repo/test.js +6 -0
  16. package/bench/tasks/t03-type-puzzle/task.json +13 -0
  17. package/bench/tasks/t04-refactor-preserve/repo/package.json +9 -0
  18. package/bench/tasks/t04-refactor-preserve/repo/src/cart.js +8 -0
  19. package/bench/tasks/t04-refactor-preserve/repo/test.js +4 -0
  20. package/bench/tasks/t04-refactor-preserve/task.json +12 -0
  21. package/bench/tasks/t05-performance/repo/package.json +9 -0
  22. package/bench/tasks/t05-performance/repo/src/pairs.js +9 -0
  23. package/bench/tasks/t05-performance/repo/test.js +11 -0
  24. package/bench/tasks/t05-performance/task.json +12 -0
  25. package/bench/tasks/t06-mistake-rule/repo/package.json +9 -0
  26. package/bench/tasks/t06-mistake-rule/repo/src/loader.js +6 -0
  27. package/bench/tasks/t06-mistake-rule/repo/test.js +7 -0
  28. package/bench/tasks/t06-mistake-rule/task.json +12 -0
  29. package/config/bench-baseline.json +7 -0
  30. package/crates/sks-core/Cargo.lock +1 -1
  31. package/crates/sks-core/Cargo.toml +1 -1
  32. package/crates/sks-core/src/main.rs +1 -1
  33. package/dist/bin/install.js +35 -0
  34. package/dist/bin/sks.js +1 -1
  35. package/dist/cli/cli-theme.js +51 -0
  36. package/dist/cli/command-registry.js +75 -42
  37. package/dist/cli/help-fast.js +18 -8
  38. package/dist/cli/insane-search-command.js +36 -8
  39. package/dist/cli/install-helpers.js +147 -47
  40. package/dist/cli/router.js +58 -2
  41. package/dist/commands/codex-lb.js +6 -4
  42. package/dist/commands/doctor.js +146 -8
  43. package/dist/commands/proof.js +6 -3
  44. package/dist/commands/zellij-monitor-pane.js +25 -0
  45. package/dist/commands/zellij-slot-pane.js +39 -2
  46. package/dist/commands/zellij-viewport-pane.js +56 -0
  47. package/dist/commands/zellij.js +55 -2
  48. package/dist/config/skills-manifest.json +493 -0
  49. package/dist/core/agents/agent-conflict-graph.js +5 -0
  50. package/dist/core/agents/agent-lease.js +5 -0
  51. package/dist/core/agents/agent-ledger-schemas.js +1 -0
  52. package/dist/core/agents/agent-lifecycle.js +86 -35
  53. package/dist/core/agents/agent-orchestrator.js +287 -72
  54. package/dist/core/agents/agent-output-validator.js +14 -3
  55. package/dist/core/agents/agent-patch-queue-store.js +108 -4
  56. package/dist/core/agents/agent-patch-queue.js +10 -3
  57. package/dist/core/agents/agent-patch-schema.js +13 -0
  58. package/dist/core/agents/agent-proof-evidence.js +6 -1
  59. package/dist/core/agents/agent-runner-fake.js +40 -0
  60. package/dist/core/agents/agent-scheduler.js +2 -3
  61. package/dist/core/agents/agent-worker-pipeline.js +36 -2
  62. package/dist/core/agents/codex-exec-worker-adapter.js +2 -0
  63. package/dist/core/agents/native-cli-session-swarm.js +30 -13
  64. package/dist/core/agents/native-cli-worker.js +2 -1
  65. package/dist/core/agents/native-worker-backend-router.js +58 -1
  66. package/dist/core/auto-review.js +25 -4
  67. package/dist/core/codex/agent-config-file-repair.js +15 -2
  68. package/dist/core/codex/codex-config-eperm-repair.js +8 -2
  69. package/dist/core/codex/codex-config-guard.js +289 -0
  70. package/dist/core/codex/codex-config-toml.js +122 -0
  71. package/dist/core/codex/codex-project-config-policy.js +59 -7
  72. package/dist/core/codex-app/sks-menubar.js +780 -122
  73. package/dist/core/codex-app.js +1 -0
  74. package/dist/core/codex-control/codex-fake-sdk-adapter.js +6 -4
  75. package/dist/core/codex-control/codex-sdk-config-policy.js +2 -1
  76. package/dist/core/codex-control/codex-sdk-env-policy.js +1 -1
  77. package/dist/core/codex-control/codex-task-runner.js +32 -14
  78. package/dist/core/codex-control/python-codex-sdk-adapter.js +4 -1
  79. package/dist/core/codex-control/schemas/agent-worker-result.schema.js +12 -3
  80. package/dist/core/codex-hooks/codex-hook-managed-install.js +5 -0
  81. package/dist/core/codex-hooks/codex-hook-state-writer.js +70 -11
  82. package/dist/core/codex-hooks/codex-hook-trust-doctor.js +2 -2
  83. package/dist/core/codex-lb/codex-lb-env.js +20 -1
  84. package/dist/core/codex-lb/codex-lb-setup.js +2 -5
  85. package/dist/core/codex-native/skill-registry-ledger.js +24 -5
  86. package/dist/core/commands/basic-cli.js +21 -2
  87. package/dist/core/commands/check-command.js +37 -5
  88. package/dist/core/commands/command-utils.js +22 -2
  89. package/dist/core/commands/computer-use-command.js +62 -7
  90. package/dist/core/commands/db-command.js +31 -5
  91. package/dist/core/commands/fast-mode-command.js +39 -11
  92. package/dist/core/commands/gate-result-contract.js +43 -0
  93. package/dist/core/commands/gates-command.js +6 -1
  94. package/dist/core/commands/gc-command.js +29 -2
  95. package/dist/core/commands/goal-command.js +9 -2
  96. package/dist/core/commands/gx-command.js +79 -7
  97. package/dist/core/commands/image-ux-review-command.js +188 -13
  98. package/dist/core/commands/mad-db-command.js +85 -176
  99. package/dist/core/commands/mad-sks-command.js +248 -34
  100. package/dist/core/commands/menubar-command.js +146 -0
  101. package/dist/core/commands/naruto-command.js +64 -10
  102. package/dist/core/commands/pipeline-command.js +21 -2
  103. package/dist/core/commands/plan-command.js +76 -0
  104. package/dist/core/commands/ppt-command.js +159 -24
  105. package/dist/core/commands/qa-loop-command.js +6 -2
  106. package/dist/core/commands/release-command.js +55 -2
  107. package/dist/core/commands/research-command.js +1 -1
  108. package/dist/core/commands/review-command.js +217 -0
  109. package/dist/core/commands/route-command.js +62 -0
  110. package/dist/core/commands/route-success-helpers.js +59 -0
  111. package/dist/core/commands/run-command.js +19 -7
  112. package/dist/core/commands/seo-command.js +49 -1
  113. package/dist/core/commands/status-command.js +21 -1
  114. package/dist/core/commands/team-legacy-observe-command.js +221 -3
  115. package/dist/core/commands/ui-command.js +161 -0
  116. package/dist/core/commands/uninstall-command.js +312 -0
  117. package/dist/core/db-safety.js +7 -3
  118. package/dist/core/doctor/codex-startup-config-repair.js +14 -3
  119. package/dist/core/doctor/confirm-repair.js +27 -0
  120. package/dist/core/doctor/context7-mcp-repair.js +35 -7
  121. package/dist/core/doctor/doctor-codex-startup-repair.js +10 -3
  122. package/dist/core/doctor/doctor-context7-repair.js +17 -4
  123. package/dist/core/doctor/doctor-dirty-planner.js +27 -9
  124. package/dist/core/doctor/doctor-native-capability-repair.js +12 -2
  125. package/dist/core/doctor/doctor-readiness-matrix.js +27 -2
  126. package/dist/core/doctor/doctor-repair-postcheck.js +4 -0
  127. package/dist/core/doctor/doctor-transaction.js +21 -5
  128. package/dist/core/doctor/doctor-zellij-repair.js +1 -0
  129. package/dist/core/doctor/imagegen-repair.js +161 -0
  130. package/dist/core/doctor/supabase-mcp-repair.js +23 -5
  131. package/dist/core/feature-fixture-runner.js +2 -2
  132. package/dist/core/feature-fixtures.js +65 -37
  133. package/dist/core/feature-registry.js +106 -3
  134. package/dist/core/fsx.js +91 -2
  135. package/dist/core/hooks-runtime/skill-reconcile-preflight.js +43 -0
  136. package/dist/core/hooks-runtime.js +86 -46
  137. package/dist/core/image-ux-review/imagegen-adapter.js +48 -11
  138. package/dist/core/image-ux-review.js +16 -0
  139. package/dist/core/imagegen/imagegen-capability.js +11 -5
  140. package/dist/core/imagegen/require-imagegen.js +57 -0
  141. package/dist/core/init/skills.js +271 -14
  142. package/dist/core/init.js +13 -10
  143. package/dist/core/mad-db/mad-db-coordinator.js +96 -20
  144. package/dist/core/mad-db/mad-db-policy.js +12 -10
  145. package/dist/core/mad-sks/executors/executor-base.js +8 -2
  146. package/dist/core/mad-sks/executors/index.js +4 -0
  147. package/dist/core/mad-sks/executors/sql-plane-executor.js +194 -0
  148. package/dist/core/mission.js +138 -5
  149. package/dist/core/naruto/naruto-active-pool.js +84 -30
  150. package/dist/core/naruto/naruto-backpressure.js +5 -1
  151. package/dist/core/naruto/naruto-real-worker-child.js +10 -0
  152. package/dist/core/naruto/naruto-real-worker-runtime.js +9 -7
  153. package/dist/core/naruto/naruto-role-policy.js +3 -0
  154. package/dist/core/naruto/naruto-task-hints.js +10 -0
  155. package/dist/core/naruto/naruto-work-graph.js +8 -2
  156. package/dist/core/naruto/naruto-work-item.js +6 -0
  157. package/dist/core/naruto/resource-pressure-monitor.js +33 -15
  158. package/dist/core/naruto/solution-tournament.js +101 -0
  159. package/dist/core/permission-gates.js +30 -0
  160. package/dist/core/pipeline-internals/runtime-core.js +72 -222
  161. package/dist/core/pipeline-internals/runtime-gates.js +140 -24
  162. package/dist/core/ppt-review/index.js +6 -1
  163. package/dist/core/ppt-review/slide-imagegen-review.js +75 -10
  164. package/dist/core/ppt.js +70 -2
  165. package/dist/core/proof/auto-finalize.js +70 -11
  166. package/dist/core/proof/proof-schema.js +2 -0
  167. package/dist/core/proof/route-adapter.js +5 -1
  168. package/dist/core/proof/route-finalizer.js +8 -5
  169. package/dist/core/proof/selftest-proof-fixtures.js +18 -5
  170. package/dist/core/proof/validation.js +2 -0
  171. package/dist/core/provider/model-router.js +53 -0
  172. package/dist/core/questions.js +1 -1
  173. package/dist/core/recallpulse.js +1 -1
  174. package/dist/core/release/gate-manifest.js +2 -2
  175. package/dist/core/release/release-gate-affected-selector.js +3 -10
  176. package/dist/core/release/release-gate-batch-runner.js +4 -2
  177. package/dist/core/release/release-gate-cache-v2.js +27 -14
  178. package/dist/core/release/release-gate-dag.js +6 -1
  179. package/dist/core/release/release-gate-hermetic-env.js +10 -0
  180. package/dist/core/release/release-gate-node.js +3 -0
  181. package/dist/core/release/release-gate-resource-governor.js +1 -0
  182. package/dist/core/retention.js +89 -4
  183. package/dist/core/routes/constants.js +1 -1
  184. package/dist/core/routes/diagnostic-allowlist.js +55 -0
  185. package/dist/core/routes.js +83 -33
  186. package/dist/core/safety/mutation-guard.js +5 -1
  187. package/dist/core/skill-forge.js +9 -4
  188. package/dist/core/stop-gate/gate-evaluator.js +102 -0
  189. package/dist/core/stop-gate/stop-gate-check.js +26 -4
  190. package/dist/core/stop-gate/stop-gate-resolver.js +19 -3
  191. package/dist/core/stop-gate/stop-gate-writer.js +20 -1
  192. package/dist/core/team-dag.js +12 -465
  193. package/dist/core/team-dashboard-renderer.js +13 -94
  194. package/dist/core/team-live.js +68 -804
  195. package/dist/core/triwiki/agents-md-projector.js +184 -0
  196. package/dist/core/triwiki-wrongness/wrongness-schema.js +3 -1
  197. package/dist/core/trust-kernel/trust-kernel-schema.js +1 -0
  198. package/dist/core/trust-kernel/trust-report.js +1 -1
  199. package/dist/core/trust-kernel/trust-status.js +2 -0
  200. package/dist/core/ui/dashboard-html.js +111 -0
  201. package/dist/core/update/update-migration-state.js +383 -42
  202. package/dist/core/update-check.js +201 -78
  203. package/dist/core/verification/diff-quality.js +100 -0
  204. package/dist/core/verification/impact-scan.js +164 -0
  205. package/dist/core/verification/machine-feedback.js +146 -0
  206. package/dist/core/verification/mistake-rule-compiler.js +195 -0
  207. package/dist/core/version.js +1 -1
  208. package/dist/core/zellij/zellij-layout-builder.js +44 -16
  209. package/dist/core/zellij/zellij-monitor-renderer.js +53 -0
  210. package/dist/core/zellij/zellij-self-heal.js +27 -32
  211. package/dist/core/zellij/zellij-slot-pane-renderer.js +162 -153
  212. package/dist/core/zellij/zellij-slot-telemetry.js +2 -0
  213. package/dist/core/zellij/zellij-theme.js +67 -0
  214. package/dist/core/zellij/zellij-ui-mode.js +16 -0
  215. package/dist/core/zellij/zellij-viewport-binder.js +59 -0
  216. package/dist/core/zellij/zellij-worker-pane-manager.js +53 -5
  217. package/dist/scripts/agent-patch-swarm-gate-lib.js +2 -2
  218. package/dist/scripts/build-dist.js +8 -0
  219. package/dist/scripts/check-feature-quality.js +2 -2
  220. package/dist/scripts/cli-output-consistency-check.js +57 -0
  221. package/dist/scripts/codex-lb-fast-ui-preservation-check.js +106 -0
  222. package/dist/scripts/codex-lb-gpt55-fast-profile-check.js +105 -0
  223. package/dist/scripts/codex-lb-missing-env-regression.js +2 -3
  224. package/dist/scripts/codex-project-config-policy-merge-regression.js +3 -3
  225. package/dist/scripts/coding-bench-check.js +136 -0
  226. package/dist/scripts/concurrent-session-collision-check.js +67 -0
  227. package/dist/scripts/docs-truthfulness-check.js +1 -1
  228. package/dist/scripts/doctor-imagegen-repair-check.js +62 -0
  229. package/dist/scripts/ensure-bin-executable.js +11 -3
  230. package/dist/scripts/gate-policy-audit-check.js +130 -0
  231. package/dist/scripts/harness-benchmark-check.js +104 -0
  232. package/dist/scripts/hook-latency-budget-check.js +45 -0
  233. package/dist/scripts/legacy-update-e2e-check.js +228 -0
  234. package/dist/scripts/lib/codex-sdk-gate-lib.js +2 -2
  235. package/dist/scripts/lib/real-codex-parallel-gate.js +2 -2
  236. package/dist/scripts/loop-directive-check-lib.js +1 -1
  237. package/dist/scripts/mad-db-command-check.js +11 -8
  238. package/dist/scripts/mad-db-real-supabase-e2e.js +2 -2
  239. package/dist/scripts/mad-db-route-identity-check.js +8 -6
  240. package/dist/scripts/mad-db-safety-conflict-matrix-check.js +31 -8
  241. package/dist/scripts/mad-db-skill-policy-snapshot-check.js +4 -5
  242. package/dist/scripts/mad-sks-zellij-default-pane-worker-check.js +3 -2
  243. package/dist/scripts/mad-sks-zellij-launch-check.js +1 -1
  244. package/dist/scripts/naruto-zellij-dynamic-right-column-check.js +7 -7
  245. package/dist/scripts/parallel-claim-enforcement-check.js +14 -5
  246. package/dist/scripts/ppt-real-imagegen-wiring-check.js +5 -1
  247. package/dist/scripts/project-skill-dedupe-check.js +23 -5
  248. package/dist/scripts/proof-root-cause-policy-check.js +2 -0
  249. package/dist/scripts/release-affected-selector-check.js +2 -2
  250. package/dist/scripts/release-cache-glob-hashing-check.js +1 -0
  251. package/dist/scripts/release-dag-full-coverage-check.js +13 -4
  252. package/dist/scripts/release-gate-dag-runner-check.js +10 -2
  253. package/dist/scripts/release-gate-dag-runner.js +22 -0
  254. package/dist/scripts/release-gate-existence-audit.js +2 -1
  255. package/dist/scripts/release-gate-planner.js +2 -1
  256. package/dist/scripts/release-gate-script-parity-check.js +1 -1
  257. package/dist/scripts/release-metadata-1-19-check.js +2 -1
  258. package/dist/scripts/release-readiness-report.js +38 -7
  259. package/dist/scripts/release-stability-report-check.js +12 -8
  260. package/dist/scripts/search-visibility-gate-lib.js +2 -2
  261. package/dist/scripts/seo-geo-feature-fixture-quality-check.js +1 -1
  262. package/dist/scripts/skills-manifest-continuity-check.js +46 -0
  263. package/dist/scripts/sks-1-11-gate-lib.js +8 -6
  264. package/dist/scripts/sks-menubar-install-check.js +87 -21
  265. package/dist/scripts/sks-uninstall-regression-check.js +54 -0
  266. package/dist/scripts/uninstall-inventory-check.js +3 -0
  267. package/dist/scripts/ux-review-real-loop-fixture-check.js +9 -4
  268. package/dist/scripts/ux-review-run-wires-imagegen-check.js +4 -0
  269. package/dist/scripts/zellij-layout-valid-check.js +18 -11
  270. package/dist/scripts/zellij-right-column-geometry-proof.js +2 -4
  271. package/dist/scripts/zellij-slot-pane-renderer-check.js +9 -9
  272. package/dist/scripts/zellij-slot-pane-stale-detection-check.js +3 -4
  273. package/dist/scripts/zellij-slot-pane-telemetry-renderer-check.js +3 -2
  274. package/dist/scripts/zellij-slot-telemetry-renderer-check.js +4 -2
  275. package/dist/scripts/zellij-spawn-on-demand-layout-check.js +8 -2
  276. package/dist/scripts/zellij-viewport-binder-check.js +9 -0
  277. package/docs/assets/sneakoscope-architecture-pipeline.jpg +0 -0
  278. package/docs/demo.tape +28 -0
  279. package/package.json +70 -3
  280. package/schemas/codex/completion-proof.schema.json +3 -2
  281. package/schemas/release/release-gate-node.schema.json +2 -1
  282. package/dist/scripts/agent-backfill-route-blackbox.js +0 -5
  283. package/dist/scripts/agent-dynamic-pool-route-blackbox.js +0 -5
  284. package/dist/scripts/agent-parallel-write-blackbox.js +0 -56
  285. package/dist/scripts/agent-patch-swarm-route-blackbox.js +0 -10
  286. package/dist/scripts/agent-route-blackbox-lib.js +0 -132
  287. package/dist/scripts/blackbox-command-import-smoke.js +0 -143
  288. package/dist/scripts/blackbox-global-shim.js +0 -77
  289. package/dist/scripts/blackbox-matrix.js +0 -70
  290. package/dist/scripts/blackbox-npx-one-shot.js +0 -69
  291. package/dist/scripts/blackbox-pack-install.js +0 -174
  292. package/dist/scripts/brand-neutrality-zero-leakage-blackbox.js +0 -4
  293. package/dist/scripts/build-once-runner-blackbox.js +0 -34
  294. package/dist/scripts/codex-0140-integration-blackbox.js +0 -13
  295. package/dist/scripts/codex-agent-type-blackbox.js +0 -4
  296. package/dist/scripts/codex-app-harness-blackbox.js +0 -4
  297. package/dist/scripts/codex-app-skill-agent-blackbox.js +0 -4
  298. package/dist/scripts/codex-hook-approval-blackbox.js +0 -4
  299. package/dist/scripts/codex-init-deep-directory-local-blackbox.js +0 -4
  300. package/dist/scripts/codex-native-feature-broker-blackbox.js +0 -4
  301. package/dist/scripts/codex-native-pattern-analysis-blackbox.js +0 -4
  302. package/dist/scripts/codex-native-read-repair-split-blackbox.js +0 -55
  303. package/dist/scripts/codex-native-reference-cache-blackbox.js +0 -41
  304. package/dist/scripts/core-skill-integrity-blackbox.js +0 -33
  305. package/dist/scripts/dfix-fast-blackbox-check.js +0 -37
  306. package/dist/scripts/dfix-parallel-write-blackbox.js +0 -48
  307. package/dist/scripts/dfix-patch-swarm-route-blackbox.js +0 -10
  308. package/dist/scripts/doctor-context7-mcp-repair-blackbox.js +0 -16
  309. package/dist/scripts/doctor-dirty-repair-blackbox.js +0 -22
  310. package/dist/scripts/doctor-dirty-semantic-blackbox.js +0 -8
  311. package/dist/scripts/doctor-fix-production-blackbox.js +0 -26
  312. package/dist/scripts/doctor-native-capability-repair-blackbox.js +0 -39
  313. package/dist/scripts/doctor-startup-config-repair-blackbox.js +0 -13
  314. package/dist/scripts/doctor-supabase-mcp-repair-blackbox.js +0 -14
  315. package/dist/scripts/doctor-transaction-engine-blackbox.js +0 -28
  316. package/dist/scripts/doctor-zellij-fix-blackbox.js +0 -4
  317. package/dist/scripts/doctor-zellij-no-homebrew-blackbox.js +0 -4
  318. package/dist/scripts/doctor-zellij-upgrade-blackbox.js +0 -4
  319. package/dist/scripts/gate-pack-runner-blackbox.js +0 -27
  320. package/dist/scripts/gate-pack-v2-blackbox.js +0 -18
  321. package/dist/scripts/geo-cli-blackbox-check.js +0 -18
  322. package/dist/scripts/loop-collision-blackbox.js +0 -3
  323. package/dist/scripts/loop-concurrency-oversubscription-blackbox.js +0 -3
  324. package/dist/scripts/loop-fixture-production-misuse-blackbox.js +0 -3
  325. package/dist/scripts/loop-kill-interrupt-real-blackbox.js +0 -3
  326. package/dist/scripts/loop-merge-strategy-blackbox.js +0 -3
  327. package/dist/scripts/loop-mesh-production-e2e-blackbox.js +0 -3
  328. package/dist/scripts/loop-side-effect-blackbox.js +0 -3
  329. package/dist/scripts/mad-db-operation-lifecycle-blackbox.js +0 -29
  330. package/dist/scripts/mad-sks-actual-executor-blackbox.js +0 -5
  331. package/dist/scripts/mad-zellij-headless-fallback-blackbox.js +0 -4
  332. package/dist/scripts/mad-zellij-self-heal-blackbox.js +0 -4
  333. package/dist/scripts/naruto-loop-mesh-blackbox.js +0 -3
  334. package/dist/scripts/naruto-real-parallelism-blackbox.js +0 -307
  335. package/dist/scripts/naruto-worktree-coding-blackbox.js +0 -29
  336. package/dist/scripts/parallel-runtime-real-blackbox.js +0 -44
  337. package/dist/scripts/pipeline-codex-native-doctor-mad-routing-real-blackbox.js +0 -77
  338. package/dist/scripts/pipeline-codex-native-e2e-blackbox.js +0 -13
  339. package/dist/scripts/pipeline-codex-native-image-routing-real-blackbox.js +0 -50
  340. package/dist/scripts/pipeline-codex-native-loop-routing-real-blackbox.js +0 -74
  341. package/dist/scripts/pipeline-codex-native-qa-routing-real-blackbox.js +0 -51
  342. package/dist/scripts/pipeline-codex-native-research-routing-real-blackbox.js +0 -45
  343. package/dist/scripts/pipeline-execution-profile-routing-blackbox.js +0 -4
  344. package/dist/scripts/postinstall-global-doctor-blackbox.js +0 -12
  345. package/dist/scripts/ppt-full-e2e-blackbox-check.js +0 -109
  346. package/dist/scripts/ppt-imagegen-blackbox-check.js +0 -46
  347. package/dist/scripts/project-skill-dedupe-blackbox.js +0 -36
  348. package/dist/scripts/qa-backfill-route-blackbox.js +0 -5
  349. package/dist/scripts/qa-patch-swarm-route-blackbox.js +0 -10
  350. package/dist/scripts/release-full-parallelism-blackbox.js +0 -41
  351. package/dist/scripts/release-triwiki-first-runner-blackbox.js +0 -48
  352. package/dist/scripts/release-wiring-3110-blackbox.js +0 -27
  353. package/dist/scripts/release-wiring-3112-blackbox.js +0 -17
  354. package/dist/scripts/release-wiring-3113-blackbox.js +0 -17
  355. package/dist/scripts/research-backfill-route-blackbox.js +0 -5
  356. package/dist/scripts/research-final-reviewer-blackbox.js +0 -70
  357. package/dist/scripts/research-stage-cycle-runtime-blackbox.js +0 -40
  358. package/dist/scripts/research-synthesis-writer-blackbox.js +0 -24
  359. package/dist/scripts/route-blackbox-realism-check.js +0 -21
  360. package/dist/scripts/scheduler-resource-claim-blackbox.js +0 -24
  361. package/dist/scripts/seo-cli-blackbox-check.js +0 -18
  362. package/dist/scripts/sks-3110-all-feature-regression-blackbox.js +0 -116
  363. package/dist/scripts/sks-3112-all-feature-regression-blackbox.js +0 -29
  364. package/dist/scripts/sks-3113-all-feature-regression-blackbox.js +0 -17
  365. package/dist/scripts/sks-400-all-feature-regression-blackbox.js +0 -21
  366. package/dist/scripts/sks-400-extreme-parallel-blackbox.js +0 -8
  367. package/dist/scripts/sks-400-five-minute-blackbox.js +0 -9
  368. package/dist/scripts/sks-400-legacy-purge-blackbox.js +0 -8
  369. package/dist/scripts/sks-401-all-feature-regression-blackbox.js +0 -46
  370. package/dist/scripts/sks-401-five-minute-actual-blackbox.js +0 -23
  371. package/dist/scripts/sks-402-all-feature-regression-blackbox.js +0 -9
  372. package/dist/scripts/sks-402-five-minute-real-blackbox.js +0 -22
  373. package/dist/scripts/sksd-warm-cache-blackbox.js +0 -12
  374. package/dist/scripts/supabase-secret-preservation-blackbox.js +0 -29
  375. package/dist/scripts/team-backfill-route-blackbox.js +0 -5
  376. package/dist/scripts/team-parallel-write-blackbox.js +0 -55
  377. package/dist/scripts/team-patch-swarm-route-blackbox.js +0 -10
  378. package/dist/scripts/triwiki-affected-graph-blackbox.js +0 -28
  379. package/dist/scripts/triwiki-proof-bank-blackbox.js +0 -30
  380. package/dist/scripts/triwiki-proof-bank-lock-blackbox.js +0 -7
  381. package/dist/scripts/update-preserves-supabase-keys-blackbox.js +0 -27
  382. package/dist/scripts/ux-patch-swarm-route-blackbox.js +0 -10
  383. package/dist/scripts/ux-review-imagegen-blackbox-check.js +0 -67
  384. package/dist/scripts/zellij-initial-main-only-blackbox.js +0 -28
  385. package/dist/scripts/zellij-pane-lock-concurrency-blackbox.js +0 -80
  386. package/dist/scripts/zellij-pane-lock-open-worker-integration-blackbox.js +0 -137
  387. package/dist/scripts/zellij-self-heal-typed-blackbox.js +0 -4
  388. package/dist/scripts/zellij-slot-telemetry-real-blackbox.js +0 -20
  389. package/dist/scripts/zellij-stacked-fallback-integration-blackbox.js +0 -81
  390. package/dist/scripts/zellij-worker-pane-real-ui-blackbox.js +0 -202
@@ -2,7 +2,7 @@ import { PACKAGE_VERSION } from './fsx.js';
2
2
  export const FEATURE_FIXTURE_SCHEMA = 'sks.feature-fixtures.v1';
3
3
  export const FEATURE_QUALITY_LEVELS = Object.freeze([
4
4
  'runtime_verified',
5
- 'runtime_mock_verified',
5
+ 'wiring_only',
6
6
  'integration_optional',
7
7
  'static_contract',
8
8
  'missing'
@@ -12,21 +12,31 @@ const FIXTURES = Object.freeze({
12
12
  'cli-version': fixture('execute', 'sks --version', [], 'pass'),
13
13
  'cli-root': fixture('execute', 'sks root --json', [], 'pass'),
14
14
  'cli-doctor': fixture('real_optional', 'sks doctor --json', [], 'pass'),
15
+ 'doctor:imagegen-repair': fixture('execute_and_validate_artifacts', 'sks doctor --json', [{ path: '.sneakoscope/reports/feature-fixtures/doctor-imagegen-repair.json', schema: 'sks.doctor-imagegen-repair.v1', optional: true }], 'pass', {
16
+ quality: 'runtime_verified',
17
+ validates_json_fields: ['imagegen_repair', 'repair.imagegen']
18
+ }),
15
19
  'cli-paths': fixture('execute_and_validate_artifacts', 'sks paths managed --json', ['.sneakoscope/managed-paths.json'], 'pass'),
16
20
  'cli-rollback': fixture('execute', 'sks rollback list --json', [], 'pass'),
17
21
  'cli-setup': fixture('real_optional', 'sks setup --json --local-only', [], 'pass'),
18
22
  'cli-codex': fixture('execute', 'sks codex compatibility --json', [], 'pass'),
19
23
  'cli-codex-app': fixture('real_optional', 'sks codex-app check --json', [], 'pass'),
20
24
  'cli-codex-lb': fixture('execute_and_validate_artifacts', 'sks codex-lb metrics --json', [], 'pass'),
21
- 'cli-hooks': fixture('mock', 'sks hooks trust-report --json', [], 'pass'),
25
+ 'cli-hooks': fixture('execute', 'sks hooks trust-report --json', [], 'pass'),
22
26
  'cli-features': fixture('execute', 'sks features check --json', [], 'pass'),
23
27
  'cli-commands': fixture('execute', 'sks commands --json', [], 'pass'),
24
28
  'cli-check': fixture('execute', 'sks check --tier confidence --sla 5m --plan --json', [], 'pass'),
29
+ 'cli-plan': fixture('execute', 'sks plan "fixture" --json', [], 'pass'),
30
+ 'cli-review': fixture('execute', 'sks review --diff HEAD --json', [], 'pass'),
31
+ 'cli-ui': fixture('static', 'sks ui [--port 4477] [--mission latest] [--once] [--json]', [], 'pass', {
32
+ quality: 'static_contract',
33
+ reason: 'UI command opens a localhost dashboard; release fixture tracks the CLI contract without launching a server.'
34
+ }),
25
35
  'cli-run': fixture('execute_and_validate_artifacts', 'sks run "fixture" --mock --json', ['run-classification.json', 'completion-proof.json', 'evidence-index.json', 'route-completion-contract.json', 'trust-report.json'], 'pass'),
26
36
  'cli-status': fixture('execute', 'sks status --json', [], 'pass'),
27
37
  'cli-usage': fixture('execute', 'sks usage overview', [], 'pass'),
28
38
  'cli-quickstart': fixture('execute', 'sks quickstart', [], 'pass'),
29
- 'cli-update': fixture('mock', 'sks update now --dry-run --json', [], 'pass'),
39
+ 'cli-update': fixture('execute', 'sks update now --dry-run --json', [], 'pass'),
30
40
  'cli-update-check': fixture('static', 'sks update-check --json', [], 'pass'),
31
41
  'cli-guard': fixture('execute', 'sks guard check --json', [], 'pass'),
32
42
  'cli-conflicts': fixture('execute', 'sks conflicts check --json', [], 'pass'),
@@ -35,20 +45,21 @@ const FIXTURES = Object.freeze({
35
45
  'cli-fix-path': fixture('execute', 'sks fix-path --json', [], 'pass'),
36
46
  'cli-selftest': fixture('execute', 'sks selftest --mock', [], 'pass'),
37
47
  'cli-git': fixture('execute', 'sks git policy --json', [], 'pass'),
38
- 'cli-goal': fixture('mock', 'sks goal status latest --json', ['goal-workflow.json'], 'pass'),
48
+ 'cli-uninstall': fixture('execute', 'sks uninstall --dry-run --json', [], 'pass'),
49
+ 'cli-goal': fixture('execute_and_validate_artifacts', 'sks goal status latest --json', ['goal-workflow.json'], 'pass'),
39
50
  'cli-seo-geo-optimizer': fixture('execute_and_validate_artifacts', 'sks seo-geo-optimizer fixture --mode seo --json', ['search-visibility/site-inventory.json', 'search-visibility/seo-findings.json', 'search-visibility/verification-report.json', 'seo-gate.json', 'completion-proof.json'], 'pass'),
40
- 'cli-research': fixture('mock', 'sks research status latest --json', ['research-gate.json', 'completion-proof.json'], 'pass'),
41
- 'cli-qa-loop': fixture('mock', 'sks qa-loop status latest --json', ['qa-loop-proof.json', 'completion-proof.json'], 'pass'),
42
- 'cli-ppt': fixture('mock', 'sks ppt fixture --mock --json', ['ppt-imagegen-review-gate.json', 'completion-proof.json'], 'pass'),
43
- 'cli-image-ux-review': fixture('mock', 'sks image-ux-review status latest --json', ['image-ux-generated-review-ledger.json', 'image-voxel-ledger.json'], 'pass'),
51
+ 'cli-research': fixture('execute_and_validate_artifacts', 'sks research status latest --json', ['research-gate.json', 'completion-proof.json'], 'pass'),
52
+ 'cli-qa-loop': fixture('execute_and_validate_artifacts', 'sks qa-loop status latest --json', ['qa-loop-proof.json', 'completion-proof.json'], 'pass'),
53
+ 'cli-ppt': fixture('execute_and_validate_artifacts', 'sks ppt fixture --mock --json', ['ppt-imagegen-review-gate.json', 'completion-proof.json'], 'pass'),
54
+ 'cli-image-ux-review': fixture('execute_and_validate_artifacts', 'sks image-ux-review status latest --json', ['image-ux-generated-review-ledger.json', 'image-voxel-ledger.json'], 'pass'),
44
55
  'cli-computer-use': fixture('real_optional', 'sks computer-use status --json', [], 'pass'),
45
- 'cli-pipeline': fixture('mock', 'sks pipeline status latest --json', ['pipeline-plan.json'], 'pass'),
46
- 'cli-validate-artifacts': fixture('mock', 'sks validate-artifacts latest --json', ['validation-report.json'], 'pass'),
47
- 'cli-hproof': fixture('mock', 'sks hproof check latest', ['completion-proof.json'], 'pass'),
56
+ 'cli-pipeline': fixture('execute_and_validate_artifacts', 'sks pipeline status latest --json', ['pipeline-plan.json'], 'pass'),
57
+ 'cli-validate-artifacts': fixture('execute_and_validate_artifacts', 'sks validate-artifacts latest --json', ['validation-report.json'], 'pass'),
58
+ 'cli-hproof': fixture('execute_and_validate_artifacts', 'sks hproof check latest', ['completion-proof.json'], 'pass'),
48
59
  'cli-proof-field': fixture('execute', 'sks proof-field scan --json --intent fixture', [], 'pass'),
49
- 'cli-recallpulse': fixture('mock', 'sks recallpulse status latest --json', ['recallpulse-report.json'], 'pass'),
60
+ 'cli-recallpulse': fixture('execute_and_validate_artifacts', 'sks recallpulse status latest --json', ['recallpulse-report.json'], 'pass'),
50
61
  'cli-agent': fixture('execute_and_validate_artifacts', 'sks agent run fixture --mock --json', ['agents/agent-central-ledger.json', 'agents/agent-task-board.json', 'agents/agent-leases.json', 'agents/agent-no-overlap-proof.json', 'agents/agent-session-cleanup.json', 'agents/agent-proof-evidence.json', 'agents/agent-effort-policy.json'], 'pass'),
51
- 'cli-gx': fixture('mock', 'sks gx validate fixture', ['gx-validation.json'], 'pass'),
62
+ 'cli-gx': fixture('execute_and_validate_artifacts', 'sks gx validate fixture', ['gx-validation.json'], 'pass'),
52
63
  'cli-perf': fixture('execute', 'sks perf cold-start --json --iterations 1', [], 'pass'),
53
64
  'cli-bench': fixture('execute_and_validate_artifacts', 'sks bench core --tier npx-one-shot --json --iterations 1', ['.sneakoscope/reports/performance/core-bench.json'], 'pass'),
54
65
  'cli-code-structure': fixture('execute', 'sks code-structure scan --json', [], 'pass'),
@@ -63,40 +74,56 @@ const FIXTURES = Object.freeze({
63
74
  'cli-dfix': fixture('execute_and_validate_artifacts', 'sks dfix fixture --json', ['completion-proof.json', 'dfix-gate.json', 'dfix-verification.json'], 'pass'),
64
75
  'cli-wiki': fixture('execute_and_validate_artifacts', 'sks wiki image-ingest test/fixtures/images/one-by-one.png --json', [{ path: '.sneakoscope/wiki/image-voxel-ledger.json', schema: 'sks.image-voxel-ledger.v1', require_anchors: false }], 'pass'),
65
76
  'cli-db': fixture('execute', 'sks db policy', [], 'pass'),
66
- 'cli-wizard': fixture('mock', 'sks wizard', [], 'pass'),
67
- 'cli-bootstrap': fixture('mock', 'sks bootstrap --dry-run', [], 'pass'),
68
- 'cli-deps': fixture('mock', 'sks deps check --json', [], 'pass'),
69
- 'cli-auth': fixture('mock', 'sks auth status --json', [], 'pass'),
70
- 'cli-codex-native': fixture('mock', 'sks codex-native status --json', [], 'pass'),
77
+ 'cli-wizard': fixture('execute', 'sks wizard', [], 'pass'),
78
+ 'cli-bootstrap': fixture('execute', 'sks bootstrap --dry-run', [], 'pass'),
79
+ 'cli-deps': fixture('execute', 'sks deps check --json', [], 'pass'),
80
+ 'cli-auth': fixture('execute', 'sks auth status --json', [], 'pass'),
81
+ 'cli-codex-native': fixture('execute', 'sks codex-native status --json', [], 'pass'),
71
82
  'cli-zellij': fixture('mock', 'npm run zellij:capability --silent', [], 'pass'),
72
83
  'cli-tmux': fixture('mock', 'removed runtime migration notice: sks tmux --json', [], 'pass'),
73
- 'cli-mad': fixture('mock', 'sks mad --help', [], 'pass'),
84
+ 'cli-mad': fixture('execute', 'sks mad --help', [], 'pass'),
74
85
  'cli-mad-sks': fixture('static', 'sks mad-sks status --json', [], 'pass'),
75
- 'cli-auto-review': fixture('mock', 'sks auto-review status --json', [], 'pass'),
86
+ 'cli-auto-review': fixture('execute', 'sks auto-review status --json', [], 'pass'),
76
87
  'cli-commit': fixture('mock', 'sks commit --dry-run', [], 'pass'),
77
88
  'cli-commit-and-push': fixture('mock', 'sks commit-and-push --dry-run', [], 'pass'),
78
89
  'cli-context7': fixture('real_optional', 'sks context7 check --json', [], 'pass'),
79
90
  'cli-insane-search': fixture('execute', 'sks insane-search doctor --json', [], 'pass'),
80
91
  'cli-ultra-search': fixture('execute', 'sks ultra-search doctor --json', [], 'pass'),
81
92
  'cli-xai': fixture('real_optional', 'sks xai check --json', [], 'pass'),
82
- 'cli-all-features': fixture('mock', 'sks all-features complete --json', [`.sneakoscope/reports/all-feature-completion-${PACKAGE_VERSION}.json`], 'pass'),
83
- 'cli-init': fixture('mock', 'sks init --local-only --dry-run', [], 'pass'),
84
- 'cli-eval': fixture('mock', 'sks eval run --mock --json', [], 'pass'),
85
- 'cli-harness': fixture('mock', 'sks harness fixture --mock --json', [], 'pass'),
86
- 'cli-team': fixture('mock', 'sks team "fixture" --mock --json', ['completion-proof.json', 'team-gate.json'], 'pass'),
87
- 'cli-reasoning': fixture('mock', 'sks reasoning status --json', [], 'pass'),
88
- 'cli-profile': fixture('mock', 'sks profile status --json', [], 'pass'),
89
- 'skill-db-safety-guard': fixture('mock', 'sks db check --sql "SELECT 1" --json', ['db-operation-report.json', 'completion-proof.json'], 'pass'),
90
- 'skill-honest-mode': fixture('mock', 'sks proof smoke --json', ['completion-proof.json', 'trust-report.json'], 'pass'),
91
- 'skill-imagegen': fixture('mock', 'sks image-ux-review fixture --mock --json', ['image-ux-generated-review-ledger.json', 'image-voxel-ledger.json'], 'pass'),
92
- 'skill-gx-visual-validate': fixture('mock', 'sks gx validate fixture --mock --json', ['gx-validation.json'], 'pass'),
93
+ 'cli-task': fixture('execute', 'sks task instant --plan --json', [], 'pass'),
94
+ 'cli-release': fixture('execute', 'sks release affected --json', [], 'pass'),
95
+ 'cli-triwiki': fixture('execute', 'sks triwiki index --json', [], 'pass'),
96
+ 'cli-daemon': fixture('execute', 'sks daemon status --json', [], 'pass'),
97
+ 'cli-all-features': fixture('execute_and_validate_artifacts', 'sks all-features complete --json', [`.sneakoscope/reports/all-feature-completion-${PACKAGE_VERSION}.json`], 'pass'),
98
+ 'cli-init': fixture('execute', 'sks init --local-only --dry-run', [], 'pass'),
99
+ 'cli-eval': fixture('execute', 'sks eval run --mock --json', [], 'pass'),
100
+ 'cli-harness': fixture('execute', 'sks harness fixture --mock --json', [], 'pass'),
101
+ 'cli-naruto': fixture('execute_and_validate_artifacts', 'sks naruto run "fixture" --backend fake --work-items 4 --json', ['completion-proof.json', 'naruto-gate.json'], 'pass'),
102
+ 'cli-team': fixture('execute_and_validate_artifacts', 'sks team "fixture" --mock --clones 4 --backend fake --work-items 4 --json', ['naruto-gate.json', 'team-alias-to-naruto.json'], 'pass'),
103
+ 'cli-reasoning': fixture('execute', 'sks reasoning status --json', [], 'pass'),
104
+ 'cli-profile': fixture('execute', 'sks profile status --json', [], 'pass'),
105
+ 'skill-db-safety-guard': fixture('execute_and_validate_artifacts', 'sks db check --sql "SELECT 1" --json', ['db-operation-report.json', 'completion-proof.json'], 'pass'),
106
+ 'skill-honest-mode': fixture('execute_and_validate_artifacts', 'sks proof smoke --json', ['completion-proof.json', 'trust-report.json'], 'pass'),
107
+ 'skill-imagegen': fixture('execute_and_validate_artifacts', 'sks image-ux-review fixture --mock --json', ['image-ux-generated-review-ledger.json', 'image-voxel-ledger.json'], 'pass'),
108
+ 'ux-review:run-wires-imagegen': fixture('execute_and_validate_artifacts', 'npm run ux-review:run-wires-imagegen --silent', [{ path: 'image-ux-review-gate.json', schema: 'sks.image-ux-review-gate.v2', optional: true }], 'pass', {
109
+ validates_source_contracts: ['requireCodexImagegen', 'generateGptImage2CalloutReview', 'evidence_class', 'output_sha256']
110
+ }),
111
+ 'ppt:real-imagegen-wiring': fixture('execute_and_validate_artifacts', 'npm run ppt:real-imagegen-wiring --silent', [{ path: 'ppt-imagegen-review-gate.json', schema: 'sks.ppt-imagegen-review-gate.v1', optional: true }], 'pass', {
112
+ validates_source_contracts: ['generateGptImage2CalloutReview', 'buildSlideImagegenEvidence', 'imagegen_evidence']
113
+ }),
114
+ 'skill-gx-visual-validate': fixture('execute_and_validate_artifacts', 'sks gx validate fixture --mock --json', ['gx-validation.json'], 'pass'),
93
115
  'skill-context7-docs': fixture('real_optional', 'sks context7 check --json', [], 'pass'),
94
- 'skill-seo-geo-optimizer': fixture('mock', 'sks seo-geo-optimizer fixture --mode geo --json', ['search-visibility/site-inventory.json', 'search-visibility/geo-findings.json', 'geo-gate.json', 'completion-proof.json'], 'pass'),
116
+ 'skill-seo-geo-optimizer': fixture('execute_and_validate_artifacts', 'sks seo-geo-optimizer fixture --mode geo --json', ['search-visibility/site-inventory.json', 'search-visibility/geo-findings.json', 'geo-gate.json', 'completion-proof.json'], 'pass'),
95
117
  'cli-proof': fixture('execute_and_validate_artifacts', 'sks proof smoke --json', ['.sneakoscope/proof/latest.json'], 'pass'),
96
118
  'cli-trust': fixture('execute_and_validate_artifacts', 'sks trust report latest --json', ['trust-report.json'], 'pass'),
97
119
  'cli-wrongness': fixture('execute_and_validate_artifacts', 'sks wrongness add --kind missing_evidence --claim "fixture wrongness" --json', ['.sneakoscope/wiki/wrongness-ledger.json'], 'pass'),
98
- 'route-team': fixture('execute_and_validate_artifacts', 'sks team "fixture" --mock --json', ['completion-proof.json', 'team-gate.json', 'team-session-cleanup.json'], 'pass'),
120
+ 'route-team': fixture('execute_and_validate_artifacts', 'sks team "fixture" --mock --clones 4 --backend fake --work-items 4 --json', ['naruto-gate.json', 'team-alias-to-naruto.json'], 'pass'),
121
+ 'route-team-alias': fixture('execute_and_validate_artifacts', 'sks team "fixture" --mock --clones 4 --backend fake --work-items 4 --json', ['naruto-gate.json', 'team-alias-to-naruto.json'], 'pass'),
99
122
  'route-naruto': fixture('execute_and_validate_artifacts', 'sks naruto run "fixture" --clones 4 --backend fake --work-items 4 --json', ['agents/agent-proof-evidence.json', 'agents/agent-scheduler-state.json'], 'pass'),
123
+ 'route-work': fixture('execute_and_validate_artifacts', 'sks naruto run "fixture" --backend fake --work-items 4 --json', ['completion-proof.json', 'naruto-gate.json'], 'pass'),
124
+ 'route-swarm': fixture('execute_and_validate_artifacts', 'sks naruto run "fixture" --backend fake --work-items 4 --json', ['completion-proof.json', 'naruto-gate.json'], 'pass'),
125
+ 'route-plan': fixture('execute', 'sks plan "fixture" --json', [], 'pass'),
126
+ 'route-review': fixture('execute', 'sks review --diff HEAD --json', [], 'pass'),
100
127
  'route-shadowclone': fixture('mock', '$ShadowClone alias of $Naruto shadow-clone swarm route', [], 'pass'),
101
128
  'route-kagebunshin': fixture('mock', '$Kagebunshin alias of $Naruto shadow-clone swarm route', [], 'pass'),
102
129
  'route-qa-loop': fixture('execute_and_validate_artifacts', 'sks qa-loop run latest --mock --json', ['completion-proof.json', 'qa-gate.json'], 'pass'),
@@ -114,11 +141,11 @@ const FIXTURES = Object.freeze({
114
141
  'route-ultrasearch': fixture('execute', 'sks run "$UltraSearch source intelligence fixture" --execute --json', [], 'pass'),
115
142
  'route-seo-geo-optimizer': fixture('execute_and_validate_artifacts', 'sks seo-geo-optimizer fixture --mode geo --json', ['search-visibility/site-inventory.json', 'search-visibility/geo-findings.json', 'search-visibility/verification-report.json', 'geo-gate.json', 'completion-proof.json'], 'pass'),
116
143
  'route-autoresearch': fixture('mock', '$AutoResearch fixture route', ['research-gate.json', 'completion-proof.json'], 'pass'),
117
- 'route-mad-sks': fixture('mock', '$MAD-SKS permission gate route', ['mad-sks-gate.json', 'completion-proof.json'], 'pass'),
144
+ 'route-mad-sks': fixture('mock', '$MAD-SKS permission gate + sql_plane route', [{ path: 'mad-sks-gate.json', schema: 'sks.mad-sks-gate.v1' }, 'completion-proof.json'], 'pass'),
118
145
  'route-from-chat-img': fixture('mock', '$From-Chat-IMG visual work order route', ['from-chat-img-work-order.md', 'image-voxel-ledger.json', 'completion-proof.json'], 'pass'),
119
146
  'route-ux-review': fixture('mock', '$UX-Review image UX alias route', ['image-ux-generated-review-ledger.json', 'image-voxel-ledger.json'], 'pass'),
120
147
  'route-db': fixture('execute_and_validate_artifacts', 'sks db check --sql "SELECT 1" --json', ['completion-proof.json', 'db-operation-report.json'], 'pass'),
121
- 'route-mad-db': fixture('mock', '$MAD-DB one-cycle DB break-glass route contract', ['mad-db-capability.json', 'mad-db-ledger.jsonl', 'completion-proof.json'], 'pass'),
148
+ 'route-mad-db': fixture('mock', '$MAD-DB deprecated alias to $MAD-SKS sql-plane contract', ['mad-sks-gate.json', 'completion-proof.json'], 'pass'),
122
149
  'route-wiki': fixture('execute_and_validate_artifacts', 'sks wiki image-ingest test/fixtures/images/one-by-one.png --json', [{ path: 'completion-proof.json', schema: 'sks.completion-proof.v1' }, { path: 'image-voxel-ledger.json', schema: 'sks.image-voxel-ledger.v1' }], 'pass'),
123
150
  'route-gx': fixture('execute_and_validate_artifacts', 'sks gx validate fixture --mock --json', ['completion-proof.json', { path: 'image-voxel-ledger.json', schema: 'sks.image-voxel-ledger.v1' }, 'gx-validation.json'], 'pass'),
124
151
  'route-sks': fixture('mock', '$SKS control-surface route', ['completion-proof.json'], 'pass'),
@@ -133,7 +160,7 @@ const FIXTURES = Object.freeze({
133
160
  'route-commit-and-push': fixture('mock', '$Commit-And-Push git route', ['completion-proof.json'], 'pass'),
134
161
  'route-release-review': fixture('mock', 'sks agent run "release audit" --route "$Release-Review" --agents 10 --concurrency 5 --mock --json', ['release-review-native-agent-plan.json', 'agents/agent-proof-evidence.json', 'agents/agent-effort-policy.json'], 'pass'),
135
162
  'route-native-agent-intake': fixture('mock', 'sks agent run "fixture" --route "$Team" --agents 5 --concurrency 5 --mock --json', ['agents/agent-central-ledger.json', 'agents/agent-task-board.json', 'agents/agent-leases.json', 'agents/agent-no-overlap-proof.json', 'agents/agent-session-cleanup.json', 'agents/agent-proof-evidence.json', 'agents/agent-effort-policy.json'], 'pass'),
136
- 'proof-agent-evidence': fixture('mock', 'sks team "fixture" --mock --json', ['completion-proof.json', 'agents/agent-proof-evidence.json'], 'pass')
163
+ 'proof-agent-evidence': fixture('mock', 'sks naruto run "fixture" --backend fake --work-items 4 --json', ['naruto-gate.json', 'agents/agent-proof-evidence.json'], 'pass')
137
164
  });
138
165
  const STATIC_CONTRACT_FEATURES = new Set([
139
166
  'cli-wizard',
@@ -151,6 +178,7 @@ const STATIC_CONTRACT_FEATURES = new Set([
151
178
  'cli-all-features',
152
179
  'cli-eval',
153
180
  'cli-harness',
181
+ 'cli-naruto',
154
182
  'cli-team',
155
183
  'cli-reasoning',
156
184
  'cli-profile',
@@ -242,7 +270,7 @@ function qualityForKind(kind) {
242
270
  if (kind === 'execute' || kind === 'execute_and_validate_artifacts')
243
271
  return 'runtime_verified';
244
272
  if (kind === 'mock')
245
- return 'runtime_mock_verified';
273
+ return 'wiring_only';
246
274
  if (kind === 'real_optional')
247
275
  return 'integration_optional';
248
276
  if (kind === 'not_available')
@@ -2,6 +2,7 @@ import fs from 'node:fs/promises';
2
2
  import { existsSync } from 'node:fs';
3
3
  import path from 'node:path';
4
4
  import { spawnSync } from 'node:child_process';
5
+ import { COMMANDS } from '../cli/command-registry.js';
5
6
  import { COMMAND_CATALOG, DOLLAR_COMMAND_ALIASES, DOLLAR_COMMANDS, ROUTES } from './routes.js';
6
7
  import { FEATURE_QUALITY_LEVELS, fixtureForFeature, fixtureSummary, validateFeatureFixtures } from './feature-fixtures.js';
7
8
  import { runFeatureFixture, writeFeatureFixtureReports } from './feature-fixture-runner.js';
@@ -51,6 +52,8 @@ export async function buildFeatureRegistry({ root = packageRoot(), generatedAt =
51
52
  }
52
53
  features.push(nativeAgentIntakeFeature());
53
54
  features.push(agentProofEvidenceFeature());
55
+ features.push(doctorImagegenRepairFeature());
56
+ features.push(...imagegenWiringFeatures());
54
57
  for (const skillName of skillNames) {
55
58
  if (!skillCoveredByRoute(skillName))
56
59
  features.push(skillFeature(skillName));
@@ -102,7 +105,8 @@ export function validateFeatureRegistry(registry = {}) {
102
105
  const blockers = [
103
106
  ...Object.entries(unmapped).flatMap(([kind, values]) => values.map((value) => `${kind}:${value}`)),
104
107
  ...duplicateFeatureIds.map((id) => `duplicate_feature_id:${id}`),
105
- ...routeMentionsWithoutRoute.map((mention) => `doc_route_mention_without_route:${mention}`)
108
+ ...routeMentionsWithoutRoute.map((mention) => `doc_route_mention_without_route:${mention}`),
109
+ ...routeGateConsistencyBlockers()
106
110
  ];
107
111
  return {
108
112
  ok: blockers.length === 0,
@@ -118,6 +122,7 @@ export function validateFeatureRegistry(registry = {}) {
118
122
  unmapped,
119
123
  duplicate_feature_ids: duplicateFeatureIds,
120
124
  doc_route_mentions_without_route: routeMentionsWithoutRoute,
125
+ route_gate_consistency_blockers: routeGateConsistencyBlockers(),
121
126
  blockers,
122
127
  nonblocking_known_gaps: [
123
128
  'feature fixtures remain progressive',
@@ -127,6 +132,41 @@ export function validateFeatureRegistry(registry = {}) {
127
132
  feature_quality_summary: featureQualitySummary(features)
128
133
  };
129
134
  }
135
+ export function routeGateConsistencyBlockers() {
136
+ const blockers = [];
137
+ for (const route of ROUTES) {
138
+ const cliName = routeCliCommandName(route);
139
+ if (!cliName)
140
+ continue;
141
+ const entry = COMMANDS[cliName];
142
+ if (!entry?.ownsGates)
143
+ continue;
144
+ const routeGates = stopGateFiles(route.stopGate);
145
+ const owned = new Set((entry.ownedGateFiles || []).map((file) => String(file)));
146
+ if (!routeGates.length && owned.size > 0)
147
+ blockers.push(`route_gate_mismatch:${route.id}:routes_none_registry_${[...owned].join('|')}`);
148
+ for (const gate of routeGates) {
149
+ if (!owned.has(gate))
150
+ blockers.push(`route_gate_mismatch:${route.id}:${gate}_not_owned_by_${cliName}`);
151
+ }
152
+ }
153
+ return blockers;
154
+ }
155
+ function routeCliCommandName(route) {
156
+ const command = String(route.command || '').replace(/^\$/, '').toLowerCase();
157
+ if (Object.hasOwn(COMMANDS, command))
158
+ return command;
159
+ const alias = (route.dollarAliases || [])
160
+ .map((value) => String(value || '').replace(/^\$/, '').toLowerCase())
161
+ .find((value) => Object.hasOwn(COMMANDS, value));
162
+ return alias || null;
163
+ }
164
+ function stopGateFiles(stopGate) {
165
+ const text = String(stopGate || '');
166
+ if (!text || text === 'none' || text === 'honest_mode' || text === 'plan-only')
167
+ return [];
168
+ return text.split('|').map((part) => part.trim()).filter((part) => part.endsWith('.json'));
169
+ }
130
170
  export async function writeFeatureInventoryDocs({ root = packageRoot(), outFile = path.join(root, 'docs', 'feature-inventory.md') } = {}) {
131
171
  const registry = await buildFeatureRegistry({ root });
132
172
  const markdown = renderFeatureInventoryMarkdown(registry);
@@ -484,9 +524,12 @@ const SAFE_EXECUTABLE_FIXTURE_ARGS = Object.freeze({
484
524
  'cli-stats': ['stats', '--json'],
485
525
  'cli-dollar-commands': ['dollar-commands', '--json'],
486
526
  'cli-fast-mode': ['fast-mode', 'status', '--json'],
527
+ 'cli-task': ['task', 'instant', '--plan', '--json'],
528
+ 'cli-triwiki': ['triwiki', 'index', '--json'],
529
+ 'cli-daemon': ['daemon', 'status', '--json'],
487
530
  'cli-dfix': ['dfix', 'fixture', '--json'],
488
531
  'cli-all-features': ['all-features', 'complete', '--json'],
489
- 'route-team': ['team', 'fixture', '--mock', '--json'],
532
+ 'route-team': ['team', 'fixture', '--mock', '--clones', '4', '--backend', 'fake', '--work-items', '4', '--json'],
490
533
  'route-naruto': ['naruto', 'run', 'fixture', '--clones', '4', '--backend', 'fake', '--work-items', '4', '--json'],
491
534
  'route-qa-loop': { setup: [['qa-loop', 'prepare', 'fixture API QA', '--json']], command: ['qa-loop', 'run', 'latest', '--mock', '--json'] },
492
535
  'route-research': { setup: [['research', 'prepare', 'fixture research topic', '--json']], command: ['research', 'run', 'latest', '--mock', '--json'] },
@@ -671,6 +714,66 @@ function agentProofEvidenceFeature() {
671
714
  }
672
715
  });
673
716
  }
717
+ function doctorImagegenRepairFeature() {
718
+ return baseFeature({
719
+ id: 'doctor:imagegen-repair',
720
+ commands: ['sks doctor --json', 'sks doctor --fix --json'],
721
+ aliases: ['repair.imagegen', 'imagegen_repair'],
722
+ category: 'safety',
723
+ maturity: 'beta',
724
+ intent: 'Doctor repair path that detects Codex App imagegen, attempts repair when requested, and reports imagegen_repair evidence without claiming success unless re-detection passes.',
725
+ voxel_triwiki_integration: 'policy voxel required for visual/image routes that depend on Codex App imagegen',
726
+ completion_proof_integration: 'doctor report imagegen_repair is consumed by imagegen route blockers before visual route proof',
727
+ known_gaps: ['live Codex App feature enablement remains environment-dependent and reports manual actions when unavailable'],
728
+ source_refs: {
729
+ cli_command_names: ['doctor'],
730
+ handler_keys: ['doctor'],
731
+ dollar_commands: [],
732
+ app_skill_aliases: [],
733
+ skills: ['imagegen']
734
+ }
735
+ });
736
+ }
737
+ function imagegenWiringFeatures() {
738
+ return [
739
+ baseFeature({
740
+ id: 'ux-review:run-wires-imagegen',
741
+ commands: ['npm run ux-review:run-wires-imagegen', 'sks ux-review run --image <screenshot> --generate-callouts --json'],
742
+ aliases: ['$Image-UX-Review', '$UX-Review'],
743
+ category: 'visual-memory',
744
+ maturity: 'beta',
745
+ intent: 'Image UX route start gate, shared gpt-image-2 adapter, callout extraction, and Codex App evidence validation wiring.',
746
+ voxel_triwiki_integration: 'image/source/bbox voxel required',
747
+ completion_proof_integration: 'image-ux-review-gate and Completion Proof must separate real Codex image evidence from mock/API fallback evidence',
748
+ known_gaps: ['live Codex App image generation remains environment-dependent'],
749
+ source_refs: {
750
+ cli_command_names: ['image-ux-review'],
751
+ handler_keys: ['image-ux-review', 'ux-review'],
752
+ dollar_commands: ['$Image-UX-Review', '$UX-Review'],
753
+ app_skill_aliases: ['$image-ux-review', '$ux-review'],
754
+ skills: ['image-ux-review', 'ux-review', 'imagegen']
755
+ }
756
+ }),
757
+ baseFeature({
758
+ id: 'ppt:real-imagegen-wiring',
759
+ commands: ['npm run ppt:real-imagegen-wiring', 'sks ppt review --deck <pptx> --json'],
760
+ aliases: ['$PPT'],
761
+ category: 'visual-memory',
762
+ maturity: 'beta',
763
+ intent: 'PPT slide callout review path reuses the shared gpt-image-2 adapter and records imagegen_evidence in PPT gates.',
764
+ voxel_triwiki_integration: 'image/source/bbox voxel required',
765
+ completion_proof_integration: 'ppt-imagegen-review-gate and ppt-gate must include Codex App imagegen evidence classes and hashes',
766
+ known_gaps: ['live deck export and live Codex App image generation remain environment-dependent'],
767
+ source_refs: {
768
+ cli_command_names: ['ppt'],
769
+ handler_keys: ['ppt'],
770
+ dollar_commands: ['$PPT'],
771
+ app_skill_aliases: ['$ppt'],
772
+ skills: ['ppt', 'imagegen']
773
+ }
774
+ })
775
+ ];
776
+ }
674
777
  function skillFeature(skillName) {
675
778
  return baseFeature({
676
779
  id: `skill-${slug(skillName)}`,
@@ -873,7 +976,7 @@ function routeKnownGaps(command) {
873
976
  if (command === '$MAD-SKS')
874
977
  return ['permission closed by owning gate'];
875
978
  if (command === '$MAD-DB')
876
- return ['active cycle must execute requested SQL-plane work, read back postconditions, and close the mission-local write profile'];
979
+ return ['deprecated alias; SQL-plane execution is merged into $MAD-SKS and must still read back postconditions and close the mission-local write profile'];
877
980
  return [];
878
981
  }
879
982
  function checkRow(id, ok, blockers = []) {
package/dist/core/fsx.js CHANGED
@@ -5,12 +5,42 @@ import os from 'node:os';
5
5
  import crypto from 'node:crypto';
6
6
  import { spawn } from 'node:child_process';
7
7
  import { fileURLToPath } from 'node:url';
8
- export const PACKAGE_VERSION = '4.8.6';
8
+ export const PACKAGE_VERSION = '5.1.2';
9
9
  export const DEFAULT_PROCESS_TAIL_BYTES = 256 * 1024;
10
10
  export const DEFAULT_PROCESS_TIMEOUT_MS = 30 * 60 * 1000;
11
11
  export function nowIso() {
12
12
  return new Date().toISOString();
13
13
  }
14
+ export function lastLine(chunk) {
15
+ const lines = String(chunk || '').split(/\r?\n/).map((line) => line.trim()).filter(Boolean);
16
+ return lines[lines.length - 1] || '';
17
+ }
18
+ export function throttleLines(fn, ms = 500) {
19
+ let lastAt = 0;
20
+ let pending = null;
21
+ let timer = null;
22
+ const flush = () => {
23
+ timer = null;
24
+ if (!pending)
25
+ return;
26
+ lastAt = Date.now();
27
+ const line = pending;
28
+ pending = null;
29
+ fn(line);
30
+ };
31
+ return (chunk) => {
32
+ const line = lastLine(chunk);
33
+ if (!line)
34
+ return;
35
+ pending = line;
36
+ const now = Date.now();
37
+ const wait = Math.max(0, ms - (now - lastAt));
38
+ if (wait === 0)
39
+ flush();
40
+ else if (!timer)
41
+ timer = setTimeout(flush, wait);
42
+ };
43
+ }
14
44
  export function sha256(input) {
15
45
  return crypto.createHash('sha256').update(input).digest('hex');
16
46
  }
@@ -101,6 +131,30 @@ export async function readJson(p, fallback) {
101
131
  export async function writeJsonAtomic(p, data) {
102
132
  await writeTextAtomic(p, `${JSON.stringify(data, null, 2)}\n`);
103
133
  }
134
+ export async function writeReceiptRotated(p, data, opts = {}) {
135
+ await ensureDir(path.dirname(p));
136
+ const keep = Math.max(1, opts.keep ?? 5);
137
+ const prior = await fsp.readdir(path.dirname(p), { withFileTypes: true }).catch(() => []);
138
+ const base = path.basename(p);
139
+ const rotated = prior
140
+ .filter((entry) => entry.isFile() && entry.name.startsWith(`${base}.`) && entry.name.endsWith('.json'))
141
+ .map((entry) => path.join(path.dirname(p), entry.name));
142
+ const rotatedFiles = new Set(rotated);
143
+ const existing = await fsp.stat(p).catch(() => null);
144
+ if (existing) {
145
+ const stamp = new Date(existing.mtimeMs).toISOString().replace(/[:.]/g, '-');
146
+ const rotatedPath = path.join(path.dirname(p), `${base}.${stamp}.json`);
147
+ await fsp.rename(p, rotatedPath).catch(() => undefined);
148
+ rotatedFiles.add(rotatedPath);
149
+ }
150
+ await writeJsonAtomic(p, data);
151
+ const rows = await Promise.all([...rotatedFiles].map(async (file) => ({ file, stat: await fsp.stat(file).catch(() => null) })));
152
+ const removable = rows
153
+ .filter((row) => Boolean(row.stat))
154
+ .sort((a, b) => b.stat.mtimeMs - a.stat.mtimeMs)
155
+ .slice(keep);
156
+ await Promise.all(removable.map((row) => fsp.rm(row.file, { force: true }).catch(() => undefined)));
157
+ }
104
158
  export async function writeBinaryAtomic(p, data) {
105
159
  await ensureDir(path.dirname(p));
106
160
  try {
@@ -129,6 +183,12 @@ export async function appendJsonl(p, obj) {
129
183
  await ensureDir(path.dirname(p));
130
184
  await fsp.appendFile(p, `${JSON.stringify(obj)}\n`, 'utf8');
131
185
  }
186
+ export async function appendJsonlMany(p, rows) {
187
+ if (!rows.length)
188
+ return;
189
+ await ensureDir(path.dirname(p));
190
+ await fsp.appendFile(p, rows.map((row) => JSON.stringify(row)).join('\n') + '\n', 'utf8');
191
+ }
132
192
  export async function appendJsonlBounded(p, obj, maxBytes = 5 * 1024 * 1024) {
133
193
  await appendJsonl(p, obj);
134
194
  try {
@@ -426,8 +486,37 @@ export async function readStdin() {
426
486
  process.stdin.on('end', () => resolve(data));
427
487
  });
428
488
  }
489
+ export function managedSksTmpRoot(baseDir = os.tmpdir()) {
490
+ return path.join(baseDir, 'sks');
491
+ }
429
492
  export function tmpdir(prefix = 'sks-') {
430
- return fs.mkdtempSync(path.join(os.tmpdir(), prefix));
493
+ const base = managedSksTmpRoot();
494
+ fs.mkdirSync(base, { recursive: true });
495
+ return fs.mkdtempSync(path.join(base, prefix));
496
+ }
497
+ export async function withScratchDir(prefix = 'sks-', fn, opts = {}) {
498
+ const base = opts.baseDir || managedSksTmpRoot();
499
+ await fsp.mkdir(base, { recursive: true });
500
+ const dir = await fsp.mkdtemp(path.join(base, prefix));
501
+ try {
502
+ return await fn(dir);
503
+ }
504
+ finally {
505
+ if (!opts.keep)
506
+ await fsp.rm(dir, { recursive: true, force: true }).catch(() => undefined);
507
+ }
508
+ }
509
+ export function withScratchDirSync(prefix = 'sks-', fn, opts = {}) {
510
+ const base = opts.baseDir || managedSksTmpRoot();
511
+ fs.mkdirSync(base, { recursive: true });
512
+ const dir = fs.mkdtempSync(path.join(base, prefix));
513
+ try {
514
+ return fn(dir);
515
+ }
516
+ finally {
517
+ if (!opts.keep)
518
+ fs.rmSync(dir, { recursive: true, force: true });
519
+ }
431
520
  }
432
521
  export async function fileSize(p) {
433
522
  try {
@@ -0,0 +1,43 @@
1
+ import path from 'node:path';
2
+ import fsp from 'node:fs/promises';
3
+ import { PACKAGE_VERSION, readJson, readText } from '../fsx.js';
4
+ import { loadSkillsManifest, reconcileSkills } from '../init/skills.js';
5
+ export async function maybeReconcileProjectSkillsPreflight(root) {
6
+ const manifestPath = path.join(root, '.agents', 'skills', '.sks-generated.json');
7
+ const manifest = await readJson(manifestPath, null);
8
+ const needsByManifest = manifest?.version && manifest.version !== PACKAGE_VERSION;
9
+ const needsByResidue = await hasProjectOfficialResidue(root);
10
+ if (!needsByManifest && !needsByResidue)
11
+ return null;
12
+ return reconcileSkills({
13
+ targetDir: path.join(root, '.agents', 'skills'),
14
+ scope: 'project',
15
+ fix: true
16
+ });
17
+ }
18
+ async function hasProjectOfficialResidue(root) {
19
+ const manifest = await loadSkillsManifest().catch(() => null);
20
+ const official = new Set([
21
+ ...(manifest?.skills || []).map((skill) => canonical(skill.canonical_name)),
22
+ ...(manifest?.skills || []).flatMap((skill) => (skill.deprecated_aliases || []).map((name) => canonical(name))),
23
+ ...((manifest?.removed_skills || []).map((name) => canonical(name)))
24
+ ]);
25
+ for (const dir of [path.join(root, '.agents', 'skills'), path.join(root, '.codex', 'skills')]) {
26
+ const rows = await fsp.readdir(dir, { withFileTypes: true }).catch(() => []);
27
+ for (const row of rows) {
28
+ if (!row.isDirectory())
29
+ continue;
30
+ const text = await readText(path.join(dir, row.name, 'SKILL.md'), null);
31
+ if (typeof text !== 'string')
32
+ continue;
33
+ const display = /^name:\s*(.+)\s*$/m.exec(text)?.[1] || row.name;
34
+ if (official.has(canonical(display)))
35
+ return true;
36
+ }
37
+ }
38
+ return false;
39
+ }
40
+ function canonical(value) {
41
+ return String(value || '').trim().toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-+|-+$/g, '');
42
+ }
43
+ //# sourceMappingURL=skill-reconcile-preflight.js.map