sneakoscope 7.0.2 → 7.0.5
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 +9 -7
- package/config/codex-releases/{rust-v0.144.5.json → rust-v0.145.0.json} +14 -8
- package/crates/sks-core/Cargo.lock +1 -1
- package/crates/sks-core/Cargo.toml +1 -1
- package/dist/bin/sks-dispatch.js +0 -3
- package/dist/cli/command-manifest-lite.js +1 -2
- package/dist/cli/command-registry.js +0 -4
- package/dist/cli/global-mode-router.js +5 -12
- package/dist/cli/install-helpers-codex-lb-chain.js +24 -2
- package/dist/cli/install-helpers-codex-lb-config.js +10 -25
- package/dist/cli/install-helpers-codex-lb-selftest-chain.js +0 -3
- package/dist/cli/install-helpers-codex-lb-selftest.js +0 -17
- package/dist/cli/install-helpers-install-support.js +1 -2
- package/dist/cli/install-helpers.js +83 -99
- package/dist/cli/router.js +22 -31
- package/dist/commands/codex-app.js +20 -2
- package/dist/commands/codex-lb.js +176 -22
- package/dist/commands/codex.js +3 -8
- package/dist/commands/conflicts.js +26 -3
- package/dist/commands/doctor.js +26 -31
- package/dist/commands/perf.js +5 -1
- package/dist/commands/zellij-slot-column-anchor.js +0 -2
- package/dist/commands/zellij-slot-pane.js +0 -7
- package/dist/commands/zellij.js +0 -2
- package/dist/config/skills-manifest.json +52 -52
- package/dist/core/agent-bridge/agent-manifest.js +192 -1
- package/dist/core/agent-bridge/agent-mode.js +0 -5
- package/dist/core/agent-bridge/host-capability-policy.js +189 -0
- package/dist/core/agent-bridge/host-capability-runtime.js +1395 -0
- package/dist/core/agent-bridge/mcp-server.js +1 -11
- package/dist/core/agents/agent-effort-policy.js +7 -10
- package/dist/core/agents/agent-orchestrator.js +0 -4
- package/dist/core/agents/agent-proof-evidence.js +0 -2
- package/dist/core/agents/agent-roster.js +6 -5
- package/dist/core/agents/agent-runner-ollama.js +0 -3
- package/dist/core/agents/agent-scheduler.js +7 -10
- package/dist/core/agents/agent-schema.js +3 -1
- package/dist/core/agents/agent-task-graph.js +4 -1
- package/dist/core/agents/agent-work-partition.js +4 -2
- package/dist/core/agents/native-cli-worker-runtime.js +5 -17
- package/dist/core/agents/work-partition/repo-inventory.js +0 -2
- package/dist/core/auto-review.js +8 -14
- package/dist/core/bench.js +0 -14
- package/dist/core/code-structure.js +0 -3
- package/dist/core/codex/agent-config-file-repair.js +0 -8
- package/dist/core/codex/codex-cli-update.js +122 -20
- package/dist/core/codex/codex-config-eperm-repair.js +0 -4
- package/dist/core/codex/codex-config-guard.js +0 -3
- package/dist/core/codex/codex-config-readability.js +0 -13
- package/dist/core/codex/codex-project-config-policy.js +0 -33
- package/dist/core/codex/codex-startup-config-postcheck.js +5 -0
- package/dist/core/codex/official-goal-mode.js +0 -2
- package/dist/core/codex-app/codex-agent-type-probe.js +31 -24
- package/dist/core/codex-app/codex-app-fast-ui-repair.js +5 -7
- package/dist/core/codex-app/codex-app-ui-state-snapshot.js +44 -7
- package/dist/core/codex-app/glm-model-profile.js +1 -1
- package/dist/core/codex-app/glm-profile-installer.js +40 -41
- package/dist/core/codex-app/glm-profile-schema.js +7 -11
- package/dist/core/codex-app/menubar/constants.js +1 -0
- package/dist/core/codex-app/menubar/launch-agent.js +37 -1
- package/dist/core/codex-app/openrouter-activate.js +152 -0
- package/dist/core/codex-app/openrouter-provider.js +82 -0
- package/dist/core/codex-app/sks-menubar.js +0 -1
- package/dist/core/codex-app.js +14 -32
- package/dist/core/codex-compat/codex-capability-matrix.js +208 -0
- package/dist/core/codex-compat/codex-hook-output-builders.js +9 -1
- package/dist/core/codex-compat/codex-hook-output-normalizer.js +1 -1
- package/dist/core/codex-compat/codex-hook-semantic-validator.js +3 -2
- package/dist/core/codex-compat/codex-hook-warning-detector.js +10 -2
- package/dist/core/codex-compat/codex-release-manifest.js +15 -8
- package/dist/core/codex-compat/codex-version-policy.js +77 -15
- package/dist/core/codex-control/codex-0144-capability.js +1 -1
- package/dist/core/codex-control/codex-lb-launch-recovery.js +0 -3
- package/dist/core/codex-control/codex-reliability-shield.js +0 -8
- package/dist/core/codex-control/codex-sdk-adapter.js +0 -3
- package/dist/core/codex-control/codex-sdk-config-policy.js +0 -2
- package/dist/core/codex-control/codex-sdk-env-policy.js +61 -16
- package/dist/core/codex-control/codex-task-runner.js +0 -7
- package/dist/core/codex-control/codex-thread-registry.js +0 -4
- package/dist/core/codex-lb/codex-lb-env.js +133 -24
- package/dist/core/codex-lb/codex-lb-tool-catalog.js +0 -4
- package/dist/core/codex-lb/codex-lb-tool-output-recovery.js +1 -1
- package/dist/core/codex-model-guard.js +0 -14
- package/dist/core/codex-native/codex-native-feature-broker.js +67 -22
- package/dist/core/codex-native/codex-native-interop-policy.js +81 -9
- package/dist/core/codex-native/confined-report-writer.js +21 -0
- package/dist/core/codex-native/core-skill-integrity.js +169 -20
- package/dist/core/codex-native/project-skill-dedupe.js +55 -13
- package/dist/core/codex-native/skill-registry-ledger.js +137 -16
- package/dist/core/codex-native/sks-skill-paths.js +185 -0
- package/dist/core/codex-runtime/codex-desktop-config-policy.js +3 -3
- package/dist/core/commands/agent-bridge-command.js +28 -8
- package/dist/core/commands/basic-cli.js +89 -42
- package/dist/core/commands/bench-command.js +5 -1
- package/dist/core/commands/command-utils.js +0 -5
- package/dist/core/commands/image-ux-review-command.js +0 -9
- package/dist/core/commands/mad-sks-command.js +55 -208
- package/dist/core/commands/naruto-command.js +55 -21
- package/dist/core/commands/ppt-command.js +0 -9
- package/dist/core/commands/run-command.js +8 -2
- package/dist/core/commands/seo-command.js +0 -6
- package/dist/core/commands/wiki-command.js +0 -14
- package/dist/core/computer-use-live-evidence.js +0 -5
- package/dist/core/config/secret-preservation.js +0 -11
- package/dist/core/daemon/sksd-hook-daemon-entrypoint.js +0 -2
- package/dist/core/daemon/sksd-hook-daemon.js +1 -29
- package/dist/core/daemon/sksd-hook-dispatch.js +0 -17
- package/dist/core/db-safety.js +0 -7
- package/dist/core/doctor/browser-use-repair.js +0 -2
- package/dist/core/doctor/command-alias-cleanup.js +37 -9
- package/dist/core/doctor/current-project-guidance.js +6 -3
- package/dist/core/doctor/doctor-codex-startup-repair.js +0 -3
- package/dist/core/doctor/doctor-dirty-planner.js +1 -1
- package/dist/core/doctor/doctor-readiness-matrix.js +12 -0
- package/dist/core/doctor/doctor-skill-reconcile.js +32 -0
- package/dist/core/doctor/imagegen-repair.js +0 -2
- package/dist/core/doctor/mcp-transport-collision-repair.js +0 -3
- package/dist/core/doctor/retired-auto-review-config.js +9 -1
- package/dist/core/doctor/retired-managed-residue-private.js +5 -4
- package/dist/core/doctor/retired-managed-residue-runtime.js +9 -1
- package/dist/core/doctor/skill-legacy-surface.js +351 -0
- package/dist/core/doctor/supabase-mcp-repair.js +0 -11
- package/dist/core/evaluation.js +3 -0
- package/dist/core/feature-fixture-executor.js +0 -48
- package/dist/core/feature-fixtures.js +0 -6
- package/dist/core/fsx.js +11 -12
- package/dist/core/harness-conflicts.js +177 -18
- package/dist/core/hooks-runtime/code-pack-freshness-preflight.js +0 -5
- package/dist/core/hooks-runtime/hook-context.js +202 -0
- package/dist/core/hooks-runtime/hook-io.js +1 -12
- package/dist/core/hooks-runtime/light-turn.js +0 -2
- package/dist/core/hooks-runtime/naruto-decision-gate.js +4 -1
- package/dist/core/hooks-runtime/naruto-terminal-finalization.js +91 -0
- package/dist/core/hooks-runtime/official-subagent-lifecycle.js +369 -0
- package/dist/core/hooks-runtime/standalone-parent-host-capability.js +98 -0
- package/dist/core/hooks-runtime/subagent-context.js +59 -0
- package/dist/core/hooks-runtime/subagent-skill-availability-contract.js +29 -0
- package/dist/core/hooks-runtime/subagent-skill-availability-evidence.js +195 -0
- package/dist/core/hooks-runtime/subagent-skill-availability-guards.js +316 -0
- package/dist/core/hooks-runtime/subagent-skill-availability.js +217 -0
- package/dist/core/hooks-runtime.js +275 -540
- package/dist/core/image-ux-review/codex-app-generated-image-discovery.js +0 -17
- package/dist/core/image-ux-review/imagegen-adapter.js +0 -14
- package/dist/core/imagegen/imagegen-auth-readiness.js +0 -9
- package/dist/core/imagegen/imagegen-capability.js +0 -3
- package/dist/core/init/managed-skill-install.js +42 -0
- package/dist/core/init/skills.js +248 -75
- package/dist/core/init.js +19 -45
- package/dist/core/lean-engineering-policy.js +0 -2
- package/dist/core/locks/file-lock.js +0 -21
- package/dist/core/loops/loop-planner.js +0 -6
- package/dist/core/loops/loop-runtime.js +0 -1
- package/dist/core/loops/loop-worker-runtime.js +0 -19
- package/dist/core/mad-sks/executors/db-write-executor.js +0 -4
- package/dist/core/mad-sks/executors/executor-base.js +0 -10
- package/dist/core/mad-sks/immutable-harness-guard.js +0 -5
- package/dist/core/mad-sks/sql-plane/coordinator.js +0 -5
- package/dist/core/mad-sks/sql-plane/ledger.js +0 -4
- package/dist/core/mad-sks/sql-plane/lock.js +0 -4
- package/dist/core/mad-sks/sql-plane/mcp-executor.js +0 -9
- package/dist/core/mad-sks/sql-plane/policy-resolver.js +0 -2
- package/dist/core/mad-sks/sql-plane/postconditions.js +0 -4
- package/dist/core/mad-sks/sql-plane/recovery.js +0 -2
- package/dist/core/mad-sks/sql-plane/runtime-profile.js +0 -8
- package/dist/core/managed-assets/managed-assets-manifest.js +1 -7
- package/dist/core/mcp-config/health-check.js +10 -3
- package/dist/core/migration/migration-transaction-journal.js +0 -8
- package/dist/core/mission.js +0 -2
- package/dist/core/naruto/naruto-active-pool.js +0 -2
- package/dist/core/naruto/naruto-concurrency-governor.js +18 -11
- package/dist/core/naruto/naruto-real-write-proof.js +0 -4
- package/dist/core/naruto/naruto-write-e2e.js +0 -1
- package/dist/core/perf/perf-budget.js +0 -5
- package/dist/core/permission-gates.js +0 -2
- package/dist/core/pipeline-internals/runtime-core.js +15 -5
- package/dist/core/pipeline-internals/runtime-gates.js +7 -19
- package/dist/core/preflight/parallel-preflight-engine.js +1 -12
- package/dist/core/proof/evidence-collector.js +0 -2
- package/dist/core/proof/route-finalizer.js +0 -1
- package/dist/core/proof/selftest-proof-fixtures.js +0 -5
- package/dist/core/providers/openrouter/openrouter-client.js +2 -2
- package/dist/core/providers/openrouter/openrouter-provider-health.js +1 -1
- package/dist/core/providers/{glm/glm-request-cache.js → openrouter/openrouter-request-cache.js} +5 -6
- package/dist/core/providers/openrouter/openrouter-secret-store.js +0 -1
- package/dist/core/providers/openrouter/openrouter-stream.js +2 -4
- package/dist/core/questions.js +3 -3
- package/dist/core/release/gate-manifest.js +0 -5
- package/dist/core/release/package-size-budget.js +2 -2
- package/dist/core/release/release-gate-batch-runner.js +11 -2
- package/dist/core/release/release-gate-cache-v2.js +0 -4
- package/dist/core/release/release-gate-contract.js +0 -7
- package/dist/core/release/release-gate-hermetic-env.js +0 -5
- package/dist/core/release/release-pack-receipt.js +1 -0
- package/dist/core/release-parallel-full-coverage.js +0 -2
- package/dist/core/remote/ssh-worker-client.js +0 -3
- package/dist/core/research/research-adversarial-review.js +6 -2
- package/dist/core/responses-retry-policy.js +0 -10
- package/dist/core/retention.js +0 -7
- package/dist/core/routes/constants.js +0 -3
- package/dist/core/routes/model-mode-router.js +10 -19
- package/dist/core/routes.js +91 -17
- package/dist/core/safety/command-contract/contracts.js +2 -0
- package/dist/core/safety/mutation-guard.js +0 -25
- package/dist/core/safety/mutation-ledger.js +0 -9
- package/dist/core/safety/requested-scope-contract.js +0 -0
- package/dist/core/security/high-risk-contracts.js +0 -1
- package/dist/core/skills/core-skill-card.js +0 -0
- package/dist/core/skills/core-skill-deployment.js +0 -13
- package/dist/core/skills/core-skill-epoch.js +0 -11
- package/dist/core/skills/core-skill-meta-update.js +0 -6
- package/dist/core/skills/core-skill-patch-apply.js +0 -7
- package/dist/core/skills/core-skill-patch.js +0 -8
- package/dist/core/skills/core-skill-reflection.js +0 -16
- package/dist/core/skills/core-skill-runtime.js +0 -6
- package/dist/core/skills/core-skill-scorer.js +0 -7
- package/dist/core/skills/core-skill-trainer.js +0 -11
- package/dist/core/skills/core-skill-types.js +0 -9
- package/dist/core/skills/core-skill-validation.js +0 -5
- package/dist/core/skills/rejected-skill-patch-buffer.js +0 -2
- package/dist/core/stop-gate/stop-gate-check.js +0 -8
- package/dist/core/stop-gate/stop-gate-resolver.js +0 -7
- package/dist/core/stop-gate/stop-gate-writer.js +0 -5
- package/dist/core/subagents/model-policy.js +0 -7
- package/dist/core/subagents/naruto-help-contract.js +3 -2
- package/dist/core/subagents/naruto-proof-projection.js +580 -12
- package/dist/core/subagents/official-subagent-config.js +256 -40
- package/dist/core/subagents/official-subagent-preparation.js +11 -7
- package/dist/core/subagents/official-subagent-prompt.js +29 -0
- package/dist/core/subagents/official-subagent-runner.js +379 -39
- package/dist/core/subagents/subagent-evidence.js +378 -9
- package/dist/core/subagents/terminology.js +11 -6
- package/dist/core/subagents/thread-budget.js +6 -3
- package/dist/core/subagents/triwiki-attention.js +0 -4
- package/dist/core/subagents/wave-parent-guidance.js +54 -9
- package/dist/core/telegram/runtime.js +0 -1
- package/dist/core/triwiki/code-index-scanner.js +0 -3
- package/dist/core/triwiki/code-pack-head-freshness.js +0 -10
- package/dist/core/triwiki/code-pack.js +0 -2
- package/dist/core/triwiki/triwiki-cache-key.js +0 -1
- package/dist/core/triwiki/triwiki-proof-bank.js +0 -1
- package/dist/core/triwiki-attention.js +0 -10
- package/dist/core/triwiki-provenance.js +0 -5
- package/dist/core/triwiki-runtime.js +0 -12
- package/dist/core/triwiki-wrongness/wrongness-ledger.js +0 -7
- package/dist/core/triwiki-wrongness/wrongness-schema.js +0 -3
- package/dist/core/trust-kernel/trust-report.js +0 -7
- package/dist/core/update/update-migration-state.js +113 -61
- package/dist/core/update-check.js +2 -14
- package/dist/core/version-manager.js +43 -4
- package/dist/core/version.js +1 -1
- package/dist/core/work-order-ledger.js +0 -17
- package/dist/core/zellij/zellij-clipboard-config.js +0 -18
- package/dist/core/zellij/zellij-fake-adapter.js +16 -0
- package/dist/core/zellij/zellij-lane-renderer.js +5 -46
- package/dist/core/zellij/zellij-lane-runtime.js +0 -1
- package/dist/core/zellij/zellij-launcher.js +35 -35
- package/dist/core/zellij/zellij-official-subagent-activity.js +0 -5
- package/dist/core/zellij/zellij-official-subagent-telemetry.js +0 -5
- package/dist/core/zellij/zellij-pane-proof.js +3 -3
- package/dist/core/zellij/zellij-screen-proof.js +0 -7
- package/dist/core/zellij/zellij-slot-column-anchor.js +0 -1
- package/dist/core/zellij/zellij-slot-pane-renderer.js +0 -9
- package/dist/core/zellij/zellij-slot-telemetry.js +6 -16
- package/dist/core/zellij/zellij-ui-mode.js +0 -7
- package/dist/core/zellij/zellij-update.js +0 -29
- package/dist/core/zellij/zellij-worker-pane-manager.js +0 -39
- package/dist/native/sks-menubar/Sources/DiagnosticsViewController.swift +61 -2
- package/dist/native/sks-menubar/Sources/MCPServersViewController.swift +10 -3
- package/dist/native/sks-menubar/Sources/OverviewViewController.swift +55 -3
- package/dist/native/sks-menubar/Sources/ProvidersOpenRouter.swift +76 -0
- package/dist/native/sks-menubar/Sources/ProvidersViewController.swift +273 -54
- package/dist/native/sks-menubar/Sources/RemoteTelegramViewController.swift +5 -1
- package/dist/native/sks-menubar/Sources/SettingsViewController.swift +2 -2
- package/dist/native/sks-menubar/Sources/StatusItemController.swift +28 -2
- package/dist/native/sks-menubar/Sources/UpdatesViewController.swift +96 -13
- package/dist/scripts/agent-message-bus-reader-check.js +0 -1
- package/dist/scripts/all-feature-deep-completion-check.js +0 -1
- package/dist/scripts/appshots-thread-attachment-discovery-check.js +0 -1
- package/dist/scripts/architecture-guard-check.js +0 -1
- package/dist/scripts/build-dist.js +0 -1
- package/dist/scripts/build-once-runner-check.js +0 -1
- package/dist/scripts/canonical-test-runner.js +0 -2
- package/dist/scripts/certificate-sla-check.js +0 -1
- package/dist/scripts/changelog-check.js +0 -1
- package/dist/scripts/check-cli-entrypoint.js +0 -1
- package/dist/scripts/check-command-module-budget.js +0 -7
- package/dist/scripts/check-feature-quality.js +0 -1
- package/dist/scripts/check-legacy-free.js +0 -1
- package/dist/scripts/check-pipeline-runtime.js +0 -1
- package/dist/scripts/check-runtime-schemas.js +0 -1
- package/dist/scripts/codex-0-134-runner-truth-check.js +0 -1
- package/dist/scripts/codex-0-137-compat-check.js +0 -1
- package/dist/scripts/codex-0138-capability-artifact-check.js +0 -1
- package/dist/scripts/codex-0138-capability-check.js +0 -1
- package/dist/scripts/codex-0138-doctor-check.js +0 -1
- package/dist/scripts/codex-0138-feature-probes-check.js +0 -1
- package/dist/scripts/codex-0144-app-server-v2-check.js +5 -5
- package/dist/scripts/codex-0144-core-real-probes-check.js +0 -1
- package/dist/scripts/codex-app-handoff-check.js +0 -1
- package/dist/scripts/codex-app-handoff-launch-check.js +0 -1
- package/dist/scripts/codex-config-load-probe.js +0 -5
- package/dist/scripts/codex-control-all-pipelines-check.js +0 -1
- package/dist/scripts/codex-control-event-stream-ledger-check.js +0 -1
- package/dist/scripts/codex-control-tool-output-continuity-audit-check.js +0 -1
- package/dist/scripts/codex-permission-profiles-check.js +0 -1
- package/dist/scripts/codex-plugin-app-template-policy-check.js +0 -1
- package/dist/scripts/codex-project-config-policy-splitter-check.js +0 -1
- package/dist/scripts/codex-sdk-all-pipelines-check.js +0 -1
- package/dist/scripts/codex-sdk-backend-router-check.js +0 -1
- package/dist/scripts/codex-sdk-capability-check.js +0 -1
- package/dist/scripts/codex-sdk-event-stream-ledger-check.js +0 -1
- package/dist/scripts/codex-sdk-real-smoke-check.js +0 -1
- package/dist/scripts/concurrent-session-collision-check.js +9 -0
- package/dist/scripts/context7-evidence-dedupe-check.js +0 -1
- package/dist/scripts/core-skill-card-schema-check.js +0 -11
- package/dist/scripts/core-skill-deployment-snapshot-check.js +0 -10
- package/dist/scripts/core-skill-heldout-validation-check.js +0 -11
- package/dist/scripts/core-skill-no-inference-optimizer-check.js +0 -11
- package/dist/scripts/core-skill-patch-check.js +0 -11
- package/dist/scripts/core-skill-route-runtime-integration-check.js +0 -11
- package/dist/scripts/current-command-surface-check.js +1 -1
- package/dist/scripts/current-surface-update-e2e-check.js +2 -4
- package/dist/scripts/current-upgrade-matrix-check.js +0 -1
- package/dist/scripts/dfix-fixture-check.js +0 -1
- package/dist/scripts/dfix-patch-handoff-check.js +0 -1
- package/dist/scripts/dfix-verification-check.js +0 -1
- package/dist/scripts/dfix-verification-recommendation-check.js +0 -1
- package/dist/scripts/docs-truthfulness-check.js +7 -7
- package/dist/scripts/doctor-fastpath-check.js +0 -1
- package/dist/scripts/doctor-fix-production-blackbox.js +1 -1
- package/dist/scripts/doctor-fix-proves-codex-read-check.js +0 -11
- package/dist/scripts/doctor-fixes-codex-app-fast-ui-check.js +0 -4
- package/dist/scripts/doctor-idempotence-check.js +0 -1
- package/dist/scripts/doctor-ops-semantics-check.js +0 -1
- package/dist/scripts/doctor-startup-config-repair-blackbox.js +1 -1
- package/dist/scripts/ensure-bin-executable.js +0 -1
- package/dist/scripts/evidence-flagship-coverage-check.js +0 -1
- package/dist/scripts/fast-codex-service-tier-proof-check.js +0 -1
- package/dist/scripts/fixtures/fake-codex-config-loader.js +0 -5
- package/dist/scripts/fsx-hotpath-check.js +0 -1
- package/dist/scripts/gate-policy-audit-check.js +1 -1
- package/dist/scripts/geo-claim-evidence-check.js +0 -1
- package/dist/scripts/geo-cli-blackbox-check.js +0 -1
- package/dist/scripts/geo-crawler-policy-check.js +0 -1
- package/dist/scripts/git-worktree-diff-envelope-check.js +0 -1
- package/dist/scripts/git-worktree-dirty-lock-check.js +0 -1
- package/dist/scripts/git-worktree-dirty-main-detection-check.js +0 -1
- package/dist/scripts/git-worktree-integration-primary-check.js +0 -1
- package/dist/scripts/git-worktree-manifest-append-check.js +0 -1
- package/dist/scripts/git-worktree-untracked-diff-check.js +0 -1
- package/dist/scripts/high-risk-contracts-check.js +0 -1
- package/dist/scripts/hook-latency-budget-check.js +0 -1
- package/dist/scripts/hook-latency-quantum-check.js +0 -1
- package/dist/scripts/image-artifact-path-contract-check.js +0 -1
- package/dist/scripts/imagegen-real-smoke-check.js +0 -1
- package/dist/scripts/import-graph-budget-check.js +0 -1
- package/dist/scripts/installed-package-smoke-check.js +0 -1
- package/dist/scripts/legacy-gate-purge-check.js +0 -1
- package/dist/scripts/lib/codex-sdk-gate-lib.js +0 -3
- package/dist/scripts/lib/ensure-dist-fresh.js +0 -1
- package/dist/scripts/lib/valid-png-fixture.js +0 -1
- package/dist/scripts/local-collab-all-pipelines-final-gpt-check.js +0 -1
- package/dist/scripts/loop-directive-check-lib.js +0 -1
- package/dist/scripts/loop-worker-fixture-child.js +0 -1
- package/dist/scripts/mad-preflight-blocks-unreadable-config-check.js +0 -10
- package/dist/scripts/mad-sks-sql-plane-lifecycle-hook-decision-check.js +0 -1
- package/dist/scripts/mad-sks-sql-plane-result-lifecycle-check.js +0 -1
- package/dist/scripts/mcp-plugin-inventory-check.js +0 -1
- package/dist/scripts/mcp-tool-naming-parity-check.js +0 -1
- package/dist/scripts/model-call-concurrency-check.js +0 -1
- package/dist/scripts/mutation-callsite-coverage-check.js +0 -5
- package/dist/scripts/naruto-codex-e2e-check.js +0 -1
- package/dist/scripts/naruto-worktree-coding-blackbox.js +0 -1
- package/dist/scripts/official-subagent-workflow-check.js +4 -2
- package/dist/scripts/ops-diagnostics-bundle-check.js +0 -1
- package/dist/scripts/packlist-performance-check.js +1 -3
- package/dist/scripts/perf-budget-check.js +0 -1
- package/dist/scripts/ppt-full-e2e-blackbox-check.js +0 -1
- package/dist/scripts/ppt-real-export-adapter-check.js +0 -1
- package/dist/scripts/ppt-real-imagegen-smoke-check.js +0 -1
- package/dist/scripts/ppt-real-imagegen-wiring-check.js +0 -1
- package/dist/scripts/ppt-reexport-rereview-check.js +0 -1
- package/dist/scripts/prepublish-fast-check.js +0 -23
- package/dist/scripts/prepublish-release-check-or-fast.js +0 -7
- package/dist/scripts/probe-memoization-check.js +0 -1
- package/dist/scripts/product-design-plugin-routing-check.js +0 -1
- package/dist/scripts/project-skill-dedupe-blackbox.js +36 -9
- package/dist/scripts/prompt-placeholder-guard-check.js +0 -1
- package/dist/scripts/python-codex-sdk-all-pipelines-check.js +0 -3
- package/dist/scripts/qa-loop-app-handoff-capability-check.js +0 -1
- package/dist/scripts/qa-loop-app-handoff-check.js +0 -1
- package/dist/scripts/qa-loop-app-handoff-cli-check.js +0 -1
- package/dist/scripts/qa-loop-app-handoff-confirmation-check.js +0 -1
- package/dist/scripts/qa-loop-app-handoff-gate-lifecycle-check.js +0 -1
- package/dist/scripts/qa-loop-app-handoff-launch-check.js +0 -1
- package/dist/scripts/qa-loop-app-handoff-status-lifecycle-check.js +0 -1
- package/dist/scripts/qa-loop-budget-policy-check.js +0 -1
- package/dist/scripts/qa-loop-effort-escalation-check.js +0 -1
- package/dist/scripts/qa-loop-image-path-exposure-check.js +0 -1
- package/dist/scripts/qa-loop-image-path-prompt-injection-check.js +0 -1
- package/dist/scripts/release-cache-glob-hashing-check.js +0 -1
- package/dist/scripts/release-cache-input-classifier-check.js +0 -1
- package/dist/scripts/release-cache-neutralization-report-check.js +0 -1
- package/dist/scripts/release-cache-version-neutral-fixture-check.js +0 -1
- package/dist/scripts/release-check-stamp.js +0 -4
- package/dist/scripts/release-dist-freshness-check.js +0 -1
- package/dist/scripts/release-full-parallelism-blackbox.js +3 -3
- package/dist/scripts/release-gate-batch-runner-check.js +22 -0
- package/dist/scripts/release-gate-budget-check.js +0 -6
- package/dist/scripts/release-gate-dag-runner-check.js +0 -1
- package/dist/scripts/release-latency-slo-check.js +0 -1
- package/dist/scripts/release-metadata-1-19-check.js +0 -2
- package/dist/scripts/release-metadata-check.js +0 -3
- package/dist/scripts/release-parallel-speed-budget-check.js +0 -5
- package/dist/scripts/release-proof-truth-check.js +0 -1
- package/dist/scripts/release-provenance-check.js +0 -1
- package/dist/scripts/release-real-check.js +0 -1
- package/dist/scripts/release-runtime-truth-matrix-check.js +0 -1
- package/dist/scripts/release-version-truth-check.js +0 -1
- package/dist/scripts/research-blueprint-densifier-check.js +0 -1
- package/dist/scripts/research-claim-builder-check.js +0 -1
- package/dist/scripts/research-complete-package-fixture-check.js +0 -1
- package/dist/scripts/research-final-reviewer-blackbox.js +0 -1
- package/dist/scripts/responses-retry-policy-centralized-check.js +0 -1
- package/dist/scripts/retention-apply-smoke-check.js +0 -1
- package/dist/scripts/retention-budget-check.js +0 -1
- package/dist/scripts/retention-dry-run-check.js +0 -1
- package/dist/scripts/rollback-recovery-smoke-check.js +0 -1
- package/dist/scripts/route-intent-regression-check.js +0 -1
- package/dist/scripts/runtime-current-terminal-check.js +0 -1
- package/dist/scripts/runtime-dist-parity-check.js +0 -1
- package/dist/scripts/runtime-no-src-mjs-check.js +0 -1
- package/dist/scripts/runtime-proof-summary-check.js +0 -1
- package/dist/scripts/runtime-ts-rust-boundary-check.js +0 -15
- package/dist/scripts/runtime-ts-source-of-truth-check.js +0 -1
- package/dist/scripts/scheduler-batch-dispatch-check.js +0 -1
- package/dist/scripts/scheduler-parallel-proof-consistency-check.js +0 -1
- package/dist/scripts/scheduler-utilization-integral-check.js +0 -1
- package/dist/scripts/search-visibility-gate-lib.js +0 -1
- package/dist/scripts/seo-audit-fixture-check.js +0 -1
- package/dist/scripts/seo-cli-blackbox-check.js +0 -1
- package/dist/scripts/seo-geo-geo-disambiguation-check.js +0 -1
- package/dist/scripts/seo-geo-route-identity-check.js +0 -1
- package/dist/scripts/seo-geo-skill-rich-content-check.js +0 -1
- package/dist/scripts/seo-marketing-truthfulness-check.js +0 -1
- package/dist/scripts/seo-metadata-sync-check.js +0 -1
- package/dist/scripts/seo-no-mutation-by-default-check.js +0 -1
- package/dist/scripts/shared-memory-fixture-check.js +0 -1
- package/dist/scripts/side-effect-runtime-report-check.js +0 -1
- package/dist/scripts/sizecheck.js +2 -3
- package/dist/scripts/sks-1-11-gate-lib.js +0 -1
- package/dist/scripts/sks-1-12-real-execution-check-lib.js +0 -1
- package/dist/scripts/sks-1-18-gate-lib.js +0 -1
- package/dist/scripts/sks-menubar-install-check.js +0 -3
- package/dist/scripts/sksd-daemon-check.js +0 -1
- package/dist/scripts/super-search-live-smoke-check.js +0 -1
- package/dist/scripts/super-search-local-http-smoke-check.js +0 -1
- package/dist/scripts/super-search-offline-contract-check.js +0 -1
- package/dist/scripts/super-search-provider-interface-check.js +0 -1
- package/dist/scripts/triwiki-cache-key-check.js +0 -1
- package/dist/scripts/triwiki-proof-bank-blackbox.js +0 -1
- package/dist/scripts/triwiki-proof-bank-check.js +0 -1
- package/dist/scripts/triwiki-proof-card-check.js +0 -1
- package/dist/scripts/trust-fixture-check.js +0 -1
- package/dist/scripts/ultra-router-auto-router-check.js +0 -1
- package/dist/scripts/update-fastpath-check.js +0 -1
- package/dist/scripts/upgrade-migration-matrix-check.js +0 -1
- package/dist/scripts/ux-review-extract-wires-real-extractor-check.js +0 -1
- package/dist/scripts/ux-review-imagegen-blackbox-check.js +0 -1
- package/dist/scripts/ux-review-patch-diff-recheck-check.js +0 -1
- package/dist/scripts/ux-review-real-imagegen-smoke-check.js +0 -1
- package/dist/scripts/ux-review-run-wires-imagegen-check.js +0 -1
- package/dist/scripts/write-build-manifest.js +0 -1
- package/dist/scripts/wrongness-fixture-check.js +0 -1
- package/dist/scripts/zellij-capability-check.js +0 -1
- package/dist/scripts/zellij-developer-controls-check.js +0 -1
- package/dist/scripts/zellij-doctor-readiness-check.js +0 -13
- package/dist/scripts/zellij-dynamic-pane-lifecycle-check.js +0 -1
- package/dist/scripts/zellij-fake-adapter-check.js +0 -1
- package/dist/scripts/zellij-initial-main-only-blackbox.js +0 -1
- package/dist/scripts/zellij-lane-renderer-check.js +0 -1
- package/dist/scripts/zellij-launch-command-truth-check.js +0 -12
- package/dist/scripts/zellij-layout-valid-check.js +0 -1
- package/dist/scripts/zellij-pane-creation-lock-metrics-check.js +0 -1
- package/dist/scripts/zellij-pane-lock-concurrency-blackbox.js +0 -1
- package/dist/scripts/zellij-pane-lock-does-not-block-worker-check.js +0 -1
- package/dist/scripts/zellij-pane-lock-open-worker-integration-blackbox.js +0 -1
- package/dist/scripts/zellij-pane-proof-check.js +0 -1
- package/dist/scripts/zellij-qa-app-handoff-status-check.js +0 -1
- package/dist/scripts/zellij-real-session-cleanup-check.js +0 -1
- package/dist/scripts/zellij-real-session-launch-check.js +0 -1
- package/dist/scripts/zellij-right-column-geometry-proof.js +0 -1
- package/dist/scripts/zellij-right-column-headless-overflow-check.js +0 -1
- package/dist/scripts/zellij-right-column-manager-check.js +0 -1
- package/dist/scripts/zellij-screen-proof-check.js +0 -1
- package/dist/scripts/zellij-slot-only-ui-check.js +0 -1
- package/dist/scripts/zellij-slot-pane-renderer-check.js +0 -1
- package/dist/scripts/zellij-slot-pane-stale-detection-check.js +0 -7
- package/dist/scripts/zellij-slot-telemetry-incremental-check.js +0 -1
- package/dist/scripts/zellij-slot-telemetry-live-flush-check.js +0 -1
- package/dist/scripts/zellij-slot-telemetry-performance-check.js +0 -1
- package/dist/scripts/zellij-stacked-capability-routing-check.js +0 -1
- package/dist/scripts/zellij-stacked-fallback-integration-blackbox.js +0 -1
- package/dist/scripts/zellij-stacked-version-matrix-check.js +0 -1
- package/dist/scripts/zellij-stacked-version-parser-check.js +0 -1
- package/dist/scripts/zellij-ui-design-check.js +0 -12
- package/dist/scripts/zellij-update-prompt-matrix-check.js +0 -1
- package/dist/scripts/zellij-update-prompt-mode-check.js +0 -1
- package/dist/scripts/zellij-update-prompt-safety-check.js +0 -1
- package/dist/scripts/zellij-worker-pane-real-ui-blackbox.js +0 -2
- package/package.json +6 -7
- package/release-gates.v2.json +426 -93
- package/schemas/codex/app-server-0.145/codex_app_server_protocol.v2.schemas.json +19611 -0
- package/dist/core/commands/glm-command.js +0 -93
- package/dist/core/providers/glm/bench/glm-bench-comparison.js +0 -47
- package/dist/core/providers/glm/bench/glm-bench-fixture.js +0 -64
- package/dist/core/providers/glm/bench/glm-bench-model-lock-proof.js +0 -52
- package/dist/core/providers/glm/bench/glm-bench-report.js +0 -74
- package/dist/core/providers/glm/bench/glm-benchmark-runner.js +0 -243
- package/dist/core/providers/glm/bench/glm-benchmark-types.js +0 -1
- package/dist/core/providers/glm/bench/glm-direct-bench-runner.js +0 -72
- package/dist/core/providers/glm/glm-52-profile.js +0 -82
- package/dist/core/providers/glm/glm-52-request.js +0 -73
- package/dist/core/providers/glm/glm-52-response-guard.js +0 -32
- package/dist/core/providers/glm/glm-52-settings.js +0 -67
- package/dist/core/providers/glm/glm-context-budget.js +0 -14
- package/dist/core/providers/glm/glm-context-cache.js +0 -8
- package/dist/core/providers/glm/glm-direct-run.js +0 -140
- package/dist/core/providers/glm/glm-interactive-launch.js +0 -4
- package/dist/core/providers/glm/glm-latency-trace.js +0 -39
- package/dist/core/providers/glm/glm-loop-guard.js +0 -30
- package/dist/core/providers/glm/glm-mad-launch.js +0 -128
- package/dist/core/providers/glm/glm-mad-mode.js +0 -269
- package/dist/core/providers/glm/glm-model-meta-cache.js +0 -18
- package/dist/core/providers/glm/glm-patch-apply.js +0 -72
- package/dist/core/providers/glm/glm-patch-parser.js +0 -18
- package/dist/core/providers/glm/glm-profile-resolver.js +0 -168
- package/dist/core/providers/glm/glm-readiness.js +0 -4
- package/dist/core/providers/glm/glm-reasoning-policy.js +0 -14
- package/dist/core/providers/glm/glm-run-controller.js +0 -65
- package/dist/core/providers/glm/glm-run-state.js +0 -10
- package/dist/core/providers/glm/glm-run-timeout.js +0 -30
- package/dist/core/providers/glm/glm-speed-context.js +0 -81
- package/dist/core/providers/glm/glm-speed-gate.js +0 -39
- package/dist/core/providers/glm/glm-speed-output-parser.js +0 -39
- package/dist/core/providers/glm/glm-tool-schema-cache.js +0 -18
- package/dist/core/providers/glm/naruto/glm-naruto-apply-transaction.js +0 -135
- package/dist/core/providers/glm/naruto/glm-naruto-artifacts.js +0 -1
- package/dist/core/providers/glm/naruto/glm-naruto-bench.js +0 -6
- package/dist/core/providers/glm/naruto/glm-naruto-budget.js +0 -44
- package/dist/core/providers/glm/naruto/glm-naruto-combined-patch.js +0 -48
- package/dist/core/providers/glm/naruto/glm-naruto-command.js +0 -101
- package/dist/core/providers/glm/naruto/glm-naruto-concurrency-governor.js +0 -37
- package/dist/core/providers/glm/naruto/glm-naruto-conflict-graph.js +0 -79
- package/dist/core/providers/glm/naruto/glm-naruto-critical-path.js +0 -50
- package/dist/core/providers/glm/naruto/glm-naruto-decomposer.js +0 -148
- package/dist/core/providers/glm/naruto/glm-naruto-file-lease.js +0 -22
- package/dist/core/providers/glm/naruto/glm-naruto-final-seal.js +0 -81
- package/dist/core/providers/glm/naruto/glm-naruto-finalizer.js +0 -22
- package/dist/core/providers/glm/naruto/glm-naruto-hunk-conflict.js +0 -15
- package/dist/core/providers/glm/naruto/glm-naruto-hunk-parser.js +0 -35
- package/dist/core/providers/glm/naruto/glm-naruto-isolation-policy.js +0 -37
- package/dist/core/providers/glm/naruto/glm-naruto-judge.js +0 -83
- package/dist/core/providers/glm/naruto/glm-naruto-merge-planner.js +0 -61
- package/dist/core/providers/glm/naruto/glm-naruto-metrics.js +0 -33
- package/dist/core/providers/glm/naruto/glm-naruto-orchestrator.js +0 -486
- package/dist/core/providers/glm/naruto/glm-naruto-parallelism-summary.js +0 -54
- package/dist/core/providers/glm/naruto/glm-naruto-patch-candidate-gate.js +0 -41
- package/dist/core/providers/glm/naruto/glm-naruto-patch-candidate-parser.js +0 -61
- package/dist/core/providers/glm/naruto/glm-naruto-patch-envelope.js +0 -54
- package/dist/core/providers/glm/naruto/glm-naruto-quorum.js +0 -36
- package/dist/core/providers/glm/naruto/glm-naruto-rate-limiter.js +0 -17
- package/dist/core/providers/glm/naruto/glm-naruto-repair-wave.js +0 -20
- package/dist/core/providers/glm/naruto/glm-naruto-requirement-coverage.js +0 -108
- package/dist/core/providers/glm/naruto/glm-naruto-requirement-ledger.js +0 -57
- package/dist/core/providers/glm/naruto/glm-naruto-scoreboard.js +0 -74
- package/dist/core/providers/glm/naruto/glm-naruto-secret-audit.js +0 -90
- package/dist/core/providers/glm/naruto/glm-naruto-session-id.js +0 -9
- package/dist/core/providers/glm/naruto/glm-naruto-shard-planner.js +0 -31
- package/dist/core/providers/glm/naruto/glm-naruto-stage-scheduler.js +0 -84
- package/dist/core/providers/glm/naruto/glm-naruto-targeted-checks.js +0 -75
- package/dist/core/providers/glm/naruto/glm-naruto-task-size-classifier.js +0 -11
- package/dist/core/providers/glm/naruto/glm-naruto-terminal.js +0 -43
- package/dist/core/providers/glm/naruto/glm-naruto-trace.js +0 -173
- package/dist/core/providers/glm/naruto/glm-naruto-types.js +0 -36
- package/dist/core/providers/glm/naruto/glm-naruto-usage-extractor.js +0 -30
- package/dist/core/providers/glm/naruto/glm-naruto-verifier-output.js +0 -30
- package/dist/core/providers/glm/naruto/glm-naruto-work-graph.js +0 -1
- package/dist/core/providers/glm/naruto/glm-naruto-worker-artifacts.js +0 -55
- package/dist/core/providers/glm/naruto/glm-naruto-worker-pool.js +0 -275
- package/dist/core/providers/glm/naruto/glm-naruto-worker-runtime.js +0 -421
- package/dist/core/providers/glm/naruto/glm-naruto-worker-scheduler.js +0 -177
- package/dist/core/providers/glm/naruto/glm-naruto-worker.js +0 -1
- package/dist/core/providers/glm/naruto/glm-naruto-worktree-cleanup.js +0 -19
- package/dist/core/providers/glm/naruto/glm-naruto-worktree-manager.js +0 -71
- package/dist/core/providers/glm/naruto/glm-naruto-worktree-worker.js +0 -73
- package/dist/core/providers/glm/naruto/glm-naruto-worktree.js +0 -62
- package/schemas/codex/app-server-0.144/codex_app_server_protocol.v2.schemas.json +0 -1
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
import { flag, positionalArgs } from '../../cli/args.js';
|
|
2
|
-
import { runGlmBenchmark } from '../providers/glm/bench/glm-benchmark-runner.js';
|
|
3
|
-
import { printJson } from '../../cli/output.js';
|
|
4
|
-
import { runGlmDirectSpeedRun } from '../providers/glm/glm-direct-run.js';
|
|
5
|
-
import { runGlmReadinessAndExit } from '../providers/glm/glm-readiness.js';
|
|
6
|
-
import { runGlmInteractiveLaunch } from '../providers/glm/glm-interactive-launch.js';
|
|
7
|
-
import { glmNarutoCommand } from '../providers/glm/naruto/glm-naruto-command.js';
|
|
8
|
-
import { stripGlmSlashModelArgs } from '../providers/glm/glm-profile-resolver.js';
|
|
9
|
-
import { findRetiredGlobalExecutionArgumentErrors } from '../../cli/global-mode-router.js';
|
|
10
|
-
export async function glmCommand(args = []) {
|
|
11
|
-
const argumentErrors = findRetiredGlobalExecutionArgumentErrors(args);
|
|
12
|
-
if (argumentErrors.length)
|
|
13
|
-
return blockRetiredGlmArguments(args, argumentErrors);
|
|
14
|
-
if (positionalArgs(args)[0] === 'naruto') {
|
|
15
|
-
const narutoIndex = args.indexOf('naruto');
|
|
16
|
-
const narutoArgs = [...args.slice(0, narutoIndex), ...args.slice(narutoIndex + 1)];
|
|
17
|
-
return glmNarutoCommand(narutoArgs);
|
|
18
|
-
}
|
|
19
|
-
if (flag(args, '--bench')) {
|
|
20
|
-
const result = await runGlmBenchmark(process.cwd(), args);
|
|
21
|
-
if (result.status === 'blocked')
|
|
22
|
-
process.exitCode = 1;
|
|
23
|
-
if (flag(args, '--json'))
|
|
24
|
-
printJson(result);
|
|
25
|
-
else if (result.status === 'blocked')
|
|
26
|
-
console.error(`GLM benchmark blocked: ${result.warnings.join(', ')}`);
|
|
27
|
-
else if (result.status === 'dry_run')
|
|
28
|
-
console.log(`GLM benchmark: dry-run (use --live for real measurement)`);
|
|
29
|
-
else {
|
|
30
|
-
const direct = result.cases.find((c) => c.implementation_path === 'direct-glm');
|
|
31
|
-
if (direct)
|
|
32
|
-
console.log(` Direct GLM: ${direct.wall_clock_ms}ms`);
|
|
33
|
-
console.log(` Recommendation: ${result.comparison.recommendation}`);
|
|
34
|
-
}
|
|
35
|
-
return result;
|
|
36
|
-
}
|
|
37
|
-
const task = extractGlmTask(args);
|
|
38
|
-
const interactive = flag(args, '--interactive') || flag(args, '--open') || flag(args, '--zellij') || positionalArgs(args)[0] === 'session';
|
|
39
|
-
if (interactive) {
|
|
40
|
-
const readiness = await runGlmReadinessAndExit(args);
|
|
41
|
-
if (!readiness.ok)
|
|
42
|
-
return readiness;
|
|
43
|
-
return runGlmInteractiveLaunch(args, readiness);
|
|
44
|
-
}
|
|
45
|
-
if (!task || flag(args, '--repair') || flag(args, '--status')) {
|
|
46
|
-
return runGlmReadinessAndExit(args);
|
|
47
|
-
}
|
|
48
|
-
const result = await runGlmDirectSpeedRun({
|
|
49
|
-
cwd: process.cwd(),
|
|
50
|
-
task,
|
|
51
|
-
args,
|
|
52
|
-
dryRun: flag(args, '--dry-run')
|
|
53
|
-
});
|
|
54
|
-
if (flag(args, '--json'))
|
|
55
|
-
printJson(result);
|
|
56
|
-
else if (result.ok)
|
|
57
|
-
console.log(`GLM direct run completed: ${result.termination_reason}`);
|
|
58
|
-
else
|
|
59
|
-
console.error(`GLM direct run ${result.status}: ${result.blockers.join(', ') || result.termination_reason}`);
|
|
60
|
-
if (!result.ok)
|
|
61
|
-
process.exitCode = 1;
|
|
62
|
-
return result;
|
|
63
|
-
}
|
|
64
|
-
function blockRetiredGlmArguments(args, argumentErrors) {
|
|
65
|
-
const result = {
|
|
66
|
-
schema: 'sks.glm-argument-error.v1',
|
|
67
|
-
ok: false,
|
|
68
|
-
status: 'blocked',
|
|
69
|
-
reason: 'invalid_glm_arguments',
|
|
70
|
-
argument_errors: [...argumentErrors],
|
|
71
|
-
blockers: [...argumentErrors],
|
|
72
|
-
hint: 'Use `sks --mad --glm` or the canonical `sks --mad --glm naruto` surface.'
|
|
73
|
-
};
|
|
74
|
-
process.exitCode = 1;
|
|
75
|
-
if (flag(args, '--json'))
|
|
76
|
-
printJson(result);
|
|
77
|
-
else {
|
|
78
|
-
console.error('SKS GLM argument error.');
|
|
79
|
-
for (const error of argumentErrors)
|
|
80
|
-
console.error(`- ${error}`);
|
|
81
|
-
}
|
|
82
|
-
return result;
|
|
83
|
-
}
|
|
84
|
-
function extractGlmTask(args) {
|
|
85
|
-
const positional = positionalArgs(stripGlmSlashModelArgs(args)).map(String);
|
|
86
|
-
if (positional[0] === 'run')
|
|
87
|
-
return positional.slice(1).join(' ').trim() || null;
|
|
88
|
-
if (positional[0] === 'session')
|
|
89
|
-
return null;
|
|
90
|
-
if (positional[0] === 'naruto')
|
|
91
|
-
return null;
|
|
92
|
-
return positional.join(' ').trim() || null;
|
|
93
|
-
}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
export function computeGlmBenchmarkComparison(cases) {
|
|
2
|
-
const directCase = cases.find((c) => c.implementation_path === 'direct-glm');
|
|
3
|
-
const narutoCases = cases.filter((c) => c.implementation_path === 'glm-naruto');
|
|
4
|
-
const directSucceeded = Boolean(directCase && (directCase.patch_generated === true || directCase.patch_gate_passed === true));
|
|
5
|
-
const directWallClockMs = directCase && directSucceeded ? directCase.wall_clock_ms : null;
|
|
6
|
-
const eligibleNaruto = narutoCases.filter((c) => (c.gate_pass_rate !== null && c.gate_pass_rate > 0) || c.merge_success === true);
|
|
7
|
-
let bestNaruto = null;
|
|
8
|
-
for (const naruto of eligibleNaruto) {
|
|
9
|
-
if (!bestNaruto || naruto.wall_clock_ms < bestNaruto.wall_clock_ms) {
|
|
10
|
-
bestNaruto = naruto;
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
const bestNarutoWallClockMs = bestNaruto ? bestNaruto.wall_clock_ms : null;
|
|
14
|
-
const bestNarutoRunnerId = bestNaruto ? bestNaruto.runner_id : null;
|
|
15
|
-
let speedup = null;
|
|
16
|
-
if (directWallClockMs !== null && bestNarutoWallClockMs !== null && bestNarutoWallClockMs > 0) {
|
|
17
|
-
speedup = Number((directWallClockMs / bestNarutoWallClockMs).toFixed(3));
|
|
18
|
-
}
|
|
19
|
-
let recommendation = 'inconclusive';
|
|
20
|
-
let reason = 'Insufficient measured data to recommend a path.';
|
|
21
|
-
if (directWallClockMs !== null && bestNarutoWallClockMs === null) {
|
|
22
|
-
recommendation = 'direct-glm';
|
|
23
|
-
reason = 'Direct GLM succeeded and no Naruto case produced gate-passed or merged results.';
|
|
24
|
-
}
|
|
25
|
-
else if (directWallClockMs !== null && bestNarutoWallClockMs !== null && speedup !== null) {
|
|
26
|
-
if (speedup >= 1.2) {
|
|
27
|
-
recommendation = 'glm-naruto';
|
|
28
|
-
reason = `GLM Naruto (${bestNarutoRunnerId}) was ${speedup.toFixed(2)}x faster than direct GLM for this task.`;
|
|
29
|
-
}
|
|
30
|
-
else {
|
|
31
|
-
recommendation = 'direct-glm';
|
|
32
|
-
reason = `Direct GLM was faster for this tiny single-file task (speedup ratio ${speedup.toFixed(2)}).`;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
else if (directWallClockMs === null && bestNarutoWallClockMs !== null) {
|
|
36
|
-
recommendation = 'glm-naruto';
|
|
37
|
-
reason = `GLM Naruto (${bestNarutoRunnerId}) produced results while direct GLM did not complete.`;
|
|
38
|
-
}
|
|
39
|
-
return {
|
|
40
|
-
direct_wall_clock_ms: directWallClockMs,
|
|
41
|
-
best_naruto_wall_clock_ms: bestNarutoWallClockMs,
|
|
42
|
-
best_naruto_runner_id: bestNarutoRunnerId,
|
|
43
|
-
naruto_speedup_vs_direct: speedup,
|
|
44
|
-
recommendation,
|
|
45
|
-
reason
|
|
46
|
-
};
|
|
47
|
-
}
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import os from 'node:os';
|
|
2
|
-
import path from 'node:path';
|
|
3
|
-
import fsp from 'node:fs/promises';
|
|
4
|
-
import { spawn } from 'node:child_process';
|
|
5
|
-
export const BENCH_FIXTURE_TASK = 'Change src/bench-target.ts so value is 2. Return the smallest patch only.';
|
|
6
|
-
export const BENCH_FIXTURE_TARGET_FILE = 'src/bench-target.ts';
|
|
7
|
-
export const BENCH_FIXTURE_INITIAL = 'export const value = 1;\n';
|
|
8
|
-
export const BENCH_FIXTURE_EXPECTED = 'export const value = 2;\n';
|
|
9
|
-
export async function createGlmBenchFixture(baseDir) {
|
|
10
|
-
const fixtureDir = await fsp.mkdtemp(path.join(baseDir || os.tmpdir(), 'sks-glm-bench-fixture-'));
|
|
11
|
-
await fsp.mkdir(path.join(fixtureDir, 'src'), { recursive: true });
|
|
12
|
-
await fsp.writeFile(path.join(fixtureDir, BENCH_FIXTURE_TARGET_FILE), BENCH_FIXTURE_INITIAL, 'utf8');
|
|
13
|
-
await gitInit(fixtureDir);
|
|
14
|
-
await gitAdd(fixtureDir, '.');
|
|
15
|
-
await gitCommit(fixtureDir, 'bench fixture initial');
|
|
16
|
-
return {
|
|
17
|
-
schema: 'sks.glm-bench-fixture.v1',
|
|
18
|
-
fixture_dir: fixtureDir,
|
|
19
|
-
task: BENCH_FIXTURE_TASK,
|
|
20
|
-
target_file: BENCH_FIXTURE_TARGET_FILE,
|
|
21
|
-
initial_content: BENCH_FIXTURE_INITIAL,
|
|
22
|
-
expected_content: BENCH_FIXTURE_EXPECTED
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
export async function cloneFixture(source, label) {
|
|
26
|
-
const cloneDir = await fsp.mkdtemp(path.join(os.tmpdir(), `sks-glm-bench-${label}-`));
|
|
27
|
-
await gitClone(source.fixture_dir, cloneDir);
|
|
28
|
-
return { ...source, fixture_dir: cloneDir };
|
|
29
|
-
}
|
|
30
|
-
export async function resetFixture(fixture) {
|
|
31
|
-
await runGit(['reset', '--hard', 'HEAD'], fixture.fixture_dir);
|
|
32
|
-
await runGit(['clean', '-fdx'], fixture.fixture_dir);
|
|
33
|
-
}
|
|
34
|
-
export async function cleanupFixture(fixture) {
|
|
35
|
-
await fsp.rm(fixture.fixture_dir, { recursive: true, force: true }).catch(() => undefined);
|
|
36
|
-
}
|
|
37
|
-
async function gitInit(dir) {
|
|
38
|
-
await runGit(['init', '-q'], dir);
|
|
39
|
-
await runGit(['config', 'user.name', 'sks-bench'], dir);
|
|
40
|
-
await runGit(['config', 'user.email', 'bench@sks.local'], dir);
|
|
41
|
-
}
|
|
42
|
-
async function gitAdd(dir, file) {
|
|
43
|
-
await runGit(['add', file], dir);
|
|
44
|
-
}
|
|
45
|
-
async function gitCommit(dir, message) {
|
|
46
|
-
await runGit(['commit', '-q', '-m', message], dir);
|
|
47
|
-
}
|
|
48
|
-
async function gitClone(source, dest) {
|
|
49
|
-
await runGit(['clone', '-q', source, dest], dest);
|
|
50
|
-
}
|
|
51
|
-
function runGit(args, cwd) {
|
|
52
|
-
return new Promise((resolve, reject) => {
|
|
53
|
-
const child = spawn('git', [...args], { cwd, stdio: ['ignore', 'pipe', 'pipe'] });
|
|
54
|
-
let stderr = '';
|
|
55
|
-
child.stderr.on('data', (chunk) => { stderr += String(chunk); });
|
|
56
|
-
child.on('close', (code) => {
|
|
57
|
-
if (code === 0)
|
|
58
|
-
resolve();
|
|
59
|
-
else
|
|
60
|
-
reject(new Error(`git ${args.join(' ')} exited ${code}: ${stderr.trim()}`));
|
|
61
|
-
});
|
|
62
|
-
child.on('error', reject);
|
|
63
|
-
});
|
|
64
|
-
}
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import { GLM_52_OPENROUTER_MODEL } from '../glm-52-settings.js';
|
|
2
|
-
export function buildGlmBenchModelLockProof(cases, proofInput = {}) {
|
|
3
|
-
const checkedCases = cases.map((c) => c.runner_id);
|
|
4
|
-
const mismatches = [];
|
|
5
|
-
const requestSummaries = proofInput.requestSummaries ?? [];
|
|
6
|
-
let fallbackArraysFound = 0;
|
|
7
|
-
let openaiKeyUsed = false;
|
|
8
|
-
for (const caseResult of cases) {
|
|
9
|
-
if (caseResult.model !== GLM_52_OPENROUTER_MODEL) {
|
|
10
|
-
mismatches.push(`${caseResult.runner_id}: model is ${caseResult.model}, expected ${GLM_52_OPENROUTER_MODEL}`);
|
|
11
|
-
}
|
|
12
|
-
if (caseResult.gpt_fallback_allowed !== false) {
|
|
13
|
-
mismatches.push(`${caseResult.runner_id}: gpt_fallback_allowed is not false`);
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
for (const summary of requestSummaries) {
|
|
17
|
-
if (summary.model !== undefined && summary.model !== GLM_52_OPENROUTER_MODEL) {
|
|
18
|
-
mismatches.push(`request-summary:${String(summary.worker_id ?? summary.runner_id ?? 'unknown')}: model is ${String(summary.model)}`);
|
|
19
|
-
}
|
|
20
|
-
const models = Array.isArray(summary.models) ? summary.models : [];
|
|
21
|
-
const fallbackModelsCount = typeof summary.fallback_models_count === 'number' ? summary.fallback_models_count : models.length;
|
|
22
|
-
if (fallbackModelsCount > 0)
|
|
23
|
-
fallbackArraysFound += 1;
|
|
24
|
-
if (summary.openai_key_used === true || summary.authorization_source === 'openai')
|
|
25
|
-
openaiKeyUsed = true;
|
|
26
|
-
if (summary.gpt_fallback_allowed !== undefined && summary.gpt_fallback_allowed !== false) {
|
|
27
|
-
mismatches.push(`request-summary:${String(summary.worker_id ?? summary.runner_id ?? 'unknown')}: gpt_fallback_allowed is not false`);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
if (fallbackArraysFound > 0)
|
|
31
|
-
mismatches.push(`fallback_arrays_found:${fallbackArraysFound}`);
|
|
32
|
-
if (openaiKeyUsed)
|
|
33
|
-
mismatches.push('openai_key_used');
|
|
34
|
-
const requestSummaryStatus = requestSummaries.length > 0 ? 'checked' : 'unavailable';
|
|
35
|
-
return {
|
|
36
|
-
schema: 'sks.glm-bench-model-lock-proof.v1',
|
|
37
|
-
checked_cases: checkedCases,
|
|
38
|
-
model: GLM_52_OPENROUTER_MODEL,
|
|
39
|
-
gpt_fallback_allowed: false,
|
|
40
|
-
request_summary_status: requestSummaryStatus,
|
|
41
|
-
request_summaries_checked: requestSummaries.length,
|
|
42
|
-
request_summaries_unavailable: Math.max(0, cases.length - requestSummaries.length),
|
|
43
|
-
naruto_request_summaries_checked: requestSummaries.filter((summary) => String(summary.worker_id ?? '').startsWith('worker-')).length,
|
|
44
|
-
direct_trace_checked: proofInput.directTraceChecked === true,
|
|
45
|
-
fallback_arrays_found: fallbackArraysFound,
|
|
46
|
-
openai_key_used: openaiKeyUsed,
|
|
47
|
-
fallback_array_scan: requestSummaryStatus,
|
|
48
|
-
openai_key_usage_scan: requestSummaryStatus,
|
|
49
|
-
mismatches,
|
|
50
|
-
passed: mismatches.length === 0
|
|
51
|
-
};
|
|
52
|
-
}
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import { GLM_52_OPENROUTER_MODEL } from '../glm-52-settings.js';
|
|
2
|
-
import { writeTextAtomic, nowIso } from '../../../fsx.js';
|
|
3
|
-
import path from 'node:path';
|
|
4
|
-
export async function writeGlmBenchReport(benchDir, result) {
|
|
5
|
-
const reportPath = path.join(benchDir, 'bench-report.md');
|
|
6
|
-
const lines = [];
|
|
7
|
-
lines.push('# GLM Benchmark Report — True Direct vs Naruto', '');
|
|
8
|
-
lines.push(`Generated: ${result.generated_at}`);
|
|
9
|
-
lines.push(`Model: ${GLM_52_OPENROUTER_MODEL}`);
|
|
10
|
-
lines.push(`GPT fallback allowed: false`);
|
|
11
|
-
lines.push(`Status: ${result.status}`);
|
|
12
|
-
lines.push('');
|
|
13
|
-
if (result.fixture) {
|
|
14
|
-
lines.push('## Fixture', '');
|
|
15
|
-
lines.push(`- Task: ${result.fixture.task}`);
|
|
16
|
-
lines.push(`- Target: ${result.fixture.target_file}`);
|
|
17
|
-
lines.push(`- Temp repo: ${result.fixture.fixture_dir}`);
|
|
18
|
-
lines.push('');
|
|
19
|
-
}
|
|
20
|
-
lines.push('## Cases', '');
|
|
21
|
-
lines.push('| Case | Kind | Workers | Wall ms | TTFT p50 | Total p50 | Candidates | Gate pass | Verifier | Merge | Patch gen | Patch gate | Metric |');
|
|
22
|
-
lines.push('| --- | --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: | --- | --- | --- | --- |');
|
|
23
|
-
for (const c of result.cases) {
|
|
24
|
-
lines.push(formatCaseRow(c));
|
|
25
|
-
}
|
|
26
|
-
lines.push('');
|
|
27
|
-
const direct = result.cases.find((c) => c.implementation_path === 'direct-glm');
|
|
28
|
-
const narutoBest = result.cases
|
|
29
|
-
.filter((c) => c.implementation_path === 'glm-naruto')
|
|
30
|
-
.sort((a, b) => a.wall_clock_ms - b.wall_clock_ms)[0];
|
|
31
|
-
lines.push('## Comparison', '');
|
|
32
|
-
if (direct) {
|
|
33
|
-
lines.push(`- Direct GLM: ${direct.wall_clock_ms}ms`);
|
|
34
|
-
}
|
|
35
|
-
if (narutoBest) {
|
|
36
|
-
lines.push(`- Best Naruto: ${narutoBest.name} at ${narutoBest.wall_clock_ms}ms`);
|
|
37
|
-
}
|
|
38
|
-
lines.push(`- Recommendation: ${result.comparison.recommendation}`);
|
|
39
|
-
lines.push(`- Reason: ${result.comparison.reason}`);
|
|
40
|
-
lines.push('');
|
|
41
|
-
lines.push('## Limitations', '');
|
|
42
|
-
lines.push('- This benchmark uses a tiny single-file task; tiny tasks may favor direct GLM.');
|
|
43
|
-
lines.push('- Multi-file parallelizable tasks may favor GLM Naruto.');
|
|
44
|
-
lines.push('- Missing usage metrics are reported as `unavailable` or `n/a`, never as fake zero.');
|
|
45
|
-
lines.push('- Direct GLM candidate/verifier/merge metrics are `not_applicable`.');
|
|
46
|
-
lines.push('');
|
|
47
|
-
if (result.model_lock_proof) {
|
|
48
|
-
lines.push('## Model Lock Proof', '');
|
|
49
|
-
lines.push(`- Passed: ${result.model_lock_proof.passed}`);
|
|
50
|
-
lines.push(`- Mismatches: ${result.model_lock_proof.mismatches.length}`);
|
|
51
|
-
lines.push('');
|
|
52
|
-
}
|
|
53
|
-
if (result.no_mutation_proof) {
|
|
54
|
-
lines.push('## No Mutation Proof', '');
|
|
55
|
-
lines.push(`- Passed: ${result.no_mutation_proof.passed}`);
|
|
56
|
-
lines.push(`- User CWD unchanged: ${result.no_mutation_proof.user_cwd_unchanged}`);
|
|
57
|
-
lines.push('');
|
|
58
|
-
}
|
|
59
|
-
lines.push(`_Report generated at ${nowIso()}_`, '');
|
|
60
|
-
await writeTextAtomic(reportPath, lines.join('\n'));
|
|
61
|
-
return reportPath;
|
|
62
|
-
}
|
|
63
|
-
function formatCaseRow(c) {
|
|
64
|
-
const ttft = c.p50_ttft_ms !== null ? String(c.p50_ttft_ms) : 'unavailable';
|
|
65
|
-
const total = c.p50_total_ms !== null ? String(c.p50_total_ms) : 'unavailable';
|
|
66
|
-
const candidates = c.candidate_count !== null ? String(c.candidate_count) : 'n/a';
|
|
67
|
-
const gate = c.gate_pass_rate !== null ? c.gate_pass_rate.toFixed(2) : 'n/a';
|
|
68
|
-
const verifier = c.verifier_pass_rate !== null ? c.verifier_pass_rate.toFixed(2) : 'n/a';
|
|
69
|
-
const merge = c.merge_success !== null ? String(c.merge_success) : 'n/a';
|
|
70
|
-
const patchGen = c.patch_generated !== null ? String(c.patch_generated) : 'n/a';
|
|
71
|
-
const patchGate = c.patch_gate_passed !== null ? String(c.patch_gate_passed) : 'n/a';
|
|
72
|
-
const metricLatency = c.metric_status.latency;
|
|
73
|
-
return `| ${c.name} | ${c.kind} | ${c.workers} | ${c.wall_clock_ms} | ${ttft} | ${total} | ${candidates} | ${gate} | ${verifier} | ${merge} | ${patchGen} | ${patchGate} | ${metricLatency} |`;
|
|
74
|
-
}
|
|
@@ -1,243 +0,0 @@
|
|
|
1
|
-
import os from 'node:os';
|
|
2
|
-
import path from 'node:path';
|
|
3
|
-
import fsp from 'node:fs/promises';
|
|
4
|
-
import { spawn } from 'node:child_process';
|
|
5
|
-
import { nowIso, writeJsonAtomic } from '../../../fsx.js';
|
|
6
|
-
import { GLM_52_OPENROUTER_MODEL } from '../glm-52-settings.js';
|
|
7
|
-
import { resolveOpenRouterApiKey } from '../../openrouter/openrouter-secret-store.js';
|
|
8
|
-
import { runGlmNarutoMission } from '../naruto/glm-naruto-orchestrator.js';
|
|
9
|
-
import { summarizeGlmNarutoWorkerMetrics } from '../naruto/glm-naruto-metrics.js';
|
|
10
|
-
import { runGlmDirectSpeedRun } from '../glm-direct-run.js';
|
|
11
|
-
import { createGlmBenchFixture, cloneFixture, resetFixture, cleanupFixture } from './glm-bench-fixture.js';
|
|
12
|
-
import { runGlmDirectBenchCase } from './glm-direct-bench-runner.js';
|
|
13
|
-
import { computeGlmBenchmarkComparison } from './glm-bench-comparison.js';
|
|
14
|
-
import { buildGlmBenchModelLockProof } from './glm-bench-model-lock-proof.js';
|
|
15
|
-
import { writeGlmBenchReport } from './glm-bench-report.js';
|
|
16
|
-
import { GLM_BENCHMARK_VERSION } from './glm-benchmark-types.js';
|
|
17
|
-
const NARUTO_WORKER_COUNTS = [1, 4, 8, 12];
|
|
18
|
-
export async function runGlmBenchmark(root, args = [], deps = {}) {
|
|
19
|
-
const live = args.includes('--live');
|
|
20
|
-
const execute = args.includes('--execute');
|
|
21
|
-
const noApply = args.includes('--no-apply') || true;
|
|
22
|
-
const applyTemp = args.includes('--apply-temp');
|
|
23
|
-
const started = Date.now();
|
|
24
|
-
if (execute && !live) {
|
|
25
|
-
return blockedResult(root, ['execute_requires_live_flag']);
|
|
26
|
-
}
|
|
27
|
-
if (!live) {
|
|
28
|
-
return dryRunResult(root, started);
|
|
29
|
-
}
|
|
30
|
-
const key = await resolveOpenRouterApiKey({ env: process.env });
|
|
31
|
-
if (!key.key) {
|
|
32
|
-
return blockedResult(root, ['live_bench_requires_openrouter_key']);
|
|
33
|
-
}
|
|
34
|
-
const userCwd = process.cwd();
|
|
35
|
-
const userCwdBefore = await captureGitStatus(userCwd);
|
|
36
|
-
const benchId = `bench-${nowIso().replace(/[:.]/g, '-')}`;
|
|
37
|
-
const benchDir = path.join(root, '.sneakoscope', 'glm-bench', benchId);
|
|
38
|
-
await fsp.mkdir(benchDir, { recursive: true });
|
|
39
|
-
const sharedFixture = await createGlmBenchFixture();
|
|
40
|
-
const cases = [];
|
|
41
|
-
// Direct GLM case — does NOT call runGlmNarutoMission
|
|
42
|
-
const directFixture = await cloneFixture(sharedFixture, 'direct');
|
|
43
|
-
const directCaseDir = path.join(benchDir, 'cases', 'direct-glm-speed');
|
|
44
|
-
const directCase = await runGlmDirectBenchCase({
|
|
45
|
-
root,
|
|
46
|
-
fixture: directFixture,
|
|
47
|
-
apiKey: key.key,
|
|
48
|
-
noApply: true,
|
|
49
|
-
timeoutMs: 120_000,
|
|
50
|
-
sessionId: `sks-bench-direct-${benchId}`,
|
|
51
|
-
caseDir: directCaseDir
|
|
52
|
-
}, deps.runDirect ? { runDirect: deps.runDirect } : {});
|
|
53
|
-
cases.push(directCase);
|
|
54
|
-
await cleanupFixture(directFixture);
|
|
55
|
-
// Naruto cases — each calls runGlmNarutoMission with different worker counts
|
|
56
|
-
for (const workers of NARUTO_WORKER_COUNTS) {
|
|
57
|
-
const narutoFixture = await cloneFixture(sharedFixture, `naruto-${workers}`);
|
|
58
|
-
const caseDir = path.join(benchDir, 'cases', `glm-naruto-${workers}`);
|
|
59
|
-
await fsp.mkdir(caseDir, { recursive: true });
|
|
60
|
-
const caseStarted = Date.now();
|
|
61
|
-
const runNaruto = deps.runNaruto ?? runGlmNarutoMission;
|
|
62
|
-
const narutoResult = await runNaruto({
|
|
63
|
-
cwd: narutoFixture.fixture_dir,
|
|
64
|
-
task: sharedFixture.task,
|
|
65
|
-
args: ['--bench', '--live', '--no-apply'],
|
|
66
|
-
missionId: `glm-bench-naruto-${workers}-${benchId}`,
|
|
67
|
-
maxWorkers: workers,
|
|
68
|
-
noApply: true
|
|
69
|
-
});
|
|
70
|
-
const traces = await readWorkerTraces(narutoResult.artifact_dir);
|
|
71
|
-
const metrics = summarizeGlmNarutoWorkerMetrics(traces);
|
|
72
|
-
const wallClockMs = Date.now() - caseStarted;
|
|
73
|
-
const narutoCase = {
|
|
74
|
-
schema: 'sks.glm-benchmark-case.v1',
|
|
75
|
-
name: `GLM Naruto ${workers} worker${workers === 1 ? '' : 's'}`,
|
|
76
|
-
kind: 'glm-naruto',
|
|
77
|
-
runner_id: `glm-naruto-${workers}`,
|
|
78
|
-
implementation_path: 'glm-naruto',
|
|
79
|
-
workers,
|
|
80
|
-
model: GLM_52_OPENROUTER_MODEL,
|
|
81
|
-
gpt_fallback_allowed: false,
|
|
82
|
-
no_apply: true,
|
|
83
|
-
mutation_performed: false,
|
|
84
|
-
wall_clock_ms: wallClockMs,
|
|
85
|
-
p50_ttft_ms: metrics.p50_ttft_ms,
|
|
86
|
-
p90_ttft_ms: metrics.p90_ttft_ms,
|
|
87
|
-
p50_total_ms: metrics.p50_total_ms,
|
|
88
|
-
p90_total_ms: metrics.p90_total_ms,
|
|
89
|
-
candidate_count: narutoResult.patch_candidates,
|
|
90
|
-
gate_pass_rate: narutoResult.patch_candidates ? narutoResult.gate_passed_candidates / narutoResult.patch_candidates : null,
|
|
91
|
-
verifier_pass_rate: metrics.verifier_pass_rate > 0 ? metrics.verifier_pass_rate : (traces.length > 0 ? 0 : null),
|
|
92
|
-
merge_success: narutoResult.mergeable_candidates > 0,
|
|
93
|
-
patch_generated: narutoResult.patch_candidates > 0,
|
|
94
|
-
patch_gate_passed: narutoResult.gate_passed_candidates > 0,
|
|
95
|
-
cached_tokens_sum: metrics.cached_tokens_sum,
|
|
96
|
-
cache_write_tokens_sum: metrics.cache_write_tokens_sum,
|
|
97
|
-
reasoning_tokens_sum: metrics.reasoning_tokens_sum,
|
|
98
|
-
metric_status: {
|
|
99
|
-
latency: metrics.p50_total_ms === null && metrics.p50_ttft_ms === null ? 'unavailable' : 'measured',
|
|
100
|
-
usage: metrics.cached_tokens_sum === null && metrics.reasoning_tokens_sum === null ? 'unavailable' : 'measured',
|
|
101
|
-
candidate: 'measured',
|
|
102
|
-
verifier: 'measured',
|
|
103
|
-
merge: 'measured'
|
|
104
|
-
},
|
|
105
|
-
artifacts: {
|
|
106
|
-
case_dir: caseDir,
|
|
107
|
-
trace_path: null,
|
|
108
|
-
mission_artifact_dir: narutoResult.artifact_dir || null
|
|
109
|
-
},
|
|
110
|
-
blockers: narutoResult.blockers,
|
|
111
|
-
warnings: narutoResult.warnings
|
|
112
|
-
};
|
|
113
|
-
await writeJsonAtomic(path.join(caseDir, 'case-result.json'), narutoCase);
|
|
114
|
-
cases.push(narutoCase);
|
|
115
|
-
await cleanupFixture(narutoFixture);
|
|
116
|
-
}
|
|
117
|
-
await cleanupFixture(sharedFixture);
|
|
118
|
-
const comparison = computeGlmBenchmarkComparison(cases);
|
|
119
|
-
const modelLockProof = buildGlmBenchModelLockProof(cases, {
|
|
120
|
-
requestSummaries: await collectRequestSummaries(cases),
|
|
121
|
-
directTraceChecked: cases.some((c) => c.runner_id === 'direct-glm-speed' && c.artifacts.trace_path !== null)
|
|
122
|
-
});
|
|
123
|
-
const userCwdAfter = await captureGitStatus(userCwd);
|
|
124
|
-
const userCwdUnchanged = userCwdBefore === userCwdAfter;
|
|
125
|
-
const noMutationProof = {
|
|
126
|
-
schema: 'sks.glm-bench-no-mutation-proof.v1',
|
|
127
|
-
user_cwd_unchanged: userCwdUnchanged,
|
|
128
|
-
fixture_mutated_only_under_apply_temp: !applyTemp,
|
|
129
|
-
cases_report_no_mutation: true,
|
|
130
|
-
passed: userCwdUnchanged && cases.every((c) => c.mutation_performed === false)
|
|
131
|
-
};
|
|
132
|
-
const result = {
|
|
133
|
-
schema: 'sks.glm-benchmark-result.v1',
|
|
134
|
-
version: GLM_BENCHMARK_VERSION,
|
|
135
|
-
generated_at: nowIso(),
|
|
136
|
-
status: 'live',
|
|
137
|
-
model: GLM_52_OPENROUTER_MODEL,
|
|
138
|
-
gpt_fallback_allowed: false,
|
|
139
|
-
fixture: {
|
|
140
|
-
schema: 'sks.glm-bench-fixture.v1',
|
|
141
|
-
fixture_dir: '(cleaned up)',
|
|
142
|
-
task: sharedFixture.task,
|
|
143
|
-
target_file: sharedFixture.target_file,
|
|
144
|
-
initial_content: sharedFixture.initial_content,
|
|
145
|
-
expected_content: sharedFixture.expected_content
|
|
146
|
-
},
|
|
147
|
-
cases,
|
|
148
|
-
comparison,
|
|
149
|
-
model_lock_proof: modelLockProof,
|
|
150
|
-
no_mutation_proof: noMutationProof,
|
|
151
|
-
warnings: ['live_bench_no_apply_temp_repo']
|
|
152
|
-
};
|
|
153
|
-
await writeJsonAtomic(path.join(benchDir, 'bench-result.json'), result);
|
|
154
|
-
await writeJsonAtomic(path.join(benchDir, 'model-lock-proof.json'), modelLockProof);
|
|
155
|
-
await writeGlmBenchReport(benchDir, result);
|
|
156
|
-
return result;
|
|
157
|
-
}
|
|
158
|
-
function dryRunResult(root, startedMs) {
|
|
159
|
-
return {
|
|
160
|
-
schema: 'sks.glm-benchmark-result.v1',
|
|
161
|
-
version: GLM_BENCHMARK_VERSION,
|
|
162
|
-
generated_at: nowIso(),
|
|
163
|
-
status: 'dry_run',
|
|
164
|
-
model: GLM_52_OPENROUTER_MODEL,
|
|
165
|
-
gpt_fallback_allowed: false,
|
|
166
|
-
fixture: null,
|
|
167
|
-
cases: [],
|
|
168
|
-
comparison: {
|
|
169
|
-
direct_wall_clock_ms: null,
|
|
170
|
-
best_naruto_wall_clock_ms: null,
|
|
171
|
-
best_naruto_runner_id: null,
|
|
172
|
-
naruto_speedup_vs_direct: null,
|
|
173
|
-
recommendation: 'inconclusive',
|
|
174
|
-
reason: 'Dry run — no live API calls made.'
|
|
175
|
-
},
|
|
176
|
-
model_lock_proof: null,
|
|
177
|
-
no_mutation_proof: null,
|
|
178
|
-
warnings: ['dry_run_no_live_api_calls']
|
|
179
|
-
};
|
|
180
|
-
}
|
|
181
|
-
function blockedResult(root, warnings) {
|
|
182
|
-
return {
|
|
183
|
-
schema: 'sks.glm-benchmark-result.v1',
|
|
184
|
-
version: GLM_BENCHMARK_VERSION,
|
|
185
|
-
generated_at: nowIso(),
|
|
186
|
-
status: 'blocked',
|
|
187
|
-
model: GLM_52_OPENROUTER_MODEL,
|
|
188
|
-
gpt_fallback_allowed: false,
|
|
189
|
-
fixture: null,
|
|
190
|
-
cases: [],
|
|
191
|
-
comparison: {
|
|
192
|
-
direct_wall_clock_ms: null,
|
|
193
|
-
best_naruto_wall_clock_ms: null,
|
|
194
|
-
best_naruto_runner_id: null,
|
|
195
|
-
naruto_speedup_vs_direct: null,
|
|
196
|
-
recommendation: 'inconclusive',
|
|
197
|
-
reason: 'Benchmark blocked.'
|
|
198
|
-
},
|
|
199
|
-
model_lock_proof: null,
|
|
200
|
-
no_mutation_proof: null,
|
|
201
|
-
warnings
|
|
202
|
-
};
|
|
203
|
-
}
|
|
204
|
-
async function readWorkerTraces(artifactDir) {
|
|
205
|
-
if (!artifactDir)
|
|
206
|
-
return [];
|
|
207
|
-
try {
|
|
208
|
-
return JSON.parse(await fsp.readFile(path.join(artifactDir, 'worker-traces.json'), 'utf8'));
|
|
209
|
-
}
|
|
210
|
-
catch {
|
|
211
|
-
return [];
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
async function collectRequestSummaries(cases) {
|
|
215
|
-
const summaries = [];
|
|
216
|
-
for (const caseResult of cases) {
|
|
217
|
-
const dir = caseResult.artifacts.mission_artifact_dir;
|
|
218
|
-
if (!dir)
|
|
219
|
-
continue;
|
|
220
|
-
try {
|
|
221
|
-
const workerRoot = path.join(dir, 'workers');
|
|
222
|
-
const workerIds = await fsp.readdir(workerRoot);
|
|
223
|
-
for (const workerId of workerIds) {
|
|
224
|
-
try {
|
|
225
|
-
const summary = JSON.parse(await fsp.readFile(path.join(workerRoot, workerId, 'request-summary.json'), 'utf8'));
|
|
226
|
-
summaries.push(summary);
|
|
227
|
-
}
|
|
228
|
-
catch { }
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
catch { }
|
|
232
|
-
}
|
|
233
|
-
return summaries;
|
|
234
|
-
}
|
|
235
|
-
async function captureGitStatus(cwd) {
|
|
236
|
-
return new Promise((resolve) => {
|
|
237
|
-
const child = spawn('git', ['status', '--short'], { cwd, stdio: ['ignore', 'pipe', 'ignore'] });
|
|
238
|
-
let stdout = '';
|
|
239
|
-
child.stdout.on('data', (chunk) => { stdout += String(chunk); });
|
|
240
|
-
child.on('close', () => resolve(stdout.trim()));
|
|
241
|
-
child.on('error', () => resolve(''));
|
|
242
|
-
});
|
|
243
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export const GLM_BENCHMARK_VERSION = '4.2.0';
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
import path from 'node:path';
|
|
2
|
-
import fsp from 'node:fs/promises';
|
|
3
|
-
import { writeJsonAtomic } from '../../../fsx.js';
|
|
4
|
-
import { GLM_52_OPENROUTER_MODEL } from '../glm-52-settings.js';
|
|
5
|
-
import { runGlmDirectSpeedRun } from '../glm-direct-run.js';
|
|
6
|
-
export async function runGlmDirectBenchCase(input, deps = {}) {
|
|
7
|
-
const runDirect = deps.runDirect ?? runGlmDirectSpeedRun;
|
|
8
|
-
await fsp.mkdir(input.caseDir, { recursive: true });
|
|
9
|
-
const started = Date.now();
|
|
10
|
-
const directResult = await runDirect({
|
|
11
|
-
cwd: input.fixture.fixture_dir,
|
|
12
|
-
task: input.fixture.task,
|
|
13
|
-
args: ['--bench', '--live', '--dry-run'],
|
|
14
|
-
dryRun: true
|
|
15
|
-
});
|
|
16
|
-
const wallClockMs = Date.now() - started;
|
|
17
|
-
const patchGenerated = directResult.ok || directResult.status === 'blocked';
|
|
18
|
-
const patchGatePassed = directResult.ok;
|
|
19
|
-
const tracePath = path.join(input.caseDir, 'trace.json');
|
|
20
|
-
await writeJsonAtomic(tracePath, {
|
|
21
|
-
schema: 'sks.glm-direct-bench-trace.v1',
|
|
22
|
-
runner_id: 'direct-glm-speed',
|
|
23
|
-
implementation_path: 'direct-glm',
|
|
24
|
-
wall_clock_ms: wallClockMs,
|
|
25
|
-
direct_result: directResult,
|
|
26
|
-
called_naruto: false,
|
|
27
|
-
model: GLM_52_OPENROUTER_MODEL
|
|
28
|
-
});
|
|
29
|
-
const latencyMeasured = wallClockMs > 0;
|
|
30
|
-
const result = {
|
|
31
|
-
schema: 'sks.glm-benchmark-case.v1',
|
|
32
|
-
name: 'Direct GLM speed path',
|
|
33
|
-
kind: 'direct-glm',
|
|
34
|
-
runner_id: 'direct-glm-speed',
|
|
35
|
-
implementation_path: 'direct-glm',
|
|
36
|
-
workers: 1,
|
|
37
|
-
model: GLM_52_OPENROUTER_MODEL,
|
|
38
|
-
gpt_fallback_allowed: false,
|
|
39
|
-
no_apply: true,
|
|
40
|
-
mutation_performed: false,
|
|
41
|
-
wall_clock_ms: wallClockMs,
|
|
42
|
-
p50_ttft_ms: null,
|
|
43
|
-
p90_ttft_ms: null,
|
|
44
|
-
p50_total_ms: null,
|
|
45
|
-
p90_total_ms: null,
|
|
46
|
-
candidate_count: null,
|
|
47
|
-
gate_pass_rate: null,
|
|
48
|
-
verifier_pass_rate: null,
|
|
49
|
-
merge_success: null,
|
|
50
|
-
patch_generated: patchGenerated ? true : (patchGenerated === false ? false : null),
|
|
51
|
-
patch_gate_passed: patchGatePassed ? true : (patchGatePassed === false ? false : null),
|
|
52
|
-
cached_tokens_sum: null,
|
|
53
|
-
cache_write_tokens_sum: null,
|
|
54
|
-
reasoning_tokens_sum: null,
|
|
55
|
-
metric_status: {
|
|
56
|
-
latency: latencyMeasured ? 'measured' : 'unavailable',
|
|
57
|
-
usage: 'unavailable',
|
|
58
|
-
candidate: 'not_applicable',
|
|
59
|
-
verifier: 'not_applicable',
|
|
60
|
-
merge: 'not_applicable'
|
|
61
|
-
},
|
|
62
|
-
artifacts: {
|
|
63
|
-
case_dir: input.caseDir,
|
|
64
|
-
trace_path: tracePath,
|
|
65
|
-
mission_artifact_dir: null
|
|
66
|
-
},
|
|
67
|
-
blockers: directResult.blockers,
|
|
68
|
-
warnings: directResult.warnings
|
|
69
|
-
};
|
|
70
|
-
await writeJsonAtomic(path.join(input.caseDir, 'case-result.json'), result);
|
|
71
|
-
return result;
|
|
72
|
-
}
|