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,5 +1,4 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
// @ts-nocheck
|
|
3
2
|
import fs from 'node:fs/promises';
|
|
4
3
|
import os from 'node:os';
|
|
5
4
|
import path from 'node:path';
|
|
@@ -12,8 +11,6 @@ const preflightMod = await import(pathToFileURL(path.join(repoRoot, 'dist', 'cor
|
|
|
12
11
|
const readabilityMod = await import(pathToFileURL(path.join(repoRoot, 'dist', 'core', 'codex', 'codex-config-readability.js')).href);
|
|
13
12
|
const initMod = await import(pathToFileURL(path.join(repoRoot, 'dist', 'core', 'init.js')).href);
|
|
14
13
|
const fakeCodex = path.join(repoRoot, 'dist', 'scripts', 'fixtures', 'fake-codex-config-loader.js');
|
|
15
|
-
// Case 1: an EXISTING but unreadable (EPERM) config MUST still block the launch — the
|
|
16
|
-
// fresh-project bootstrap must never mask a genuine permission/EPERM problem.
|
|
17
14
|
const epermFixture = await fs.mkdtemp(path.join(os.tmpdir(), 'sks-mad-preflight-eperm-'));
|
|
18
15
|
await fs.mkdir(path.join(epermFixture, '.codex'), { recursive: true });
|
|
19
16
|
await fs.mkdir(path.join(epermFixture, '.sneakoscope', 'reports'), { recursive: true });
|
|
@@ -30,19 +27,12 @@ if (oldEperm === undefined)
|
|
|
30
27
|
else
|
|
31
28
|
process.env.SKS_FAKE_CODEX_CONFIG_EPERM = oldEperm;
|
|
32
29
|
const epermOk = epermReport.ok === false && epermReport.blockers.includes('codex_cli_config_eperm');
|
|
33
|
-
// Case 2 (de-noise): a MISSING config must report only the honest missing_config /
|
|
34
|
-
// missing_codex_dir blockers, NOT a cascade of macos_acl_ls_le_failed /
|
|
35
|
-
// macos_flags_ls_lO_failed / spawned_child_read_failed from running file checks on a
|
|
36
|
-
// nonexistent path.
|
|
37
30
|
const missingFixture = await fs.mkdtemp(path.join(os.tmpdir(), 'sks-mad-preflight-missing-'));
|
|
38
31
|
const missingReport = await readabilityMod.inspectCodexConfigReadability(missingFixture, { writeReport: false });
|
|
39
32
|
const noiseBlockers = ['macos_acl_ls_le_failed', 'macos_flags_ls_lO_failed', 'spawned_child_read_failed', 'config_lstat_failed', 'config_stat_failed'];
|
|
40
33
|
const denoiseOk = missingReport.ok === false
|
|
41
34
|
&& missingReport.blockers.includes('missing_config')
|
|
42
35
|
&& noiseBlockers.every((b) => !missingReport.blockers.includes(b));
|
|
43
|
-
// Case 3 (bootstrap recovers): after regenerating the managed config in the same fresh
|
|
44
|
-
// project (what `sks --mad` now does automatically), readability must pass with no
|
|
45
|
-
// missing/cascade config blocker.
|
|
46
36
|
await initMod.initProject(missingFixture, { installScope: 'global', globalCommand: 'sks' });
|
|
47
37
|
const afterReport = await readabilityMod.inspectCodexConfigReadability(missingFixture, { writeReport: false });
|
|
48
38
|
const bootstrapOk = afterReport.ok === true
|
|
@@ -1,9 +1,4 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
// @ts-nocheck
|
|
3
|
-
// Repo-wide risky mutation callsite gate. Every raw mutation must be either a
|
|
4
|
-
// guarded call or an external allowlist entry with a concrete function/symbol and
|
|
5
|
-
// reason. The allowlist is intentionally data, not code, so unused/stale entries
|
|
6
|
-
// fail the release gate.
|
|
7
2
|
import fs from 'node:fs';
|
|
8
3
|
import path from 'node:path';
|
|
9
4
|
import { assertGate, emitGate, root } from './sks-1-18-gate-lib.js';
|
|
@@ -16,7 +16,7 @@ assertGate(implicitCount.requestedSubagents === 2, 'implicit Naruto must default
|
|
|
16
16
|
assertGate(counts[0]?.requestedSubagents === 4, 'requested 4 must remain 4', counts);
|
|
17
17
|
assertGate(counts[1]?.requestedSubagents === 8, 'requested 8 must remain 8', counts);
|
|
18
18
|
assertGate(counts[2]?.requestedSubagents === 12, 'requested 12 must remain 12', counts);
|
|
19
|
-
assertGate(counts[3]?.requestedSubagents === 20 && counts[3]?.firstWave ===
|
|
19
|
+
assertGate(counts[3]?.requestedSubagents === 20 && counts[3]?.firstWave === 11 && counts[3]?.waveCount === 2, 'requested 20/maxThreads 12 must reserve parent capacity and plan two waves', counts);
|
|
20
20
|
assertGate(counts[4]?.requestedSubagents === 32, 'requested 100 must use the official hard safety cap 32', counts);
|
|
21
21
|
const prompt = buildOfficialSubagentPrompt({
|
|
22
22
|
goal: 'Review independent packages and report one parent summary.',
|
|
@@ -110,9 +110,11 @@ try {
|
|
|
110
110
|
});
|
|
111
111
|
assertGate(failedResultText.ok === false && failedResultText.failed_thread_ids.includes('a2'), 'unambiguous failed result text must override a contradictory completed claim', failedResultText);
|
|
112
112
|
let nestedLaunch = false;
|
|
113
|
+
const appPreparationPrompt = 'Review repository code and report findings.';
|
|
113
114
|
const appResult = await runOfficialSubagentWorkflow({
|
|
114
115
|
root,
|
|
115
|
-
|
|
116
|
+
goal: appPreparationPrompt,
|
|
117
|
+
prompt: appPreparationPrompt,
|
|
116
118
|
requestedSubagents: 3,
|
|
117
119
|
maxThreads: 12,
|
|
118
120
|
appSession: true,
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
// @ts-nocheck
|
|
3
2
|
import fs from 'node:fs';
|
|
4
3
|
import os from 'node:os';
|
|
5
4
|
import path from 'node:path';
|
|
@@ -9,13 +8,12 @@ import { npmPackAtomicTempPaths, writeNpmPackProof } from '../core/release/npm-p
|
|
|
9
8
|
import { assertGate, emitGate, root } from './sks-1-18-gate-lib.js';
|
|
10
9
|
const MAX_FILES = Number(process.env.SKS_MAX_PACK_FILES || 2100);
|
|
11
10
|
const MAX_UNPACKED = Number(process.env.SKS_MAX_UNPACKED_BYTES || DEFAULT_MAX_UNPACKED_BYTES);
|
|
12
|
-
// Shared measured budgets stay centralized and intentionally narrow.
|
|
13
11
|
const MAX_PACKED = Number(process.env.SKS_MAX_PACK_BYTES || DEFAULT_MAX_PACK_BYTES);
|
|
14
12
|
const SURFACE_MAX_PACKED = Number(process.env.SKS_PACKAGE_SURFACE_MAX_PACK_BYTES || 25_000_000);
|
|
15
13
|
const SURFACE_MAX_FILES = Number(process.env.SKS_PACKAGE_SURFACE_MAX_FILES || 2500);
|
|
16
14
|
const MAX_ATOMIC_TEMP_PACK_ATTEMPTS = 4;
|
|
17
15
|
function runNpmPack() {
|
|
18
|
-
const npmCli = process.env.npm_execpath;
|
|
16
|
+
const npmCli = process.env.npm_execpath;
|
|
19
17
|
const npmCache = process.env.SKS_RELEASE_NPM_CACHE || path.join(os.tmpdir(), 'sneakoscope-npm-cache');
|
|
20
18
|
fs.mkdirSync(npmCache, { recursive: true });
|
|
21
19
|
const argv = ['pack', '--dry-run', '--ignore-scripts', '--json'];
|
|
@@ -1,13 +1,4 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
// @ts-nocheck
|
|
3
|
-
// Fast prepublish eligibility check. Self-contained: reads the existing release
|
|
4
|
-
// stamp written by dist/scripts/release-check-stamp.js and decides whether the cheap
|
|
5
|
-
// fast-path (no full release:check rebuild) is eligible by comparing only the
|
|
6
|
-
// lightweight comparators it can recompute without a build.
|
|
7
|
-
//
|
|
8
|
-
// Output: a single JSON line on stdout (schema sks.prepublish-fast-check.v1).
|
|
9
|
-
// Exit 0 when the fast path is eligible; exit 1 otherwise (incl. no stamp).
|
|
10
|
-
// Tolerant of missing stamp fields; only compares fields present in the stamp.
|
|
11
2
|
import { spawnSync } from 'node:child_process';
|
|
12
3
|
import crypto from 'node:crypto';
|
|
13
4
|
import fs from 'node:fs';
|
|
@@ -24,7 +15,6 @@ function safeGitCommit() {
|
|
|
24
15
|
return String(result.stdout || '').trim() || null;
|
|
25
16
|
}
|
|
26
17
|
catch {
|
|
27
|
-
// git unavailable; commit comparison is informational only.
|
|
28
18
|
}
|
|
29
19
|
return null;
|
|
30
20
|
}
|
|
@@ -37,7 +27,6 @@ function packageFilesListHash(pkg) {
|
|
|
37
27
|
return sha256(JSON.stringify(files));
|
|
38
28
|
}
|
|
39
29
|
function main() {
|
|
40
|
-
// No stamp -> not eligible; print and exit 1.
|
|
41
30
|
if (!fs.existsSync(stampPath)) {
|
|
42
31
|
console.log(JSON.stringify({ ok: false, reason: 'no_release_stamp', hint: 'run npm run release:check:full' }));
|
|
43
32
|
process.exit(1);
|
|
@@ -65,7 +54,6 @@ function main() {
|
|
|
65
54
|
const gitCommit = safeGitCommit();
|
|
66
55
|
const mismatched = [];
|
|
67
56
|
const reasons = [];
|
|
68
|
-
// Always-compared comparator: package version.
|
|
69
57
|
if (Object.prototype.hasOwnProperty.call(stamp, 'package_version')) {
|
|
70
58
|
if (stamp.package_version !== currentVersion) {
|
|
71
59
|
mismatched.push('package_version');
|
|
@@ -76,14 +64,12 @@ function main() {
|
|
|
76
64
|
mismatched.push('package_version');
|
|
77
65
|
reasons.push('package_version: absent from stamp');
|
|
78
66
|
}
|
|
79
|
-
// Compared only if the stamp carries it.
|
|
80
67
|
if (Object.prototype.hasOwnProperty.call(stamp, 'package_json_sha256')) {
|
|
81
68
|
if (stamp.package_json_sha256 !== currentPkgSha) {
|
|
82
69
|
mismatched.push('package_json_sha256');
|
|
83
70
|
reasons.push(`package_json_sha256: stamp=${stamp.package_json_sha256 ?? 'missing'} current=${currentPkgSha}`);
|
|
84
71
|
}
|
|
85
72
|
}
|
|
86
|
-
// package.files list hash: informational unless the stamp recorded one.
|
|
87
73
|
if (Object.prototype.hasOwnProperty.call(stamp, 'package_files_list_sha256')) {
|
|
88
74
|
if (stamp.package_files_list_sha256 !== currentFilesHash) {
|
|
89
75
|
mismatched.push('package_files_list_sha256');
|
|
@@ -91,9 +77,6 @@ function main() {
|
|
|
91
77
|
}
|
|
92
78
|
}
|
|
93
79
|
if (Object.prototype.hasOwnProperty.call(stamp, 'package_files_sha256')) {
|
|
94
|
-
// Full package file hashing is owned by release-check-stamp.js; this check
|
|
95
|
-
// confirms the fast stamp carries the comparator and leaves exact matching to
|
|
96
|
-
// `release-check-stamp verify`.
|
|
97
80
|
if (!stamp.package_files_sha256) {
|
|
98
81
|
mismatched.push('package_files_sha256');
|
|
99
82
|
reasons.push('package_files_sha256: absent from stamp');
|
|
@@ -103,12 +86,6 @@ function main() {
|
|
|
103
86
|
mismatched.push('release_gate_sha256');
|
|
104
87
|
reasons.push('release_gate_sha256: absent from stamp');
|
|
105
88
|
}
|
|
106
|
-
// git_commit is provenance, not a freshness comparator. A valid release flow often
|
|
107
|
-
// runs release:check, commits the exact checked tree, then publishes from that new
|
|
108
|
-
// commit. In that case the tree/package/dist hashes still prove freshness, while
|
|
109
|
-
// comparing HEAD to the pre-commit stamp would block a good publish. The stricter
|
|
110
|
-
// `release-check-stamp verify` that follows this fast check owns the content
|
|
111
|
-
// comparators; keep the current commit visible in this report for audit only.
|
|
112
89
|
const stampedGitCommit = Object.prototype.hasOwnProperty.call(stamp, 'git_commit') ? stamp.git_commit || null : null;
|
|
113
90
|
const eligible = mismatched.length === 0;
|
|
114
91
|
console.log(JSON.stringify({
|
|
@@ -1,11 +1,4 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
// @ts-nocheck
|
|
3
|
-
// Publish-time release stamp verifier and prepack build bridge.
|
|
4
|
-
//
|
|
5
|
-
// `npm publish` verifies the authoritative release stamp before prepack, rebuilds
|
|
6
|
-
// dist through the normal prepack lifecycle, then verifies the same stamp again
|
|
7
|
-
// before npm creates the publish tarball. Ordinary `npm pack` keeps build-only
|
|
8
|
-
// behavior and does not require release authorization.
|
|
9
2
|
import { spawnSync } from 'node:child_process';
|
|
10
3
|
import process from 'node:process';
|
|
11
4
|
const npmCmd = process.platform === 'win32' ? 'npm.cmd' : 'npm';
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
// @ts-nocheck
|
|
3
2
|
import { PRODUCT_DESIGN_PIPELINE_STAGES, PRODUCT_DESIGN_PLUGIN, PRODUCT_DESIGN_REQUIRED_SKILLS, normalizeProductDesignPluginEvidence, productDesignPluginVisibilityFromCodexPluginList } from '../core/product-design-plugin.js';
|
|
4
3
|
import { assertGate, emitGate, readText, releaseGateIds } from './lib/codex-sdk-gate-lib.js';
|
|
5
4
|
const routesSource = readText('src/core/routes.ts');
|
|
@@ -1,20 +1,25 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import path from 'node:path';
|
|
3
3
|
import fs from 'node:fs/promises';
|
|
4
|
-
import { assertGate, emitGate, makeTempRoot,
|
|
4
|
+
import { assertGate, emitGate, makeTempRoot, writeText, writeUserSkill } from './sks-3-1-8-check-lib.js';
|
|
5
5
|
import { dedupeProjectSkills } from '../core/codex-native/project-skill-dedupe.js';
|
|
6
6
|
import { syncCodexSksSkills, withSkillSyncLock } from '../core/codex-app/codex-skill-sync.js';
|
|
7
7
|
import { buildSkillRegistryLedger } from '../core/codex-native/skill-registry-ledger.js';
|
|
8
|
+
const removeFixture = fs.rm.bind(fs);
|
|
8
9
|
const root = await makeTempRoot('sks-skill-dedupe-blackbox-');
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
const home = await makeTempRoot('sks-skill-dedupe-home-');
|
|
11
|
+
process.env.HOME = home;
|
|
12
|
+
process.env.CODEX_HOME = path.join(home, '.codex');
|
|
13
|
+
await writeManagedFixture(home, '.agents/skills', 'managed-loop');
|
|
14
|
+
await writeManagedFixture(root, '.agents/skills', 'managed-loop');
|
|
15
|
+
await writeManagedFixture(root, '.codex/skills', 'managed-loop');
|
|
12
16
|
const scenarioA = await dedupeProjectSkills({ root, fix: true, yes: true });
|
|
13
|
-
await writeUserSkill(root, '.agents/skills', 'user-loop', 'loop');
|
|
14
|
-
await
|
|
17
|
+
await writeUserSkill(root, '.agents/skills', 'user-loop', 'fixture-loop');
|
|
18
|
+
await writeManagedFixture(root, '.codex/skills', 'managed-loop');
|
|
15
19
|
const scenarioB = await dedupeProjectSkills({ root, fix: true, yes: true });
|
|
16
|
-
await
|
|
17
|
-
await writeUserSkill(root, '.
|
|
20
|
+
await guardedRm(path.join(home, '.agents', 'skills', 'managed-loop'), path.join(home, '.agents', 'skills'));
|
|
21
|
+
await writeUserSkill(root, '.agents/skills', 'user-loop-a', 'Fixture Loop');
|
|
22
|
+
await writeUserSkill(root, '.codex/skills', 'user-loop-b', 'fixture_loop');
|
|
18
23
|
const scenarioC = await dedupeProjectSkills({ root, fix: true, yes: false });
|
|
19
24
|
const scenarioD = await dedupeProjectSkills({ root, fix: true, yes: true, quarantineUserDuplicates: true });
|
|
20
25
|
const staleRoot = await makeTempRoot('sks-skill-stale-lock-');
|
|
@@ -23,7 +28,9 @@ await fs.mkdir(lockPath, { recursive: true });
|
|
|
23
28
|
await fs.writeFile(path.join(lockPath, 'owner.json'), JSON.stringify({ schema: 'sks.skill-sync-lock.v1', pid: 999999, acquired_at: '1970-01-01T00:00:00.000Z', stale_after_ms: 1 }), 'utf8');
|
|
24
29
|
await withSkillSyncLock(staleRoot, async () => undefined);
|
|
25
30
|
const concurrentRoot = await makeTempRoot('sks-skill-concurrent-');
|
|
26
|
-
|
|
31
|
+
const concurrentHome = await makeTempRoot('sks-skill-concurrent-home-');
|
|
32
|
+
process.env.HOME = concurrentHome;
|
|
33
|
+
process.env.CODEX_HOME = path.join(concurrentHome, '.codex');
|
|
27
34
|
const skillsRoot = path.join(process.env.CODEX_HOME, 'skills');
|
|
28
35
|
await Promise.all(Array.from({ length: 20 }, () => syncCodexSksSkills({ root: concurrentRoot, apply: true, skillsRoot })));
|
|
29
36
|
const concurrentLedger = await buildSkillRegistryLedger({ root: concurrentRoot });
|
|
@@ -33,3 +40,23 @@ assertGate(scenarioC.blockers.some((blocker) => blocker.includes('user_duplicate
|
|
|
33
40
|
assertGate(scenarioD.active_unique_by_canonical_name === true, 'scenario D must quarantine confirmed user-authored duplicate', scenarioD);
|
|
34
41
|
assertGate(concurrentLedger.active_unique_by_canonical_name === true, 'scenario F must keep exactly one active canonical name after concurrent sync', concurrentLedger);
|
|
35
42
|
emitGate('skill:dedupe-blackbox');
|
|
43
|
+
async function writeManagedFixture(root, relRoot, dirName) {
|
|
44
|
+
await writeText(path.join(root, relRoot, dirName, 'SKILL.md'), [
|
|
45
|
+
'---',
|
|
46
|
+
'name: fixture-loop',
|
|
47
|
+
'description: managed fixture',
|
|
48
|
+
'---',
|
|
49
|
+
'',
|
|
50
|
+
'<!-- BEGIN SKS MANAGED SKILL v-test name=fixture-loop -->',
|
|
51
|
+
''
|
|
52
|
+
].join('\n'));
|
|
53
|
+
}
|
|
54
|
+
async function guardedRm(target, allowedRoot) {
|
|
55
|
+
const root = path.resolve(allowedRoot);
|
|
56
|
+
const resolved = path.resolve(target);
|
|
57
|
+
const relative = path.relative(root, resolved);
|
|
58
|
+
if (!relative || relative.startsWith('..') || path.isAbsolute(relative)) {
|
|
59
|
+
throw new Error('refusing_to_remove_unscoped_skill_fixture');
|
|
60
|
+
}
|
|
61
|
+
await removeFixture(resolved, { recursive: true, force: true });
|
|
62
|
+
}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
// @ts-nocheck
|
|
3
2
|
import fs from 'node:fs/promises';
|
|
4
3
|
import os from 'node:os';
|
|
5
4
|
import path from 'node:path';
|
|
@@ -15,8 +14,6 @@ const tmp = await fs.mkdtemp(path.join(os.tmpdir(), 'sks-python-codex-sdk-pipeli
|
|
|
15
14
|
const oldFake = process.env.SKS_PYTHON_CODEX_SDK_FAKE;
|
|
16
15
|
const oldCodexLbAutobypass = process.env.SKS_CODEX_LB_AUTOBYPASS;
|
|
17
16
|
process.env.SKS_PYTHON_CODEX_SDK_FAKE = '1';
|
|
18
|
-
// Keep the hermetic fake backend independent from an operator's live
|
|
19
|
-
// codex-lb configuration. This fixture validates the Python SDK pipeline only.
|
|
20
17
|
process.env.SKS_CODEX_LB_AUTOBYPASS = '1';
|
|
21
18
|
try {
|
|
22
19
|
const result = await mod.runCodexTask({
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
// @ts-nocheck
|
|
3
2
|
import { assertGate, emitGate, readText } from './sks-1-18-gate-lib.js';
|
|
4
3
|
const command = readText('src/core/commands/qa-loop-command.ts');
|
|
5
4
|
assertGate(command.includes('[--app-handoff] [--app-handoff-required]') && command.includes('status <mission-id|latest> [--desktop]'), 'QA-LOOP help must expose app handoff run/status flags');
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
// @ts-nocheck
|
|
3
2
|
import { assertGate, emitGate, readText } from './sks-1-18-gate-lib.js';
|
|
4
3
|
const command = readText('src/core/commands/qa-loop-command.ts');
|
|
5
4
|
assertGate(command.includes('--app-handoff-launch') && command.includes('--app-handoff-artifact-only') && command.includes('launch_mode'), 'QA-LOOP must expose launch/artifact-only handoff flags and pass launch_mode');
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
// @ts-nocheck
|
|
3
2
|
import { assertGate, emitGate, readText } from './sks-1-18-gate-lib.js';
|
|
4
3
|
const command = readText('src/core/commands/qa-loop-command.ts');
|
|
5
4
|
assertGate(command.includes('desktop_app_confirmation') && command.includes('desktop_review_complete') && command.includes('launch:'), 'QA status --desktop must include handoff launch, confirmation, and complete lifecycle');
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
// @ts-nocheck
|
|
3
2
|
import { assertGate, emitGate, importDist } from './sks-1-18-gate-lib.js';
|
|
4
3
|
const mod = await importDist('core/qa-loop/qa-loop-budget-policy.js');
|
|
5
4
|
const policy = mod.buildQaLoopBudgetPolicy({ usage: { source: 'fake', token_usage: { total_tokens: 95 }, usage_limit_tokens: 100 } });
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
// @ts-nocheck
|
|
3
2
|
import { assertGate, emitGate, importDist } from './sks-1-18-gate-lib.js';
|
|
4
3
|
const mod = await importDist('core/qa-loop/qa-loop-budget-policy.js');
|
|
5
4
|
const one = mod.selectQaLoopEscalatedEffort({ failureCount: 1, currentEffort: 'medium' });
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
// @ts-nocheck
|
|
3
2
|
import { assertGate, emitGate, importDist } from './sks-1-18-gate-lib.js';
|
|
4
3
|
const qa = await importDist('core/qa-loop.js');
|
|
5
4
|
const prompt = qa.buildQaLoopPrompt({ id: 'M', mission: { prompt: 'fixture' }, contract: {}, cycle: 1, previous: '', reportFile: '2026-06-09-v2.0.19-qa-report.md', imagePathContract: { images: [{ id: 'img', model_visible_path: '/tmp/a.png', mime_type: 'image/png', width: 1, height: 1, followup_edit_hint: 'use /tmp/a.png' }], blockers: [] } });
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
// @ts-nocheck
|
|
3
2
|
import { classifyReleaseCacheInputChange } from '../core/release/release-cache-key.js';
|
|
4
3
|
import { assertGate, emitGate } from './sks-1-18-gate-lib.js';
|
|
5
4
|
const pkgA = JSON.stringify({ name: 'sneakoscope', version: '3.0.0', scripts: { test: 'node a.js' }, dependencies: { left: '1.0.0' }, files: ['dist'] }, null, 2);
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
// @ts-nocheck
|
|
3
2
|
import { spawnSync } from 'node:child_process';
|
|
4
3
|
import { assertGate, emitGate, root } from './sks-1-18-gate-lib.js';
|
|
5
4
|
const result = spawnSync(process.execPath, ['dist/scripts/release-speed-summary.js'], { cwd: root, encoding: 'utf8', timeout: 30000 });
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
// @ts-nocheck
|
|
3
2
|
import { spawnSync } from 'node:child_process';
|
|
4
3
|
import crypto from 'node:crypto';
|
|
5
4
|
import fs from 'node:fs';
|
|
@@ -470,9 +469,6 @@ function inspectFullReleaseGateProof(proof, currentPayload) {
|
|
|
470
469
|
const identicalAuthorizedBuild = distFreshness.ok === true && sameReleaseAuthorizationSnapshot(summary.release_authorization_snapshot, currentPayload);
|
|
471
470
|
if (!Number.isFinite(summaryMtimeMs) || !Number.isFinite(buildStampMtimeMs))
|
|
472
471
|
blockers.push('proof_mtime_missing');
|
|
473
|
-
// npm publish performs a deterministic clean rebuild after the full
|
|
474
|
-
// release run. Permit only that content-identical case; any source,
|
|
475
|
-
// package, dist, or gate identity drift still fails the checks above.
|
|
476
472
|
if (Number.isFinite(summaryMtimeMs) && Number.isFinite(buildStampMtimeMs) && summaryMtimeMs < buildStampMtimeMs && !identicalAuthorizedBuild)
|
|
477
473
|
blockers.push('summary_predates_current_build');
|
|
478
474
|
if (!Number.isFinite(summaryMtimeMs) || !Number.isFinite(canonicalProofMtimeMs) || summaryMtimeMs < canonicalProofMtimeMs)
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
// @ts-nocheck
|
|
3
2
|
import fs from 'node:fs/promises';
|
|
4
3
|
import os from 'node:os';
|
|
5
4
|
import path from 'node:path';
|
|
5
|
+
import { performance } from 'node:perf_hooks';
|
|
6
6
|
import { runReleaseGateBatch } from '../core/release/release-gate-batch-runner.js';
|
|
7
7
|
import { assertGate, emitGate, root } from './sks-1-18-gate-lib.js';
|
|
8
8
|
const reportRoot = await fs.mkdtemp(path.join(os.tmpdir(), 'sks-release-full-'));
|
|
9
9
|
const gates = Array.from({ length: 80 }, (_, i) => ({ id: `synthetic:${i + 1}`, command: `${process.execPath} -e \"setTimeout(()=>process.exit(0),1000)\"`, deps: [], resource: ['cpu-light', 'fs-read'], side_effect: 'hermetic', timeout_ms: 15000, cache: { enabled: false, inputs: [] }, isolation: { home: 'temp', codex_home: 'temp', report_dir: 'per-gate' }, preset: ['release'] }));
|
|
10
|
-
const started =
|
|
10
|
+
const started = performance.now();
|
|
11
11
|
const result = await runReleaseGateBatch(root, gates, { concurrency: 40, reportRoot });
|
|
12
|
-
const wallMs =
|
|
12
|
+
const wallMs = Math.max(1, Math.round(performance.now() - started));
|
|
13
13
|
const completedDurations = result.results
|
|
14
14
|
.map((row) => Number(row.duration_ms || 0))
|
|
15
15
|
.filter((duration) => Number.isFinite(duration) && duration > 0);
|
|
@@ -39,4 +39,26 @@ assertGate(result.results.some((row) => row.id === 'batch:pass' && row.ok === tr
|
|
|
39
39
|
const timeoutResult = await batch.runReleaseGateBatch(root, [timeoutGate], { concurrency: 1, reportRoot });
|
|
40
40
|
assertGate(timeoutResult.results.some((row) => row.id === 'batch:timeout' && row.ok === false && row.exit_code === 124 && row.timed_out === true), 'batch runner must report timed-out child process trees explicitly', timeoutResult);
|
|
41
41
|
assertGate(timeoutResult.results.some((row) => row.id === 'batch:timeout' && row.duration_ms >= 1400), 'batch runner must wait for timed-out process tree hard-kill cleanup before resolving', timeoutResult);
|
|
42
|
+
const dateNowDescriptor = Object.getOwnPropertyDescriptor(Date, 'now');
|
|
43
|
+
let regressingWallClock = Date.now();
|
|
44
|
+
Object.defineProperty(Date, 'now', {
|
|
45
|
+
configurable: true,
|
|
46
|
+
value: () => {
|
|
47
|
+
regressingWallClock -= 1000;
|
|
48
|
+
return regressingWallClock;
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
try {
|
|
52
|
+
const clockRollbackGate = {
|
|
53
|
+
...base,
|
|
54
|
+
id: 'batch:clock-rollback',
|
|
55
|
+
command: `${process.execPath} -e "setTimeout(() => process.exit(0), 50)"`
|
|
56
|
+
};
|
|
57
|
+
const clockRollbackResult = await batch.runReleaseGateBatch(root, [clockRollbackGate], { concurrency: 1, reportRoot });
|
|
58
|
+
assertGate(clockRollbackResult.results.some((row) => row.id === 'batch:clock-rollback' && row.ok === true && row.duration_ms > 0), 'batch runner duration evidence must remain positive across wall-clock rollback', clockRollbackResult);
|
|
59
|
+
}
|
|
60
|
+
finally {
|
|
61
|
+
if (dateNowDescriptor)
|
|
62
|
+
Object.defineProperty(Date, 'now', dateNowDescriptor);
|
|
63
|
+
}
|
|
42
64
|
emitGate('release:gate-batch-runner', { batch_size: result.batch_size, failed_child: 'batch:fail' });
|
|
@@ -1,9 +1,4 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
// @ts-nocheck
|
|
3
|
-
// Gate: release:gate-budget
|
|
4
|
-
// Reports the slowest gates and any gate exceeding its time budget, from the gate
|
|
5
|
-
// result cache. Tolerant of missing timing data (informational on a cold cache).
|
|
6
|
-
// Only a gate exceeding the HARD ceiling is a blocker.
|
|
7
2
|
import fs from 'node:fs';
|
|
8
3
|
import path from 'node:path';
|
|
9
4
|
import { assertGate, emitGate, importDist, root } from './sks-1-18-gate-lib.js';
|
|
@@ -30,6 +25,5 @@ const report = {
|
|
|
30
25
|
const reportDir = path.join(root, '.sneakoscope', 'reports');
|
|
31
26
|
fs.mkdirSync(reportDir, { recursive: true });
|
|
32
27
|
fs.writeFileSync(path.join(reportDir, 'release-gate-budget.json'), `${JSON.stringify(report, null, 2)}\n`);
|
|
33
|
-
// Only a gate over the HARD ceiling fails the gate; soft-budget gates are warnings.
|
|
34
28
|
assertGate(overCeiling.length === 0, 'a gate exceeded the hard time ceiling', { overCeiling, hard_ceiling_ms: HARD_CEILING_MS });
|
|
35
29
|
emitGate('release:gate-budget', { slowest: slowest.length, over_budget: overBudget.length, timing_data: records.length > 0 });
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
// @ts-nocheck
|
|
3
2
|
import { assertGate, emitGate, importDist, readJson, root } from './sks-1-18-gate-lib.js';
|
|
4
3
|
const config = readJson('config/perf-budgets.v1.json');
|
|
5
4
|
const budgets = Array.isArray(config.release_latency_slos) ? config.release_latency_slos : [];
|