sneakoscope 7.1.0 → 7.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -1
- package/config/architecture-budgets.v1.json +1 -8
- package/crates/sks-core/Cargo.lock +225 -1
- package/crates/sks-core/Cargo.toml +8 -1
- package/crates/sks-core/src/main.rs +7 -1
- package/crates/sks-core/src/search/files.rs +114 -0
- package/crates/sks-core/src/search/mod.rs +274 -0
- package/crates/sks-core/src/search/text.rs +175 -0
- package/dist/bin/sks-dispatch.js +4 -3
- package/dist/cli/command-manifest-lite.js +177 -6
- package/dist/cli/command-registry.js +42 -8
- package/dist/cli/help.js +30 -0
- package/dist/cli/install-helpers-codex-lb-config.js +9 -6
- package/dist/cli/install-helpers-codex-lb-selftest-chain.js +1 -1
- package/dist/cli/install-helpers-install-support.js +1 -1
- package/dist/cli/install-helpers.js +19 -9
- package/dist/cli/router.js +16 -3
- package/dist/commands/codex-app.js +40 -5
- package/dist/commands/doctor-profile.js +78 -0
- package/dist/commands/doctor.js +29 -69
- package/dist/commands/search.js +4 -0
- package/dist/config/skills-manifest.json +53 -60
- package/dist/core/agent-bridge/agent-manifest.js +22 -26
- package/dist/core/agent-bridge/host-capability-policy.js +109 -8
- package/dist/core/agent-bridge/host-capability-runtime.js +178 -50
- package/dist/core/agent-guidance/directive-registry.js +123 -0
- package/dist/core/agents/agent-effort-policy.js +45 -6
- package/dist/core/agents/agent-worker-pipeline.js +1 -3
- package/dist/core/agents/native-worker-backend-router.js +43 -19
- package/dist/core/auto-review.js +1 -3
- package/dist/core/code-structure.js +282 -19
- package/dist/core/codex/codex-config-guard.js +14 -4
- package/dist/core/codex/codex-config-toml.js +1 -3
- package/dist/core/codex-app/codex-agent-role-sync.js +1 -3
- package/dist/core/codex-app/codex-app-fast-ui-repair.js +14 -1
- package/dist/core/codex-app/codex-app-types.js +2 -3
- package/dist/core/codex-app/codex-desktop-routing-ownership.js +91 -0
- package/dist/core/codex-app/codex-hook-approval-probe.js +1 -3
- package/dist/core/codex-app/codex-hook-lifecycle.js +1 -3
- package/dist/core/codex-app/codex-init-deep.js +22 -10
- package/dist/core/codex-app/codex-model-catalog.js +384 -0
- package/dist/core/codex-app/codex-models-cache.js +160 -0
- package/dist/core/codex-app/desktop-routing-snapshot.js +233 -0
- package/dist/core/codex-app/glm-profile-installer.js +1 -3
- package/dist/core/codex-app/mcp-manager.js +1 -3
- package/dist/core/codex-app/menubar/constants.js +3 -0
- package/dist/core/codex-app/menubar/installer.js +11 -1
- package/dist/core/codex-app/multi-provider-router-support.js +202 -0
- package/dist/core/codex-app/multi-provider-router.js +379 -0
- package/dist/core/codex-app/openrouter-activate.js +189 -26
- package/dist/core/codex-app/openrouter-base-instructions.js +1 -0
- package/dist/core/codex-app/openrouter-model-catalog.js +217 -0
- package/dist/core/codex-app/role-model-catalog-priority.js +61 -0
- package/dist/core/codex-app.js +30 -6
- package/dist/core/codex-compat/codex-hook-semantic-validator.js +1 -3
- package/dist/core/codex-control/codex-app-server-v2-client.js +39 -2
- package/dist/core/codex-lb/codex-lb-env.js +1 -3
- package/dist/core/codex-lb/codex-lb-tool-catalog.js +6 -1
- package/dist/core/codex-native/codex-native-feature-broker.js +2 -6
- package/dist/core/codex-native/codex-native-interop-policy.js +1 -3
- package/dist/core/codex-native/codex-native-reference-cache.js +1 -3
- package/dist/core/codex-native/codex-native-reference-source.js +1 -3
- package/dist/core/codex-native/codex-native-repair-transaction.js +1 -3
- package/dist/core/codex-native/core-skill-manifest.js +3 -2
- package/dist/core/codex-native/native-capability-repair-matrix.js +1 -3
- package/dist/core/codex-plugins/codex-plugin-repair.js +1 -3
- package/dist/core/codex-runtime/codex-desktop-config-policy.js +4 -4
- package/dist/core/commands/agent-bridge-command.js +24 -3
- package/dist/core/commands/image-ux-review-command.js +5 -11
- package/dist/core/commands/menubar-command.js +1 -1
- package/dist/core/commands/naruto-command.js +40 -13
- package/dist/core/commands/pipeline-command.js +5 -2
- package/dist/core/commands/release-command.js +63 -1
- package/dist/core/commands/remote-command.js +18 -0
- package/dist/core/commands/search-command.js +151 -0
- package/dist/core/commands/telegram-command.js +251 -108
- package/dist/core/commands/uninstall-command.js +1 -1
- package/dist/core/config/secret-preservation.js +1 -3
- package/dist/core/context7-client.js +2 -1
- package/dist/core/db-review.js +704 -0
- package/dist/core/db-safety.js +17 -23
- package/dist/core/doctor/browser-use-repair.js +1 -3
- package/dist/core/doctor/codex-startup-config-repair.js +1 -3
- package/dist/core/doctor/computer-use-repair.js +1 -3
- package/dist/core/doctor/context7-mcp-repair.js +1 -3
- package/dist/core/doctor/current-project-guidance.js +1 -3
- package/dist/core/doctor/doctor-codex-startup-repair.js +1 -3
- package/dist/core/doctor/doctor-dirty-planner.js +2 -2
- package/dist/core/doctor/doctor-native-capability-repair.js +1 -3
- package/dist/core/doctor/doctor-transaction.js +1 -3
- package/dist/core/doctor/imagegen-repair.js +1 -3
- package/dist/core/doctor/legacy-global-hook-cleanup.js +1 -3
- package/dist/core/doctor/mcp-transport-collision-repair.js +1 -3
- package/dist/core/doctor/retired-managed-residue-private.js +1 -3
- package/dist/core/doctor/supabase-mcp-repair.js +1 -3
- package/dist/core/engineering-sanity-review.js +186 -0
- package/dist/core/errors/message.js +3 -0
- package/dist/core/evidence/evidence-schema.js +1 -3
- package/dist/core/feature-fixtures.js +1 -0
- package/dist/core/feature-registry.js +1 -3
- package/dist/core/fsx.js +13 -0
- package/dist/core/git-hygiene/shared-memory-publish.js +1 -3
- package/dist/core/git-hygiene/validators.js +1 -3
- package/dist/core/harness-guard.js +21 -3
- package/dist/core/hooks-runtime/hook-context.js +2 -2
- package/dist/core/image-ux-review/imagegen-adapter.js +52 -56
- package/dist/core/image-ux-review/real-callout-extractor.js +6 -1
- package/dist/core/image-ux-review.js +3 -5
- package/dist/core/imagegen/codex-lb-imagegen-target.js +70 -0
- package/dist/core/imagegen/imagegen-capability.js +11 -11
- package/dist/core/imagegen/imagegen-evidence.js +32 -0
- package/dist/core/init/skills.js +9 -11
- package/dist/core/init.js +4 -6
- package/dist/core/json/records.js +9 -0
- package/dist/core/json-schema-validator.js +1 -3
- package/dist/core/lean-engineering-policy.js +54 -0
- package/dist/core/loops/loop-continuation-enforcer.js +1 -3
- package/dist/core/mad-sks/sql-plane/mcp-executor.js +2 -1
- package/dist/core/mad-sks/sql-plane/policy.js +2 -1
- package/dist/core/managed-assets/managed-assets-manifest.js +4 -3
- package/dist/core/mcp-config/codex-cli-adapter.js +1 -3
- package/dist/core/mcp-config/config-reader.js +2 -3
- package/dist/core/mcp-config/guarded-patch.js +1 -1
- package/dist/core/mcp-config/health-check.js +2 -1
- package/dist/core/mcp-config/mutation.js +1 -1
- package/dist/core/mcp-config/restore.js +1 -1
- package/dist/core/mcp-config/secret-policy.js +1 -3
- package/dist/core/migration/migration-transaction-journal.js +3 -3
- package/dist/core/naruto/naruto-concurrency-governor.js +2 -2
- package/dist/core/perf/import-graph-budget.js +91 -1
- package/dist/core/pipeline/pipeline-plan-writer.js +1 -1
- package/dist/core/pipeline-internals/runtime-core.js +121 -23
- package/dist/core/pipeline-internals/runtime-gates.js +193 -4
- package/dist/core/pipeline.js +1 -1
- package/dist/core/ppt-review/slide-imagegen-review.js +7 -7
- package/dist/core/ppt.js +3 -3
- package/dist/core/product-design-app-server.js +2 -1
- package/dist/core/proof/fake-real-proof-policy.js +1 -3
- package/dist/core/proof/root-cause-policy.js +1 -3
- package/dist/core/proof/validation.js +1 -3
- package/dist/core/provider/model-router.js +4 -0
- package/dist/core/provider/provider-context.js +1 -3
- package/dist/core/providers/openrouter/openrouter-account.js +1 -3
- package/dist/core/quality/helper-dedup.js +0 -0
- package/dist/core/recallpulse.js +1 -1
- package/dist/core/release/file-ownership.js +26 -17
- package/dist/core/release/macos-menubar-proof.js +59 -1
- package/dist/core/release/main-push-guard.js +288 -24
- package/dist/core/release/main-push-receipt.js +10 -45
- package/dist/core/release/package-size-budget.js +1 -1
- package/dist/core/release/release-gate-contract.js +2 -0
- package/dist/core/release/release-pack-receipt.js +1 -1
- package/dist/core/release/release-proof-io.js +33 -0
- package/dist/core/release/release-upgrade-baseline.js +9 -0
- package/dist/core/release/runtime-script-pack-closure.js +153 -4
- package/dist/core/release/stage-publish.js +194 -0
- package/dist/core/remote/index.js +2 -0
- package/dist/core/remote/local-worker-client.js +35 -0
- package/dist/core/remote/machine-registry.js +18 -13
- package/dist/core/remote/owner-proof.js +1 -3
- package/dist/core/remote/protocol.js +1 -3
- package/dist/core/remote/readiness.js +1 -3
- package/dist/core/remote/session-binding.js +153 -0
- package/dist/core/remote/session-index.js +1 -3
- package/dist/core/remote/types.js +1 -0
- package/dist/core/remote/worker.js +228 -14
- package/dist/core/responses-stream.js +151 -0
- package/dist/core/routes/dollar-manifest-lite.js +1 -1
- package/dist/core/routes.js +8 -8
- package/dist/core/rust-accelerator.js +12 -2
- package/dist/core/safety/ssot-guard.js +1 -3
- package/dist/core/search/benchmark.js +358 -0
- package/dist/core/search/cache.js +65 -0
- package/dist/core/search/context.js +144 -0
- package/dist/core/search/doctor.js +74 -0
- package/dist/core/search/files.js +192 -0
- package/dist/core/search/index.js +5 -0
- package/dist/core/search/ipc.js +64 -0
- package/dist/core/search/provider.js +142 -0
- package/dist/core/search/rust-bridge.js +24 -0
- package/dist/core/search/structure.js +230 -0
- package/dist/core/search/symbol.js +272 -0
- package/dist/core/search/text.js +146 -0
- package/dist/core/search/types.js +22 -0
- package/dist/core/search/typescript-ls.js +215 -0
- package/dist/core/search-visibility/discovery.js +1 -3
- package/dist/core/skill-forge.js +1 -1
- package/dist/core/stop-gate/gate-evaluator.js +3 -3
- package/dist/core/stop-gate/stop-gate-check.js +1 -3
- package/dist/core/structured-output-adapter.js +62 -2
- package/dist/core/subagents/agent-catalog.js +56 -43
- package/dist/core/subagents/model-policy.js +17 -7
- package/dist/core/subagents/naruto-proof-projection.js +2 -6
- package/dist/core/subagents/official-subagent-config.js +1 -3
- package/dist/core/subagents/official-subagent-preparation.js +73 -10
- package/dist/core/subagents/official-subagent-prompt.js +85 -18
- package/dist/core/subagents/official-subagent-runner.js +10 -5
- package/dist/core/subagents/role-model-preferences.js +202 -44
- package/dist/core/subagents/subagent-evidence.js +1 -3
- package/dist/core/subagents/thread-budget.js +1 -1
- package/dist/core/subagents/triwiki-attention.js +1 -5
- package/dist/core/telegram/config.js +29 -12
- package/dist/core/telegram/hub.js +8 -2
- package/dist/core/telegram/index.js +2 -0
- package/dist/core/telegram/messages.js +8 -2
- package/dist/core/telegram/runtime-projection.js +8 -5
- package/dist/core/telegram/runtime.js +19 -9
- package/dist/core/telegram/service.js +181 -0
- package/dist/core/telegram/setup.js +220 -0
- package/dist/core/text/regex.js +3 -0
- package/dist/core/text/strings.js +6 -0
- package/dist/core/triwiki-wrongness/image-wrongness.js +1 -3
- package/dist/core/triwiki-wrongness/wrongness-ledger.js +1 -3
- package/dist/core/triwiki-wrongness/wrongness-proof-linker.js +1 -3
- package/dist/core/triwiki-wrongness/wrongness-retrieval.js +1 -3
- package/dist/core/triwiki-wrongness/wrongness-schema.js +1 -3
- package/dist/core/triwiki-wrongness/wrongness-trust-policy.js +1 -3
- package/dist/core/trust-kernel/completion-contract.js +1 -3
- package/dist/core/trust-kernel/route-contract.js +1 -3
- package/dist/core/update/update-migration-state.js +1 -3
- package/dist/core/update-check.js +20 -6
- package/dist/core/verification/diff-quality.js +3 -4
- package/dist/core/verification/impact-scan.js +36 -89
- package/dist/core/verification/mistake-rule-compiler.js +17 -4
- package/dist/core/version-manager.js +3 -20
- package/dist/core/version.js +1 -1
- package/dist/native/sks-menubar/Sources/ControlCenterWindowController.swift +23 -3
- package/dist/native/sks-menubar/Sources/ControlKit.swift +102 -0
- package/dist/native/sks-menubar/Sources/DiagnosticsViewController.swift +23 -11
- package/dist/native/sks-menubar/Sources/MCPServersViewController.swift +7 -3
- package/dist/native/sks-menubar/Sources/OperationCoordinator.swift +17 -1
- package/dist/native/sks-menubar/Sources/OverviewViewController.swift +22 -15
- package/dist/native/sks-menubar/Sources/ProcessClient.swift +15 -5
- package/dist/native/sks-menubar/Sources/ProvidersMultiProvider.swift +324 -0
- package/dist/native/sks-menubar/Sources/ProvidersOpenRouter.swift +154 -214
- package/dist/native/sks-menubar/Sources/ProvidersRoleModels.swift +252 -0
- package/dist/native/sks-menubar/Sources/ProvidersViewController.swift +77 -71
- package/dist/native/sks-menubar/Sources/RemoteTelegramViewController.swift +167 -51
- package/dist/native/sks-menubar/Sources/SettingsViewController.swift +14 -5
- package/dist/native/sks-menubar/Sources/SidebarItem.swift +15 -1
- package/dist/native/sks-menubar/Sources/StatusItemController.swift +2 -2
- package/dist/native/sks-menubar/Sources/UpdatesViewController.swift +16 -12
- package/dist/scripts/agent-guidance-dedup-check.js +23 -0
- package/dist/scripts/agent-message-bus-reader-check.js +1 -1
- package/dist/scripts/all-feature-deep-completion-check.js +1 -1
- package/dist/scripts/appshots-thread-attachment-discovery-check.js +1 -1
- package/dist/scripts/architecture-guard-check.js +1 -2
- package/dist/scripts/certificate-sla-check.js +1 -1
- package/dist/scripts/cli-output-consistency-check.js +1 -1
- package/dist/scripts/codex-0-134-runner-truth-check.js +1 -1
- package/dist/scripts/codex-0138-capability-artifact-check.js +1 -1
- package/dist/scripts/codex-0138-capability-check.js +1 -1
- package/dist/scripts/codex-0138-doctor-check.js +1 -1
- package/dist/scripts/codex-0138-feature-probes-check.js +1 -1
- package/dist/scripts/codex-0144-app-server-v2-check.js +1 -1
- package/dist/scripts/codex-0144-binary-identity-check.js +1 -1
- package/dist/scripts/codex-0144-capability-check.js +1 -1
- package/dist/scripts/codex-0144-core-real-probes-check.js +1 -1
- package/dist/scripts/codex-0144-manifest-check.js +1 -1
- package/dist/scripts/codex-0144-policy-check.js +1 -1
- package/dist/scripts/codex-0144-thread-store-check.js +1 -1
- package/dist/scripts/codex-agent-role-rich-content-check.js +2 -2
- package/dist/scripts/codex-agent-role-sync-check.js +2 -2
- package/dist/scripts/codex-agent-type-routing-check.js +2 -2
- package/dist/scripts/codex-app-execution-profile-check.js +2 -2
- package/dist/scripts/codex-app-handoff-check.js +1 -1
- package/dist/scripts/codex-app-handoff-launch-check.js +1 -1
- package/dist/scripts/codex-control-tool-output-continuity-audit-check.js +1 -1
- package/dist/scripts/codex-lb-fast-ui-preservation-check.js +1 -3
- package/dist/scripts/codex-native-feature-broker-blackbox.js +2 -2
- package/dist/scripts/codex-native-feature-broker-check.js +2 -2
- package/dist/scripts/{sks-3-1-6-directive-check-lib.js → codex-native-gate-lib.js} +5 -5
- package/dist/scripts/codex-native-harness-compat-check.js +2 -2
- package/dist/scripts/codex-native-hook-lifecycle-proof-check.js +2 -2
- package/dist/scripts/codex-plugin-app-template-policy-check.js +1 -1
- package/dist/scripts/codex-sdk-backend-router-check.js +1 -1
- package/dist/scripts/codex-sdk-capability-check.js +1 -1
- package/dist/scripts/context7-evidence-dedupe-check.js +1 -1
- package/dist/scripts/core-skill-card-schema-check.js +1 -1
- package/dist/scripts/core-skill-deployment-snapshot-check.js +1 -1
- package/dist/scripts/core-skill-heldout-validation-check.js +1 -1
- package/dist/scripts/core-skill-no-inference-optimizer-check.js +1 -1
- package/dist/scripts/core-skill-patch-check.js +1 -1
- package/dist/scripts/core-skill-route-runtime-integration-check.js +1 -1
- package/dist/scripts/current-command-surface-check.js +1 -1
- package/dist/scripts/current-surface-update-e2e-check.js +4 -1
- package/dist/scripts/current-upgrade-matrix-check.js +1 -1
- package/dist/scripts/dfix-fixture-check.js +1 -1
- package/dist/scripts/dfix-patch-handoff-check.js +1 -1
- package/dist/scripts/dfix-verification-check.js +1 -1
- package/dist/scripts/dfix-verification-recommendation-check.js +1 -1
- package/dist/scripts/docs-truthfulness-check.js +16 -3
- package/dist/scripts/doctor-codex-app-harness-check.js +2 -2
- package/dist/scripts/evidence-flagship-coverage-check.js +1 -1
- package/dist/scripts/{sks-1-18-gate-lib.js → gate-lib.js} +1 -1
- package/dist/scripts/gate-policy-audit-check.js +4 -1
- package/dist/scripts/git-worktree-checkpoint-check.js +1 -1
- package/dist/scripts/git-worktree-cross-rebase-check.js +1 -1
- package/dist/scripts/git-worktree-diff-envelope-check.js +1 -1
- package/dist/scripts/git-worktree-dirty-lock-check.js +1 -1
- package/dist/scripts/git-worktree-dirty-main-detection-check.js +1 -1
- package/dist/scripts/git-worktree-integration-primary-check.js +1 -1
- package/dist/scripts/git-worktree-manifest-append-check.js +1 -1
- package/dist/scripts/git-worktree-untracked-diff-check.js +1 -1
- package/dist/scripts/harness-benchmark-check.js +1 -1
- package/dist/scripts/helper-dedup-check.js +62 -0
- package/dist/scripts/hook-latency-budget-check.js +1 -1
- package/dist/scripts/image-artifact-path-contract-check.js +1 -1
- package/dist/scripts/imagegen-real-smoke-check.js +2 -5
- package/dist/scripts/installed-package-smoke-check.js +1 -1
- package/dist/scripts/legacy-gate-inventory-check.js +1 -1
- package/dist/scripts/legacy-gate-purge-check.js +1 -1
- package/dist/scripts/legacy-strong-inventory-check.js +1 -1
- package/dist/scripts/lib/codex-sdk-gate-lib.js +1 -1
- package/dist/scripts/mad-sks-launch-sql-plane-boundary-check.js +1 -1
- package/dist/scripts/mad-sks-sql-plane-capability-check.js +1 -1
- package/dist/scripts/mad-sks-sql-plane-lifecycle-hook-decision-check.js +1 -1
- package/dist/scripts/mad-sks-sql-plane-result-lifecycle-check.js +1 -1
- package/dist/scripts/managed-config-merge-check.js +1 -1
- package/dist/scripts/mcp-plugin-inventory-check.js +1 -1
- package/dist/scripts/model-call-concurrency-check.js +1 -1
- package/dist/scripts/mutation-callsite-coverage-check.js +1 -1
- package/dist/scripts/naruto-ssot-gate-aliases-check.js +1 -1
- package/dist/scripts/naruto-ssot-pipeline-default-check.js +1 -1
- package/dist/scripts/naruto-ssot-route-normalization-check.js +1 -1
- package/dist/scripts/naruto-ssot-routing-check.js +1 -1
- package/dist/scripts/naruto-worktree-coding-blackbox.js +1 -1
- package/dist/scripts/native-capability-repair-matrix-check.js +1 -1
- package/dist/scripts/native-image-generation-repair-check.js +1 -1
- package/dist/scripts/official-subagent-workflow-check.js +3 -3
- package/dist/scripts/package-published-contract-check.js +37 -4
- package/dist/scripts/packlist-performance-check.js +17 -1
- package/dist/scripts/pipeline-codex-native-doctor-mad-routing-real-blackbox.js +1 -3
- package/dist/scripts/ppt-real-export-adapter-check.js +1 -1
- package/dist/scripts/ppt-real-imagegen-wiring-check.js +1 -1
- package/dist/scripts/ppt-reexport-rereview-check.js +1 -1
- package/dist/scripts/prepublish-fast-check.js +1 -1
- package/dist/scripts/probe-memoization-check.js +2 -2
- package/dist/scripts/prompt-placeholder-guard-check.js +1 -1
- package/dist/scripts/qa-loop-app-handoff-capability-check.js +1 -1
- package/dist/scripts/qa-loop-app-handoff-check.js +1 -1
- package/dist/scripts/qa-loop-app-handoff-cli-check.js +1 -1
- package/dist/scripts/qa-loop-app-handoff-confirmation-check.js +1 -1
- package/dist/scripts/qa-loop-app-handoff-gate-lifecycle-check.js +1 -1
- package/dist/scripts/qa-loop-app-handoff-launch-check.js +1 -1
- package/dist/scripts/qa-loop-app-handoff-status-lifecycle-check.js +1 -1
- package/dist/scripts/qa-loop-budget-policy-check.js +1 -1
- package/dist/scripts/qa-loop-effort-escalation-check.js +1 -1
- package/dist/scripts/qa-loop-execution-profile-routing-check.js +2 -2
- package/dist/scripts/qa-loop-image-path-exposure-check.js +1 -1
- package/dist/scripts/qa-loop-image-path-prompt-injection-check.js +1 -1
- package/dist/scripts/{sks-1-12-real-execution-check-lib.js → real-execution-check-lib.js} +1 -1
- package/dist/scripts/release-affected-selector-check.js +1 -1
- package/dist/scripts/release-aggressive-resource-governor-check.js +1 -1
- package/dist/scripts/release-cache-glob-hashing-check.js +1 -1
- package/dist/scripts/release-cache-input-classifier-check.js +1 -1
- package/dist/scripts/release-cache-neutralization-report-check.js +1 -1
- package/dist/scripts/release-cache-version-neutral-fixture-check.js +1 -1
- package/dist/scripts/release-dynamic-presets-check.js +2 -2
- package/dist/scripts/release-full-parallelism-blackbox.js +1 -1
- package/dist/scripts/release-gate-batch-runner-check.js +1 -1
- package/dist/scripts/release-gate-budget-check.js +1 -1
- package/dist/scripts/release-gate-dag-runner-check.js +1 -1
- package/dist/scripts/release-latency-slo-check.js +1 -1
- package/dist/scripts/release-metadata-check.js +256 -2
- package/dist/scripts/release-parallel-speed-budget-check.js +1 -1
- package/dist/scripts/release-proof-truth-check.js +1 -1
- package/dist/scripts/release-provenance-check.js +4 -2
- package/dist/scripts/release-runtime-truth-matrix-check.js +1 -1
- package/dist/scripts/research-blueprint-densifier-check.js +1 -1
- package/dist/scripts/research-claim-builder-check.js +1 -1
- package/dist/scripts/research-complete-package-fixture-check.js +1 -1
- package/dist/scripts/research-execution-profile-routing-check.js +2 -2
- package/dist/scripts/research-final-reviewer-blackbox.js +1 -1
- package/dist/scripts/{sks-3-1-4-directive-check-lib.js → runtime-domain-gate-lib.js} +2 -2
- package/dist/scripts/runtime-proof-summary-check.js +1 -1
- package/dist/scripts/runtime-script-pack-closure-check.js +7 -1
- package/dist/scripts/scheduler-batch-dispatch-check.js +1 -1
- package/dist/scripts/scheduler-parallel-proof-consistency-check.js +1 -1
- package/dist/scripts/scheduler-utilization-integral-check.js +1 -1
- package/dist/scripts/search-visibility-gate-lib.js +1 -1
- package/dist/scripts/secret-preservation-check.js +1 -1
- package/dist/scripts/seo-geo-geo-disambiguation-check.js +1 -1
- package/dist/scripts/seo-geo-skill-rich-content-check.js +1 -1
- package/dist/scripts/side-effect-runtime-report-check.js +1 -1
- package/dist/scripts/{sks-3-1-8-check-lib.js → skill-fixture-check-lib.js} +1 -1
- package/dist/scripts/skill-name-canonicalizer-check.js +1 -1
- package/dist/scripts/skills-manifest-continuity-check.js +1 -1
- package/dist/scripts/sks-uninstall-regression-check.js +1 -1
- package/dist/scripts/sksd-daemon-check.js +1 -1
- package/dist/scripts/super-search-provider-interface-check.js +1 -1
- package/dist/scripts/triwiki-cache-key-check.js +1 -1
- package/dist/scripts/triwiki-proof-bank-blackbox.js +2 -2
- package/dist/scripts/triwiki-proof-bank-check.js +1 -1
- package/dist/scripts/triwiki-proof-card-check.js +1 -1
- package/dist/scripts/type-surface-codex-app-check.js +2 -2
- package/dist/scripts/{sks-3-1-5-directive-check-lib.js → typed-routing-gate-lib.js} +2 -2
- package/dist/scripts/ultra-router-auto-router-check.js +1 -1
- package/dist/scripts/ux-review-extract-wires-real-extractor-check.js +1 -1
- package/dist/scripts/ux-review-patch-diff-recheck-check.js +1 -1
- package/dist/scripts/ux-review-run-wires-imagegen-check.js +9 -2
- package/package.json +5 -7
- package/release-gates.v2.json +66 -11
- package/runtime-required-scripts.json +138 -14
- package/config/bench-baseline.json +0 -7
- package/dist/core/codex-app/sks-menubar.js +0 -1
- package/dist/core/release/release-closure-contract.js +0 -30
- package/dist/core/release/release-closure-helpers.js +0 -293
- package/dist/core/release/release-closure-validation.js +0 -284
- package/dist/core/release/release-closure.js +0 -163
- package/dist/scripts/build-dist.js +0 -124
- package/dist/scripts/build-once-runner-check.js +0 -6
- package/dist/scripts/canonical-test-runner.js +0 -234
- package/dist/scripts/changelog-check.js +0 -45
- package/dist/scripts/check-architecture.js +0 -295
- package/dist/scripts/check-cli-entrypoint.js +0 -41
- package/dist/scripts/check-command-module-budget.js +0 -77
- package/dist/scripts/check-feature-quality.js +0 -51
- package/dist/scripts/check-legacy-free.js +0 -64
- package/dist/scripts/check-pipeline-budget.js +0 -49
- package/dist/scripts/check-pipeline-runtime.js +0 -16
- package/dist/scripts/check-publish-tag.js +0 -56
- package/dist/scripts/check-route-modularity.js +0 -72
- package/dist/scripts/codex-0140-capability-check.js +0 -14
- package/dist/scripts/codex-0140-feature-probes-check.js +0 -23
- package/dist/scripts/codex-permission-profiles-check.js +0 -34
- package/dist/scripts/codex-project-config-policy-splitter-check.js +0 -49
- package/dist/scripts/competitor-scorecard-check.js +0 -24
- package/dist/scripts/core-skill-no-drift-check.js +0 -23
- package/dist/scripts/db-route-materialization-check.js +0 -32
- package/dist/scripts/doctor-context7-mcp-repair-blackbox.js +0 -15
- package/dist/scripts/doctor-fastpath-check.js +0 -25
- package/dist/scripts/doctor-fix-production-blackbox.js +0 -35
- package/dist/scripts/doctor-idempotence-check.js +0 -6
- package/dist/scripts/doctor-ops-semantics-check.js +0 -83
- package/dist/scripts/doctor-startup-config-repair-blackbox.js +0 -18
- package/dist/scripts/doctor-supabase-mcp-repair-blackbox.js +0 -13
- package/dist/scripts/ensure-bin-executable.js +0 -16
- package/dist/scripts/fsx-hotpath-check.js +0 -9
- package/dist/scripts/high-risk-contracts-check.js +0 -183
- package/dist/scripts/hook-latency-quantum-check.js +0 -120
- package/dist/scripts/import-graph-budget-check.js +0 -9
- package/dist/scripts/mcp-tool-naming-parity-check.js +0 -14
- package/dist/scripts/naruto-codex-e2e-check.js +0 -105
- package/dist/scripts/naruto-write-e2e-check.js +0 -31
- package/dist/scripts/native-capability-postcheck-check.js +0 -16
- package/dist/scripts/ops-diagnostics-bundle-check.js +0 -11
- package/dist/scripts/parallel-production-smoke-check.js +0 -20
- package/dist/scripts/perf-budget-check.js +0 -12
- package/dist/scripts/project-skill-dedupe-blackbox.js +0 -62
- package/dist/scripts/release-dag-full-coverage-check.js +0 -98
- package/dist/scripts/release-dist-freshness-check.js +0 -6
- package/dist/scripts/release-file-ownership-check.js +0 -35
- package/dist/scripts/release-gate-script-parity-check.js +0 -148
- package/dist/scripts/release-macos-menubar-proof.js +0 -167
- package/dist/scripts/release-main-push-guard.js +0 -37
- package/dist/scripts/release-main-push-receipt.js +0 -43
- package/dist/scripts/release-metadata-1-19-check.js +0 -257
- package/dist/scripts/release-version-truth-check.js +0 -138
- package/dist/scripts/retention-apply-smoke-check.js +0 -19
- package/dist/scripts/retention-budget-check.js +0 -6
- package/dist/scripts/retention-dry-run-check.js +0 -8
- package/dist/scripts/rollback-recovery-smoke-check.js +0 -70
- package/dist/scripts/route-intent-regression-check.js +0 -42
- package/dist/scripts/runtime-current-terminal-check.js +0 -108
- package/dist/scripts/runtime-dist-parity-check.js +0 -76
- package/dist/scripts/runtime-no-src-mjs-check.js +0 -30
- package/dist/scripts/runtime-ts-rust-boundary-check.js +0 -58
- package/dist/scripts/runtime-ts-source-of-truth-check.js +0 -53
- package/dist/scripts/secret-preservation-guard-check.js +0 -36
- package/dist/scripts/seo-marketing-truthfulness-check.js +0 -98
- package/dist/scripts/seo-metadata-sync-check.js +0 -60
- package/dist/scripts/sizecheck.js +0 -148
- package/dist/scripts/sks-menubar-install-check.js +0 -333
- package/dist/scripts/supabase-secret-preservation-blackbox.js +0 -28
- package/dist/scripts/super-search-live-smoke-check.js +0 -115
- package/dist/scripts/super-search-local-http-smoke-check.js +0 -16
- package/dist/scripts/super-search-offline-contract-check.js +0 -43
- package/dist/scripts/update-fastpath-check.js +0 -28
- package/dist/scripts/update-preserves-supabase-keys-blackbox.js +0 -26
- package/dist/scripts/upgrade-migration-matrix-check.js +0 -351
- package/dist/scripts/write-build-manifest.js +0 -70
- package/dist/scripts/zellij-capability-check.js +0 -13
- package/dist/scripts/zellij-developer-controls-check.js +0 -16
- package/dist/scripts/zellij-doctor-readiness-check.js +0 -49
- package/dist/scripts/zellij-dynamic-pane-lifecycle-check.js +0 -19
- package/dist/scripts/zellij-fake-adapter-check.js +0 -31
- package/dist/scripts/zellij-first-slot-down-stack-check.js +0 -20
- package/dist/scripts/zellij-first-slot-down-stack-real-check.js +0 -348
- package/dist/scripts/zellij-homebrew-policy-check.js +0 -3
- package/dist/scripts/zellij-initial-main-only-blackbox.js +0 -21
- package/dist/scripts/zellij-lane-renderer-check.js +0 -78
- package/dist/scripts/zellij-launch-command-truth-check.js +0 -62
- package/dist/scripts/zellij-layout-valid-check.js +0 -120
- package/dist/scripts/zellij-pane-creation-lock-metrics-check.js +0 -10
- package/dist/scripts/zellij-pane-lock-concurrency-blackbox.js +0 -78
- package/dist/scripts/zellij-pane-lock-does-not-block-worker-check.js +0 -12
- package/dist/scripts/zellij-pane-lock-open-worker-integration-blackbox.js +0 -134
- package/dist/scripts/zellij-qa-app-handoff-status-check.js +0 -7
- package/dist/scripts/zellij-right-column-geometry-proof.js +0 -158
- package/dist/scripts/zellij-right-column-headless-overflow-check.js +0 -20
- package/dist/scripts/zellij-right-column-manager-check.js +0 -24
- package/dist/scripts/zellij-self-heal-check.js +0 -3
- package/dist/scripts/zellij-self-heal-dry-run-check.js +0 -3
- package/dist/scripts/zellij-self-heal-status-contract-check.js +0 -3
- package/dist/scripts/zellij-self-heal-typed-blackbox.js +0 -3
- package/dist/scripts/zellij-slot-column-anchor-check.js +0 -65
- package/dist/scripts/zellij-slot-column-anchor-telemetry-check.js +0 -8
- package/dist/scripts/zellij-slot-only-ui-check.js +0 -29
- package/dist/scripts/zellij-slot-pane-renderer-check.js +0 -149
- package/dist/scripts/zellij-slot-pane-stale-detection-check.js +0 -65
- package/dist/scripts/zellij-slot-pane-telemetry-renderer-check.js +0 -11
- package/dist/scripts/zellij-slot-renderer-proof-semantics-check.js +0 -58
- package/dist/scripts/zellij-slot-telemetry-check.js +0 -38
- package/dist/scripts/zellij-slot-telemetry-incremental-check.js +0 -46
- package/dist/scripts/zellij-slot-telemetry-live-flush-check.js +0 -55
- package/dist/scripts/zellij-slot-telemetry-performance-check.js +0 -32
- package/dist/scripts/zellij-slot-telemetry-real-blackbox.js +0 -19
- package/dist/scripts/zellij-slot-telemetry-renderer-check.js +0 -11
- package/dist/scripts/zellij-slot-telemetry-runtime-check.js +0 -23
- package/dist/scripts/zellij-spawn-on-demand-layout-check.js +0 -45
- package/dist/scripts/zellij-stacked-capability-routing-check.js +0 -9
- package/dist/scripts/zellij-stacked-fallback-integration-blackbox.js +0 -78
- package/dist/scripts/zellij-stacked-version-matrix-check.js +0 -29
- package/dist/scripts/zellij-stacked-version-parser-check.js +0 -19
- package/dist/scripts/zellij-ui-design-check.js +0 -92
- package/dist/scripts/zellij-update-missing-self-heal-check.js +0 -3
- package/dist/scripts/zellij-update-prompt-matrix-check.js +0 -16
- package/dist/scripts/zellij-update-prompt-mode-check.js +0 -18
- package/dist/scripts/zellij-update-prompt-safety-check.js +0 -8
- package/dist/scripts/zellij-worker-pane-manager-check.js +0 -108
- package/dist/scripts/zellij-worker-pane-manager-single-owner-check.js +0 -47
- package/dist/scripts/zellij-worker-pane-real-ui-blackbox.js +0 -199
- /package/dist/scripts/{sks-1-11-gate-lib.js → sks-cli-gate-lib.js} +0 -0
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import fs from 'node:fs/promises';
|
|
3
3
|
import os from 'node:os';
|
|
4
4
|
import path from 'node:path';
|
|
5
|
-
import { assertGate, emitGate, importDist, readJson, readText } from './
|
|
5
|
+
import { assertGate, emitGate, importDist, readJson, readText } from './gate-lib.js';
|
|
6
6
|
const pkg = readJson('package.json');
|
|
7
7
|
const manifest = readJson('release-gates.v2.json');
|
|
8
8
|
const runner = readText('src/core/release/release-gate-dag.ts');
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { assertGate, emitGate, importDist, readJson, root } from './
|
|
2
|
+
import { assertGate, emitGate, importDist, readJson, root } from './gate-lib.js';
|
|
3
3
|
const config = readJson('config/perf-budgets.v1.json');
|
|
4
4
|
const budgets = Array.isArray(config.release_latency_slos) ? config.release_latency_slos : [];
|
|
5
5
|
assertGate(config.schema === 'sks.perf-budgets.v1' && budgets.length === 6, 'release_latency_slo_config_invalid', {
|
|
@@ -1,3 +1,257 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
import fs from 'node:fs';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
import { assertGate, emitGate, root } from './sks-cli-gate-lib.js';
|
|
5
|
+
const pkg = readJson('package.json');
|
|
6
|
+
const lock = readJson('package-lock.json');
|
|
7
|
+
const releaseManifest = readJson('release-gates.v2.json');
|
|
8
|
+
const harnessManifest = readJson('infra-harness-gates.json');
|
|
9
|
+
const RELEASE_VERSION = String(pkg.version || '');
|
|
10
|
+
const distManifest = readJsonIfExists('dist/build-manifest.json');
|
|
11
|
+
const releaseGates = Array.isArray(releaseManifest?.gates)
|
|
12
|
+
? releaseManifest.gates.filter((gate) => Array.isArray(gate.preset) && gate.preset.includes('release'))
|
|
13
|
+
: [];
|
|
14
|
+
const harnessGates = Array.isArray(harnessManifest?.gates)
|
|
15
|
+
? harnessManifest.gates.filter((gate) => Array.isArray(gate.preset) && gate.preset.includes('harness'))
|
|
16
|
+
: [];
|
|
17
|
+
const releaseGateIds = new Set(releaseGates.map((gate) => gate.id));
|
|
18
|
+
const harnessGateIds = new Set(harnessGates.map((gate) => gate.id));
|
|
19
|
+
const allManifestGates = [...releaseGates, ...harnessGates];
|
|
20
|
+
const requiredDocs = [
|
|
21
|
+
'README.md',
|
|
22
|
+
'CHANGELOG.md',
|
|
23
|
+
'docs/release-readiness.md',
|
|
24
|
+
'docs/release-proof-truth.md',
|
|
25
|
+
'docs/naruto.md',
|
|
26
|
+
'docs/zellij-ui.md',
|
|
27
|
+
'docs/AGENT-BRIDGE.md',
|
|
28
|
+
'docs/runtime-truth-matrix.md',
|
|
29
|
+
'docs/feature-fixtures.md',
|
|
30
|
+
'docs/orchestration-layers.md'
|
|
31
|
+
];
|
|
32
|
+
const versionedDocs = new Set([
|
|
33
|
+
'README.md',
|
|
34
|
+
'CHANGELOG.md',
|
|
35
|
+
'docs/release-readiness.md',
|
|
36
|
+
'docs/release-proof-truth.md'
|
|
37
|
+
]);
|
|
38
|
+
const requiredPackageScripts = [
|
|
39
|
+
'build',
|
|
40
|
+
'build:incremental',
|
|
41
|
+
'release:ensure-build',
|
|
42
|
+
'typecheck',
|
|
43
|
+
'release:check',
|
|
44
|
+
'release:metadata',
|
|
45
|
+
'release:check:affected',
|
|
46
|
+
'release:check:fast',
|
|
47
|
+
'release:check:confidence',
|
|
48
|
+
'release:check:full',
|
|
49
|
+
'prepublishOnly',
|
|
50
|
+
'release:file-ownership',
|
|
51
|
+
'release:macos-menubar-proof',
|
|
52
|
+
'release:main-push-guard',
|
|
53
|
+
'release:main-push-receipt',
|
|
54
|
+
'release:pack-receipt',
|
|
55
|
+
'runtime:installed-smoke',
|
|
56
|
+
'gates:run',
|
|
57
|
+
'policy:gate-audit',
|
|
58
|
+
'naruto:e2e-hermetic',
|
|
59
|
+
'naruto:e2e-hermetic-write'
|
|
60
|
+
];
|
|
61
|
+
const requiredReleaseGates = [
|
|
62
|
+
'commands:current-surface-only',
|
|
63
|
+
'naruto:ssot-routing',
|
|
64
|
+
'naruto:ssot-route-normalization',
|
|
65
|
+
'naruto:ssot-gate-aliases',
|
|
66
|
+
'naruto:ssot-pipeline-default',
|
|
67
|
+
'naruto:canonical-stop-gate',
|
|
68
|
+
'codex:app-handoff-comprehensive',
|
|
69
|
+
'qa-loop:comprehensive-verification',
|
|
70
|
+
'loop-integration-finalizer-check',
|
|
71
|
+
'codex-control:event-stream-ledger',
|
|
72
|
+
'runtime:proof-summary',
|
|
73
|
+
'runtime:installed-smoke',
|
|
74
|
+
'release:metadata-current',
|
|
75
|
+
'docs:truthfulness',
|
|
76
|
+
'publish:packlist-performance',
|
|
77
|
+
'publish:runtime-script-closure',
|
|
78
|
+
'package:published-contract',
|
|
79
|
+
'release:dag-runner',
|
|
80
|
+
'release:gate-budget',
|
|
81
|
+
'release:gate-selection-comprehensive',
|
|
82
|
+
'policy:gate-audit',
|
|
83
|
+
'typecheck'
|
|
84
|
+
];
|
|
85
|
+
const requiredHarnessGates = [
|
|
86
|
+
'zellij:layout-valid',
|
|
87
|
+
'zellij:compact-slot-renderer',
|
|
88
|
+
'zellij:slot-telemetry',
|
|
89
|
+
'zellij:slot-pane-telemetry-renderer',
|
|
90
|
+
'zellij:first-slot-down-stack',
|
|
91
|
+
'zellij:right-column-geometry-proof'
|
|
92
|
+
];
|
|
93
|
+
assertGate(/^\d+\.\d+\.\d+$/.test(RELEASE_VERSION), 'package.json version must be a stable semver', { version: pkg.version });
|
|
94
|
+
assertGate(lock.version === RELEASE_VERSION, `package-lock version must be ${RELEASE_VERSION}`, { version: lock.version });
|
|
95
|
+
assertGate(lock.packages?.['']?.version === RELEASE_VERSION, `package-lock root version must be ${RELEASE_VERSION}`, { version: lock.packages?.['']?.version });
|
|
96
|
+
assertVersionSurface('src/core/version.ts', `PACKAGE_VERSION = '${RELEASE_VERSION}'`);
|
|
97
|
+
assertVersionSurface('src/core/fsx.ts', "PACKAGE_VERSION } from './version.js'");
|
|
98
|
+
assertVersionSurface('src/bin/sks.ts', "PACKAGE_VERSION } from '../core/version.js'");
|
|
99
|
+
assertVersionSurface('crates/sks-core/Cargo.toml', `version = "${RELEASE_VERSION}"`);
|
|
100
|
+
assertVersionSurface('crates/sks-core/Cargo.lock', `version = "${RELEASE_VERSION}"`);
|
|
101
|
+
assertVersionSurface('crates/sks-core/src/main.rs', 'sks-rs {}", env!("CARGO_PKG_VERSION")');
|
|
102
|
+
assertGate(distManifest?.version === RELEASE_VERSION, `dist/build-manifest version must be ${RELEASE_VERSION}`, { version: distManifest?.version || null });
|
|
103
|
+
assertGate(distManifest?.package_version === RELEASE_VERSION, `dist/build-manifest package_version must be ${RELEASE_VERSION}`, { package_version: distManifest?.package_version || null });
|
|
104
|
+
assertGate(typeof distManifest?.source_digest === 'string' && distManifest.source_digest.length >= 32, 'dist/build-manifest must include source_digest', { source_digest: distManifest?.source_digest || null });
|
|
105
|
+
assertGate(pkg.scripts?.['release:metadata']?.includes('dist/scripts/release-metadata-check.js'), 'release:metadata must point to the generic release metadata check');
|
|
106
|
+
const releaseCheckScript = String(pkg.scripts?.['release:check'] || '');
|
|
107
|
+
assertGate(releaseCheckScript.startsWith('npm run release:check:parallel')
|
|
108
|
+
|| releaseCheckScript.includes('release-gate-dag-runner.js --preset release')
|
|
109
|
+
|| releaseCheckScript.includes('release:check:affected'), 'release:check must use the current release DAG');
|
|
110
|
+
assertGate(releaseManifest?.schema === 'sks.release-gates.v2', 'release gate manifest schema mismatch', { schema: releaseManifest?.schema || null });
|
|
111
|
+
assertGate(harnessManifest?.schema === 'sks.infra-harness-gates.v1', 'infra harness manifest schema mismatch', { schema: harnessManifest?.schema || null });
|
|
112
|
+
assertGate(releaseGates.length > 0 && releaseGates.length <= 200, 'release manifest must include 1..200 release gates', { release_gates: releaseGates.length });
|
|
113
|
+
assertGate(harnessGates.length > 0, 'infra harness manifest must include harness gates', { harness_gates: harnessGates.length });
|
|
114
|
+
assertGate(Object.keys(pkg.scripts || {}).length <= 100, 'package script budget exceeded', { script_count: Object.keys(pkg.scripts || {}).length, limit: 100 });
|
|
115
|
+
for (const script of requiredPackageScripts)
|
|
116
|
+
assertGate(Boolean(pkg.scripts?.[script]), `missing package script: ${script}`);
|
|
117
|
+
const fullReleaseScript = String(pkg.scripts?.['release:check:full'] || '');
|
|
118
|
+
assertGate((fullReleaseScript.match(/build:clean/g) || []).length === 1, 'release:check:full must perform exactly one clean build', { script: fullReleaseScript });
|
|
119
|
+
assertGate((fullReleaseScript.match(/npm test --silent/g) || []).length === 1, 'release:check:full must run the canonical test suite exactly once', { script: fullReleaseScript });
|
|
120
|
+
for (const id of requiredReleaseGates)
|
|
121
|
+
assertGate(releaseGateIds.has(id), `critical release gate missing: ${id}`, { id });
|
|
122
|
+
for (const id of requiredHarnessGates)
|
|
123
|
+
assertGate(harnessGateIds.has(id), `critical harness gate missing: ${id}`, { id });
|
|
124
|
+
const duplicateAcrossManifests = [...releaseGateIds].filter((id) => harnessGateIds.has(id));
|
|
125
|
+
assertGate(duplicateAcrossManifests.length === 0, 'gate appears in both release and harness manifests', { duplicate_count: duplicateAcrossManifests.length });
|
|
126
|
+
assertGate([...releaseGateIds].every((id) => !id.startsWith('zellij:')), 'Zellij gates must remain in the harness preset');
|
|
127
|
+
assertGate([...harnessGateIds].every((id) => id.startsWith('zellij:')), 'harness manifest must contain only Zellij gates');
|
|
128
|
+
assertGate(allManifestGates.every((gate) => !/\bnpm\s+run\b/.test(String(gate.command))), 'gate manifest commands must not use npm run indirection');
|
|
129
|
+
const retiredPublicSurfaceGateCount = allManifestGates.filter((gate) => /(?:^|[^a-z0-9])(?:team|mad-db|tmux|xai|swarm|ralph)(?:[^a-z0-9]|$)/i.test(`${String(gate.id || '')}\n${String(gate.command || '')}`)).length;
|
|
130
|
+
assertGate(retiredPublicSurfaceGateCount === 0, 'release and harness manifests must use only the current public surface', { violation_count: retiredPublicSurfaceGateCount });
|
|
131
|
+
for (const gate of allManifestGates)
|
|
132
|
+
assertDistScriptTargetsExist(gate);
|
|
133
|
+
assertGate(pkg.bin?.sks === 'dist/bin/sks.js', 'package runtime must use dist/bin/sks.js');
|
|
134
|
+
assertGate(pkg.bin?.sneakoscope === 'dist/bin/sks.js', 'sneakoscope runtime must use dist/bin/sks.js');
|
|
135
|
+
assertGate(!pkg.files?.includes('src'), 'package files must not include source runtime shadows');
|
|
136
|
+
for (const removed of ['publish:dry', 'publish:verify-ignore-scripts', 'publish:prep-ignore-scripts', 'publish:ignore-scripts']) {
|
|
137
|
+
assertGate(!pkg.scripts?.[removed], `direct publish package script must be removed: ${removed}`);
|
|
138
|
+
}
|
|
139
|
+
assertGate(!/\bnpm\s+publish\b/.test(Object.values(pkg.scripts || {}).join('\n')), 'package scripts must not contain direct npm publish');
|
|
140
|
+
const currentCommandManifest = text('src/cli/command-manifest-lite.ts');
|
|
141
|
+
const currentDollarManifest = text('src/core/routes/dollar-manifest-lite.ts');
|
|
142
|
+
for (const token of ["{ name: 'team',", "{ name: 'mad-db',", "{ name: 'tmux',", "{ name: 'xai',", "{ name: 'swarm',", "{ name: 'agent',", "{ name: 'ralph',"]) {
|
|
143
|
+
assertGate(!currentCommandManifest.includes(token), 'current command manifest contains a retired public command');
|
|
144
|
+
}
|
|
145
|
+
for (const token of ["command: '$Agent'", "command: '$Team'", "command: '$MAD-DB'", "command: '$Swarm'", "command: '$ShadowClone'", "command: '$Kagebunshin'", "command: '$Ralph'"]) {
|
|
146
|
+
assertGate(!currentDollarManifest.includes(token), 'current dollar manifest contains a retired route identity');
|
|
147
|
+
}
|
|
148
|
+
assertGate(currentDollarManifest.includes("{ command: '$Naruto'") && currentDollarManifest.includes("{ command: '$Work'"), 'current dollar manifest must expose the canonical workflow and intended alias');
|
|
149
|
+
const stageWorkflow = text('.github/workflows/publish-npm.yml');
|
|
150
|
+
const stageJob = stageWorkflow.match(/^ stage-publish:\n[\s\S]*$/m)?.[0] || '';
|
|
151
|
+
const workflowPermissions = stageWorkflow.match(/^permissions:\n(?: [^\n]+\n)+/m)?.[0] || '';
|
|
152
|
+
const stageVerifierSource = text('src/core/release/npm-stage-tarball-verifier.ts');
|
|
153
|
+
const stageVerifierSupport = text('src/core/release/npm-stage-tarball-verifier-support.ts');
|
|
154
|
+
const stageVerifierCli = text('src/scripts/npm-stage-tarball-verifier.ts');
|
|
155
|
+
const releaseReadinessDoc = text('docs/release-readiness.md');
|
|
156
|
+
for (const job of ['linux-release-proof', 'macos-menubar-proof', 'pack-and-compare', 'stage-publish']) {
|
|
157
|
+
assertGate(new RegExp(`^ ${job}:`, 'm').test(stageWorkflow), `stage workflow missing job: ${job}`);
|
|
158
|
+
}
|
|
159
|
+
assertGate(/npm install --global npm@\$\{NPM_STAGE_CLI_VERSION\}/.test(stageWorkflow), 'stage workflow must install the exact pinned npm CLI');
|
|
160
|
+
assertGate(/NPM_STAGE_CLI_VERSION: 11\.15\.0/.test(stageWorkflow), 'stage workflow must pin npm 11.15.0');
|
|
161
|
+
assertGate(/npm stage publish "\$TARBALL"/.test(stageWorkflow), 'stage workflow must stage the exact tarball path');
|
|
162
|
+
assertGate((stageWorkflow.match(/npm stage publish "\$TARBALL"/g) || []).length === 1, 'stage workflow must contain exactly one registry mutation');
|
|
163
|
+
assertGate(!/\bnpm\s+publish\b/.test(stageWorkflow), 'stage workflow must not call direct npm publish');
|
|
164
|
+
assertGate(!/npm\s+stage\s+(?:list|view|download|approve|reject)\b/.test(stageWorkflow), 'OIDC stage job must not use maintainer-only stage subcommands');
|
|
165
|
+
assertGate(/environment: npm-production/.test(stageWorkflow), 'stage workflow must use the npm-production environment');
|
|
166
|
+
assertGate(!/id-token:/.test(workflowPermissions), 'workflow-global permissions must not grant OIDC identity');
|
|
167
|
+
assertGate((stageWorkflow.match(/id-token: write/g) || []).length === 1 && /permissions:\n contents: read\n id-token: write/.test(stageJob), 'OIDC identity must be scoped only to stage-publish');
|
|
168
|
+
for (const artifact of ['linux-release-proof', 'macos-menubar-proof', 'stage-input', 'npm-stage-receipt']) {
|
|
169
|
+
assertGate(new RegExp(`name: ${artifact}-\\$\\{\\{ github\\.sha \\}\\}`).test(stageWorkflow), `stage workflow artifact name mismatch: ${artifact}`);
|
|
170
|
+
}
|
|
171
|
+
for (const receiptField of ['tarball_sha256', 'tarball_sha512', 'tarball_integrity', 'packed_bytes', 'unpacked_bytes', 'file_count', 'workflow_run_id', 'local_pack_receipt_sha256', 'stage_command_digest', 'stage_output_digest', 'stage_id', 'review_verifier_schema', 'human_2fa_pending']) {
|
|
172
|
+
assertGate(new RegExp(`${receiptField}:`).test(stageJob), `stage receipt missing field: ${receiptField}`);
|
|
173
|
+
}
|
|
174
|
+
assertGate(/stage_id_uuid_invalid/.test(stageJob), 'stage workflow must fail closed on non-UUID stage IDs');
|
|
175
|
+
assertGate(/sha512Integrity !== receipt\.sha512_integrity/.test(stageJob), 'stage workflow must recompute and verify tarball SHA-512 integrity');
|
|
176
|
+
assertGate(/tarball_integrity: sha512Integrity/.test(stageJob), 'stage receipt must serialize recomputed tarball integrity');
|
|
177
|
+
assertGate(/stage-receipt\/stage-output\.json/.test(stageJob) && /path: stage-receipt/.test(stageJob), 'stage receipt artifact must preserve digest-bound raw stage output');
|
|
178
|
+
assertGate(/review_verifier_schema: 'sks\.npm-stage-review-receipt\.v1'/.test(stageJob), 'stage receipt must declare the maintainer verifier schema');
|
|
179
|
+
assertGate(/localPackReceiptSha256 = crypto\.createHash\('sha256'\)\.update\(localPackReceiptBytes\)/.test(stageJob), 'stage receipt must bind immutable local pack receipt bytes');
|
|
180
|
+
assertGate(!/approve_command/.test(stageWorkflow), 'stage workflow must not serialize an approval command');
|
|
181
|
+
assertGate(!/\bnpm[ \t]+(?:ci|pack|run|publish|login|logout|whoami)\b/.test(stageJob), 'stage job must not install dependencies, repack, run lifecycle scripts, or use session credentials');
|
|
182
|
+
assertGate(!/NODE_AUTH_TOKEN|NPM_TOKEN|_authToken/.test(stageWorkflow), 'stage workflow must not inject npm tokens');
|
|
183
|
+
assertGate(/REQUIRED_NPM_STAGE_CLI_VERSION = '11\.15\.0'/.test(stageVerifierSupport), 'maintainer stage verifier must require exact npm 11.15.0');
|
|
184
|
+
assertGate(/\['stage', 'view', stageId, '--json'/.test(stageVerifierSource), 'maintainer stage verifier must inspect the exact stage ID read-only');
|
|
185
|
+
assertGate(/\['stage', 'download', stageId, '--json'/.test(stageVerifierSource), 'maintainer stage verifier must download the exact stage ID read-only');
|
|
186
|
+
assertGate(/exact_bytes_match/.test(stageVerifierSource) && /sha256_match/.test(stageVerifierSource) && /sha512_match/.test(stageVerifierSource) && /integrity_match/.test(stageVerifierSource), 'maintainer stage verifier must compare bytes and digests');
|
|
187
|
+
assertGate(/oidc_environment_not_allowed/.test(stageVerifierSupport), 'maintainer stage verifier must reject OIDC and GitHub Actions environments');
|
|
188
|
+
assertGate(!/\['stage',\s*'(?:publish|approve|reject)'/.test(`${stageVerifierSource}\n${stageVerifierSupport}\n${stageVerifierCli}`), 'maintainer stage verifier must not contain mutating stage argv');
|
|
189
|
+
assertGate(/npm-stage-tarball-verifier\.js/.test(releaseReadinessDoc) && /--local-receipt/.test(releaseReadinessDoc) && /--local-tarball/.test(releaseReadinessDoc) && /--stage-receipt/.test(releaseReadinessDoc), 'release readiness must document the maintainer-local read-only verifier inputs');
|
|
190
|
+
assertGate(pkg.scripts?.prepublishOnly === 'node ./dist/scripts/prepublish-release-check-or-fast.js', 'prepublishOnly must verify release proof during official npm publish');
|
|
191
|
+
assertGate(pkg.scripts?.prepack === 'node ./dist/scripts/prepublish-release-check-or-fast.js --prepack-build', 'prepack must rebuild and reverify official npm publish output');
|
|
192
|
+
for (const file of requiredDocs) {
|
|
193
|
+
const absolute = path.join(root, file);
|
|
194
|
+
assertGate(fs.existsSync(absolute), `missing release doc: ${file}`);
|
|
195
|
+
if (versionedDocs.has(file)) {
|
|
196
|
+
assertGate(fs.readFileSync(absolute, 'utf8').includes(RELEASE_VERSION), `release doc does not mention ${RELEASE_VERSION}: ${file}`);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
const retiredPublicDocReferenceCount = requiredDocs
|
|
200
|
+
.filter((file) => file !== 'CHANGELOG.md')
|
|
201
|
+
.reduce((count, file) => {
|
|
202
|
+
const source = text(file);
|
|
203
|
+
const commandHit = /\bsks\s+(?:agent(?=\s|$)|--agent(?=\s|$)|team(?=\s|$)|mad-db(?=\s|$)|tmux(?=\s|$)|xai(?=\s|$)|swarm(?=\s|$)|ralph(?=\s|$))/i.test(source);
|
|
204
|
+
const routeHit = /\$(?:Team|MAD-DB|Swarm|ShadowClone|Kagebunshin|Ralph)\b/.test(source);
|
|
205
|
+
return count + Number(commandHit || routeHit);
|
|
206
|
+
}, 0);
|
|
207
|
+
assertGate(retiredPublicDocReferenceCount === 0, 'current release documentation must not republish retired command or route identities', { violation_count: retiredPublicDocReferenceCount });
|
|
208
|
+
const report = {
|
|
209
|
+
schema: 'sks.version-metadata-current.v1',
|
|
210
|
+
version: RELEASE_VERSION,
|
|
211
|
+
package_version: pkg.version,
|
|
212
|
+
current_public_surface: true,
|
|
213
|
+
official_subagent_workflow: true,
|
|
214
|
+
version_surface_count: 9,
|
|
215
|
+
package_script_count: requiredPackageScripts.length,
|
|
216
|
+
release_gate_count: releaseGates.length,
|
|
217
|
+
harness_gate_count: harnessGates.length,
|
|
218
|
+
required_doc_count: requiredDocs.length,
|
|
219
|
+
dist_source_digest: distManifest?.source_digest || null,
|
|
220
|
+
generated_at: new Date().toISOString(),
|
|
221
|
+
ok: true
|
|
222
|
+
};
|
|
223
|
+
const out = path.join(root, '.sneakoscope', 'reports', `version-metadata-${RELEASE_VERSION}.json`);
|
|
224
|
+
fs.mkdirSync(path.dirname(out), { recursive: true });
|
|
225
|
+
fs.writeFileSync(out, `${JSON.stringify(report, null, 2)}\n`);
|
|
226
|
+
emitGate('release:metadata', {
|
|
227
|
+
version: pkg.version,
|
|
228
|
+
package_scripts: requiredPackageScripts.length,
|
|
229
|
+
release_gates: releaseGates.length,
|
|
230
|
+
harness_gates: harnessGates.length,
|
|
231
|
+
docs: requiredDocs.length,
|
|
232
|
+
current_public_surface: true
|
|
233
|
+
});
|
|
234
|
+
function text(relFile) {
|
|
235
|
+
return fs.readFileSync(path.join(root, relFile), 'utf8');
|
|
236
|
+
}
|
|
237
|
+
function readJson(relFile) {
|
|
238
|
+
return JSON.parse(text(relFile));
|
|
239
|
+
}
|
|
240
|
+
function readJsonIfExists(relFile) {
|
|
241
|
+
const absolute = path.join(root, relFile);
|
|
242
|
+
return fs.existsSync(absolute) ? JSON.parse(fs.readFileSync(absolute, 'utf8')) : null;
|
|
243
|
+
}
|
|
244
|
+
function assertVersionSurface(relFile, needle) {
|
|
245
|
+
const absolute = path.join(root, relFile);
|
|
246
|
+
assertGate(fs.existsSync(absolute), `missing version surface: ${relFile}`);
|
|
247
|
+
const source = fs.readFileSync(absolute, 'utf8');
|
|
248
|
+
assertGate(source.includes(needle), `${relFile} must contain ${needle}`, { file: relFile, needle });
|
|
249
|
+
}
|
|
250
|
+
function assertDistScriptTargetsExist(gate) {
|
|
251
|
+
for (const match of String(gate.command || '').matchAll(/node\s+(\.\/dist\/scripts\/[^ &|;]+\.js)/g)) {
|
|
252
|
+
assertGate(fs.existsSync(path.join(root, match[1])), `gate command target missing: ${gate.id}`, {
|
|
253
|
+
id: gate.id,
|
|
254
|
+
target: match[1]
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import fs from 'node:fs';
|
|
3
3
|
import path from 'node:path';
|
|
4
|
-
import { assertGate, emitGate, root } from './
|
|
4
|
+
import { assertGate, emitGate, root } from './gate-lib.js';
|
|
5
5
|
const currentRunDir = process.env.SKS_REPORT_DIR ? path.dirname(process.env.SKS_REPORT_DIR) : null;
|
|
6
6
|
const latest = currentRunDir ? currentDagSummary(currentRunDir) : latestDagSummary();
|
|
7
7
|
assertGate(Boolean(latest), 'release speed budget requires an actual DAG summary', {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import fs from 'node:fs';
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import { writeReleaseProofTruth } from '../core/release/release-proof-truth.js';
|
|
5
|
-
import { assertGate, emitGate, root } from './
|
|
5
|
+
import { assertGate, emitGate, root } from './gate-lib.js';
|
|
6
6
|
const truth = await writeReleaseProofTruth(root);
|
|
7
7
|
assertGate(truth.schema === 'sks.release-proof-truth.v1', 'release proof truth schema mismatch', truth);
|
|
8
8
|
assertGate(truth.package_version === JSON.parse(fs.readFileSync(path.join(root, 'package.json'), 'utf8')).version, 'release proof truth version mismatch', truth);
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import fs from 'node:fs';
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import { spawnSync } from 'node:child_process';
|
|
5
|
-
import { assertGate, emitGate, root } from './
|
|
5
|
+
import { assertGate, emitGate, root } from './gate-lib.js';
|
|
6
6
|
const args = process.argv.slice(2);
|
|
7
7
|
const publish = args.includes('--publish');
|
|
8
8
|
const pkg = readJson('package.json');
|
|
@@ -20,7 +20,9 @@ const latestChangelog = latestVersionedChangelogSection(readText('CHANGELOG.md')
|
|
|
20
20
|
const tag = tagStatus(version, currentCommit);
|
|
21
21
|
const candidate = candidateVersion();
|
|
22
22
|
const originMain = originMainVersion();
|
|
23
|
-
const npm =
|
|
23
|
+
const npm = publish
|
|
24
|
+
? npmVersion()
|
|
25
|
+
: { version: null, status: 'not_checked_in_dev_review' };
|
|
24
26
|
const warnings = [];
|
|
25
27
|
const blockers = [];
|
|
26
28
|
if (candidate.version && candidate.version !== version)
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import fs from 'node:fs';
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import { buildRuntimeTruthMatrix, writeRuntimeTruthMatrix } from '../core/proof/runtime-truth-matrix.js';
|
|
5
|
-
import { assertGate, emitGate, root } from './
|
|
5
|
+
import { assertGate, emitGate, root } from './gate-lib.js';
|
|
6
6
|
const pkg = JSON.parse(fs.readFileSync(path.join(root, 'package.json'), 'utf8'));
|
|
7
7
|
const matrix = await buildRuntimeTruthMatrix({
|
|
8
8
|
root,
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import fs from 'node:fs';
|
|
3
3
|
import os from 'node:os';
|
|
4
4
|
import path from 'node:path';
|
|
5
|
-
import { assertGate, emitGate, importDist } from './
|
|
5
|
+
import { assertGate, emitGate, importDist } from './gate-lib.js';
|
|
6
6
|
const research = await importDist('core/research.js');
|
|
7
7
|
const workGraph = await importDist('core/research/research-work-graph.js');
|
|
8
8
|
const cycleRunner = await importDist('core/research/research-cycle-runner.js');
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import fs from 'node:fs';
|
|
3
3
|
import os from 'node:os';
|
|
4
4
|
import path from 'node:path';
|
|
5
|
-
import { assertGate, emitGate, importDist } from './
|
|
5
|
+
import { assertGate, emitGate, importDist } from './gate-lib.js';
|
|
6
6
|
const research = await importDist('core/research.js');
|
|
7
7
|
const workGraph = await importDist('core/research/research-work-graph.js');
|
|
8
8
|
const cycleRunner = await importDist('core/research/research-cycle-runner.js');
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import fs from 'node:fs';
|
|
3
3
|
import os from 'node:os';
|
|
4
4
|
import path from 'node:path';
|
|
5
|
-
import { assertGate, emitGate, importDist } from './
|
|
5
|
+
import { assertGate, emitGate, importDist } from './gate-lib.js';
|
|
6
6
|
const research = await importDist('core/research.js');
|
|
7
7
|
const quality = await importDist('core/research/research-report-quality.js');
|
|
8
8
|
const dir = fs.mkdtempSync(path.join(os.tmpdir(), 'sks-research-complete-package-'));
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
3
|
-
await
|
|
2
|
+
import { runTypedRoutingGate } from './typed-routing-gate-lib.js';
|
|
3
|
+
await runTypedRoutingGate('research:execution-profile-routing');
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import fs from 'node:fs';
|
|
3
3
|
import os from 'node:os';
|
|
4
4
|
import path from 'node:path';
|
|
5
|
-
import { assertGate, emitGate, importDist } from './
|
|
5
|
+
import { assertGate, emitGate, importDist } from './gate-lib.js';
|
|
6
6
|
const research = await importDist('core/research.js');
|
|
7
7
|
const reviewer = await importDist('core/research/research-final-reviewer.js');
|
|
8
8
|
const fsx = await importDist('core/fsx.js');
|
|
@@ -3,8 +3,8 @@ import fs from 'node:fs';
|
|
|
3
3
|
import fsp from 'node:fs/promises';
|
|
4
4
|
import os from 'node:os';
|
|
5
5
|
import path from 'node:path';
|
|
6
|
-
import { assertGate, emitGate, importDist, root } from './
|
|
7
|
-
export async function
|
|
6
|
+
import { assertGate, emitGate, importDist, root } from './gate-lib.js';
|
|
7
|
+
export async function runRuntimeDomainGate(id) {
|
|
8
8
|
if (id.startsWith('zellij:'))
|
|
9
9
|
return zellijGate(id);
|
|
10
10
|
if (id.startsWith('doctor:zellij'))
|
|
@@ -3,7 +3,7 @@ import fs from 'node:fs/promises';
|
|
|
3
3
|
import os from 'node:os';
|
|
4
4
|
import path from 'node:path';
|
|
5
5
|
import { buildRuntimeProofSummary } from '../core/agents/runtime-proof-summary.js';
|
|
6
|
-
import { assertGate, emitGate } from './
|
|
6
|
+
import { assertGate, emitGate } from './gate-lib.js';
|
|
7
7
|
const root = await fs.mkdtemp(path.join(os.tmpdir(), 'sks-runtime-summary-'));
|
|
8
8
|
const missionId = 'M-runtime-summary';
|
|
9
9
|
const dir = path.join(root, '.sneakoscope', 'missions', missionId);
|
|
@@ -5,11 +5,14 @@ import os from 'node:os';
|
|
|
5
5
|
import path from 'node:path';
|
|
6
6
|
import { DEFAULT_MAX_PACK_BYTES, DEFAULT_MAX_UNPACKED_BYTES } from '../core/release/package-size-budget.js';
|
|
7
7
|
import { analyzeRuntimeScriptPackClosure } from '../core/release/runtime-script-pack-closure.js';
|
|
8
|
-
import { assertGate, emitGate, root } from './
|
|
8
|
+
import { assertGate, emitGate, root } from './gate-lib.js';
|
|
9
9
|
const MAX_FILES = Number(process.env.SKS_MAX_PACK_FILES || 2100);
|
|
10
10
|
const MAX_PACKED = Number(process.env.SKS_MAX_PACK_BYTES || DEFAULT_MAX_PACK_BYTES);
|
|
11
11
|
const MAX_UNPACKED = Number(process.env.SKS_MAX_UNPACKED_BYTES || DEFAULT_MAX_UNPACKED_BYTES);
|
|
12
12
|
const analysis = analyzeRuntimeScriptPackClosure(root);
|
|
13
|
+
assertGate(analysis.root_mode === 'manifest_ssot', 'runtime_script_manifest_ssot_disabled', {
|
|
14
|
+
root_mode: analysis.root_mode
|
|
15
|
+
});
|
|
13
16
|
assertGate(analysis.declaration_issues.length === 0, 'runtime_script_allowlist_declaration_invalid', {
|
|
14
17
|
issues: analysis.declaration_issues
|
|
15
18
|
});
|
|
@@ -28,6 +31,9 @@ assertGate(analysis.missing_from_allowlist.length === 0, 'runtime_script_allowli
|
|
|
28
31
|
assertGate(analysis.stale_allowlist_entries.length === 0, 'runtime_script_allowlist_stale_entries', {
|
|
29
32
|
stale: analysis.stale_allowlist_entries
|
|
30
33
|
});
|
|
34
|
+
assertGate(analysis.unclassified_reference_roots.length === 0, 'runtime_script_reference_source_unclassified', {
|
|
35
|
+
unclassified: analysis.unclassified_reference_roots
|
|
36
|
+
});
|
|
31
37
|
const npmCache = process.env.SKS_RELEASE_NPM_CACHE || path.join(os.tmpdir(), 'sneakoscope-npm-cache');
|
|
32
38
|
fs.mkdirSync(npmCache, { recursive: true });
|
|
33
39
|
const npmCli = process.env.npm_execpath;
|
|
@@ -3,7 +3,7 @@ import fs from 'node:fs/promises';
|
|
|
3
3
|
import os from 'node:os';
|
|
4
4
|
import path from 'node:path';
|
|
5
5
|
import { runAgentScheduler } from '../core/agents/agent-scheduler.js';
|
|
6
|
-
import { assertGate, emitGate, readText } from './
|
|
6
|
+
import { assertGate, emitGate, readText } from './gate-lib.js';
|
|
7
7
|
assertGate(readText('src/core/agents/agent-scheduler.ts').includes('collectLaunchBatch') && readText('src/core/agents/agent-scheduler.ts').includes('batch_work_items_dispatched'), 'batch scheduler source wiring missing');
|
|
8
8
|
const missionId = 'M-scheduler-batch';
|
|
9
9
|
const ledgerRoot = await fs.mkdtemp(path.join(os.tmpdir(), 'sks-scheduler-batch-'));
|
|
@@ -4,7 +4,7 @@ import os from 'node:os';
|
|
|
4
4
|
import path from 'node:path';
|
|
5
5
|
import { runAgentScheduler } from '../core/agents/agent-scheduler.js';
|
|
6
6
|
import { appendParallelRuntimeEvent, writeParallelRuntimeProof } from '../core/agents/parallel-runtime-proof.js';
|
|
7
|
-
import { assertGate, emitGate } from './
|
|
7
|
+
import { assertGate, emitGate } from './gate-lib.js';
|
|
8
8
|
const root = await fs.mkdtemp(path.join(os.tmpdir(), 'sks-scheduler-proof-consistency-'));
|
|
9
9
|
const missionId = 'M-scheduler-proof-consistency';
|
|
10
10
|
const workers = 4;
|
|
@@ -3,7 +3,7 @@ import fs from 'node:fs/promises';
|
|
|
3
3
|
import os from 'node:os';
|
|
4
4
|
import path from 'node:path';
|
|
5
5
|
import { runAgentScheduler } from '../core/agents/agent-scheduler.js';
|
|
6
|
-
import { assertGate, emitGate } from './
|
|
6
|
+
import { assertGate, emitGate } from './gate-lib.js';
|
|
7
7
|
const sleepMs = 2000;
|
|
8
8
|
async function runFixture(targetActiveSlots) {
|
|
9
9
|
const root = await fs.mkdtemp(path.join(os.tmpdir(), `sks-scheduler-util-${targetActiveSlots}-`));
|
|
@@ -3,7 +3,7 @@ import fs from 'node:fs';
|
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import { spawnSync } from 'node:child_process';
|
|
5
5
|
import { tmpdir } from '../core/fsx.js';
|
|
6
|
-
import { assertGate, emitGate, root } from './
|
|
6
|
+
import { assertGate, emitGate, root } from './gate-lib.js';
|
|
7
7
|
export { assertGate, emitGate, root };
|
|
8
8
|
export function makeSearchVisibilityFixture(name = 'search-visibility', options = {}) {
|
|
9
9
|
const dir = tmpdir(`sks-${name}-`);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import path from 'node:path';
|
|
3
|
-
import { assertGate, emitGate, makeTempRoot, writeText } from './
|
|
3
|
+
import { assertGate, emitGate, makeTempRoot, writeText } from './skill-fixture-check-lib.js';
|
|
4
4
|
import { captureSecretPreservationSnapshot } from '../core/config/secret-preservation.js';
|
|
5
5
|
const root = await makeTempRoot('sks-secret-snapshot-');
|
|
6
6
|
await writeText(path.join(root, '.env.local'), 'NEXT_PUBLIC_SUPABASE_URL=https://example.supabase.co\nNEXT_PUBLIC_SUPABASE_ANON_KEY=secret-value-123\n');
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { assertGate, emitGate, importDist } from './
|
|
2
|
+
import { assertGate, emitGate, importDist } from './gate-lib.js';
|
|
3
3
|
const routes = await importDist('core/routes.js');
|
|
4
4
|
const commandFor = (prompt) => routes.routePrompt(prompt)?.command;
|
|
5
5
|
assertGate(commandFor('$SEO-GEO-OPTIMIZER improve AI answer visibility') === '$SEO-GEO-OPTIMIZER', 'explicit optimizer should route to unified route');
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import fs from 'node:fs';
|
|
3
3
|
import os from 'node:os';
|
|
4
4
|
import path from 'node:path';
|
|
5
|
-
import { assertGate, emitGate, importDist } from './
|
|
5
|
+
import { assertGate, emitGate, importDist } from './gate-lib.js';
|
|
6
6
|
const root = fs.mkdtempSync(path.join(os.tmpdir(), 'sks-seo-geo-skills-'));
|
|
7
7
|
const init = await importDist('core/init.js');
|
|
8
8
|
await init.installSkills(root);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import fs from 'node:fs';
|
|
3
3
|
import path from 'node:path';
|
|
4
|
-
import { assertGate, emitGate, importDist, root } from './
|
|
4
|
+
import { assertGate, emitGate, importDist, root } from './gate-lib.js';
|
|
5
5
|
const { buildSideEffectRuntimeReport } = await importDist('core/safety/side-effect-runtime-report.js');
|
|
6
6
|
const report = await buildSideEffectRuntimeReport(root);
|
|
7
7
|
const out = path.join(root, '.sneakoscope', 'reports', 'side-effect-runtime-report.json');
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import fs from 'node:fs/promises';
|
|
2
2
|
import os from 'node:os';
|
|
3
3
|
import path from 'node:path';
|
|
4
|
-
import { assertGate, emitGate } from './
|
|
4
|
+
import { assertGate, emitGate } from './gate-lib.js';
|
|
5
5
|
import { renderCoreSkillTemplate } from '../core/codex-native/core-skill-manifest.js';
|
|
6
6
|
export { assertGate, emitGate };
|
|
7
7
|
export async function makeTempRoot(prefix) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { assertGate, emitGate } from './
|
|
2
|
+
import { assertGate, emitGate } from './skill-fixture-check-lib.js';
|
|
3
3
|
import { canonicalSkillName } from '../core/codex-native/skill-name-canonicalizer.js';
|
|
4
4
|
for (const value of ['$Loop', 'loop', 'Loop', 'LOOP', 'loop ', 'loop.md', 'loop/SKILL.md']) {
|
|
5
5
|
assertGate(canonicalSkillName(value) === 'loop', 'canonical skill name example failed', { value, got: canonicalSkillName(value) });
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import fs from 'node:fs';
|
|
3
3
|
import fsp from 'node:fs/promises';
|
|
4
4
|
import path from 'node:path';
|
|
5
|
-
import { assertGate, emitGate, makeTempRoot, writeText } from './
|
|
5
|
+
import { assertGate, emitGate, makeTempRoot, writeText } from './skill-fixture-check-lib.js';
|
|
6
6
|
import { installGlobalSkills } from '../core/init/skills.js';
|
|
7
7
|
const root = process.cwd();
|
|
8
8
|
const manifestPath = path.join(root, 'dist', 'config', 'skills-manifest.json');
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import fs from 'node:fs/promises';
|
|
3
3
|
import path from 'node:path';
|
|
4
|
-
import { assertGate, emitGate, makeTempRoot, writeText } from './
|
|
4
|
+
import { assertGate, emitGate, makeTempRoot, writeText } from './skill-fixture-check-lib.js';
|
|
5
5
|
import { uninstallCommand } from '../core/commands/uninstall-command.js';
|
|
6
6
|
const home = await makeTempRoot('sks-uninstall-home-');
|
|
7
7
|
const project = await makeTempRoot('sks-uninstall-project-');
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import fs from 'node:fs/promises';
|
|
2
2
|
import os from 'node:os';
|
|
3
3
|
import path from 'node:path';
|
|
4
|
-
import { assertGate, emitGate, importDist } from './
|
|
4
|
+
import { assertGate, emitGate, importDist } from './gate-lib.js';
|
|
5
5
|
const mod = await importDist('core/daemon/sksd-client.js');
|
|
6
6
|
const fixtureRoot = await fs.mkdtemp(path.join(os.tmpdir(), 'sks-sksd-daemon-check-'));
|
|
7
7
|
try {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import fs from 'node:fs/promises';
|
|
3
3
|
import os from 'node:os';
|
|
4
4
|
import path from 'node:path';
|
|
5
|
-
import { assertGate, emitGate, importDist } from './
|
|
5
|
+
import { assertGate, emitGate, importDist } from './gate-lib.js';
|
|
6
6
|
const mod = await importDist('core/super-search/index.js');
|
|
7
7
|
const missionDir = await fs.mkdtemp(path.join(os.tmpdir(), 'sks-super-search-'));
|
|
8
8
|
const originalFetch = globalThis.fetch;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { assertGate, emitGate, importDist, root } from './
|
|
1
|
+
import { assertGate, emitGate, importDist, root } from './gate-lib.js';
|
|
2
2
|
const mod = await importDist('core/triwiki/triwiki-cache-key.js');
|
|
3
3
|
const a = mod.computeTriWikiCacheKey({ root, id: 'triwiki:cache-key', inputs: ['package.json'], implementationFiles: ['src/core/triwiki/triwiki-cache-key.ts'], envAllowlist: ['CI'], fixtureVersion: 'sks-4.0.0' });
|
|
4
4
|
const b = mod.computeTriWikiCacheKey({ root, id: 'triwiki:cache-key', inputs: ['package.json'], implementationFiles: ['src/core/triwiki/triwiki-cache-key.ts'], envAllowlist: ['CI'], fixtureVersion: 'sks-4.0.0' });
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import fs from 'node:fs/promises';
|
|
2
2
|
import path from 'node:path';
|
|
3
|
-
import { assertGate, emitGate, makeTempRoot } from './
|
|
4
|
-
import { importDist } from './
|
|
3
|
+
import { assertGate, emitGate, makeTempRoot } from './skill-fixture-check-lib.js';
|
|
4
|
+
import { importDist } from './gate-lib.js';
|
|
5
5
|
const tmp = await makeTempRoot('sks-triwiki-proof-bank-');
|
|
6
6
|
await fs.writeFile(path.join(tmp, 'package.json'), JSON.stringify({ version: '4.0.0' }));
|
|
7
7
|
await fs.writeFile(path.join(tmp, 'package-lock.json'), JSON.stringify({ lockfileVersion: 3 }));
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { assertGate, emitGate, importDist, root } from './
|
|
1
|
+
import { assertGate, emitGate, importDist, root } from './gate-lib.js';
|
|
2
2
|
const bank = await importDist('core/triwiki/triwiki-proof-bank.js');
|
|
3
3
|
const status = bank.summarizeTriWikiProofBank(root);
|
|
4
4
|
assertGate(status.schema === 'sks.triwiki-proof-bank.v1' && status.ok === true, 'proof bank status must pass', status);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { assertGate, emitGate, importDist } from './
|
|
1
|
+
import { assertGate, emitGate, importDist } from './gate-lib.js';
|
|
2
2
|
const mod = await importDist('core/triwiki/triwiki-proof-card.js');
|
|
3
3
|
const card = mod.createTriWikiProofCard({
|
|
4
4
|
subject_type: 'gate',
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
3
|
-
await
|
|
2
|
+
import { runTypedRoutingGate } from './typed-routing-gate-lib.js';
|
|
3
|
+
await runTypedRoutingGate('type-surface:codex-app');
|