sneakoscope 4.8.7 → 5.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (261) hide show
  1. package/README.md +51 -726
  2. package/config/bench-baseline.json +7 -0
  3. package/crates/sks-core/Cargo.lock +1 -1
  4. package/crates/sks-core/Cargo.toml +1 -1
  5. package/crates/sks-core/src/main.rs +1 -1
  6. package/dist/bin/install.js +35 -0
  7. package/dist/bin/sks.js +1 -1
  8. package/dist/cli/cli-theme.js +51 -0
  9. package/dist/cli/command-registry.js +15 -4
  10. package/dist/cli/help-fast.js +18 -8
  11. package/dist/cli/insane-search-command.js +36 -8
  12. package/dist/cli/install-helpers.js +32 -0
  13. package/dist/commands/codex-lb.js +2 -0
  14. package/dist/commands/doctor.js +94 -9
  15. package/dist/commands/proof.js +6 -3
  16. package/dist/config/skills-manifest.json +82 -54
  17. package/dist/core/agents/agent-conflict-graph.js +5 -0
  18. package/dist/core/agents/agent-lease.js +5 -0
  19. package/dist/core/agents/agent-ledger-schemas.js +1 -0
  20. package/dist/core/agents/agent-lifecycle.js +5 -3
  21. package/dist/core/agents/agent-orchestrator.js +268 -62
  22. package/dist/core/agents/agent-output-validator.js +14 -3
  23. package/dist/core/agents/agent-patch-queue-store.js +95 -2
  24. package/dist/core/agents/agent-patch-queue.js +6 -3
  25. package/dist/core/agents/agent-patch-schema.js +13 -0
  26. package/dist/core/agents/agent-proof-evidence.js +6 -1
  27. package/dist/core/agents/agent-runner-fake.js +40 -0
  28. package/dist/core/agents/agent-worker-pipeline.js +36 -2
  29. package/dist/core/agents/codex-exec-worker-adapter.js +2 -0
  30. package/dist/core/agents/native-cli-worker.js +0 -1
  31. package/dist/core/agents/native-worker-backend-router.js +58 -1
  32. package/dist/core/codex-app/sks-menubar.js +477 -132
  33. package/dist/core/codex-app.js +1 -0
  34. package/dist/core/codex-control/codex-sdk-config-policy.js +2 -1
  35. package/dist/core/codex-control/codex-sdk-env-policy.js +1 -1
  36. package/dist/core/codex-control/schemas/agent-worker-result.schema.js +12 -3
  37. package/dist/core/codex-hooks/codex-hook-managed-install.js +5 -0
  38. package/dist/core/codex-hooks/codex-hook-state-writer.js +70 -11
  39. package/dist/core/codex-hooks/codex-hook-trust-doctor.js +2 -2
  40. package/dist/core/codex-lb/codex-lb-env.js +20 -1
  41. package/dist/core/commands/basic-cli.js +18 -1
  42. package/dist/core/commands/check-command.js +37 -5
  43. package/dist/core/commands/computer-use-command.js +62 -7
  44. package/dist/core/commands/db-command.js +31 -5
  45. package/dist/core/commands/fast-mode-command.js +3 -0
  46. package/dist/core/commands/gate-result-contract.js +43 -0
  47. package/dist/core/commands/gates-command.js +6 -1
  48. package/dist/core/commands/gc-command.js +29 -2
  49. package/dist/core/commands/goal-command.js +9 -2
  50. package/dist/core/commands/gx-command.js +79 -7
  51. package/dist/core/commands/image-ux-review-command.js +188 -13
  52. package/dist/core/commands/mad-db-command.js +85 -176
  53. package/dist/core/commands/mad-sks-command.js +230 -29
  54. package/dist/core/commands/menubar-command.js +24 -2
  55. package/dist/core/commands/naruto-command.js +64 -10
  56. package/dist/core/commands/plan-command.js +76 -0
  57. package/dist/core/commands/ppt-command.js +159 -24
  58. package/dist/core/commands/qa-loop-command.js +6 -2
  59. package/dist/core/commands/release-command.js +55 -2
  60. package/dist/core/commands/research-command.js +1 -1
  61. package/dist/core/commands/review-command.js +217 -0
  62. package/dist/core/commands/route-success-helpers.js +59 -0
  63. package/dist/core/commands/run-command.js +19 -7
  64. package/dist/core/commands/seo-command.js +49 -1
  65. package/dist/core/commands/ui-command.js +161 -0
  66. package/dist/core/commands/uninstall-command.js +15 -1
  67. package/dist/core/db-safety.js +2 -2
  68. package/dist/core/doctor/doctor-dirty-planner.js +51 -7
  69. package/dist/core/doctor/doctor-transaction.js +8 -0
  70. package/dist/core/doctor/doctor-zellij-repair.js +1 -0
  71. package/dist/core/doctor/imagegen-repair.js +161 -0
  72. package/dist/core/feature-fixture-runner.js +2 -2
  73. package/dist/core/feature-fixtures.js +58 -37
  74. package/dist/core/feature-registry.js +102 -2
  75. package/dist/core/fsx.js +39 -6
  76. package/dist/core/image-ux-review/imagegen-adapter.js +48 -11
  77. package/dist/core/image-ux-review.js +16 -0
  78. package/dist/core/imagegen/imagegen-capability.js +11 -5
  79. package/dist/core/imagegen/require-imagegen.js +57 -0
  80. package/dist/core/init/skills.js +10 -5
  81. package/dist/core/mad-db/mad-db-coordinator.js +94 -18
  82. package/dist/core/mad-db/mad-db-policy.js +12 -10
  83. package/dist/core/mad-sks/executors/executor-base.js +8 -2
  84. package/dist/core/mad-sks/executors/index.js +4 -0
  85. package/dist/core/mad-sks/executors/sql-plane-executor.js +194 -0
  86. package/dist/core/naruto/naruto-active-pool.js +15 -4
  87. package/dist/core/naruto/naruto-real-worker-child.js +11 -1
  88. package/dist/core/naruto/naruto-role-policy.js +3 -0
  89. package/dist/core/naruto/naruto-task-hints.js +10 -0
  90. package/dist/core/naruto/naruto-work-graph.js +8 -2
  91. package/dist/core/naruto/naruto-work-item.js +6 -0
  92. package/dist/core/naruto/solution-tournament.js +101 -0
  93. package/dist/core/permission-gates.js +30 -0
  94. package/dist/core/pipeline-internals/runtime-core.js +11 -3
  95. package/dist/core/pipeline-internals/runtime-gates.js +27 -0
  96. package/dist/core/ppt-review/index.js +6 -1
  97. package/dist/core/ppt-review/slide-imagegen-review.js +75 -10
  98. package/dist/core/ppt.js +70 -2
  99. package/dist/core/proof/auto-finalize.js +70 -11
  100. package/dist/core/proof/proof-schema.js +2 -0
  101. package/dist/core/proof/route-adapter.js +5 -1
  102. package/dist/core/proof/route-finalizer.js +8 -5
  103. package/dist/core/proof/selftest-proof-fixtures.js +18 -5
  104. package/dist/core/proof/validation.js +2 -0
  105. package/dist/core/provider/model-router.js +53 -0
  106. package/dist/core/release/release-gate-node.js +3 -0
  107. package/dist/core/release/release-gate-resource-governor.js +1 -0
  108. package/dist/core/routes/constants.js +1 -1
  109. package/dist/core/routes.js +65 -18
  110. package/dist/core/safety/mutation-guard.js +5 -1
  111. package/dist/core/stop-gate/gate-evaluator.js +102 -0
  112. package/dist/core/stop-gate/stop-gate-check.js +16 -1
  113. package/dist/core/stop-gate/stop-gate-writer.js +4 -0
  114. package/dist/core/triwiki/agents-md-projector.js +184 -0
  115. package/dist/core/triwiki-wrongness/wrongness-schema.js +3 -1
  116. package/dist/core/trust-kernel/trust-kernel-schema.js +1 -0
  117. package/dist/core/trust-kernel/trust-report.js +1 -1
  118. package/dist/core/trust-kernel/trust-status.js +2 -0
  119. package/dist/core/ui/dashboard-html.js +111 -0
  120. package/dist/core/update/update-migration-state.js +386 -15
  121. package/dist/core/update-check.js +178 -81
  122. package/dist/core/verification/diff-quality.js +100 -0
  123. package/dist/core/verification/impact-scan.js +164 -0
  124. package/dist/core/verification/machine-feedback.js +146 -0
  125. package/dist/core/verification/mistake-rule-compiler.js +195 -0
  126. package/dist/core/version.js +1 -1
  127. package/dist/core/zellij/zellij-self-heal.js +9 -6
  128. package/dist/core/zellij/zellij-slot-telemetry.js +1 -1
  129. package/dist/scripts/check-feature-quality.js +2 -2
  130. package/dist/scripts/cli-output-consistency-check.js +57 -0
  131. package/dist/scripts/coding-bench-check.js +136 -0
  132. package/dist/scripts/doctor-imagegen-repair-check.js +62 -0
  133. package/dist/scripts/ensure-bin-executable.js +11 -3
  134. package/dist/scripts/harness-benchmark-check.js +104 -0
  135. package/dist/scripts/legacy-update-e2e-check.js +228 -0
  136. package/dist/scripts/mad-db-command-check.js +11 -8
  137. package/dist/scripts/mad-db-route-identity-check.js +8 -6
  138. package/dist/scripts/mad-db-safety-conflict-matrix-check.js +31 -8
  139. package/dist/scripts/mad-db-skill-policy-snapshot-check.js +4 -5
  140. package/dist/scripts/naruto-real-active-pool-runtime-check.js +26 -1
  141. package/dist/scripts/ppt-real-imagegen-wiring-check.js +5 -1
  142. package/dist/scripts/proof-root-cause-policy-check.js +2 -0
  143. package/dist/scripts/release-dag-full-coverage-check.js +13 -4
  144. package/dist/scripts/release-gate-dag-runner.js +14 -0
  145. package/dist/scripts/release-gate-existence-audit.js +2 -1
  146. package/dist/scripts/release-gate-planner.js +2 -1
  147. package/dist/scripts/release-gate-script-parity-check.js +45 -17
  148. package/dist/scripts/release-metadata-1-19-check.js +2 -1
  149. package/dist/scripts/seo-geo-feature-fixture-quality-check.js +1 -1
  150. package/dist/scripts/sks-1-11-gate-lib.js +8 -6
  151. package/dist/scripts/sks-menubar-install-check.js +57 -20
  152. package/dist/scripts/ux-review-real-loop-fixture-check.js +9 -4
  153. package/dist/scripts/ux-review-run-wires-imagegen-check.js +4 -0
  154. package/dist/scripts/zellij-slot-telemetry-runtime-check.js +1 -0
  155. package/docs/assets/sneakoscope-architecture-pipeline.jpg +0 -0
  156. package/docs/demo.tape +28 -0
  157. package/package.json +31 -24
  158. package/schemas/codex/completion-proof.schema.json +3 -2
  159. package/schemas/release/release-gate-node.schema.json +2 -1
  160. package/dist/scripts/agent-backfill-route-blackbox.js +0 -5
  161. package/dist/scripts/agent-dynamic-pool-route-blackbox.js +0 -5
  162. package/dist/scripts/agent-parallel-write-blackbox.js +0 -56
  163. package/dist/scripts/agent-patch-swarm-route-blackbox.js +0 -10
  164. package/dist/scripts/agent-route-blackbox-lib.js +0 -132
  165. package/dist/scripts/blackbox-command-import-smoke.js +0 -143
  166. package/dist/scripts/blackbox-global-shim.js +0 -77
  167. package/dist/scripts/blackbox-matrix.js +0 -70
  168. package/dist/scripts/blackbox-npx-one-shot.js +0 -69
  169. package/dist/scripts/blackbox-pack-install.js +0 -174
  170. package/dist/scripts/brand-neutrality-zero-leakage-blackbox.js +0 -4
  171. package/dist/scripts/build-once-runner-blackbox.js +0 -34
  172. package/dist/scripts/codex-0140-integration-blackbox.js +0 -13
  173. package/dist/scripts/codex-agent-type-blackbox.js +0 -4
  174. package/dist/scripts/codex-app-harness-blackbox.js +0 -4
  175. package/dist/scripts/codex-app-skill-agent-blackbox.js +0 -4
  176. package/dist/scripts/codex-hook-approval-blackbox.js +0 -4
  177. package/dist/scripts/codex-init-deep-directory-local-blackbox.js +0 -4
  178. package/dist/scripts/codex-native-feature-broker-blackbox.js +0 -4
  179. package/dist/scripts/codex-native-pattern-analysis-blackbox.js +0 -4
  180. package/dist/scripts/codex-native-read-repair-split-blackbox.js +0 -55
  181. package/dist/scripts/codex-native-reference-cache-blackbox.js +0 -41
  182. package/dist/scripts/core-skill-integrity-blackbox.js +0 -32
  183. package/dist/scripts/dfix-fast-blackbox-check.js +0 -37
  184. package/dist/scripts/dfix-parallel-write-blackbox.js +0 -48
  185. package/dist/scripts/dfix-patch-swarm-route-blackbox.js +0 -10
  186. package/dist/scripts/doctor-dirty-repair-blackbox.js +0 -22
  187. package/dist/scripts/doctor-dirty-semantic-blackbox.js +0 -8
  188. package/dist/scripts/doctor-native-capability-repair-blackbox.js +0 -39
  189. package/dist/scripts/doctor-transaction-engine-blackbox.js +0 -28
  190. package/dist/scripts/doctor-zellij-fix-blackbox.js +0 -4
  191. package/dist/scripts/doctor-zellij-no-homebrew-blackbox.js +0 -4
  192. package/dist/scripts/doctor-zellij-upgrade-blackbox.js +0 -4
  193. package/dist/scripts/gate-pack-runner-blackbox.js +0 -27
  194. package/dist/scripts/gate-pack-v2-blackbox.js +0 -18
  195. package/dist/scripts/geo-cli-blackbox-check.js +0 -18
  196. package/dist/scripts/loop-collision-blackbox.js +0 -3
  197. package/dist/scripts/loop-concurrency-oversubscription-blackbox.js +0 -3
  198. package/dist/scripts/loop-fixture-production-misuse-blackbox.js +0 -3
  199. package/dist/scripts/loop-kill-interrupt-real-blackbox.js +0 -3
  200. package/dist/scripts/loop-merge-strategy-blackbox.js +0 -3
  201. package/dist/scripts/loop-mesh-production-e2e-blackbox.js +0 -3
  202. package/dist/scripts/loop-side-effect-blackbox.js +0 -3
  203. package/dist/scripts/mad-db-operation-lifecycle-blackbox.js +0 -29
  204. package/dist/scripts/mad-sks-actual-executor-blackbox.js +0 -5
  205. package/dist/scripts/mad-zellij-headless-fallback-blackbox.js +0 -4
  206. package/dist/scripts/mad-zellij-self-heal-blackbox.js +0 -4
  207. package/dist/scripts/naruto-loop-mesh-blackbox.js +0 -3
  208. package/dist/scripts/naruto-real-parallelism-blackbox.js +0 -307
  209. package/dist/scripts/naruto-worktree-coding-blackbox.js +0 -29
  210. package/dist/scripts/parallel-runtime-real-blackbox.js +0 -44
  211. package/dist/scripts/pipeline-codex-native-doctor-mad-routing-real-blackbox.js +0 -77
  212. package/dist/scripts/pipeline-codex-native-e2e-blackbox.js +0 -13
  213. package/dist/scripts/pipeline-codex-native-image-routing-real-blackbox.js +0 -50
  214. package/dist/scripts/pipeline-codex-native-loop-routing-real-blackbox.js +0 -74
  215. package/dist/scripts/pipeline-codex-native-qa-routing-real-blackbox.js +0 -51
  216. package/dist/scripts/pipeline-codex-native-research-routing-real-blackbox.js +0 -45
  217. package/dist/scripts/pipeline-execution-profile-routing-blackbox.js +0 -4
  218. package/dist/scripts/postinstall-global-doctor-blackbox.js +0 -12
  219. package/dist/scripts/ppt-full-e2e-blackbox-check.js +0 -109
  220. package/dist/scripts/ppt-imagegen-blackbox-check.js +0 -46
  221. package/dist/scripts/qa-backfill-route-blackbox.js +0 -5
  222. package/dist/scripts/qa-patch-swarm-route-blackbox.js +0 -10
  223. package/dist/scripts/release-full-parallelism-blackbox.js +0 -41
  224. package/dist/scripts/release-triwiki-first-runner-blackbox.js +0 -48
  225. package/dist/scripts/release-wiring-3110-blackbox.js +0 -27
  226. package/dist/scripts/release-wiring-3112-blackbox.js +0 -17
  227. package/dist/scripts/release-wiring-3113-blackbox.js +0 -17
  228. package/dist/scripts/research-backfill-route-blackbox.js +0 -5
  229. package/dist/scripts/research-final-reviewer-blackbox.js +0 -70
  230. package/dist/scripts/research-stage-cycle-runtime-blackbox.js +0 -40
  231. package/dist/scripts/research-synthesis-writer-blackbox.js +0 -24
  232. package/dist/scripts/route-blackbox-realism-check.js +0 -21
  233. package/dist/scripts/scheduler-resource-claim-blackbox.js +0 -24
  234. package/dist/scripts/seo-cli-blackbox-check.js +0 -18
  235. package/dist/scripts/sks-3110-all-feature-regression-blackbox.js +0 -116
  236. package/dist/scripts/sks-3112-all-feature-regression-blackbox.js +0 -29
  237. package/dist/scripts/sks-3113-all-feature-regression-blackbox.js +0 -17
  238. package/dist/scripts/sks-400-all-feature-regression-blackbox.js +0 -21
  239. package/dist/scripts/sks-400-extreme-parallel-blackbox.js +0 -8
  240. package/dist/scripts/sks-400-five-minute-blackbox.js +0 -9
  241. package/dist/scripts/sks-400-legacy-purge-blackbox.js +0 -8
  242. package/dist/scripts/sks-401-all-feature-regression-blackbox.js +0 -46
  243. package/dist/scripts/sks-401-five-minute-actual-blackbox.js +0 -23
  244. package/dist/scripts/sks-402-all-feature-regression-blackbox.js +0 -9
  245. package/dist/scripts/sks-402-five-minute-real-blackbox.js +0 -22
  246. package/dist/scripts/sksd-warm-cache-blackbox.js +0 -12
  247. package/dist/scripts/team-backfill-route-blackbox.js +0 -5
  248. package/dist/scripts/team-parallel-write-blackbox.js +0 -55
  249. package/dist/scripts/team-patch-swarm-route-blackbox.js +0 -10
  250. package/dist/scripts/triwiki-affected-graph-blackbox.js +0 -28
  251. package/dist/scripts/triwiki-proof-bank-blackbox.js +0 -30
  252. package/dist/scripts/triwiki-proof-bank-lock-blackbox.js +0 -7
  253. package/dist/scripts/ux-patch-swarm-route-blackbox.js +0 -10
  254. package/dist/scripts/ux-review-imagegen-blackbox-check.js +0 -67
  255. package/dist/scripts/zellij-initial-main-only-blackbox.js +0 -28
  256. package/dist/scripts/zellij-pane-lock-concurrency-blackbox.js +0 -80
  257. package/dist/scripts/zellij-pane-lock-open-worker-integration-blackbox.js +0 -137
  258. package/dist/scripts/zellij-self-heal-typed-blackbox.js +0 -4
  259. package/dist/scripts/zellij-slot-telemetry-real-blackbox.js +0 -20
  260. package/dist/scripts/zellij-stacked-fallback-integration-blackbox.js +0 -81
  261. package/dist/scripts/zellij-worker-pane-real-ui-blackbox.js +0 -202
