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
@@ -0,0 +1,21 @@
1
+ #!/usr/bin/env node
2
+ import { assertGate, emitGate } from './sks-1-18-gate-lib.js';
3
+ import { CODEX_0144_FEATURE_KEYS, detectCodex0144Capability, writeCodex0144CapabilityArtifacts } from '../core/codex-control/codex-0144-capability.js';
4
+ const requireReal = process.argv.includes('--require-real') || process.env.SKS_REQUIRE_CODEX_0144 === '1';
5
+ if (!requireReal)
6
+ process.env.SKS_CODEX_0144_FAKE = '1';
7
+ const cap = await detectCodex0144Capability({ requireReal });
8
+ assertGate(cap.ok === true, 'Codex 0.144.1 capability probe must pass', cap);
9
+ assertGate(Object.keys(cap.feature_states).length === CODEX_0144_FEATURE_KEYS.length, 'Codex 0.144.1 feature count mismatch', cap);
10
+ assertGate(Object.values(cap.feature_states).every((state) => String(state.certainty) !== 'assumed_by_version'), 'Codex 0.144.1 capability must not use assumed_by_version evidence', cap);
11
+ if (requireReal) {
12
+ assertGate(cap.probe_mode === 'real-schema', 'Codex 0.144.1 require-real must use generated schema evidence', cap);
13
+ assertGate(cap.release_authorizing === true, 'Codex 0.144.1 require-real must be release-authorizing', cap);
14
+ await writeCodex0144CapabilityArtifacts(process.cwd(), { requireReal: true });
15
+ }
16
+ emitGate('codex:0144:capability', {
17
+ features: CODEX_0144_FEATURE_KEYS.length,
18
+ probe_mode: cap.probe_mode,
19
+ release_authorizing: cap.release_authorizing
20
+ });
21
+ //# sourceMappingURL=codex-0144-capability-check.js.map
@@ -1,28 +1,42 @@
1
1
  #!/usr/bin/env node
2
2
  // @ts-nocheck
3
- import { assertGate, emitGate, importDist, root } from './sks-1-18-gate-lib.js';
3
+ import { emitGate, importDist, root } from './sks-1-18-gate-lib.js';
4
4
  const args = process.argv.slice(2);
5
5
  const requireReal = args.includes('--require-real');
6
6
  const allowNetwork = args.includes('--allow-network');
7
7
  const allowDesktop = args.includes('--allow-desktop');
8
8
  const json = args.includes('--json');
9
- const timeoutMs = Number(readArg('--timeout-ms') || process.env.SKS_CODEX_0139_REAL_PROBE_TIMEOUT_MS || 120000);
9
+ const timeoutMs = Number(readArg('--timeout-ms')
10
+ || process.env.SKS_CODEX_0144_CORE_REAL_PROBE_TIMEOUT_MS
11
+ || process.env.SKS_CODEX_0139_REAL_PROBE_TIMEOUT_MS
12
+ || 120000);
10
13
  const missionId = readArg('--mission-id') || process.env.SKS_MISSION_ID || process.env.SNEAKOSCOPE_MISSION_ID || null;
11
14
  const probes = readRepeated('--probe');
12
15
  const mod = await importDist('core/codex-control/codex-0139-probe-runner.js');
13
16
  const writer = await importDist('core/codex-control/codex-0139-real-probes.js');
14
17
  const result = await mod.runCodex0139RealProbes({ root, missionId, requireReal, allowNetwork, allowDesktop, timeoutMs, probes });
15
18
  const artifacts = await writer.writeCodex0139RealProbeResult(root, result, { missionId, writeDist: true });
