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