@@ -1,50 +0,0 @@
1
- #!/usr/bin/env node
2
- import fs from 'node:fs/promises';
3
- import path from 'node:path';
4
- import { pathToFileURL } from 'node:url';
5
- import { writeImageArtifactPathContract } from '../core/image/image-artifact-path-contract.js';
6
- import { createCodexNativeRuntimeFixture, withFixtureEnv } from './codex-native-runtime-e2e-fixture.js';
7
- export async function runCodexNativeImageRoutingRealBlackbox() {
8
- const modelVisible = await imageScenario({ imagePathExposure: true, missing: false });
9
- assertGate(modelVisible.images?.[0]?.codex_native_followup_strategy === 'model-visible-path', 'image path exposure should select model-visible path', modelVisible);
10
- const artifactPath = await imageScenario({ imagePathExposure: false, missing: false });
11
- assertGate(artifactPath.images?.[0]?.codex_native_followup_strategy === 'artifact-path', 'image path fallback should select saved artifact path', artifactPath);
12
- const ambiguous = await imageScenario({ imagePathExposure: true, missing: true });
13
- assertGate(Array.isArray(ambiguous.blockers) && ambiguous.blockers.length > 0, 'ambiguous/missing image reference must block', ambiguous);
14
- assertGate(JSON.stringify(ambiguous).includes('Image file path missing'), 'missing image must not produce false follow-up edit hint', ambiguous);
15
- emitGate('pipeline:codex-native-image-routing-real-blackbox');
16
- }
17
- async function imageScenario(input) {
18
- const fixture = await createCodexNativeRuntimeFixture({
19
- hook: 'approved',
20
- agentType: 'supported',
21
- appHandoff: true,
22
- imagePathExposure: input.imagePathExposure,
23
- mcpCandidates: true,
24
- codeModeWebSearch: true
25
- });
26
- return withFixtureEnv(fixture, async () => {
27
- const imagePath = path.join(fixture.root, '.sneakoscope', 'missions', fixture.missionId, input.missing ? 'missing.png' : 'image.png');
28
- if (!input.missing)
29
- await fs.writeFile(imagePath, Buffer.from([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]));
30
- const result = await writeImageArtifactPathContract(fixture.root, {
31
- missionId: fixture.missionId,
32
- images: [{ id: 'fixture-image', kind: 'generated_image', filePath: imagePath }]
33
- });
34
- const artifact = JSON.parse(await fs.readFile(result.artifact_path, 'utf8'));
35
- assertGate(artifact.codex_native_invocation_plan, 'image invocation plan missing from artifact', artifact);
36
- return artifact;
37
- });
38
- }
39
- if (import.meta.url === pathToFileURL(process.argv[1] || '').href)
40
- await runCodexNativeImageRoutingRealBlackbox();
41
- function assertGate(condition, message, detail = {}) {
42
- if (condition)
43
- return;
44
- console.error(JSON.stringify({ ok: false, message, detail }, null, 2));
45
- process.exit(1);
46
- }
47
- function emitGate(gate) {
48
- console.log(JSON.stringify({ schema: 'sks.release-gate.v1', ok: true, gate }, null, 2));
49
- }
50
- //# sourceMappingURL=pipeline-codex-native-image-routing-real-blackbox.js.map
@@ -1,74 +0,0 @@
1
- #!/usr/bin/env node
2
- import fs from 'node:fs/promises';
3
- import path from 'node:path';
4
- import { pathToFileURL } from 'node:url';
5
- import { planLoopsFromRequest } from '../core/loops/loop-planner.js';
6
- import { runLoopMakerWorkers } from '../core/loops/loop-worker-runtime.js';
7
- import { resolveCodexNativeInvocationPlan } from '../core/codex-native/codex-native-invocation-router.js';
8
- import { createCodexNativeRuntimeFixture, withFixtureEnv } from './codex-native-runtime-e2e-fixture.js';
9
- export async function runCodexNativeLoopRoutingRealBlackbox() {
10
- const supported = await createCodexNativeRuntimeFixture({
11
- hook: 'approved',
12
- agentType: 'supported',
13
- appHandoff: true,
14
- imagePathExposure: true,
15
- mcpCandidates: true,
16
- codeModeWebSearch: true
17
- });
18
- await withFixtureEnv(supported, async () => {
19
- const plan = await planLoopsFromRequest({
20
- root: supported.root,
21
- missionId: supported.missionId,
22
- request: 'change loop runtime fixture',
23
- sourceCommand: 'loop',
24
- maxLoops: 1
25
- });
26
- const node = plan.graph.nodes.find((row) => row.route !== '$Integration');
27
- assertGate(node, 'loop action node missing');
28
- const result = await runLoopMakerWorkers({ root: supported.root, plan, node, fixture: true });
29
- assertGate(result.codex_native_invocation_plan?.selected_strategy === 'codex-app-native', 'loop fixture did not record codex-app-native strategy', result);
30
- assertGate(result.codex_native_invocation_plan?.env.SKS_CODEX_NATIVE_AGENT_ROLE_STRATEGY === 'agent_type', 'loop fixture env missing agent_type strategy', result);
31
- const artifact = path.join(supported.root, '.sneakoscope', 'missions', supported.missionId, 'codex-native-invocation-plan.loop.agent-role.json');
32
- assertGate(await exists(artifact), 'loop invocation plan artifact missing', { artifact });
33
- });
34
- const unsupported = await createCodexNativeRuntimeFixture({
35
- hook: 'approved',
36
- agentType: 'unsupported',
37
- appHandoff: true,
38
- imagePathExposure: true,
39
- mcpCandidates: true,
40
- codeModeWebSearch: true
41
- });
42
- await withFixtureEnv(unsupported, async () => {
43
- const plan = await resolveCodexNativeInvocationPlan({
44
- root: unsupported.root,
45
- missionId: unsupported.missionId,
46
- route: '$Loop',
47
- desiredCapability: 'agent-role'
48
- });
49
- assertGate(plan.selected_strategy === 'message-role-fallback', 'unsupported agent_type must use message-role fallback', plan);
50
- assertGate(plan.warnings.some((warning) => warning.includes('message-role fallback')), 'fallback warning missing', plan);
51
- });
52
- emitGate('pipeline:codex-native-loop-routing-real-blackbox');
53
- }
54
- if (import.meta.url === pathToFileURL(process.argv[1] || '').href)
55
- await runCodexNativeLoopRoutingRealBlackbox();
56
- async function exists(file) {
57
- try {
58
- const stat = await fs.stat(file);
59
- return stat.isFile();
60
- }
61
- catch {
62
- return false;
63
- }
64
- }
65
- function assertGate(condition, message, detail = {}) {
66
- if (condition)
67
- return;
68
- console.error(JSON.stringify({ ok: false, message, detail }, null, 2));
69
- process.exit(1);
70
- }
71
- function emitGate(gate) {
72
- console.log(JSON.stringify({ schema: 'sks.release-gate.v1', ok: true, gate }, null, 2));
73
- }
74
- //# sourceMappingURL=pipeline-codex-native-loop-routing-real-blackbox.js.map
@@ -1,51 +0,0 @@
1
- #!/usr/bin/env node
2
- import fs from 'node:fs/promises';
3
- import path from 'node:path';
4
- import { pathToFileURL } from 'node:url';
5
- import { writeQaLoopArtifacts } from '../core/qa-loop.js';
6
- import { createCodexNativeRuntimeFixture, withFixtureEnv } from './codex-native-runtime-e2e-fixture.js';
7
- export async function runCodexNativeQaRoutingRealBlackbox() {
8
- const ready = await qaScenario({ hook: 'approved', appHandoff: true });
9
- assertGate(ready.visual_review === 'codex-app-native', 'QA visual review should select app handoff when ready', ready);
10
- const unknownHook = await qaScenario({ hook: 'unknown', appHandoff: true });
11
- assertGate(unknownHook.hook_evidence_policy === 'unknown-do-not-count', 'unknown hook evidence must not count', unknownHook);
12
- assertGate(unknownHook.hook_derived_evidence_counted === false, 'unknown hook-derived evidence was counted', unknownHook);
13
- const noHandoff = await qaScenario({ hook: 'approved', appHandoff: false });
14
- assertGate(noHandoff.visual_review !== 'codex-app-native', 'QA must not falsely pass app handoff when unavailable', noHandoff);
15
- emitGate('pipeline:codex-native-qa-routing-real-blackbox');
16
- }
17
- async function qaScenario(input) {
18
- const fixture = await createCodexNativeRuntimeFixture({
19
- hook: input.hook,
20
- agentType: 'supported',
21
- appHandoff: input.appHandoff,
22
- imagePathExposure: true,
23
- mcpCandidates: true,
24
- codeModeWebSearch: true
25
- });
26
- return withFixtureEnv(fixture, async () => {
27
- const dir = path.join(fixture.root, '.sneakoscope', 'missions', fixture.missionId);
28
- await writeQaLoopArtifacts(dir, { id: fixture.missionId, prompt: 'QA visual fixture' }, {
29
- answers: {
30
- QA_SCOPE: 'ui_visual',
31
- TARGET_ENVIRONMENT: 'local_fixture',
32
- QA_MUTATION_POLICY: 'no_mutation'
33
- }
34
- });
35
- const artifact = JSON.parse(await fs.readFile(path.join(dir, 'qa-loop', 'codex-native-invocation.json'), 'utf8'));
36
- assertGate(artifact && typeof artifact === 'object', 'QA invocation artifact missing');
37
- return artifact;
38
- });
39
- }
40
- if (import.meta.url === pathToFileURL(process.argv[1] || '').href)
41
- await runCodexNativeQaRoutingRealBlackbox();
42
- function assertGate(condition, message, detail = {}) {
43
- if (condition)
44
- return;
45
- console.error(JSON.stringify({ ok: false, message, detail }, null, 2));
46
- process.exit(1);
47
- }
48
- function emitGate(gate) {
49
- console.log(JSON.stringify({ schema: 'sks.release-gate.v1', ok: true, gate }, null, 2));
50
- }
51
- //# sourceMappingURL=pipeline-codex-native-qa-routing-real-blackbox.js.map
@@ -1,45 +0,0 @@
1
- #!/usr/bin/env node
2
- import fs from 'node:fs/promises';
3
- import path from 'node:path';
4
- import { pathToFileURL } from 'node:url';
5
- import { writeResearchPlan } from '../core/research.js';
6
- import { createCodexNativeRuntimeFixture, withFixtureEnv } from './codex-native-runtime-e2e-fixture.js';
7
- export async function runCodexNativeResearchRoutingRealBlackbox() {
8
- const mcp = await researchScenario({ mcpCandidates: true, codeModeWebSearch: true });
9
- assertGate(mcp.selected_source_strategy === 'mcp-plugin-candidates', 'research should prefer MCP plugin candidates', mcp);
10
- const web = await researchScenario({ mcpCandidates: false, codeModeWebSearch: true });
11
- assertGate(web.selected_source_strategy === 'web-sources', 'research should fall back to web sources when MCP candidates are absent', web);
12
- const local = await researchScenario({ mcpCandidates: false, codeModeWebSearch: false });
13
- assertGate(local.selected_source_strategy === 'local-files', 'research should fall back to local files when MCP/web are absent', local);
14
- assertGate(local.hook_derived_source_evidence_allowed === false, 'research must exclude hook-derived evidence unless explicitly approved', local);
15
- emitGate('pipeline:codex-native-research-routing-real-blackbox');
16
- }
17
- async function researchScenario(input) {
18
- const fixture = await createCodexNativeRuntimeFixture({
19
- hook: 'approved',
20
- agentType: 'supported',
21
- appHandoff: true,
22
- imagePathExposure: true,
23
- mcpCandidates: input.mcpCandidates,
24
- codeModeWebSearch: input.codeModeWebSearch
25
- });
26
- return withFixtureEnv(fixture, async () => {
27
- const dir = path.join(fixture.root, '.sneakoscope', 'missions', fixture.missionId);
28
- await writeResearchPlan(dir, 'research source routing fixture', { root: fixture.root, missionId: fixture.missionId });
29
- const artifact = JSON.parse(await fs.readFile(path.join(dir, 'research', 'codex-native-invocation.json'), 'utf8'));
30
- assertGate(Array.isArray(artifact.mcp_source?.required_artifacts), 'research source candidate artifact details missing', artifact);
31
- return artifact;
32
- });
33
- }
34
- if (import.meta.url === pathToFileURL(process.argv[1] || '').href)
35
- await runCodexNativeResearchRoutingRealBlackbox();
36
- function assertGate(condition, message, detail = {}) {
37
- if (condition)
38
- return;
39
- console.error(JSON.stringify({ ok: false, message, detail }, null, 2));
40
- process.exit(1);
41
- }
42
- function emitGate(gate) {
43
- console.log(JSON.stringify({ schema: 'sks.release-gate.v1', ok: true, gate }, null, 2));
44
- }
45
- //# sourceMappingURL=pipeline-codex-native-research-routing-real-blackbox.js.map
@@ -1,4 +0,0 @@
1
- #!/usr/bin/env node
2
- import { runDirective315Gate } from './sks-3-1-5-directive-check-lib.js';
3
- await runDirective315Gate('pipeline:execution-profile-routing-blackbox');
4
- //# sourceMappingURL=pipeline-execution-profile-routing-blackbox.js.map
@@ -1,12 +0,0 @@
1
- #!/usr/bin/env node
2
- // @ts-nocheck
3
- import { assertGate, emitGate, readText, scriptContains } from './sks-1-18-gate-lib.js';
4
- const install = readText('src/cli/install-helpers.ts');
5
- const helper = readText('src/core/update/update-migration-state.ts');
6
- assertGate(install.includes('runPostinstallGlobalDoctorAndMarkPending'), 'postinstall must run package-local global Doctor and mark pending migration');
7
- assertGate(helper.includes("source: 'postinstall'"), 'postinstall migration marker must identify postinstall as source');
8
- assertGate(helper.includes("root: globalSksRoot()"), 'postinstall Doctor must run against the global SKS root');
9
- assertGate(helper.includes("args: ['doctor', '--fix', '--json']"), 'postinstall global Doctor must use package-local doctor --fix --json');
10
- assertGate(scriptContains('postinstall:global-doctor-blackbox', 'postinstall-global-doctor-blackbox.js'), 'package script must expose postinstall global Doctor gate');
11
- emitGate('postinstall:global-doctor-blackbox');
12
- //# sourceMappingURL=postinstall-global-doctor-blackbox.js.map
@@ -1,109 +0,0 @@
1
- #!/usr/bin/env node
2
- // @ts-nocheck
3
- import fs from 'node:fs';
4
- import os from 'node:os';
5
- import path from 'node:path';
6
- import { spawnSync } from 'node:child_process';
7
- const tmp = fs.mkdtempSync(path.join(os.tmpdir(), 'sks-ppt-e2e-'));
8
- const deck = path.join(tmp, 'synthetic-two-slide.pptx');
9
- fs.writeFileSync(deck, [
10
- 'ppt/slides/slide1.xml',
11
- '<p:sld><p:cSld><p:spTree><a:t>SKS 1.14.1 Synthetic Slide 1</a:t></p:spTree></p:cSld></p:sld>',
12
- 'ppt/slides/slide2.xml',
13
- '<p:sld><p:cSld><p:spTree><a:t>SKS 1.14.1 Synthetic Slide 2</a:t></p:spTree></p:cSld></p:sld>'
14
- ].join('\n'));
15
- const repoRoot = process.cwd();
16
- const run = spawnSync(process.execPath, [path.join(repoRoot, 'dist/bin/sks.js'), 'ppt', 'review', '--deck', deck, '--mock', '--imagegen', '--json'], {
17
- cwd: tmp,
18
- env: { ...process.env, SKS_TEST_FAKE_IMAGEGEN: '1', SKS_TEST_FAKE_EXTRACTOR: '1' },
19
- encoding: 'utf8',
20
- maxBuffer: 8 * 1024 * 1024
21
- });
22
- const parsed = parseJson(run.stdout);
23
- const missionDir = parsed?.mission_id ? path.join(tmp, '.sneakoscope', 'missions', parsed.mission_id) : null;
24
- const inventory = (missionDir ? readJson(path.join(missionDir, 'ppt-deck-inventory.json')) : null)
25
- || parsed?.artifacts?.deck_inventory
26
- || parsed?.artifacts?.deckInventory
27
- || null;
28
- const exportLedger = (missionDir ? readJson(path.join(missionDir, 'ppt-slide-export-ledger.json')) : null)
29
- || parsed?.artifacts?.slide_export_ledger
30
- || parsed?.artifacts?.slideExportLedger
31
- || null;
32
- const callouts = missionDir ? readJson(path.join(missionDir, 'ppt-slide-callout-ledger.json')) : null;
33
- const slideIssues = missionDir ? readJson(path.join(missionDir, 'ppt-slide-issue-ledger.json')) : null;
34
- const deckIssues = missionDir ? readJson(path.join(missionDir, 'ppt-deck-issue-ledger.json')) : null;
35
- const proof = missionDir ? readJson(path.join(missionDir, 'completion-proof.json')) : null;
36
- const trust = missionDir ? readJson(path.join(missionDir, 'trust-report.json')) : null;
37
- const fakeNotReal = !JSON.stringify(callouts || {}).includes('"real_generated":true');
38
- const proofStatusOk = proof?.schema === 'sks.completion-proof.v1' && ['verified', 'verified_partial'].includes(String(proof?.status || ''));
39
- const trustStatusOk = trust?.schema === 'sks.trust-report.v1' && trust?.ok === true && !['blocked', 'failed', 'not_verified'].includes(String(trust?.status || ''));
40
- const ok = Boolean(parsed?.mission_id)
41
- && inventory?.deck_present === true
42
- && inventory?.slide_count >= 1
43
- && exportLedger?.exported_slide_images_count >= 1
44
- && callouts?.generated_slide_callout_images_count >= exportLedger.exported_slide_images_count
45
- && Array.isArray(slideIssues?.issues)
46
- && slideIssues.issues.length > 0
47
- && deckIssues?.schema === 'sks.ppt-deck-issue-ledger.v1'
48
- && proofStatusOk
49
- && trustStatusOk
50
- && fakeNotReal;
51
- const result = {
52
- schema: 'sks.ppt-full-e2e-blackbox.v1',
53
- ok,
54
- process_status: run.status,
55
- mission_id: parsed?.mission_id || null,
56
- deck,
57
- synthetic_deck: true,
58
- manual_slide_images_used: false,
59
- slide_count: inventory?.slide_count || 0,
60
- exported_slide_images_count: exportLedger?.exported_slide_images_count || 0,
61
- generated_slide_review_count: callouts?.generated_slide_callout_images_count || 0,
62
- issue_extraction_count: slideIssues?.issues?.length || 0,
63
- mock_fake_not_verified_real: fakeNotReal,
64
- completion_proof_linked: proofStatusOk,
65
- trust_report_linked: trustStatusOk,
66
- wrongness_linked: true,
67
- proof_status: proof?.status || null,
68
- trust_ok: trust?.ok ?? null,
69
- trust_status: trust?.status || null,
70
- trust_blockers: trust?.blockers || [],
71
- blockers: [
72
- ...(!proofStatusOk ? [`completion_proof_status_${proof?.status || 'missing'}`] : []),
73
- ...(!trustStatusOk ? [`trust_report_status_${trust?.status || 'missing'}`] : []),
74
- ...(!fakeNotReal ? ['mock_or_fake_marked_real'] : [])
75
- ],
76
- artifacts: {
77
- inventory,
78
- exportLedger,
79
- callouts,
80
- slideIssues,
81
- deckIssues,
82
- proof_schema: proof?.schema || null,
83
- proof_status: proof?.status || null,
84
- trust_schema: trust?.schema || null,
85
- trust_ok: trust?.ok ?? null,
86
- trust_status: trust?.status || null
87
- },
88
- stdout_tail: run.stdout.slice(-2000),
89
- stderr_tail: run.stderr.slice(-2000)
90
- };
91
- const out = path.join(repoRoot, '.sneakoscope', 'reports', 'ppt-full-e2e-blackbox.json');
92
- fs.mkdirSync(path.dirname(out), { recursive: true });
93
- fs.writeFileSync(out, `${JSON.stringify(result, null, 2)}\n`);
94
- console.log(JSON.stringify(result, null, 2));
95
- if (!ok)
96
- process.exitCode = 1;
97
- function parseJson(text) { try {
98
- return JSON.parse(text);
99
- }
100
- catch {
101
- return null;
102
- } }
103
- function readJson(file) { try {
104
- return JSON.parse(fs.readFileSync(file, 'utf8'));
105
- }
106
- catch {
107
- return null;
108
- } }
109
- //# sourceMappingURL=ppt-full-e2e-blackbox-check.js.map
@@ -1,46 +0,0 @@
1
- #!/usr/bin/env node
2
- // @ts-nocheck
3
- import fs from 'node:fs';
4
- import path from 'node:path';
5
- import { spawnSync } from 'node:child_process';
6
- import { osTempPngFixtureArg } from './lib/valid-png-fixture.js';
7
- const sourceImage = osTempPngFixtureArg('ppt-imagegen-blackbox-source.png');
8
- const run = spawnSync(process.execPath, ['./dist/bin/sks.js', 'ppt', 'review', '--manual-slide-images', sourceImage, '--json'], {
9
- cwd: process.cwd(),
10
- env: { ...process.env, SKS_TEST_FAKE_IMAGEGEN: '1', SKS_TEST_FAKE_EXTRACTOR: '1' },
11
- encoding: 'utf8',
12
- maxBuffer: 4 * 1024 * 1024
13
- });
14
- const parsed = parseJson(run.stdout);
15
- const missionDir = parsed?.mission_id ? path.join(process.cwd(), '.sneakoscope', 'missions', parsed.mission_id) : null;
16
- const callouts = missionDir ? readJson(path.join(missionDir, 'ppt-slide-callout-ledger.json')) : null;
17
- const slideIssues = missionDir ? readJson(path.join(missionDir, 'ppt-slide-issue-ledger.json')) : null;
18
- const deckIssues = missionDir ? readJson(path.join(missionDir, 'ppt-deck-issue-ledger.json')) : null;
19
- const proofEvidence = parsed?.proof_evidence || null;
20
- const ok = Boolean(parsed?.mission_id)
21
- && callouts?.generated_slide_callout_images_count === 1
22
- && callouts?.generated_review_images?.[0]?.mock === true
23
- && Array.isArray(slideIssues?.issues)
24
- && slideIssues.issues.length > 0
25
- && deckIssues?.schema === 'sks.ppt-deck-issue-ledger.v1'
26
- && proofEvidence?.schema === 'sks.ppt-review-proof-evidence.v1';
27
- console.log(JSON.stringify({ schema: 'sks.ppt-imagegen-blackbox-check.v1', ok, process_status: run.status, mission_id: parsed?.mission_id || null, gate_status: parsed?.status || null, source_image: sourceImage, generated_count: callouts?.generated_slide_callout_images_count || 0, issue_count: slideIssues?.issues?.length || 0, proof_status: proofEvidence?.status || null }, null, 2));
28
- if (!ok)
29
- process.exitCode = 1;
30
- function parseJson(text) {
31
- try {
32
- return JSON.parse(text);
33
- }
34
- catch {
35
- return null;
36
- }
37
- }
38
- function readJson(file) {
39
- try {
40
- return JSON.parse(fs.readFileSync(file, 'utf8'));
41
- }
42
- catch {
43
- return null;
44
- }
45
- }
46
- //# sourceMappingURL=ppt-imagegen-blackbox-check.js.map
@@ -1,5 +0,0 @@
1
- #!/usr/bin/env node
2
- // @ts-nocheck
3
- import { runRouteBackfillBlackbox } from './agent-route-blackbox-lib.js';
4
- runRouteBackfillBlackbox('$QA-LOOP', 'qa:backfill-route-blackbox');
5
- //# sourceMappingURL=qa-backfill-route-blackbox.js.map
@@ -1,10 +0,0 @@
1
- #!/usr/bin/env node
2
- // @ts-nocheck
3
- import { runPatchSwarmRouteBlackbox } from './agent-patch-swarm-gate-lib.js';
4
- await runPatchSwarmRouteBlackbox({
5
- gate: 'qa:patch-swarm-route-blackbox',
6
- route: '$QA-LOOP',
7
- routeCommand: 'sks qa-loop run',
8
- reportName: 'qa-patch-swarm-route-blackbox'
9
- });
10
- //# sourceMappingURL=qa-patch-swarm-route-blackbox.js.map
@@ -1,41 +0,0 @@
1
- #!/usr/bin/env node
2
- // @ts-nocheck
3
- import fs from 'node:fs/promises';
4
- import os from 'node:os';
5
- import path from 'node:path';
6
- import { runReleaseGateBatch } from '../core/release/release-gate-batch-runner.js';
7
- import { assertGate, emitGate, root } from './sks-1-18-gate-lib.js';
8
- const reportRoot = await fs.mkdtemp(path.join(os.tmpdir(), 'sks-release-full-'));
9
- const gates = Array.from({ length: 80 }, (_, i) => ({ id: `synthetic:${i + 1}`, command: `${process.execPath} -e \"setTimeout(()=>process.exit(0),1000)\"`, deps: [], resource: ['cpu-light', 'fs-read'], side_effect: 'hermetic', timeout_ms: 15000, cache: { enabled: false, inputs: [] }, isolation: { home: 'temp', codex_home: 'temp', report_dir: 'per-gate' }, preset: ['release'] }));
10
- const started = Date.now();
11
- const result = await runReleaseGateBatch(root, gates, { concurrency: 40, reportRoot });
12
- const wallMs = Date.now() - started;
13
- const completedDurations = result.results
14
- .map((row) => Number(row.duration_ms || 0))
15
- .filter((duration) => Number.isFinite(duration) && duration > 0);
16
- const observedSequentialMs = completedDurations.reduce((total, duration) => total + duration, 0);
17
- const slowestGateMs = Math.max(1, ...completedDurations);
18
- const expectedWaves = Math.ceil(gates.length / 40);
19
- const dynamicWallBudgetMs = Math.max(20_000, Math.ceil((slowestGateMs * expectedWaves) + 12_000));
20
- const gain = Number((observedSequentialMs / Math.max(1, wallMs)).toFixed(2));
21
- assertGate(result.ok === true, 'synthetic release gates failed', result);
22
- assertGate(result.batch_size === 80 && result.completed === 80, 'synthetic gate count mismatch', result);
23
- assertGate(completedDurations.length === 80, 'synthetic gate duration evidence missing', { durations: completedDurations.length, result });
24
- assertGate(wallMs <= dynamicWallBudgetMs, 'release full parallelism wall time too slow', {
25
- wallMs,
26
- dynamicWallBudgetMs,
27
- slowestGateMs,
28
- expectedWaves,
29
- result
30
- });
31
- assertGate(gain >= 8, 'release full parallelism gain below 8x', { gain, wallMs, observedSequentialMs });
32
- emitGate('release:full-parallelism-blackbox', {
33
- wall_ms: wallMs,
34
- parallelism_gain: gain,
35
- observed_sequential_ms: observedSequentialMs,
36
- dynamic_wall_budget_ms: dynamicWallBudgetMs,
37
- slowest_gate_ms: slowestGateMs,
38
- max_running: 40,
39
- slowest_gates: result.results.sort((a, b) => b.duration_ms - a.duration_ms).slice(0, 5)
40
- });
41
- //# sourceMappingURL=release-full-parallelism-blackbox.js.map
@@ -1,48 +0,0 @@
1
- import fs from 'node:fs/promises';
2
- import path from 'node:path';
3
- import { assertGate, emitGate, makeTempRoot, writeText } from './sks-3-1-8-check-lib.js';
4
- import { importDist } from './sks-1-18-gate-lib.js';
5
- const tmp = await makeTempRoot('sks-triwiki-first-');
6
- await writeText(path.join(tmp, 'package.json'), JSON.stringify({
7
- version: '4.0.2',
8
- scripts: {
9
- 'triwiki:proof-card': 'node -e "process.exit(0)"',
10
- 'release:version-truth': 'node -e "process.exit(0)"',
11
- 'scheduler:resource-budget': 'node -e "process.exit(0)"'
12
- }
13
- }, null, 2));
14
- await writeText(path.join(tmp, 'package-lock.json'), JSON.stringify({ lockfileVersion: 3 }, null, 2));
15
- await writeText(path.join(tmp, 'release-gates.v2.json'), JSON.stringify({
16
- schema: 'sks.release-gates.v2',
17
- gates: [
18
- gate('triwiki:proof-card', ['src/core/triwiki/**']),
19
- gate('release:version-truth', ['package.json']),
20
- gate('scheduler:resource-budget', ['src/core/release/**'])
21
- ]
22
- }, null, 2));
23
- await fs.mkdir(path.join(tmp, 'src/core/triwiki'), { recursive: true });
24
- await writeText(path.join(tmp, 'src/core/triwiki/triwiki-proof-card.ts'), 'export const x = 1;\n');
25
- const dag = await importDist('core/release/release-gate-dag.js');
26
- const result = await dag.runReleaseGateDag({ root: tmp, preset: 'confidence', changedFiles: ['src/core/triwiki/triwiki-proof-card.ts'], noCache: true });
27
- assertGate(result.triwiki_selection_used === true, 'TriWiki selection must be marked used', result);
28
- assertGate(result.selected_gate_ids.includes('triwiki:proof-card'), 'TriWiki graph must select the TriWiki gate', result.selected_gate_ids);
29
- assertGate(!result.selected_gate_ids.includes('scheduler:resource-budget'), 'unaffected scheduler gate must be skipped by TriWiki selection', result);
30
- const rootSurfaceResult = await dag.runReleaseGateDag({ root: tmp, preset: 'affected', changedFiles: ['package.json'], noCache: true });
31
- assertGate(rootSurfaceResult.triwiki_selection_used === false, 'root release surface changes should use focused affected selector instead of expensive TriWiki graph', rootSurfaceResult);
32
- assertGate(rootSurfaceResult.selected_gate_ids.includes('release:version-truth'), 'root release surface should keep release safety gate', rootSurfaceResult.selected_gate_ids);
33
- assertGate(!rootSurfaceResult.selected_gate_ids.includes('scheduler:resource-budget'), 'root release surface affected selector should not full-sweep unrelated scheduler gate', rootSurfaceResult.selected_gate_ids);
34
- emitGate('release:triwiki-first-runner-blackbox', { selected: result.selected_gate_ids, skipped: result.triwiki_skipped_gates, root_surface_selected: rootSurfaceResult.selected_gate_ids });
35
- function gate(id, inputs) {
36
- return {
37
- id,
38
- command: `npm run ${id} --silent`,
39
- deps: [],
40
- resource: ['cpu-light'],
41
- side_effect: 'hermetic',
42
- timeout_ms: 5000,
43
- cache: { enabled: false, inputs },
44
- isolation: { home: 'temp', codex_home: 'temp', report_dir: 'per-gate' },
45
- preset: ['release']
46
- };
47
- }
48
- //# sourceMappingURL=release-triwiki-first-runner-blackbox.js.map
@@ -1,27 +0,0 @@
1
- #!/usr/bin/env node
2
- import path from 'node:path';
3
- import { assertGate, emitGate, readText, root } from './sks-1-18-gate-lib.js';
4
- import { REQUIRED_3110_RELEASE_IDS, buildReleaseGateScriptParityReport } from './release-gate-script-parity-check.js';
5
- import { writeJsonAtomic } from '../core/fsx.js';
6
- const required = REQUIRED_3110_RELEASE_IDS;
7
- const parity = buildReleaseGateScriptParityReport();
8
- const dag = readText('src/scripts/release-dag-full-coverage-check.ts');
9
- const missingDag = required.filter((id) => !dag.includes(`'${id}'`));
10
- const report = {
11
- schema: 'sks.release-wiring-3110-blackbox.v1',
12
- ok: parity.ok && missingDag.length === 0,
13
- required_count: required.length,
14
- missing_scripts: parity.missing_scripts,
15
- missing_gates: parity.missing_gates,
16
- missing_release_preset: parity.missing_release_preset,
17
- missing_required_ids: missingDag,
18
- wrong_commands: parity.wrong_commands,
19
- missing_sources: parity.missing_source_targets,
20
- missing_dist_targets: parity.missing_dist_targets,
21
- generated_at: new Date().toISOString()
22
- };
23
- const out = path.join(root, '.sneakoscope', 'reports', 'release-wiring-3110-blackbox.json');
24
- await writeJsonAtomic(out, report);
25
- assertGate(report.ok, '3.1.10 release wiring blackbox failed', report);
26
- emitGate('release:wiring-3110-blackbox', { required_count: required.length });
27
- //# sourceMappingURL=release-wiring-3110-blackbox.js.map
@@ -1,17 +0,0 @@
1
- #!/usr/bin/env node
2
- import { assertGate, emitGate, readJson } from './sks-1-18-gate-lib.js';
3
- import { REQUIRED_3112_REAL_CHECK_IDS, REQUIRED_3112_RELEASE_IDS } from './release-3112-required-gates.js';
4
- const scripts = readJson('package.json').scripts || {};
5
- const gates = readJson('release-gates.v2.json').gates || [];
6
- const gateIds = new Set(gates.map((gate) => gate.id));
7
- for (const id of REQUIRED_3112_RELEASE_IDS) {
8
- assertGate(Boolean(scripts[id]), `3.1.12 release script missing: ${id}`);
9
- assertGate(gateIds.has(id), `3.1.12 release gate missing: ${id}`);
10
- }
11
- for (const id of REQUIRED_3112_REAL_CHECK_IDS) {
12
- const gate = gates.find((entry) => entry.id === id);
13
- assertGate(Boolean(scripts[id]), `3.1.12 real-check script missing: ${id}`);
14
- assertGate(Boolean(gate) && gate.preset.includes('real-check'), `3.1.12 real-check gate missing real-check preset: ${id}`, gate);
15
- }
16
- emitGate('release:wiring-3112-blackbox', { release_ids: REQUIRED_3112_RELEASE_IDS.length, real_check_ids: REQUIRED_3112_REAL_CHECK_IDS.length });
17
- //# sourceMappingURL=release-wiring-3112-blackbox.js.map
@@ -1,17 +0,0 @@
1
- #!/usr/bin/env node
2
- import { assertGate, emitGate, readJson } from './sks-1-18-gate-lib.js';
3
- import { REQUIRED_3113_REAL_CHECK_IDS, REQUIRED_3113_RELEASE_IDS } from './release-3113-required-gates.js';
4
- const scripts = readJson('package.json').scripts || {};
5
- const gates = readJson('release-gates.v2.json').gates || [];
6
- const gateIds = new Set(gates.map((gate) => gate.id));
7
- for (const id of REQUIRED_3113_RELEASE_IDS) {
8
- assertGate(Boolean(scripts[id]), `3.1.13 release script missing: ${id}`);
9
- assertGate(gateIds.has(id), `3.1.13 release gate missing: ${id}`);
10
- }
11
- for (const id of REQUIRED_3113_REAL_CHECK_IDS) {
12
- const gate = gates.find((entry) => entry.id === id);
13
- assertGate(Boolean(scripts[id]), `3.1.13 real-check script missing: ${id}`);
14
- assertGate(Boolean(gate) && gate.preset.includes('real-check'), `3.1.13 real-check gate missing real-check preset: ${id}`, gate);
15
- }
16
- emitGate('release:wiring-3113-blackbox', { release_ids: REQUIRED_3113_RELEASE_IDS.length, real_check_ids: REQUIRED_3113_REAL_CHECK_IDS.length });
17
- //# sourceMappingURL=release-wiring-3113-blackbox.js.map
@@ -1,5 +0,0 @@
1
- #!/usr/bin/env node
2
- // @ts-nocheck
3
- import { runRouteBackfillBlackbox } from './agent-route-blackbox-lib.js';
4
- runRouteBackfillBlackbox('$Research', 'research:backfill-route-blackbox');
5
- //# sourceMappingURL=research-backfill-route-blackbox.js.map