16
- assertGate(result.overall_ok === true || !requireReal, requireReal ? 'codex:0139-real-probes:require-real failed' : 'codex:0139-real-probes optional probe runner failed', result);
17
- emitGate(requireReal ? 'codex:0139-real-probes:require-real' : 'codex:0139-real-probes', {
19
+ const ok = requireReal ? result.release_authorizing === true : result.overall_ok === true;
20
+ emitGate(requireReal ? 'codex:0144-core-real-probes:require-real' : 'codex:0144-core-real-probes', {
21
+ ok,
18
22
  overall_ok: result.overall_ok,
23
+ release_authorizing: result.release_authorizing,
24
+ target_version: result.target_version,
25
+ compatibility_origin: result.compatibility_origin,
26
+ compatibility_authority: result.compatibility_authority,
19
27
  parsed_version: result.parsed_version,
28
+ requested_probes: result.requested_probes,
20
29
  skipped: result.skipped,
21
30
  blockers: result.blockers,
31
+ warnings: result.warnings,
32
+ external_integration_status: result.external_integration_status,
33
+ temp_cleanup: result.temp_cleanup,
22
34
  artifact: '.sneakoscope/codex-0139-real-probes.json',
23
35
  mission_artifact: artifacts.mission_artifact ? `.sneakoscope/missions/${missionId}/codex-0139-real-probes.json` : null,
24
36
  ...(json ? { result } : {})
25
37
  });
38
+ if (!ok)
39
+ process.exitCode = 1;
26
40
  function readArg(name) {
27
41
  const idx = args.indexOf(name);
28
42
  return idx >= 0 ? args[idx + 1] : null;
@@ -34,4 +48,4 @@ function readRepeated(name) {
34
48
  out.push(args[i + 1]);
35
49
  return out;
36
50
  }
37
- //# sourceMappingURL=codex-0139-real-probes-check.js.map
51
+ //# sourceMappingURL=codex-0144-core-real-probes-check.js.map
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { assertGate, emitGate, importDist } from './sks-1-18-gate-lib.js';
3
- process.env.SKS_CODEX_0142_FAKE = '1';
3
+ process.env.SKS_CODEX_0144_FAKE = '1';
4
4
  process.env.SKS_CODEX_0138_FAKE = '1';
5
5
  process.env.SKS_CODEX_0139_FAKE = '1';
6
6
  process.env.SKS_CODEX_0140_FAKE = '1';
@@ -8,14 +8,14 @@ process.env.SKS_CODEX_PLUGIN_JSON_FAKE = '1';
8
8
  const { buildCodexNativeFeatureMatrix } = await importDist('core/codex-native/codex-native-feature-broker.js');
9
9
  const matrix = await buildCodexNativeFeatureMatrix({ root: process.cwd(), mode: 'read-only' });
10
10
  const report = {
11
- schema: 'sks.codex-0142-doctor-wiring-check.v1',
12
- codex_0142: matrix.features.codex_0142?.ok,
11
+ schema: 'sks.codex-0144-doctor-wiring-check.v1',
12
+ codex_0144: matrix.features.codex_0144?.ok,
13
13
  multi_agent_mode: matrix.features.multi_agent_mode?.ok,
14
14
  rollout_budget: matrix.features.rollout_budget?.ok,
15
15
  indexed_web_search: matrix.features.indexed_web_search?.ok,
16
16
  current_time_read: matrix.features.current_time_read?.ok,
17
17
  invocation_defaults: matrix.invocation_defaults
18
18
  };
19
- assertGate(report.codex_0142 === true && report.multi_agent_mode === true && report.rollout_budget === true && report.indexed_web_search === true && report.current_time_read === true, 'Codex 0.142 capability must feed Doctor/native runtime feature matrix', report);
20
- emitGate('codex-native:0142-doctor-wiring', report);
21
- //# sourceMappingURL=codex-0142-doctor-wiring-check.js.map
19
+ assertGate(report.codex_0144 === true && report.multi_agent_mode === true && report.rollout_budget === true && report.indexed_web_search === true && report.current_time_read === true, 'Codex 0.144.1 capability must feed Doctor/native runtime feature matrix', report);
20
+ emitGate('codex-native:0144-doctor-wiring', report);
21
+ //# sourceMappingURL=codex-0144-doctor-wiring-check.js.map
@@ -1,7 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  import { assertGate, emitGate, readJson, root } from './sks-1-18-gate-lib.js';
3
3
  import { codexReleaseManifestParity } from '../core/codex-compat/codex-release-manifest.js';
4
+ import { detectCodex0144Capability } from '../core/codex-control/codex-0144-capability.js';
4
5
  const parity = await codexReleaseManifestParity(root);
6
+ const shippedCapability = await detectCodex0144Capability({ root });
5
7
  const pkg = readJson('package.json');
6
8
  const lock = readJson('package-lock.json');
7
9
  const manifest = parity.manifest;
@@ -14,9 +16,15 @@ assertGate(dep === manifest.sdkVersion, 'package.json must pin @openai/codex-sdk
14
16
  assertGate(lockSdk === manifest.sdkVersion, 'package-lock must resolve @openai/codex-sdk to manifest sdkVersion', { lockSdk, sdkVersion: manifest.sdkVersion });
15
17
  assertGate(lockCli === manifest.requiredCliVersion, 'package-lock must resolve @openai/codex to manifest requiredCliVersion', { lockCli, requiredCliVersion: manifest.requiredCliVersion });
16
18
  assertGate(pkg.version === lockRootVersion, 'package version must match package-lock root version', { version: pkg.version, lockRootVersion });
17
- emitGate('codex:0142:manifest', {
19
+ assertGate(shippedCapability.generated_schema_sha256 === manifest.generatedSchemaSha256, 'shipped App Server schema digest must match manifest generatedSchemaSha256', {
20
+ shippedSchemaSha256: shippedCapability.generated_schema_sha256,
21
+ manifestSchemaSha256: manifest.generatedSchemaSha256,
22
+ probeMode: shippedCapability.probe_mode
23
+ });
24
+ emitGate('codex:0144:manifest', {
18
25
  manifest_sha256: parity.manifest_sha256,
19
26
  target_tag: manifest.targetTag,
20
- sdk_version: manifest.sdkVersion
27
+ sdk_version: manifest.sdkVersion,
28
+ generated_schema_sha256: shippedCapability.generated_schema_sha256
21
29
  });
22
- //# sourceMappingURL=codex-0142-manifest-check.js.map
30
+ //# sourceMappingURL=codex-0144-manifest-check.js.map
@@ -23,10 +23,10 @@ for (const key of ['AWS_SECRET_ACCESS_KEY', 'GITHUB_TOKEN', 'SLACK_BOT_TOKEN'])
23
23
  assertGate(!(key in env.env), `secret env must not be inherited: ${key}`, env.proof);
24
24
  }
25
25
  assertGate(policy.network === 'disabled' && policy.approval === 'on-request' && policy.gitRepoCheck === 'required', 'default Codex execution policy must be conservative', policy);
26
- emitGate('codex:0142:policy', {
26
+ emitGate('codex:0144:policy', {
27
27
  inherited_key_count: env.proof.inherited_key_count,
28
28
  blocked_sensitive_host_env_key_count: env.proof.blocked_sensitive_host_env_key_count,
29
29
  network: policy.network,
30
30
  approval: policy.approval
31
31
  });
32
- //# sourceMappingURL=codex-0142-policy-check.js.map
32
+ //# sourceMappingURL=codex-0144-policy-check.js.map
@@ -4,7 +4,7 @@ import os from 'node:os';
4
4
  import path from 'node:path';
5
5
  import { assertGate, emitGate } from './sks-1-18-gate-lib.js';
6
6
  import { readCodexThreadRegistry, recordCodexThread } from '../core/codex-control/codex-thread-registry.js';
7
- const tmp = await fsp.mkdtemp(path.join(os.tmpdir(), 'sks-codex-0142-thread-store-'));
7
+ const tmp = await fsp.mkdtemp(path.join(os.tmpdir(), 'sks-codex-0144-thread-store-'));
8
8
  try {
9
9
  await Promise.all(Array.from({ length: 100 }, async (_, index) => {
10
10
  await recordCodexThread(tmp, {
@@ -33,7 +33,7 @@ try {
33
33
  await recordCodexThread(tmp, { thread_id: 'after-corruption', session_id: 'session-b', work_item_id: 'work-corrupt' });
34
34
  const repaired = await readCodexThreadRegistry(tmp);
35
35
  assertGate(repaired?.corruption?.preserved_path, 'thread registry corruption must be preserved with evidence', repaired);
36
- emitGate('codex:0142:thread-store', {
36
+ emitGate('codex:0144:thread-store', {
37
37
  concurrent_writes: 100,
38
38
  storage_mode: registry.storage_mode,
39
39
  corruption_preserved: true
@@ -51,4 +51,4 @@ async function exists(file) {
51
51
  return false;
52
52
  }
53
53
  }
54
- //# sourceMappingURL=codex-0142-thread-store-check.js.map
54
+ //# sourceMappingURL=codex-0144-thread-store-check.js.map
@@ -14,30 +14,44 @@ const missing = await codexProviderModelUiStatus({ home, cwd, env: { HOME: home
14
14
  const missingText = formatCodexAppStatus(statusFixture(missing));
15
15
  await fs.writeFile(path.join(home, '.codex', 'config.toml'), readyConfig(), 'utf8');
16
16
  await fs.writeFile(path.join(home, '.codex', 'sks-codex-lb.env'), "export CODEX_LB_BASE_URL='https://lb.example.test/backend-api/codex'\nexport CODEX_LB_API_KEY='sk-codex-lb-fixture'\n", 'utf8');
17
+ const readyCatalog = {
18
+ schema: 'sks.codex-lb-model-catalog.v1',
19
+ ok: true,
20
+ status: 'ready',
21
+ models: ['gpt-5.6-sol', 'gpt-5.6-terra', 'gpt-5.6-luna'],
22
+ model_efforts: {
23
+ 'gpt-5.6-sol': ['xhigh', 'max', 'ultra'],
24
+ 'gpt-5.6-terra': ['xhigh', 'max', 'ultra'],
25
+ 'gpt-5.6-luna': ['xhigh', 'max']
26
+ },
27
+ blockers: []
28
+ };
17
29
  const ready = await codexProviderModelUiStatus({
18
30
  home,
19
31
  cwd,
20
32
  env: { HOME: home, OPENROUTER_API_KEY: 'sk-or-fixture' },
21
- codexLbModelCatalog: {
22
- schema: 'sks.codex-lb-model-catalog.v1',
23
- ok: true,
24
- status: 'ready',
25
- models: ['gpt-5.6-sol', 'gpt-5.6-terra', 'gpt-5.6-luna'],
26
- model_efforts: {
27
- 'gpt-5.6-sol': ['xhigh', 'max', 'ultra'],
28
- 'gpt-5.6-terra': ['xhigh', 'max', 'ultra'],
29
- 'gpt-5.6-luna': ['xhigh', 'max']
30
- },
31
- blockers: []
32
- }
33
+ codexLbModelCatalog: readyCatalog
33
34
  });
34
35
  const readyText = formatCodexAppStatus(statusFixture(ready));
35
- const ok = missing.ok === false
36
+ await fs.writeFile(path.join(home, '.codex', 'config.toml'), codexLbOnlyConfig(), 'utf8');
37
+ const selectedCodexLb = await codexProviderModelUiStatus({
38
+ home,
39
+ cwd,
40
+ env: { HOME: home },
41
+ codexLbModelCatalog: readyCatalog
42
+ });
43
+ const ok = missing.ok === true
44
+ && missing.status === 'ready'
45
+ && missing.selected_provider === 'oauth'
46
+ && missing.blockers.length === 0
47
+ && missing.optional_provider_status === 'setup_available'
48
+ && missing.optional_provider_blockers.includes('glm_openrouter_provider_missing')
49
+ && missing.optional_provider_blockers.includes('codex_lb_provider_missing')
36
50
  && missing.glm.exposed === false
37
51
  && missing.codex_lb.key_entry_visible === true
38
52
  && missing.ui_actions.includes('sks codex-app set-openrouter-key --api-key-stdin')
39
53
  && missing.ui_actions.includes('sks codex-lb setup --host <domain> --api-key-stdin --yes')
40
- && /Provider UI:\s*setup/.test(missingText)
54
+ && /Provider UI:\s*oauth ready, optional providers can be configured/.test(missingText)
41
55
  && /GLM Model:\s*setup/.test(missingText)
42
56
  && /codex-lb Key:\s*missing \(input: sks codex-lb setup/.test(missingText)
43
57
  && ready.ok === true
@@ -48,17 +62,24 @@ const ok = missing.ok === false
48
62
  && ready.codex_lb.key_present === true
49
63
  && ready.codex_lb.model_catalog_ok === true
50
64
  && ready.codex_lb.expected_models_present === true
51
- && /Provider UI:\s*config\/catalog ready/.test(readyText)
65
+ && /Provider UI:\s*oauth ready/.test(readyText)
52
66
  && ready.desktop_picker_verified === false
53
67
  && readyText.includes(`GLM Model: ok ${GLM_52_OPENROUTER_MODEL}`)
54
68
  && /codex-lb Key:\s*configured/.test(readyText)
55
- && !JSON.stringify({ missing, ready, missingText, readyText }).includes('sk-codex-lb-fixture');
69
+ && selectedCodexLb.ok === true
70
+ && selectedCodexLb.status === 'ready'
71
+ && selectedCodexLb.selected_provider === 'codex-lb'
72
+ && selectedCodexLb.selected_provider_blockers.length === 0
73
+ && selectedCodexLb.blockers.length === 0
74
+ && selectedCodexLb.optional_provider_blockers.includes('glm_openrouter_provider_missing')
75
+ && !JSON.stringify({ missing, ready, selectedCodexLb, missingText, readyText }).includes('sk-codex-lb-fixture');
56
76
  emit({
57
77
  schema: 'sks.codex-app-provider-model-ui-check.v1',
58
78
  ok,
59
79
  missing,
60
80
  ready,
61
- secret_safe: !JSON.stringify({ missing, ready, missingText, readyText }).includes('sk-codex-lb-fixture'),
81
+ selected_codex_lb: selectedCodexLb,
82
+ secret_safe: !JSON.stringify({ missing, ready, selectedCodexLb, missingText, readyText }).includes('sk-codex-lb-fixture'),
62
83
  blockers: ok ? [] : ['codex_app_provider_model_ui_check_failed']
63
84
  });
64
85
  function readyConfig() {
@@ -89,12 +110,25 @@ function readyConfig() {
89
110
  ''
90
111
  ].join('\n');
91
112
  }
113
+ function codexLbOnlyConfig() {
114
+ return [
115
+ 'model_provider = "codex-lb"',
116
+ '[model_providers.codex-lb]',
117
+ 'name = "openai"',
118
+ 'base_url = "https://lb.example.test/backend-api/codex"',
119
+ 'wire_api = "responses"',
120
+ 'env_key = "CODEX_LB_API_KEY"',
121
+ 'supports_websockets = true',
122
+ 'requires_openai_auth = true',
123
+ ''
124
+ ].join('\n');
125
+ }
92
126
  function statusFixture(providerModelUi) {
93
127
  return {
94
128
  ok: providerModelUi.ok,
95
129
  app: { installed: true, path: '/Applications/Codex.app' },
96
- codex_cli: { ok: true, version: '0.142.0' },
97
- remote_control: { ok: true, min_version: '0.130.0', codex_cli: { version_number: '0.142.0' } },
130
+ codex_cli: { ok: true, version: '0.144.1' },
131
+ remote_control: { ok: true, min_version: '0.130.0', codex_cli: { version_number: '0.144.1' } },
98
132
  features: {
99
133
  checked: true,
100
134
  required_flags_ok: true,
@@ -34,13 +34,14 @@ delete process.env.SKS_MANAGE_CODEX_APP_PLUGINS;
34
34
  const ok = featureValue(out, 'hooks') === 'false' && featureValue(out, 'multi_agent') === 'false';
35
35
  results.push({ case: 'preserves_disabled_features', ok, hooks: featureValue(out, 'hooks') });
36
36
  }
37
- // 1b) Removed legacy feature flags are stripped instead of preserved.
37
+ // 1b) Stable host capabilities preserve an explicit user false; only a
38
+ // genuinely removed SKS stamp is stripped.
38
39
  {
39
40
  const out = normalize('[features]\nguardian_approval = false\nbrowser_use_external = false\nfast_mode_ui = true\n');
40
- const ok = featureValue(out, 'guardian_approval') === undefined
41
- && featureValue(out, 'browser_use_external') === undefined
41
+ const ok = featureValue(out, 'guardian_approval') === 'false'
42
+ && featureValue(out, 'browser_use_external') === 'false'
42
43
  && featureValue(out, 'fast_mode_ui') === undefined;
43
- results.push({ case: 'strips_removed_feature_flags', ok });
44
+ results.push({ case: 'preserves_stable_and_strips_removed_flags', ok });
44
45
  }
45
46
  // 2) Default install must NOT auto-enable any marketplace plugins.
46
47
  {
@@ -66,11 +67,41 @@ delete process.env.SKS_MANAGE_CODEX_APP_PLUGINS;
66
67
  && featureValue(out, 'hooks') === 'true'
67
68
  && featureValue(out, 'multi_agent') === 'true'
68
69
  && featureValue(out, 'fast_mode') === 'true'
70
+ && featureValue(out, 'computer_use') === 'true'
71
+ && featureValue(out, 'browser_use') === 'true'
72
+ && featureValue(out, 'browser_use_external') === 'true'
73
+ && featureValue(out, 'image_generation') === 'true'
74
+ && featureValue(out, 'in_app_browser') === 'true'
75
+ && featureValue(out, 'tool_suggest') === 'true'
76
+ && featureValue(out, 'plugins') === 'true'
69
77
  && !/\[user\.fast_mode\]/.test(out)
70
78
  && !/\[profiles\.sks-fast-high\]/.test(out)
71
79
  && !/^model\s*=/m.test(out);
72
80
  results.push({ case: 'fresh_config_seeds_defaults', ok });
73
81
  }
82
+ // 7) A blank-separated SKS migration block must release only its own native
83
+ // model/reasoning locks. The documented service tier and an unrelated user
84
+ // model selection remain untouched.
85
+ {
86
+ const migrated = normalize([
87
+ '# SKS moved machine-local Codex config from .codex/config.toml at 2026-07-11T00:00:00Z',
88
+ '',
89
+ 'service_tier = "fast"',
90
+ 'model = "gpt-5.6-sol"',
91
+ 'model_reasoning_effort = "ultra"',
92
+ '',
93
+ '[features]',
94
+ 'fast_mode = true',
95
+ ''
96
+ ].join('\n'));
97
+ const user = normalize('model = "user-selected-model"\nmodel_reasoning_effort = "low"\nservice_tier = "fast"\n');
98
+ const ok = !/^model\s*=/m.test(migrated.split(/\n\s*\[/)[0] || '')
99
+ && !/^model_reasoning_effort\s*=/m.test(migrated.split(/\n\s*\[/)[0] || '')
100
+ && /^service_tier\s*=\s*"fast"/m.test(migrated)
101
+ && /^model\s*=\s*"user-selected-model"/m.test(user)
102
+ && /^model_reasoning_effort\s*=\s*"low"/m.test(user);
103
+ results.push({ case: 'bounded_sks_mode_lock_provenance', ok });
104
+ }
74
105
  // 6) Opt-in enables plugins on a fresh config, but still preserves a user-disabled one.
75
106
  {
76
107
  process.env.SKS_MANAGE_CODEX_APP_PLUGINS = '1';
@@ -12,6 +12,7 @@ const sources = {
12
12
  team: readText('src/core/commands/team-command.ts'),
13
13
  qa: readText('src/core/commands/qa-loop-command.ts'),
14
14
  research: readText('src/core/commands/research-command.ts'),
15
+ researchStage: readText('src/core/research/research-stage-runner.ts'),
15
16
  naruto: readText('src/core/commands/naruto-command.ts'),
16
17
  dfix: readText('src/core/commands/dfix-command.ts'),
17
18
  workerRouter: readText('src/core/agents/native-worker-backend-router.ts')
@@ -19,11 +20,14 @@ const sources = {
19
20
  const teamCreateRedirectsToNaruto = sources.team.includes('redirectTeamCreateToNaruto') && sources.team.includes('narutoCommand');
20
21
  assertGate(teamCreateRedirectsToNaruto, 'Team create must route through Naruto codex control backend SSOT');
21
22
  assertGate(sources.qa.includes("mock ? 'fake' : 'codex-sdk'"), 'QA must route native agents through codex control backend');
22
- assertGate(sources.research.includes("mock ? 'fake' : 'codex-sdk'"), 'Research must route native agents through codex control backend');
23
- assertGate(sources.naruto.includes("backend: 'codex-sdk'"), 'Naruto defaults must name codex-sdk control backend');
23
+ assertGate(sources.research.includes("backend: mock ? 'mock' : 'codex-sdk'")
24
+ && sources.researchStage.includes('runCodexTask({'), 'Research must route real stages through the Codex control backend');
25
+ assertGate(sources.naruto.includes('runOfficialSubagentWorkflow'), 'Naruto must invoke the official Codex subagent runner');
26
+ assertGate(sources.naruto.includes("workflow: 'official_codex_subagent'"), 'Naruto must persist the official subagent workflow contract');
27
+ assertGate(!sources.naruto.includes("backend: 'codex-sdk'"), 'Naruto must not fall back to the legacy codex-sdk backend selector');
24
28
  assertGate(sources.workerRouter.includes('runCodexTask({'), 'native worker router must call runCodexTask');
25
29
  const fixture = await runFakeCodexSdkTaskFixture('control-all-pipelines');
26
30
  assertGate(fixture.result.ok === true, 'all pipeline control fixture must pass', fixture.result);
27
31
  assertGate(fixture.proof.reliability_shield?.ok === true, 'all pipeline fixture must include reliability shield proof', fixture.proof);
28
- emitGate('codex-control:all-pipelines', { gates: required.length, sdk_thread_id: fixture.result.sdkThreadId });
32
+ emitGate('codex-control:all-pipelines', { gates: required.length, naruto_workflow: 'official_codex_subagent', sdk_thread_id: fixture.result.sdkThreadId });
29
33
  //# sourceMappingURL=codex-control-all-pipelines-check.js.map
@@ -13,12 +13,12 @@ const base = {
13
13
  mutationLedgerRoot: process.cwd()
14
14
  };
15
15
  const readOnly = mod.mapCodexSdkSandboxPolicy({ ...base, sandboxPolicy: 'read-only', requestedScopeContract: { read_only: true } });
16
- const workspaceMissing = mod.mapCodexSdkSandboxPolicy({ ...base, sandboxPolicy: 'workspace-write', requestedScopeContract: { read_only: false, allowed_paths: [], write_paths: [] } });
16
+ const emptyWriteScope = mod.mapCodexSdkSandboxPolicy({ ...base, sandboxPolicy: 'workspace-write', requestedScopeContract: { read_only: false, allowed_paths: [], write_paths: [] } });
17
17
  const workspaceScoped = mod.mapCodexSdkSandboxPolicy({ ...base, sandboxPolicy: 'workspace-write', requestedScopeContract: { read_only: false, allowed_paths: ['src/core'], write_paths: ['src/core'] } });
18
18
  const fullBlocked = mod.mapCodexSdkSandboxPolicy({ ...base, sandboxPolicy: 'full-access', requestedScopeContract: { read_only: false, user_confirmed_full_access: true, mad_sks_authorized: false } });
19
19
  const fullMad = mod.mapCodexSdkSandboxPolicy({ ...base, sandboxPolicy: 'full-access', requestedScopeContract: { read_only: false, user_confirmed_full_access: true, mad_sks_authorized: true } });
20
20
  assertGate(readOnly.ok && readOnly.sandboxMode === 'read-only', 'read-only sandbox mapping failed', readOnly);
21
- assertGate(!workspaceMissing.ok && workspaceMissing.blockers.includes('codex_sdk_workspace_write_scope_contract_missing'), 'workspace-write must require scoped paths', workspaceMissing);
21
+ assertGate(emptyWriteScope.ok && emptyWriteScope.sandboxMode === 'read-only', 'workspace-write without scoped paths must downgrade to read-only', emptyWriteScope);
22
22
  assertGate(workspaceScoped.ok && workspaceScoped.sandboxMode === 'workspace-write', 'workspace-write scoped mapping failed', workspaceScoped);
23
23
  assertGate(!fullBlocked.ok && fullBlocked.blockers.includes('codex_sdk_full_access_requires_explicit_mad_scope'), 'full-access must require explicit MAD scope', fullBlocked);
24
24
  assertGate(fullMad.ok && fullMad.sandboxMode === 'danger-full-access', 'MAD-scoped full access must map to danger-full-access', fullMad);
@@ -0,0 +1,27 @@
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 audit = mod.auditToolOutputContinuity([
6
+ { type: 'thread.started' },
7
+ { type: 'item.completed', item: { id: 'call-1', call_id: 'call-1', type: 'custom_tool_call', name: 'fixture' } },
8
+ { type: 'item.completed', item: { id: 'call-2', call_id: 'call-2', type: 'custom_tool_call', name: 'fixture' } },
9
+ { type: 'item.completed', item: { call_id: 'call-1', type: 'custom_tool_call_output', output: 'ok' } }
10
+ ]);
11
+ assertGate(audit.missingToolResultCount === 1, 'one missing custom tool output must be detected', audit);
12
+ assertGate(audit.missingToolCallIds.includes('call-2'), 'missing custom tool call id not reported', audit);
13
+ assertGate(!audit.events.some((event) => event.type === 'tool_result.stubbed'), 'continuity audit must never fabricate a tool output', audit);
14
+ const rolloutAudit = mod.auditToolOutputContinuity([
15
+ { type: 'response_item', payload: { type: 'custom_tool_call', call_id: 'rollout-call-1', name: 'fixture' } },
16
+ { type: 'rollout_record', response_item: { payload: { type: 'custom_tool_call', call_id: 'rollout-call-2', name: 'fixture' } } },
17
+ { type: 'response_item', payload: { type: 'custom_tool_call_output', call_id: 'rollout-call-1', output: 'ok' } }
18
+ ]);
19
+ assertGate(rolloutAudit.missingToolResultCount === 1, 'persisted response_item rollout envelopes must be audited', rolloutAudit);
20
+ assertGate(rolloutAudit.missingToolCallIds.includes('rollout-call-2'), 'rollout envelope missing call id not reported', rolloutAudit);
21
+ emitGate('codex-control:tool-output-continuity-audit', {
22
+ status: 'fail_closed_audit',
23
+ fabricated_tool_result_count: 0,
24
+ missing_tool_result_count: audit.missingToolResultCount,
25
+ rollout_missing_tool_result_count: rolloutAudit.missingToolResultCount
26
+ });
27
+ //# sourceMappingURL=codex-control-tool-output-continuity-audit-check.js.map
@@ -4,7 +4,7 @@ import { assertGate, emitGate, importDist } from './sks-1-18-gate-lib.js';
4
4
  process.env.SKS_CODEX_MODEL_METADATA_FAKE = '1';
5
5
  process.env.SKS_CODEX_MODEL_EFFORTS = 'low,medium,high,xhigh';
6
6
  const mod = await importDist('core/codex-control/codex-model-capabilities.js');
7
- const capability = await mod.resolveCodexModelEffortCapability({ model: 'gpt-5.5' });
7
+ const capability = await mod.resolveCodexModelEffortCapability({ model: 'gpt-5.6-terra' });
8
8
  assertGate(capability.metadata_source === 'app-server' && capability.advertised_efforts.join(',') === 'low,medium,high,xhigh', 'effort capability must auto-discover model advertised effort order');
9
9
  delete process.env.SKS_CODEX_MODEL_METADATA_FAKE;
10
10
  delete process.env.SKS_CODEX_MODEL_EFFORTS;
@@ -7,6 +7,7 @@ const calls = [];
7
7
  const home = await fs.mkdtemp(path.join(os.tmpdir(), 'sks-codex-lb-fast-truth-'));
8
8
  await fs.mkdir(path.join(home, '.codex'), { recursive: true });
9
9
  await fs.writeFile(path.join(home, '.codex', 'config.toml'), [
10
+ 'model = "gpt-5.6-sol"',
10
11
  'model_provider = "codex-lb"',
11
12
  'service_tier = "fast"',
12
13
  '',
@@ -5,7 +5,8 @@ import path from 'node:path';
5
5
  import { codexFastModeDesktopStatus, codexLbConfigPath, configureCodexLb, ensureGlobalCodexFastModeDuringInstall, releaseCodexLbAuthHold, repairCodexLbAuth } from '../cli/install-helpers.js';
6
6
  import { repairCodexConfigStructure, splitCodexProjectConfigPolicy } from '../core/codex/codex-project-config-policy.js';
7
7
  import { parseCodexConfigToml, validateCodexConfigRoundTrip } from '../core/codex/codex-config-toml.js';
8
- const tmp = await fs.mkdtemp(path.join(os.tmpdir(), 'sks-codex-lb-gpt55-fast-'));
8
+ import { normalizeCodexLbToolCatalog } from '../core/codex-lb/codex-lb-tool-catalog.js';
9
+ const tmp = await fs.mkdtemp(path.join(os.tmpdir(), 'sks-codex-lb-gpt56-fast-'));
9
10
  const home = path.join(tmp, 'home');
10
11
  const root = path.join(tmp, 'project');
11
12
  const codexHome = path.join(home, '.codex');
@@ -52,6 +53,7 @@ await fs.writeFile(projectConfig, [
52
53
  const split = await splitCodexProjectConfigPolicy(root, { apply: true, codexHome, configPath: projectConfig, writeReport: false });
53
54
  const structure = await repairCodexConfigStructure(configPath, { apply: true });
54
55
  const final = assertFastProfile(await fs.readFile(configPath, 'utf8'), 'after_rewriters');
56
+ const toolCatalog = assertGpt56ToolCatalogContract();
55
57
  const ok = setup.ok !== false
56
58
  && !['failed', 'skipped_unsafe_rewrite', 'unparseable_config_preserved'].includes(String(fastOn.status))
57
59
  && release.status !== 'failed'
@@ -60,9 +62,10 @@ const ok = setup.ok !== false
60
62
  && structure.ok === true
61
63
  && first.ok
62
64
  && afterOauth.ok
63
- && final.ok;
65
+ && final.ok
66
+ && toolCatalog.ok;
64
67
  const report = {
65
- schema: 'sks.codex-lb-gpt55-fast-profile-check.v1',
68
+ schema: 'sks.codex-lb-gpt56-fast-profile-check.v1',
66
69
  ok,
67
70
  setup_status: setup.status,
68
71
  fast_on_status: fastOn.status,
@@ -71,7 +74,8 @@ const report = {
71
74
  split_status: split.status || null,
72
75
  structure_status: structure.status,
73
76
  assertions: [first, afterOauth, final],
74
- blockers: [first, afterOauth, final].flatMap((item) => item.blockers)
77
+ tool_catalog: toolCatalog,
78
+ blockers: [...[first, afterOauth, final].flatMap((item) => item.blockers), ...toolCatalog.blockers]
75
79
  };
76
80
  console.log(JSON.stringify(report, null, 2));
77
81
  if (!report.ok)
@@ -103,4 +107,51 @@ function assertFastProfile(text, label) {
103
107
  blockers
104
108
  };
105
109
  }
106
- //# sourceMappingURL=codex-lb-gpt55-fast-profile-check.js.map
110
+ function assertGpt56ToolCatalogContract() {
111
+ const normalized = normalizeCodexLbToolCatalog({
112
+ models: ['gpt-5.6-sol', 'gpt-5.6-terra', 'gpt-5.6-luna'].map(codex0144Model)
113
+ });
114
+ const models = normalized.catalog.models.filter((model) => String(model.slug).startsWith('gpt-5.6-'));
115
+ const blockers = [
116
+ ...normalized.blockers,
117
+ ...(normalized.schema === 'sks.codex-lb-tool-catalog.v1' ? [] : ['codex_lb_gpt56_catalog_schema_mismatch']),
118
+ ...(normalized.tools_transport === 'full_responses' ? [] : ['codex_lb_gpt56_native_tool_transport_not_full_responses']),
119
+ ...(normalized.patched_models.join(',') === 'gpt-5.6-luna,gpt-5.6-sol,gpt-5.6-terra' ? [] : ['codex_lb_gpt56_catalog_patch_set_incomplete']),
120
+ ...(models.length === 3 ? [] : ['codex_lb_gpt56_catalog_model_set_incomplete']),
121
+ ...(models.every((model) => model.use_responses_lite === false) ? [] : ['codex_lb_gpt56_responses_lite_not_disabled']),
122
+ ...(models.every((model) => model.tool_mode === 'code_mode_only') ? [] : ['codex_lb_gpt56_native_tool_mode_not_preserved']),
123
+ ...(models.every((model) => model.supports_parallel_tool_calls === true) ? [] : ['codex_lb_gpt56_parallel_tool_calls_not_preserved']),
124
+ ...(models.every((model) => model.minimal_client_version === '0.144.1') ? [] : ['codex_lb_gpt56_codex_0144_contract_missing'])
125
+ ];
126
+ return {
127
+ schema: normalized.schema,
128
+ ok: blockers.length === 0,
129
+ codex_cli_contract: '0.144.1',
130
+ models: normalized.gpt56_models,
131
+ patched_models: normalized.patched_models,
132
+ tools_transport: normalized.tools_transport,
133
+ native_tool_mode: 'code_mode_only',
134
+ blockers
135
+ };
136
+ }
137
+ function codex0144Model(slug) {
138
+ return {
139
+ slug,
140
+ display_name: slug.replace('gpt-', 'GPT-').replaceAll('-', ' '),
141
+ supported_reasoning_levels: [{ effort: 'max', description: 'Maximum' }],
142
+ shell_type: 'shell_command',
143
+ visibility: 'list',
144
+ supported_in_api: true,
145
+ priority: 1,
146
+ base_instructions: 'You are Codex.',
147
+ supports_reasoning_summaries: true,
148
+ support_verbosity: true,
149
+ truncation_policy: { mode: 'tokens', limit: 10_000 },
150
+ supports_parallel_tool_calls: true,
151
+ experimental_supported_tools: [],
152
+ tool_mode: 'code_mode_only',
153
+ use_responses_lite: true,
154
+ minimal_client_version: '0.144.1'
155
+ };
156
+ }
157
+ //# sourceMappingURL=codex-lb-gpt56-fast-profile-check.js.map
@@ -4,7 +4,7 @@ import { assertGate, emitGate, importDist } from './sks-1-18-gate-lib.js';
4
4
  process.env.SKS_CODEX_MODEL_METADATA_FAKE = '1';
5
5
  process.env.SKS_CODEX_MODEL_EFFORTS = 'low,medium,high,xhigh';
6
6
  const mod = await importDist('core/codex-control/codex-model-metadata.js');
7
- const metadata = await mod.collectCodexModelMetadata({ model: 'gpt-5.5' });
7
+ const metadata = await mod.collectCodexModelMetadata({ model: 'gpt-5.6-terra' });
8
8
  assertGate(metadata.source === 'app-server' && metadata.advertised_efforts.includes('xhigh'), 'Codex model metadata collector must expose advertised efforts');
9
9
  emitGate('codex:model-metadata', { source: metadata.source, efforts: metadata.advertised_efforts });
10
10
  //# sourceMappingURL=codex-model-metadata-check.js.map
@@ -2,18 +2,26 @@
2
2
  import fs from 'node:fs';
3
3
  import path from 'node:path';
4
4
  import os from 'node:os';
5
+ import { parse } from 'smol-toml';
5
6
  import { syncCodexAgentRoles } from '../core/codex-app/codex-agent-role-sync.js';
7
+ import { MANAGED_OFFICIAL_SUBAGENT_ROLES } from '../core/managed-assets/managed-assets-manifest.js';
6
8
  const root = await fs.promises.mkdtemp(path.join(os.tmpdir(), 'sks-agent-role-content-'));
7
9
  const codexHome = path.join(root, 'codex-home');
8
10
  const report = await syncCodexAgentRoles({ root, codexHome, apply: true, agentTypeSupported: true });
9
- const checker = await fs.promises.readFile(path.join(codexHome, 'agents', 'sks-checker.toml'), 'utf8');
10
- const implementer = await fs.promises.readFile(path.join(codexHome, 'agents', 'sks-implementer.toml'), 'utf8');
11
- for (const token of ['Bounded ownership', 'Maker/checker separation', 'Allowed sandbox', 'Side-effect restrictions', 'Required proof artifacts', 'Final arbiter constraints']) {
12
- assertGate(checker.includes(token) && implementer.includes(token), `managed agent role missing:${token}`);
11
+ const expert = await fs.promises.readFile(path.join(root, '.codex', 'agents', 'expert.toml'), 'utf8');
12
+ const worker = await fs.promises.readFile(path.join(root, '.codex', 'agents', 'worker.toml'), 'utf8');
13
+ assertGate(expert.includes('model = "gpt-5.6-sol"') && expert.includes('model_reasoning_effort = "max"'), 'expert role must use Sol Max');
14
+ assertGate(worker.includes('model = "gpt-5.6-luna"') && worker.includes('model_reasoning_effort = "max"'), 'worker role must use Luna Max');
15
+ assertGate(expert.includes('Do not spawn another subagent.') && worker.includes('Do not redesign the task, expand scope, or spawn another subagent.'), 'official roles must prohibit nested delegation');
16
+ for (const role of MANAGED_OFFICIAL_SUBAGENT_ROLES) {
17
+ const text = await fs.promises.readFile(path.join(root, '.codex', 'agents', role.filename), 'utf8');
18
+ const doc = parse(text);
19
+ assertGate(doc.name === role.codex_name && doc.model === role.model && doc.model_reasoning_effort === 'max', `official role policy mismatch:${role.codex_name}`);
20
+ assertGate(Object.hasOwn(doc, 'sandbox_mode') === (role.sandbox === 'read-only'), `official role sandbox inheritance mismatch:${role.codex_name}`);
21
+ assertGate(doc.sandbox_mode === role.sandbox, `official role sandbox value mismatch:${role.codex_name}`);
13
22
  }
14
- assertGate(checker.includes('sandbox_mode = \"read-only\"') && checker.includes('checker is read-only'), 'checker role must be read-only');
15
- assertGate(implementer.includes('cannot self-approve'), 'implementer role must not self-approve');
16
- assertGate(report.strategy === 'agent_type' && report.probe_artifact_path && report.clobbered_user_roles === false, 'agent role report strategy/probe/no-clobber fields missing');
23
+ assertGate(!fs.existsSync(path.join(codexHome, 'agents')), 'agent role sync must not create global directive roles');
24
+ assertGate(report.strategy === 'agent_type' && report.probe_artifact_path && report.clobbered_user_roles === false && report.official_roles.length === MANAGED_OFFICIAL_SUBAGENT_ROLES.length, 'agent role report strategy/probe/catalog/no-clobber fields missing');
17
25
  emitGate('codex-native:agent-role-content');
18
26
  function assertGate(condition, message) {
19
27
  if (condition)
@@ -11,11 +11,13 @@ process.env.CODEX_HOME = path.join(root, 'codex-home');
11
11
  try {
12
12
  const denied = await repairCodexNativeManagedAssets({ root, requestedBy: 'manual' });
13
13
  assertGate(denied.ok === false && denied.blockers.includes('repair_transaction_requires_yes'), 'repair transaction must require --yes before mutation', denied);
14
- assertGate(!(await exists(path.join(root, 'codex-home', 'skills'))) && !(await exists(path.join(root, 'codex-home', 'agents'))), 'no-yes repair created managed assets', denied);
14
+ assertGate(!(await exists(path.join(root, 'codex-home', 'skills'))) && !(await exists(path.join(root, 'codex-home', 'agents'))) && !(await exists(path.join(root, '.codex', 'agents'))), 'no-yes repair created managed assets', denied);
15
15
  const report = await repairCodexNativeManagedAssets({ root, requestedBy: 'manual', yes: true });
16
16
  assertGate(report.schema === 'sks.codex-native-repair-transaction.v1' && report.repaired.length === 4, 'repair transaction report incomplete', report);
17
17
  assertGate(report.confirmed === true && typeof report.mutation_ledger_path === 'string', 'repair transaction missing confirmation/ledger proof', report);
18
18
  assertGate(report.repaired.every((row) => row.artifact_path && Array.isArray(row.blockers)), 'repair rows missing artifact/blocker contract', report);
19
+ assertGate(await exists(path.join(root, '.codex', 'agents', 'worker.toml')) && await exists(path.join(root, '.codex', 'agents', 'expert.toml')), 'repair transaction did not create official project agent roles', report);
20
+ assertGate(!(await exists(path.join(root, 'codex-home', 'agents'))), 'repair transaction created legacy global agent roles', report);
19
21
  }
20
22
  finally {
21
23
  if (previous === undefined)