sneakoscope 2.0.14 → 2.0.16
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 +6 -3
- package/crates/sks-core/Cargo.lock +1 -1
- package/crates/sks-core/Cargo.toml +1 -1
- package/crates/sks-core/src/main.rs +1 -1
- package/dist/.sks-build-stamp.json +4 -4
- package/dist/bin/sks.js +1 -1
- package/dist/cli/command-registry.js +2 -1
- package/dist/commands/mad-db.js +5 -0
- package/dist/commands/zellij-slot-pane.js +3 -1
- package/dist/core/agents/agent-orchestrator.js +66 -3
- package/dist/core/agents/agent-plan.js +3 -2
- package/dist/core/agents/agent-scheduler.js +204 -86
- package/dist/core/agents/agent-schema.js +1 -1
- package/dist/core/agents/native-cli-session-swarm.js +199 -15
- package/dist/core/agents/native-cli-worker.js +85 -0
- package/dist/core/agents/parallel-runtime-proof.js +217 -0
- package/dist/core/codex-control/codex-task-runner.js +32 -4
- package/dist/core/codex-control/model-call-concurrency.js +106 -0
- package/dist/core/commands/basic-cli.js +1 -1
- package/dist/core/commands/command-suggestions.js +1 -1
- package/dist/core/commands/mad-db-command.js +106 -0
- package/dist/core/commands/mad-sks-command.js +50 -13
- package/dist/core/commands/naruto-command.js +128 -5
- package/dist/core/commands/research-command.js +13 -1
- package/dist/core/commands/team-command.js +23 -175
- package/dist/core/db-safety.js +55 -1
- package/dist/core/fsx.js +1 -1
- package/dist/core/git/git-worktree-capability.js +18 -0
- package/dist/core/git/git-worktree-manager.js +80 -0
- package/dist/core/git/git-worktree-pool.js +4 -0
- package/dist/core/mad-db/mad-db-capability.js +116 -0
- package/dist/core/mad-db/mad-db-ledger.js +31 -0
- package/dist/core/mad-db/mad-db-policy-resolver.js +48 -0
- package/dist/core/naruto/naruto-concurrency-governor.js +14 -1
- package/dist/core/pipeline-internals/runtime-core.js +74 -8
- package/dist/core/pipeline-internals/runtime-gates.js +44 -0
- package/dist/core/proof/route-proof-gate.js +5 -3
- package/dist/core/proof/route-proof-policy.js +9 -1
- package/dist/core/release/release-gate-affected-selector.js +113 -0
- package/dist/core/release/release-gate-batch-runner.js +67 -0
- package/dist/core/release/release-gate-dag.js +22 -3
- package/dist/core/release/release-gate-resource-governor.js +23 -11
- package/dist/core/research/implementation-blueprint-densifier.js +1 -1
- package/dist/core/research/implementation-blueprint-markdown.js +1 -1
- package/dist/core/research/implementation-blueprint.js +68 -7
- package/dist/core/research/research-final-reviewer.js +27 -1
- package/dist/core/research/research-handoff.js +69 -5
- package/dist/core/research/research-realistic-report.js +162 -0
- package/dist/core/research/research-repetition-detector.js +75 -0
- package/dist/core/research/research-report-quality.js +27 -5
- package/dist/core/research/research-stage-runner.js +40 -13
- package/dist/core/research/research-synthesis-prompt.js +52 -0
- package/dist/core/research/research-synthesis-writer.js +208 -0
- package/dist/core/research.js +60 -48
- package/dist/core/routes.js +23 -19
- package/dist/core/update/update-notice.js +120 -0
- package/dist/core/version.js +1 -1
- package/dist/core/zellij/zellij-dashboard-renderer.js +2 -0
- package/dist/core/zellij/zellij-slot-column-anchor.js +35 -1
- package/dist/core/zellij/zellij-slot-pane-renderer.js +57 -0
- package/dist/core/zellij/zellij-slot-telemetry.js +237 -0
- package/dist/scripts/release-gate-dag-runner.js +5 -0
- package/dist/scripts/release-speed-summary.js +27 -0
- package/package.json +76 -5
- package/schemas/agents/parallel-runtime-proof.schema.json +48 -0
- package/schemas/mad-db/mad-db-capability.schema.json +31 -0
- package/schemas/mad-db/mad-db-ledger.schema.json +14 -0
- package/schemas/research/implementation-blueprint.schema.json +6 -1
- package/schemas/research/research-final-review.schema.json +10 -0
- package/schemas/research/research-synthesis-output.schema.json +62 -0
- package/schemas/update/update-notice.schema.json +19 -0
- package/schemas/zellij/zellij-slot-telemetry.schema.json +89 -0
- package/dist/scripts/agent-ast-aware-work-graph-check.js +0 -25
- package/dist/scripts/agent-backfill-replenishment-check.js +0 -13
- package/dist/scripts/agent-backfill-route-blackbox.js +0 -5
- package/dist/scripts/agent-background-terminals-check.js +0 -16
- package/dist/scripts/agent-cleanup-command-ux-check.js +0 -12
- package/dist/scripts/agent-cleanup-executor-check.js +0 -53
- package/dist/scripts/agent-cleanup-executor-v2-check.js +0 -39
- package/dist/scripts/agent-cli-options-to-task-graph-check.js +0 -5
- package/dist/scripts/agent-codex-app-cockpit-check.js +0 -91
- package/dist/scripts/agent-codex-child-overlap-check.js +0 -21
- package/dist/scripts/agent-dynamic-cockpit-check.js +0 -10
- package/dist/scripts/agent-dynamic-pool-check.js +0 -13
- package/dist/scripts/agent-dynamic-pool-route-blackbox.js +0 -5
- package/dist/scripts/agent-fast-mode-default-check.js +0 -62
- package/dist/scripts/agent-fast-mode-worker-propagation-check.js +0 -7
- package/dist/scripts/agent-follow-up-work-schema-check.js +0 -80
- package/dist/scripts/agent-goal-mode-propagation-check.js +0 -9
- package/dist/scripts/agent-intelligent-work-graph-check.js +0 -25
- package/dist/scripts/agent-janitor-check.js +0 -76
- package/dist/scripts/agent-main-no-scout-check.js +0 -11
- package/dist/scripts/agent-model-authored-patch-envelope-check.js +0 -15
- package/dist/scripts/agent-multi-project-isolation-check.js +0 -86
- package/dist/scripts/agent-native-cli-session-proof-check.js +0 -7
- package/dist/scripts/agent-native-cli-session-swarm-10-check.js +0 -7
- package/dist/scripts/agent-native-cli-session-swarm-20-check.js +0 -7
- package/dist/scripts/agent-native-cli-session-swarm-check.js +0 -7
- package/dist/scripts/agent-no-subagent-scaling-check.js +0 -7
- package/dist/scripts/agent-parallel-write-blackbox.js +0 -56
- package/dist/scripts/agent-parallel-write-kernel-check.js +0 -103
- package/dist/scripts/agent-patch-conflict-rebase-check.js +0 -198
- package/dist/scripts/agent-patch-envelope-extraction-check.js +0 -17
- package/dist/scripts/agent-patch-proof-check.js +0 -41
- package/dist/scripts/agent-patch-proof-runtime-check.js +0 -63
- package/dist/scripts/agent-patch-queue-runtime-check.js +0 -36
- package/dist/scripts/agent-patch-rollback-check.js +0 -38
- package/dist/scripts/agent-patch-rollback-dag-check.js +0 -14
- package/dist/scripts/agent-patch-swarm-route-blackbox.js +0 -10
- package/dist/scripts/agent-patch-swarm-runtime-check.js +0 -10
- package/dist/scripts/agent-patch-swarm-runtime-truth-check.js +0 -76
- package/dist/scripts/agent-patch-transaction-journal-check.js +0 -57
- package/dist/scripts/agent-patch-verification-dag-check.js +0 -14
- package/dist/scripts/agent-proof-contract-reconciled-check.js +0 -5
- package/dist/scripts/agent-real-codex-dynamic-smoke-check.js +0 -166
- package/dist/scripts/agent-real-codex-dynamic-smoke-v2-check.js +0 -14
- package/dist/scripts/agent-real-codex-in-zellij-worker-pane-check.js +0 -229
- package/dist/scripts/agent-real-codex-parallel-workers-10-check.js +0 -5
- package/dist/scripts/agent-real-codex-parallel-workers-20-check.js +0 -5
- package/dist/scripts/agent-real-codex-parallel-workers-5-check.js +0 -5
- package/dist/scripts/agent-real-codex-parallel-workers-check.js +0 -5
- package/dist/scripts/agent-role-config-repair-check.js +0 -33
- package/dist/scripts/agent-rollback-command-check.js +0 -86
- package/dist/scripts/agent-route-truth-backfill-check.js +0 -5
- package/dist/scripts/agent-scheduler-proof-check.js +0 -13
- package/dist/scripts/agent-scheduler-proof-hardening-check.js +0 -22
- package/dist/scripts/agent-session-generation-check.js +0 -21
- package/dist/scripts/agent-slot-pane-binding-proof-check.js +0 -64
- package/dist/scripts/agent-source-intelligence-propagation-check.js +0 -9
- package/dist/scripts/agent-strategy-to-lease-wiring-check.js +0 -32
- package/dist/scripts/agent-strategy-to-patch-strict-check.js +0 -54
- package/dist/scripts/agent-task-graph-expansion-check.js +0 -14
- package/dist/scripts/agent-terminal-generations-check.js +0 -23
- package/dist/scripts/agent-visual-consistency-check.js +0 -9
- package/dist/scripts/agent-wiki-context-proof-check.js +0 -62
- package/dist/scripts/agent-worker-backend-router-check.js +0 -63
- package/dist/scripts/agent-worker-scout-limited-check.js +0 -17
- package/dist/scripts/agent-zellij-dynamic-backfill-panes-check.js +0 -34
- package/dist/scripts/agent-zellij-runtime-check.js +0 -84
- package/dist/scripts/all-feature-deep-completion-check.js +0 -31
- package/dist/scripts/appshots-capability-check.js +0 -18
- package/dist/scripts/appshots-evidence-check.js +0 -48
- package/dist/scripts/appshots-operator-policy-check.js +0 -25
- package/dist/scripts/appshots-privacy-safety-check.js +0 -48
- package/dist/scripts/appshots-source-intelligence-check.js +0 -53
- package/dist/scripts/appshots-thread-attachment-discovery-check.js +0 -87
- package/dist/scripts/appshots-triwiki-voxel-check.js +0 -46
- package/dist/scripts/architecture-guard-check.js +0 -55
- package/dist/scripts/changelog-check.js +0 -47
- package/dist/scripts/codex-0-133-official-compat-report.js +0 -53
- package/dist/scripts/codex-0-134-official-compat-report.js +0 -110
- package/dist/scripts/codex-0-134-runner-truth-check.js +0 -66
- package/dist/scripts/codex-0-135-compat-check.js +0 -57
- package/dist/scripts/codex-0-136-compat-check.js +0 -30
- package/dist/scripts/codex-0-137-compat-check.js +0 -27
- package/dist/scripts/codex-app-fast-ui-preservation-check.js +0 -32
- package/dist/scripts/codex-app-provider-badge-check.js +0 -37
- package/dist/scripts/codex-app-ui-clobber-guard-check.js +0 -22
- package/dist/scripts/codex-app-ui-preservation-check.js +0 -96
- package/dist/scripts/codex-control-all-pipelines-check.js +0 -36
- package/dist/scripts/codex-control-capability-check.js +0 -10
- package/dist/scripts/codex-control-empty-result-retry-check.js +0 -43
- package/dist/scripts/codex-control-event-stream-ledger-check.js +0 -10
- package/dist/scripts/codex-control-keepalive-no-cot-leak-check.js +0 -14
- package/dist/scripts/codex-control-no-legacy-fallback-check.js +0 -31
- package/dist/scripts/codex-control-side-effect-scope-check.js +0 -26
- package/dist/scripts/codex-control-stream-idle-watchdog-check.js +0 -18
- package/dist/scripts/codex-control-structured-output-check.js +0 -11
- package/dist/scripts/codex-control-thread-registry-check.js +0 -11
- package/dist/scripts/codex-control-tool-call-sequence-repair-check.js +0 -14
- package/dist/scripts/codex-environment-scoped-approvals-check.js +0 -10
- package/dist/scripts/codex-exec-output-schema-actual-syntax-check.js +0 -33
- package/dist/scripts/codex-fast-mode-profile-propagation-check.js +0 -12
- package/dist/scripts/codex-history-search-check.js +0 -19
- package/dist/scripts/codex-hook-semantic-check.js +0 -15
- package/dist/scripts/codex-hook-strict-subset-check.js +0 -61
- package/dist/scripts/codex-lb-config-toml-safety-check.js +0 -85
- package/dist/scripts/codex-lb-persistence-truth-check.js +0 -96
- package/dist/scripts/codex-lb-setup-fixture-check.js +0 -91
- package/dist/scripts/codex-lb-setup-truthfulness-check.js +0 -84
- package/dist/scripts/codex-legacy-profile-consumers-removed-check.js +0 -24
- package/dist/scripts/codex-managed-proxy-env-check.js +0 -17
- package/dist/scripts/codex-output-schema-fixture-check.js +0 -25
- package/dist/scripts/codex-permission-profiles-check.js +0 -36
- package/dist/scripts/codex-plugin-list-json-check.js +0 -8
- package/dist/scripts/codex-profile-primary-check.js +0 -13
- package/dist/scripts/codex-project-config-policy-splitter-check.js +0 -51
- package/dist/scripts/codex-resume-cwd-truth-check.js +0 -17
- package/dist/scripts/codex-sdk-all-pipelines-check.js +0 -32
- package/dist/scripts/codex-sdk-backend-router-check.js +0 -65
- package/dist/scripts/codex-sdk-capability-check.js +0 -11
- package/dist/scripts/codex-sdk-core-skill-pipeline-check.js +0 -9
- package/dist/scripts/codex-sdk-dfix-pipeline-check.js +0 -9
- package/dist/scripts/codex-sdk-event-stream-ledger-check.js +0 -9
- package/dist/scripts/codex-sdk-no-legacy-fallback-check.js +0 -33
- package/dist/scripts/codex-sdk-qa-pipeline-check.js +0 -8
- package/dist/scripts/codex-sdk-real-smoke-check.js +0 -39
- package/dist/scripts/codex-sdk-release-review-pipeline-check.js +0 -13
- package/dist/scripts/codex-sdk-research-pipeline-check.js +0 -47
- package/dist/scripts/codex-sdk-sandbox-policy-check.js +0 -21
- package/dist/scripts/codex-sdk-structured-output-check.js +0 -10
- package/dist/scripts/codex-sdk-team-naruto-agent-pipeline-check.js +0 -12
- package/dist/scripts/codex-sdk-thread-registry-check.js +0 -11
- package/dist/scripts/codex-sdk-ux-ppt-review-pipeline-check.js +0 -9
- package/dist/scripts/codex-sdk-zellij-pane-binding-check.js +0 -13
- package/dist/scripts/codex-thread-runtime-choice-check.js +0 -10
- package/dist/scripts/codex-web-adapter-check.js +0 -12
- package/dist/scripts/computer-use-live-evidence-check.js +0 -55
- package/dist/scripts/computer-use-live-optional-check.js +0 -32
- package/dist/scripts/computer-use-policy-check.js +0 -69
- package/dist/scripts/computer-use-visual-route-fixture-check.js +0 -37
- package/dist/scripts/core-skill-card-schema-check.js +0 -61
- package/dist/scripts/core-skill-deployment-snapshot-check.js +0 -54
- package/dist/scripts/core-skill-heldout-validation-check.js +0 -49
- package/dist/scripts/core-skill-no-inference-optimizer-check.js +0 -75
- package/dist/scripts/core-skill-patch-check.js +0 -79
- package/dist/scripts/core-skill-promotion-side-effect-ledger-check.js +0 -64
- package/dist/scripts/core-skill-rollout-scoring-check.js +0 -72
- package/dist/scripts/core-skill-route-runtime-integration-check.js +0 -49
- package/dist/scripts/dfix-fast-blackbox-check.js +0 -37
- package/dist/scripts/dfix-fast-kernel-check.js +0 -26
- package/dist/scripts/dfix-fixture-check.js +0 -6
- package/dist/scripts/dfix-parallel-write-blackbox.js +0 -48
- package/dist/scripts/dfix-patch-handoff-check.js +0 -13
- package/dist/scripts/dfix-patch-swarm-route-blackbox.js +0 -10
- package/dist/scripts/dfix-performance-check.js +0 -15
- package/dist/scripts/dfix-verification-check.js +0 -9
- package/dist/scripts/dfix-verification-recommendation-check.js +0 -15
- package/dist/scripts/docs-truthfulness-check.js +0 -61
- package/dist/scripts/doctor-codex-doctor-parity-check.js +0 -17
- package/dist/scripts/doctor-fix-proves-codex-read-check.js +0 -64
- package/dist/scripts/doctor-fix-recovers-corrupted-config-check.js +0 -122
- package/dist/scripts/doctor-fixes-codex-app-fast-ui-check.js +0 -39
- package/dist/scripts/evidence-fixture-check.js +0 -26
- package/dist/scripts/evidence-flagship-coverage-check.js +0 -55
- package/dist/scripts/fake-real-proof-policy-v2-check.js +0 -27
- package/dist/scripts/fake-vs-real-proof-policy-check.js +0 -14
- package/dist/scripts/fast-codex-service-tier-proof-check.js +0 -42
- package/dist/scripts/flagship-proof-graph-v2-check.js +0 -48
- package/dist/scripts/flagship-proof-graph-v3-check.js +0 -67
- package/dist/scripts/flagship-proof-graph-v4-check.js +0 -61
- package/dist/scripts/git-precommit-fixture-check.js +0 -41
- package/dist/scripts/git-worktree-cache-performance-check.js +0 -25
- package/dist/scripts/git-worktree-capability-check.js +0 -27
- package/dist/scripts/git-worktree-checkpoint-check.js +0 -20
- package/dist/scripts/git-worktree-cleanup-check.js +0 -27
- package/dist/scripts/git-worktree-cross-rebase-check.js +0 -39
- package/dist/scripts/git-worktree-diff-envelope-check.js +0 -17
- package/dist/scripts/git-worktree-diff-export-check.js +0 -43
- package/dist/scripts/git-worktree-dirty-lock-check.js +0 -17
- package/dist/scripts/git-worktree-dirty-main-detection-check.js +0 -14
- package/dist/scripts/git-worktree-integration-primary-check.js +0 -24
- package/dist/scripts/git-worktree-integration-primary-runtime-check.js +0 -20
- package/dist/scripts/git-worktree-manager-check.js +0 -37
- package/dist/scripts/git-worktree-manifest-append-check.js +0 -18
- package/dist/scripts/git-worktree-merge-queue-check.js +0 -31
- package/dist/scripts/git-worktree-pool-performance-check.js +0 -20
- package/dist/scripts/git-worktree-untracked-diff-check.js +0 -18
- package/dist/scripts/goal-mode-official-default-check.js +0 -12
- package/dist/scripts/gpt-final-arbiter-check.js +0 -63
- package/dist/scripts/gpt-final-arbiter-performance-check.js +0 -36
- package/dist/scripts/gpt-image-2-request-validator-check.js +0 -35
- package/dist/scripts/hooks-0.134-context-parity-check.js +0 -20
- package/dist/scripts/hooks-actual-parity-check.js +0 -17
- package/dist/scripts/hooks-actual-parity-v2-check.js +0 -21
- package/dist/scripts/hooks-latest-schema-check.js +0 -20
- package/dist/scripts/hooks-managed-install-fixture-check.js +0 -21
- package/dist/scripts/hooks-official-hash-oracle-check.js +0 -35
- package/dist/scripts/hooks-official-hash-parity-check.js +0 -17
- package/dist/scripts/hooks-subagent-events-check.js +0 -17
- package/dist/scripts/hooks-trust-state-check.js +0 -14
- package/dist/scripts/image-fidelity-fixture-check.js +0 -24
- package/dist/scripts/imagegen-capability-check.js +0 -30
- package/dist/scripts/imagegen-real-smoke-check.js +0 -155
- package/dist/scripts/install-update-preserves-config-check.js +0 -87
- package/dist/scripts/json-schema-recursive-check.js +0 -78
- package/dist/scripts/legacy-multiagent-removal-check.js +0 -85
- package/dist/scripts/legacy-upgrade-matrix-check.js +0 -300
- package/dist/scripts/local-collab-all-pipelines-final-gpt-check.js +0 -21
- package/dist/scripts/local-collab-gpt-final-availability-check.js +0 -58
- package/dist/scripts/local-collab-no-local-only-final-check.js +0 -27
- package/dist/scripts/local-collab-policy-check.js +0 -17
- package/dist/scripts/local-collab-worktree-gpt-final-apply-policy-check.js +0 -63
- package/dist/scripts/local-llm-all-pipelines-check.js +0 -11
- package/dist/scripts/local-llm-cache-performance-check.js +0 -10
- package/dist/scripts/local-llm-capability-check.js +0 -14
- package/dist/scripts/local-llm-smoke-check.js +0 -23
- package/dist/scripts/local-llm-structured-output-check.js +0 -11
- package/dist/scripts/local-llm-throughput-check.js +0 -10
- package/dist/scripts/local-llm-tool-call-repair-check.js +0 -10
- package/dist/scripts/local-llm-warmup-check.js +0 -11
- package/dist/scripts/loop-blocker-check.js +0 -15
- package/dist/scripts/mad-preflight-blocks-unreadable-config-check.js +0 -35
- package/dist/scripts/mad-sks-actual-executor-blackbox.js +0 -5
- package/dist/scripts/mad-sks-app-ui-no-mutation-check.js +0 -92
- package/dist/scripts/mad-sks-audit-proof-check.js +0 -34
- package/dist/scripts/mad-sks-db-executor-check.js +0 -5
- package/dist/scripts/mad-sks-executor-proof-graph-check.js +0 -5
- package/dist/scripts/mad-sks-fast-mode-propagation-check.js +0 -24
- package/dist/scripts/mad-sks-file-write-executor-check.js +0 -5
- package/dist/scripts/mad-sks-immutable-harness-check.js +0 -36
- package/dist/scripts/mad-sks-no-harness-modification-check.js +0 -25
- package/dist/scripts/mad-sks-package-executor-check.js +0 -5
- package/dist/scripts/mad-sks-permission-model-check.js +0 -22
- package/dist/scripts/mad-sks-rollback-apply-check.js +0 -5
- package/dist/scripts/mad-sks-service-executor-check.js +0 -5
- package/dist/scripts/mad-sks-shell-executor-check.js +0 -5
- package/dist/scripts/mad-sks-write-guard-check.js +0 -28
- package/dist/scripts/mad-sks-zellij-default-pane-worker-check.js +0 -37
- package/dist/scripts/mad-sks-zellij-launch-check.js +0 -102
- package/dist/scripts/mcp-0-134-modernization-check.js +0 -55
- package/dist/scripts/mcp-readonly-concurrency-check.js +0 -17
- package/dist/scripts/mcp-readonly-runtime-scheduler-check.js +0 -20
- package/dist/scripts/mcp-tool-naming-parity-check.js +0 -16
- package/dist/scripts/memory-summary-rebuild-check.js +0 -22
- package/dist/scripts/mutation-callsite-coverage-check.js +0 -180
- package/dist/scripts/naruto-active-pool-check.js +0 -39
- package/dist/scripts/naruto-actual-worker-control-plane-check.js +0 -56
- package/dist/scripts/naruto-allocation-policy-check.js +0 -33
- package/dist/scripts/naruto-allocation-runtime-wiring-check.js +0 -92
- package/dist/scripts/naruto-concurrency-governor-check.js +0 -53
- package/dist/scripts/naruto-extreme-parallelism-check.js +0 -22
- package/dist/scripts/naruto-extreme-parallelism-real-check.js +0 -43
- package/dist/scripts/naruto-gpt-final-pack-check.js +0 -34
- package/dist/scripts/naruto-orchestrator-runtime-source-check.js +0 -70
- package/dist/scripts/naruto-parallel-patch-apply-check.js +0 -41
- package/dist/scripts/naruto-readonly-routing-check.js +0 -116
- package/dist/scripts/naruto-real-active-pool-check.js +0 -39
- package/dist/scripts/naruto-real-active-pool-runtime-check.js +0 -55
- package/dist/scripts/naruto-rebalance-policy-check.js +0 -41
- package/dist/scripts/naruto-role-distribution-check.js +0 -23
- package/dist/scripts/naruto-shadow-clone-swarm-check.js +0 -153
- package/dist/scripts/naruto-verification-pool-check.js +0 -36
- package/dist/scripts/naruto-work-graph-check.js +0 -24
- package/dist/scripts/naruto-worktree-coding-blackbox.js +0 -29
- package/dist/scripts/naruto-worktree-coding-check.js +0 -44
- package/dist/scripts/naruto-worktree-gpt-final-check.js +0 -45
- package/dist/scripts/naruto-worktree-zellij-ui-check.js +0 -28
- package/dist/scripts/naruto-zellij-dynamic-right-column-check.js +0 -48
- package/dist/scripts/naruto-zellij-massive-ui-check.js +0 -23
- package/dist/scripts/non-recursive-pipeline-check.js +0 -68
- package/dist/scripts/npm-publish-performance-check.js +0 -65
- package/dist/scripts/official-docs-compat-report.js +0 -304
- package/dist/scripts/packlist-performance-check.js +0 -83
- package/dist/scripts/parallel-verification-engine-check.js +0 -85
- package/dist/scripts/postinstall-safe-side-effects-check.js +0 -65
- package/dist/scripts/ppt-full-e2e-artifact-graph-check.js +0 -40
- package/dist/scripts/ppt-full-e2e-blackbox-check.js +0 -109
- package/dist/scripts/ppt-image-voxel-relations-check.js +0 -9
- package/dist/scripts/ppt-imagegen-blackbox-check.js +0 -46
- package/dist/scripts/ppt-imagegen-review-fixture-check.js +0 -6
- package/dist/scripts/ppt-issue-extraction-fixture-check.js +0 -7
- package/dist/scripts/ppt-no-mock-as-real-check.js +0 -8
- package/dist/scripts/ppt-no-text-fallback-check.js +0 -7
- package/dist/scripts/ppt-proof-trust-fixture-check.js +0 -10
- package/dist/scripts/ppt-real-export-adapter-check.js +0 -13
- package/dist/scripts/ppt-real-imagegen-smoke-check.js +0 -42
- package/dist/scripts/ppt-real-imagegen-wiring-check.js +0 -16
- package/dist/scripts/ppt-reexport-rereview-check.js +0 -19
- package/dist/scripts/ppt-slide-export-fixture-check.js +0 -7
- package/dist/scripts/prepublish-fast-check.js +0 -128
- package/dist/scripts/priority-full-closure-check.js +0 -12
- package/dist/scripts/product-design-auto-install-check.js +0 -119
- package/dist/scripts/product-design-plugin-routing-check.js +0 -101
- package/dist/scripts/prompt-placeholder-guard-check.js +0 -33
- package/dist/scripts/provider-badge-context-check.js +0 -26
- package/dist/scripts/provider-context-config-toml-check.js +0 -63
- package/dist/scripts/python-codex-sdk-all-pipelines-check.js +0 -47
- package/dist/scripts/python-codex-sdk-capability-check.js +0 -75
- package/dist/scripts/python-codex-sdk-sandbox-policy-check.js +0 -10
- package/dist/scripts/python-codex-sdk-stream-bridge-check.js +0 -12
- package/dist/scripts/python-tools-smoke-check.js +0 -71
- package/dist/scripts/qa-actual-route-backfill-check.js +0 -5
- package/dist/scripts/qa-backfill-route-blackbox.js +0 -5
- package/dist/scripts/qa-patch-swarm-route-blackbox.js +0 -10
- package/dist/scripts/readme-architecture-imagegen-official-check.js +0 -448
- package/dist/scripts/release-cache-glob-hashing-check.js +0 -42
- package/dist/scripts/release-dag-full-coverage-check.js +0 -66
- package/dist/scripts/release-dist-freshness-check.js +0 -8
- package/dist/scripts/release-dynamic-performance-check.js +0 -103
- package/dist/scripts/release-gate-budget-check.js +0 -36
- package/dist/scripts/release-gate-dag-runner-check.js +0 -17
- package/dist/scripts/release-metadata-1-11-check.js +0 -37
- package/dist/scripts/release-metadata-1-12-check.js +0 -48
- package/dist/scripts/release-metadata-1-13-check.js +0 -53
- package/dist/scripts/release-metadata-1-14-check.js +0 -63
- package/dist/scripts/release-metadata-1-16-check.js +0 -81
- package/dist/scripts/release-metadata-1-17-check.js +0 -51
- package/dist/scripts/release-metadata-1-19-check.js +0 -371
- package/dist/scripts/release-metadata-check.js +0 -7
- package/dist/scripts/release-native-agent-fixture-check.js +0 -41
- package/dist/scripts/release-parallel-check.js +0 -374
- package/dist/scripts/release-parallel-full-coverage-check.js +0 -13
- package/dist/scripts/release-parallel-speed-budget-check.js +0 -84
- package/dist/scripts/release-provenance-check.js +0 -150
- package/dist/scripts/release-real-check.js +0 -330
- package/dist/scripts/release-registry-check.js +0 -344
- package/dist/scripts/release-runtime-truth-matrix-check.js +0 -47
- package/dist/scripts/release-stability-report-check.js +0 -99
- package/dist/scripts/release-version-truth-check.js +0 -134
- package/dist/scripts/research-actual-route-backfill-check.js +0 -5
- package/dist/scripts/research-backfill-route-blackbox.js +0 -5
- package/dist/scripts/research-blueprint-densifier-check.js +0 -21
- package/dist/scripts/research-claim-builder-check.js +0 -19
- package/dist/scripts/research-complete-package-fixture-check.js +0 -23
- package/dist/scripts/research-final-reviewer-blackbox.js +0 -22
- package/dist/scripts/research-parallel-source-shards-check.js +0 -22
- package/dist/scripts/research-quality-gate-check.js +0 -111
- package/dist/scripts/research-real-cycle-no-legacy-final-md-check.js +0 -14
- package/dist/scripts/research-short-report-rejection-check.js +0 -46
- package/dist/scripts/research-source-ledger-merge-check.js +0 -26
- package/dist/scripts/research-stage-cycle-runtime-blackbox.js +0 -24
- package/dist/scripts/responses-retry-policy-centralized-check.js +0 -19
- package/dist/scripts/retention-cleanup-safety-check.js +0 -155
- package/dist/scripts/route-blackbox-realism-check.js +0 -21
- package/dist/scripts/route-proof-artifact-structure-check.js +0 -145
- package/dist/scripts/runtime-dist-parity-check.js +0 -78
- package/dist/scripts/runtime-no-mjs-scripts-check.js +0 -45
- package/dist/scripts/runtime-no-src-mjs-check.js +0 -32
- package/dist/scripts/runtime-no-tmux-check.js +0 -113
- package/dist/scripts/runtime-ts-python-boundary-check.js +0 -59
- package/dist/scripts/runtime-ts-rust-boundary-check.js +0 -74
- package/dist/scripts/runtime-ts-source-of-truth-check.js +0 -55
- package/dist/scripts/safety-check.js +0 -23
- package/dist/scripts/shared-memory-fixture-check.js +0 -27
- package/dist/scripts/side-effect-runtime-report-check.js +0 -19
- package/dist/scripts/side-effect-zero-gate-check.js +0 -226
- package/dist/scripts/sks-1-11-fixture-check.js +0 -130
- package/dist/scripts/source-intelligence-all-modes-check.js +0 -32
- package/dist/scripts/source-intelligence-policy-check.js +0 -13
- package/dist/scripts/strategy-adhd-orchestrating-gate-check.js +0 -22
- package/dist/scripts/strategy-file-ownership-plan-check.js +0 -18
- package/dist/scripts/strategy-parallel-modification-plan-check.js +0 -19
- package/dist/scripts/strategy-verification-rollback-dag-check.js +0 -19
- package/dist/scripts/team-actual-route-backfill-check.js +0 -5
- package/dist/scripts/team-backfill-route-blackbox.js +0 -5
- package/dist/scripts/team-parallel-write-blackbox.js +0 -55
- package/dist/scripts/team-patch-swarm-route-blackbox.js +0 -10
- package/dist/scripts/terminal-keyboard-enhancement-safety-check.js +0 -12
- package/dist/scripts/terminal-tui-output-stability-check.js +0 -35
- package/dist/scripts/test-no-orphan-dist-imports-check.js +0 -73
- package/dist/scripts/trust-fixture-check.js +0 -33
- package/dist/scripts/typescript-migration-report.js +0 -78
- package/dist/scripts/ultra-router-auto-router-check.js +0 -33
- package/dist/scripts/ultra-router-classification-check.js +0 -28
- package/dist/scripts/ux-patch-swarm-route-blackbox.js +0 -10
- package/dist/scripts/ux-ppt-structured-extraction-check.js +0 -21
- package/dist/scripts/ux-review-extract-real-callouts-fixture-check.js +0 -8
- package/dist/scripts/ux-review-extract-wires-real-extractor-check.js +0 -15
- package/dist/scripts/ux-review-generate-callouts-fixture-check.js +0 -9
- package/dist/scripts/ux-review-image-voxel-relations-check.js +0 -31
- package/dist/scripts/ux-review-imagegen-blackbox-check.js +0 -67
- package/dist/scripts/ux-review-no-fake-callouts-check.js +0 -8
- package/dist/scripts/ux-review-no-text-fallback-check.js +0 -25
- package/dist/scripts/ux-review-patch-diff-recheck-check.js +0 -20
- package/dist/scripts/ux-review-patch-handoff-fixture-check.js +0 -8
- package/dist/scripts/ux-review-real-imagegen-smoke-check.js +0 -31
- package/dist/scripts/ux-review-real-loop-fixture-check.js +0 -24
- package/dist/scripts/ux-review-recapture-recheck-fixture-check.js +0 -8
- package/dist/scripts/ux-review-run-wires-imagegen-check.js +0 -11
- package/dist/scripts/worker-pane-communication-contract-check.js +0 -54
- package/dist/scripts/wrongness-fixture-check.js +0 -65
- package/dist/scripts/xai-mcp-capability-check.js +0 -14
- package/dist/scripts/zellij-capability-check.js +0 -15
- package/dist/scripts/zellij-dashboard-pane-check.js +0 -70
- package/dist/scripts/zellij-developer-controls-check.js +0 -20
- package/dist/scripts/zellij-doctor-readiness-check.js +0 -63
- package/dist/scripts/zellij-dynamic-pane-lifecycle-check.js +0 -21
- package/dist/scripts/zellij-first-slot-down-stack-check.js +0 -20
- package/dist/scripts/zellij-first-slot-down-stack-real-check.js +0 -356
- package/dist/scripts/zellij-initial-main-only-blackbox.js +0 -28
- package/dist/scripts/zellij-lane-renderer-check.js +0 -65
- package/dist/scripts/zellij-launch-command-truth-check.js +0 -75
- package/dist/scripts/zellij-layout-valid-check.js +0 -90
- package/dist/scripts/zellij-pane-proof-check.js +0 -59
- package/dist/scripts/zellij-real-session-cleanup-check.js +0 -21
- package/dist/scripts/zellij-real-session-heartbeat-check.js +0 -49
- package/dist/scripts/zellij-real-session-launch-check.js +0 -57
- package/dist/scripts/zellij-right-column-headless-overflow-check.js +0 -22
- package/dist/scripts/zellij-right-column-manager-check.js +0 -27
- package/dist/scripts/zellij-screen-proof-check.js +0 -45
- package/dist/scripts/zellij-slot-column-anchor-check.js +0 -66
- package/dist/scripts/zellij-slot-only-ui-check.js +0 -26
- package/dist/scripts/zellij-slot-pane-renderer-check.js +0 -106
- package/dist/scripts/zellij-slot-renderer-proof-semantics-check.js +0 -59
- package/dist/scripts/zellij-spawn-on-demand-layout-check.js +0 -40
- package/dist/scripts/zellij-ui-design-check.js +0 -105
- package/dist/scripts/zellij-worker-pane-manager-check.js +0 -109
- package/dist/scripts/zellij-worker-pane-manager-single-owner-check.js +0 -47
- package/dist/scripts/zellij-worker-pane-real-ui-blackbox.js +0 -202
- package/dist/scripts/zellij-worker-pane-spawn-order-check.js +0 -35
|
@@ -1,344 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
// @ts-nocheck
|
|
3
|
-
import { spawnSync } from 'node:child_process';
|
|
4
|
-
import fs from 'node:fs';
|
|
5
|
-
import os from 'node:os';
|
|
6
|
-
import path from 'node:path';
|
|
7
|
-
import { fileURLToPath } from 'node:url';
|
|
8
|
-
const root = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..', '..');
|
|
9
|
-
const expectedRegistry = 'https://registry.npmjs.org/';
|
|
10
|
-
const requireUnpublished = process.argv.includes('--require-unpublished');
|
|
11
|
-
const requirePublishAuth = process.argv.includes('--require-publish-auth');
|
|
12
|
-
const skipNetwork = process.env.SKS_SKIP_REGISTRY_NETWORK_CHECK === '1';
|
|
13
|
-
const npmBin = process.platform === 'win32' ? 'npm.cmd' : 'npm';
|
|
14
|
-
function fail(message, detail = '') {
|
|
15
|
-
console.error(`Release registry check failed: ${message}`);
|
|
16
|
-
if (detail)
|
|
17
|
-
console.error(detail.trim());
|
|
18
|
-
process.exit(2);
|
|
19
|
-
}
|
|
20
|
-
function normalizeRegistry(value) {
|
|
21
|
-
if (!value)
|
|
22
|
-
return '';
|
|
23
|
-
return String(value).trim().replace(/\/?$/, '/');
|
|
24
|
-
}
|
|
25
|
-
function readJson(file) {
|
|
26
|
-
try {
|
|
27
|
-
return JSON.parse(fs.readFileSync(path.join(root, file), 'utf8'));
|
|
28
|
-
}
|
|
29
|
-
catch (err) {
|
|
30
|
-
fail(`unable to read ${file}`, err.message);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
function run(cmd, args, options = {}) {
|
|
34
|
-
return spawnSync(cmd, args, {
|
|
35
|
-
cwd: root,
|
|
36
|
-
encoding: 'utf8',
|
|
37
|
-
timeout: 30000,
|
|
38
|
-
...options
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
function npmRegistryReadEnv(overrides = {}) {
|
|
42
|
-
const env = { ...process.env, ...overrides };
|
|
43
|
-
delete env.npm_config_tag;
|
|
44
|
-
delete env.NPM_CONFIG_TAG;
|
|
45
|
-
return env;
|
|
46
|
-
}
|
|
47
|
-
function checkPackagePublishConfig(pkg) {
|
|
48
|
-
if (pkg.private)
|
|
49
|
-
fail('package.json private=true would block public npm publication');
|
|
50
|
-
if (pkg.publishConfig?.access !== 'public') {
|
|
51
|
-
fail('package.json publishConfig.access must be public', `found: ${pkg.publishConfig?.access || 'missing'}`);
|
|
52
|
-
}
|
|
53
|
-
const registry = normalizeRegistry(pkg.publishConfig?.registry);
|
|
54
|
-
if (registry !== expectedRegistry) {
|
|
55
|
-
fail('package.json publishConfig.registry must target npmjs', `found: ${registry || 'missing'}\nexpected: ${expectedRegistry}`);
|
|
56
|
-
}
|
|
57
|
-
const isPrerelease = /-/.test(String(pkg.version || ''));
|
|
58
|
-
if (isPrerelease && pkg.publishConfig?.tag !== 'rc') {
|
|
59
|
-
fail('package.json publishConfig.tag must be rc for prerelease versions', `found: ${pkg.publishConfig?.tag || 'missing'}\nversion: ${pkg.version}`);
|
|
60
|
-
}
|
|
61
|
-
if (!isPrerelease && pkg.publishConfig?.tag && pkg.publishConfig.tag !== 'latest') {
|
|
62
|
-
fail('package.json publishConfig.tag must be latest or omitted for stable versions', `found: ${pkg.publishConfig.tag}\nversion: ${pkg.version}`);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
function checkRootNpmrc(pkg) {
|
|
66
|
-
const npmrcPath = path.join(root, '.npmrc');
|
|
67
|
-
if (!fs.existsSync(npmrcPath))
|
|
68
|
-
return;
|
|
69
|
-
const text = fs.readFileSync(npmrcPath, 'utf8');
|
|
70
|
-
const unsafe = [];
|
|
71
|
-
const isPrerelease = /-/.test(String(pkg.version || ''));
|
|
72
|
-
for (const [index, line] of text.split(/\r?\n/).entries()) {
|
|
73
|
-
const trimmed = line.trim();
|
|
74
|
-
if (!trimmed || trimmed.startsWith('#') || trimmed.startsWith(';'))
|
|
75
|
-
continue;
|
|
76
|
-
const match = trimmed.match(/^(?:@[^:]+:)?registry\s*=\s*(.+)$/);
|
|
77
|
-
if (match && normalizeRegistry(match[1]) !== expectedRegistry)
|
|
78
|
-
unsafe.push(`${index + 1}: ${trimmed}`);
|
|
79
|
-
const tagMatch = trimmed.match(/^tag\s*=\s*(.+)$/);
|
|
80
|
-
if (tagMatch) {
|
|
81
|
-
const tag = tagMatch[1].trim();
|
|
82
|
-
if (isPrerelease && tag !== 'rc')
|
|
83
|
-
unsafe.push(`${index + 1}: ${trimmed}`);
|
|
84
|
-
if (!isPrerelease && tag !== 'latest')
|
|
85
|
-
unsafe.push(`${index + 1}: ${trimmed}`);
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
if (unsafe.length) {
|
|
89
|
-
fail('root .npmrc contains publish config incompatible with this release', unsafe.join('\n'));
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
function checkLockfile(pkg) {
|
|
93
|
-
const lock = readJson('package-lock.json');
|
|
94
|
-
const rootPackage = lock.packages?.[''];
|
|
95
|
-
const mismatches = [
|
|
96
|
-
['package-lock.json name', lock.name, pkg.name],
|
|
97
|
-
['package-lock.json version', lock.version, pkg.version],
|
|
98
|
-
['package-lock root package name', rootPackage?.name, pkg.name],
|
|
99
|
-
['package-lock root package version', rootPackage?.version, pkg.version]
|
|
100
|
-
].filter(([, actual, expected]) => actual !== expected);
|
|
101
|
-
if (mismatches.length) {
|
|
102
|
-
fail('package-lock metadata is not synchronized', mismatches.map(([label, actual, expected]) => `${label}: ${actual || 'missing'} (expected ${expected})`).join('\n'));
|
|
103
|
-
}
|
|
104
|
-
const unsafeResolved = [];
|
|
105
|
-
for (const [entry, meta] of Object.entries(lock.packages || {})) {
|
|
106
|
-
const resolved = meta?.resolved;
|
|
107
|
-
if (!resolved || resolved.startsWith('file:') || resolved.startsWith('link:'))
|
|
108
|
-
continue;
|
|
109
|
-
let parsed;
|
|
110
|
-
try {
|
|
111
|
-
parsed = new URL(resolved);
|
|
112
|
-
}
|
|
113
|
-
catch {
|
|
114
|
-
unsafeResolved.push(`${entry || '<root>'}: ${resolved}`);
|
|
115
|
-
continue;
|
|
116
|
-
}
|
|
117
|
-
if (parsed.protocol === 'https:' && parsed.hostname === 'registry.npmjs.org')
|
|
118
|
-
continue;
|
|
119
|
-
unsafeResolved.push(`${entry || '<root>'}: ${resolved}`);
|
|
120
|
-
}
|
|
121
|
-
if (unsafeResolved.length) {
|
|
122
|
-
fail('package-lock contains dependencies resolved outside registry.npmjs.org', unsafeResolved.join('\n'));
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
function checkPackedMetadata(pkg) {
|
|
126
|
-
const env = npmRegistryReadEnv({
|
|
127
|
-
npm_config_cache: process.env.SKS_RELEASE_NPM_CACHE || path.join(os.tmpdir(), 'sneakoscope-npm-cache')
|
|
128
|
-
});
|
|
129
|
-
const result = run(npmBin, ['pack', '--dry-run', '--json', '--ignore-scripts', '--registry', expectedRegistry], { env });
|
|
130
|
-
if (result.status !== 0)
|
|
131
|
-
fail('npm pack dry-run failed', `${result.stdout || ''}\n${result.stderr || ''}`);
|
|
132
|
-
let info;
|
|
133
|
-
try {
|
|
134
|
-
info = JSON.parse(result.stdout)[0];
|
|
135
|
-
}
|
|
136
|
-
catch {
|
|
137
|
-
fail('npm pack dry-run returned non-json output', result.stdout || '');
|
|
138
|
-
}
|
|
139
|
-
if (!info)
|
|
140
|
-
fail('npm pack dry-run returned no package metadata');
|
|
141
|
-
if (info.name !== pkg.name || info.version !== pkg.version) {
|
|
142
|
-
fail('packed package metadata differs from package.json', `pack: ${info.name || 'missing'}@${info.version || 'missing'}\npackage.json: ${pkg.name}@${pkg.version}`);
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
function compareVersions(a, b) {
|
|
146
|
-
const pa = String(a || '').split(/[.-]/).map((part) => Number.parseInt(part, 10));
|
|
147
|
-
const pb = String(b || '').split(/[.-]/).map((part) => Number.parseInt(part, 10));
|
|
148
|
-
const len = Math.max(pa.length, pb.length);
|
|
149
|
-
for (let i = 0; i < len; i += 1) {
|
|
150
|
-
const da = Number.isFinite(pa[i]) ? pa[i] : 0;
|
|
151
|
-
const db = Number.isFinite(pb[i]) ? pb[i] : 0;
|
|
152
|
-
if (da !== db)
|
|
153
|
-
return da > db ? 1 : -1;
|
|
154
|
-
}
|
|
155
|
-
return 0;
|
|
156
|
-
}
|
|
157
|
-
function checkPublishedVersion(pkg) {
|
|
158
|
-
if (skipNetwork) {
|
|
159
|
-
console.log('Registry network check skipped by SKS_SKIP_REGISTRY_NETWORK_CHECK=1.');
|
|
160
|
-
return;
|
|
161
|
-
}
|
|
162
|
-
const env = npmRegistryReadEnv({
|
|
163
|
-
npm_config_cache: process.env.SKS_RELEASE_NPM_CACHE || path.join(os.tmpdir(), 'sneakoscope-npm-cache')
|
|
164
|
-
});
|
|
165
|
-
const result = run(npmBin, ['view', `${pkg.name}@latest`, 'version', 'dist-tags', '--json', '--registry', expectedRegistry], { env });
|
|
166
|
-
if (result.status !== 0)
|
|
167
|
-
fail('npm registry metadata lookup failed', `${result.stdout || ''}\n${result.stderr || ''}`);
|
|
168
|
-
let info;
|
|
169
|
-
try {
|
|
170
|
-
info = JSON.parse(result.stdout);
|
|
171
|
-
}
|
|
172
|
-
catch {
|
|
173
|
-
fail('npm registry metadata lookup returned non-json output', result.stdout || '');
|
|
174
|
-
}
|
|
175
|
-
const latest = info?.['dist-tags']?.latest || info?.version || null;
|
|
176
|
-
if (!latest)
|
|
177
|
-
fail('npm registry metadata lookup did not return a latest version');
|
|
178
|
-
const exact = run(npmBin, ['view', `${pkg.name}@${pkg.version}`, 'version', '--json', '--registry', expectedRegistry], { env });
|
|
179
|
-
let exactPublished = false;
|
|
180
|
-
if (exact.status === 0) {
|
|
181
|
-
try {
|
|
182
|
-
const exactInfo = JSON.parse(exact.stdout);
|
|
183
|
-
exactPublished = Array.isArray(exactInfo) ? exactInfo.includes(pkg.version) : exactInfo === pkg.version;
|
|
184
|
-
}
|
|
185
|
-
catch {
|
|
186
|
-
exactPublished = String(exact.stdout || '').includes(pkg.version);
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
else if (!/E404|No match found|not in this registry/i.test(`${exact.stdout || ''}\n${exact.stderr || ''}`)) {
|
|
190
|
-
fail('npm exact-version lookup failed', `${exact.stdout || ''}\n${exact.stderr || ''}`);
|
|
191
|
-
}
|
|
192
|
-
if (requireUnpublished && exactPublished) {
|
|
193
|
-
fail('package version is already published on npm', `${pkg.name}@${pkg.version}`);
|
|
194
|
-
}
|
|
195
|
-
const cmp = compareVersions(pkg.version, latest);
|
|
196
|
-
if (requireUnpublished && cmp <= 0) {
|
|
197
|
-
fail('package version is not newer than the npm latest dist-tag', `package.json: ${pkg.version}\nnpm latest: ${latest}`);
|
|
198
|
-
}
|
|
199
|
-
const note = exactPublished
|
|
200
|
-
? `exact version already exists; current npm latest is ${latest}`
|
|
201
|
-
: (cmp > 0 ? `ready for new publish over npm latest ${latest}` : `current npm latest is ${latest}`);
|
|
202
|
-
console.log(`Registry metadata check passed: ${pkg.name}@${pkg.version}; ${note}.`);
|
|
203
|
-
}
|
|
204
|
-
function checkPublishAuth(pkg) {
|
|
205
|
-
if (skipNetwork) {
|
|
206
|
-
fail('publish auth check cannot run when SKS_SKIP_REGISTRY_NETWORK_CHECK=1 is set');
|
|
207
|
-
}
|
|
208
|
-
const env = npmRegistryReadEnv({
|
|
209
|
-
npm_config_cache: process.env.SKS_RELEASE_NPM_CACHE || path.join(os.tmpdir(), 'sneakoscope-npm-cache')
|
|
210
|
-
});
|
|
211
|
-
const whoami = run(npmBin, ['whoami', '--registry', expectedRegistry], { env });
|
|
212
|
-
if (whoami.status !== 0) {
|
|
213
|
-
const authHints = npmAuthSourceHints(env);
|
|
214
|
-
fail('npm publish auth is missing or invalid', [
|
|
215
|
-
tail(`${whoami.stdout || ''}\n${whoami.stderr || ''}`),
|
|
216
|
-
'',
|
|
217
|
-
...publishAuthRepairInstructions(pkg, authHints)
|
|
218
|
-
].join('\n'));
|
|
219
|
-
}
|
|
220
|
-
const user = normalizeNpmUser(whoami.stdout);
|
|
221
|
-
if (!user)
|
|
222
|
-
fail('npm whoami returned an empty username', whoami.stdout || '');
|
|
223
|
-
const maintainers = packageMaintainers(pkg, env);
|
|
224
|
-
if (maintainers.length > 0 && !maintainers.includes(user)) {
|
|
225
|
-
fail('authenticated npm user is not a package maintainer', [
|
|
226
|
-
`npm whoami: ${user}`,
|
|
227
|
-
`${pkg.name} maintainers: ${maintainers.join(', ')}`,
|
|
228
|
-
`Log in as one of the listed maintainers or ask an owner to run \`npm owner add ${user} ${pkg.name}\`.`
|
|
229
|
-
].join('\n'));
|
|
230
|
-
}
|
|
231
|
-
const report = {
|
|
232
|
-
schema: 'sks.release-publish-auth.v1',
|
|
233
|
-
ok: true,
|
|
234
|
-
package: pkg.name,
|
|
235
|
-
version: pkg.version,
|
|
236
|
-
registry: expectedRegistry,
|
|
237
|
-
npm_user: user,
|
|
238
|
-
maintainers,
|
|
239
|
-
maintainer_match: maintainers.length === 0 ? null : maintainers.includes(user),
|
|
240
|
-
generated_at: new Date().toISOString()
|
|
241
|
-
};
|
|
242
|
-
const out = path.join(root, '.sneakoscope', 'reports', 'release-publish-auth.json');
|
|
243
|
-
fs.mkdirSync(path.dirname(out), { recursive: true });
|
|
244
|
-
fs.writeFileSync(out, `${JSON.stringify(report, null, 2)}\n`);
|
|
245
|
-
console.log(`Publish auth check passed: ${pkg.name}@${pkg.version} as ${user}.`);
|
|
246
|
-
}
|
|
247
|
-
function publishAuthRepairInstructions(pkg, authHints) {
|
|
248
|
-
const lines = [];
|
|
249
|
-
if (authHints.length > 0) {
|
|
250
|
-
lines.push(`npm auth config was found (${authHints.join(', ')}), but the npm registry rejected it.`);
|
|
251
|
-
lines.push('That usually means the token is expired, revoked, not valid for npmjs.org, or not publish-capable for this package.');
|
|
252
|
-
}
|
|
253
|
-
else {
|
|
254
|
-
lines.push('No npm auth token was found in the checked npm config/env locations.');
|
|
255
|
-
}
|
|
256
|
-
lines.push(`Refresh local auth: \`npm logout --registry ${expectedRegistry}\`, then \`npm login --registry ${expectedRegistry}\` as a maintainer of ${pkg.name}.`);
|
|
257
|
-
lines.push(`Verify before publishing: \`npm whoami --registry ${expectedRegistry}\`.`);
|
|
258
|
-
lines.push('For token-based publishing, configure npm itself with a registry token, for example `//registry.npmjs.org/:_authToken=${NODE_AUTH_TOKEN}` in the npm userconfig/project .npmrc and export a publish-capable token. A raw `NPM_TOKEN` environment variable alone is not enough unless npm config references it.');
|
|
259
|
-
return lines;
|
|
260
|
-
}
|
|
261
|
-
function npmAuthSourceHints(env) {
|
|
262
|
-
const hints = [];
|
|
263
|
-
if (env.NODE_AUTH_TOKEN)
|
|
264
|
-
hints.push('NODE_AUTH_TOKEN env');
|
|
265
|
-
if (env.NPM_TOKEN)
|
|
266
|
-
hints.push('NPM_TOKEN env (requires npmrc interpolation)');
|
|
267
|
-
for (const file of npmConfigCandidateFiles(env)) {
|
|
268
|
-
for (const hint of npmAuthHintsFromFile(file))
|
|
269
|
-
hints.push(hint);
|
|
270
|
-
}
|
|
271
|
-
return [...new Set(hints)];
|
|
272
|
-
}
|
|
273
|
-
function npmConfigCandidateFiles(env) {
|
|
274
|
-
const files = [
|
|
275
|
-
path.join(root, '.npmrc'),
|
|
276
|
-
env.npm_config_userconfig,
|
|
277
|
-
env.NPM_CONFIG_USERCONFIG,
|
|
278
|
-
path.join(os.homedir(), '.npmrc')
|
|
279
|
-
].filter(Boolean);
|
|
280
|
-
return [...new Set(files.map((file) => path.resolve(String(file))))];
|
|
281
|
-
}
|
|
282
|
-
function npmAuthHintsFromFile(file) {
|
|
283
|
-
if (!fs.existsSync(file))
|
|
284
|
-
return [];
|
|
285
|
-
let text = '';
|
|
286
|
-
try {
|
|
287
|
-
text = fs.readFileSync(file, 'utf8');
|
|
288
|
-
}
|
|
289
|
-
catch {
|
|
290
|
-
return [];
|
|
291
|
-
}
|
|
292
|
-
const hints = [];
|
|
293
|
-
for (const [index, line] of text.split(/\r?\n/).entries()) {
|
|
294
|
-
const trimmed = line.trim();
|
|
295
|
-
if (!trimmed || trimmed.startsWith('#') || trimmed.startsWith(';'))
|
|
296
|
-
continue;
|
|
297
|
-
const lower = trimmed.toLowerCase();
|
|
298
|
-
const hasAuthKey = /(?::|^)_authtoken\s*=|(?::|^)_auth\s*=|(?::|^)username\s*=|(?::|^)_password\s*=/.test(lower);
|
|
299
|
-
if (!hasAuthKey)
|
|
300
|
-
continue;
|
|
301
|
-
const scopedToExpectedRegistry = lower.includes('//registry.npmjs.org/') || lower.startsWith('_auth');
|
|
302
|
-
if (scopedToExpectedRegistry)
|
|
303
|
-
hints.push(`${file}:${index + 1}`);
|
|
304
|
-
}
|
|
305
|
-
return hints;
|
|
306
|
-
}
|
|
307
|
-
function packageMaintainers(pkg, env) {
|
|
308
|
-
const result = run(npmBin, ['view', pkg.name, 'maintainers', '--json', '--registry', expectedRegistry], { env });
|
|
309
|
-
if (result.status !== 0) {
|
|
310
|
-
const text = `${result.stdout || ''}\n${result.stderr || ''}`;
|
|
311
|
-
if (/E404|not in this registry|No match found/i.test(text))
|
|
312
|
-
return [];
|
|
313
|
-
fail('npm maintainer lookup failed', text);
|
|
314
|
-
}
|
|
315
|
-
try {
|
|
316
|
-
const parsed = JSON.parse(result.stdout);
|
|
317
|
-
const rows = Array.isArray(parsed) ? parsed : (parsed ? [parsed] : []);
|
|
318
|
-
return [...new Set(rows.map(normalizeNpmUser).filter(Boolean))].sort();
|
|
319
|
-
}
|
|
320
|
-
catch {
|
|
321
|
-
return [...new Set(String(result.stdout || '').split(/\r?\n/).map(normalizeNpmUser).filter(Boolean))].sort();
|
|
322
|
-
}
|
|
323
|
-
}
|
|
324
|
-
function normalizeNpmUser(value) {
|
|
325
|
-
if (!value)
|
|
326
|
-
return '';
|
|
327
|
-
if (typeof value === 'object')
|
|
328
|
-
return normalizeNpmUser(value.name || value.username || '');
|
|
329
|
-
return String(value).trim().replace(/^@/, '').split(/\s+/)[0].toLowerCase();
|
|
330
|
-
}
|
|
331
|
-
function tail(value, limit = 1200) {
|
|
332
|
-
const text = String(value || '').trim();
|
|
333
|
-
return text.length > limit ? text.slice(-limit) : text;
|
|
334
|
-
}
|
|
335
|
-
const pkg = readJson('package.json');
|
|
336
|
-
checkPackagePublishConfig(pkg);
|
|
337
|
-
checkRootNpmrc(pkg);
|
|
338
|
-
checkLockfile(pkg);
|
|
339
|
-
checkPackedMetadata(pkg);
|
|
340
|
-
checkPublishedVersion(pkg);
|
|
341
|
-
if (requirePublishAuth)
|
|
342
|
-
checkPublishAuth(pkg);
|
|
343
|
-
console.log(`Release registry check passed: ${pkg.name}@${pkg.version} -> ${expectedRegistry}`);
|
|
344
|
-
//# sourceMappingURL=release-registry-check.js.map
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
// @ts-nocheck
|
|
3
|
-
import { assertGate, emitGate, importDist, root, readJson } from './sks-1-18-gate-lib.js';
|
|
4
|
-
const releaseVersion = readJson('package.json').version;
|
|
5
|
-
const mod = await importDist('core/proof/runtime-truth-matrix.js');
|
|
6
|
-
const matrix = await mod.buildRuntimeTruthMatrix({ root, releaseVersion });
|
|
7
|
-
await mod.writeRuntimeTruthMatrix(root, matrix);
|
|
8
|
-
const requiredRows = [
|
|
9
|
-
'zellij_pane',
|
|
10
|
-
'codex_dynamic',
|
|
11
|
-
'cleanup',
|
|
12
|
-
'intelligent_work_graph',
|
|
13
|
-
'source_intelligence',
|
|
14
|
-
'goal_mode',
|
|
15
|
-
'route_blackbox',
|
|
16
|
-
'dynamic_scheduler',
|
|
17
|
-
'warp_mad_lanes',
|
|
18
|
-
'codex_0_134',
|
|
19
|
-
'mcp_0_134',
|
|
20
|
-
'parallel_write',
|
|
21
|
-
'patch_proof',
|
|
22
|
-
'native_cli_session_swarm',
|
|
23
|
-
'real_codex_parallel_workers',
|
|
24
|
-
'native_worker_backend_router',
|
|
25
|
-
'codex_child_overlap',
|
|
26
|
-
'model_authored_patch_envelopes',
|
|
27
|
-
'fast_mode_child_propagation',
|
|
28
|
-
'cleanup_v4',
|
|
29
|
-
'ast_type_work_graph',
|
|
30
|
-
'warp_mad_right_lanes'
|
|
31
|
-
];
|
|
32
|
-
assertGate(matrix.schema === 'sks.runtime-truth-matrix.v1', 'runtime truth matrix schema mismatch', matrix);
|
|
33
|
-
for (const subsystem of requiredRows) {
|
|
34
|
-
const row = matrix.rows.find((item) => item.subsystem === subsystem);
|
|
35
|
-
assertGate(Boolean(row), `runtime truth matrix missing subsystem ${subsystem}`, matrix);
|
|
36
|
-
assertGate(typeof row.proof_level === 'string', `runtime truth row missing proof level: ${subsystem}`, row);
|
|
37
|
-
assertGate(Array.isArray(row.evidence_artifacts), `runtime truth row missing evidence artifacts: ${subsystem}`, row);
|
|
38
|
-
assertGate(Array.isArray(row.blockers), `runtime truth row missing blockers: ${subsystem}`, row);
|
|
39
|
-
assertGate(typeof row.next_action === 'string', `runtime truth row missing next action: ${subsystem}`, row);
|
|
40
|
-
assertGate(typeof row.required_mode === 'boolean', `runtime truth row missing required mode: ${subsystem}`, row);
|
|
41
|
-
}
|
|
42
|
-
for (const priority of ['P0', 'P1', 'P2', 'P3', 'P4', 'P5', 'P6']) {
|
|
43
|
-
assertGate(['closed', 'blocked', 'not_applicable_with_proof'].includes(matrix.priorities[priority]?.status), `runtime truth matrix missing ${priority}`, matrix);
|
|
44
|
-
}
|
|
45
|
-
assertGate(matrix.ok === true, 'runtime truth matrix has required blockers', matrix);
|
|
46
|
-
emitGate('release:runtime-truth-matrix', { subsystems: matrix.rows.length, version: releaseVersion });
|
|
47
|
-
//# sourceMappingURL=release-runtime-truth-matrix-check.js.map
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
// @ts-nocheck
|
|
3
|
-
import fs from 'node:fs';
|
|
4
|
-
import path from 'node:path';
|
|
5
|
-
import { assertGate, emitGate, readJson, root } from './sks-1-18-gate-lib.js';
|
|
6
|
-
const manifest = readJson('release-gates.v2.json');
|
|
7
|
-
const currentRunDir = process.env.SKS_REPORT_DIR ? path.dirname(process.env.SKS_REPORT_DIR) : null;
|
|
8
|
-
const latestReleaseRun = currentRunDir || latestDir(path.join(root, '.sneakoscope', 'reports', 'release-gates'));
|
|
9
|
-
const latestSummary = currentRunDir ? summarizeCurrentRun(currentRunDir) : latestReleaseRun ? readJsonIfExists(path.join(latestReleaseRun, 'summary.json')) : null;
|
|
10
|
-
const zellijReportPath = path.join(root, '.sneakoscope', 'reports', 'zellij-worker-pane-real-ui-blackbox.json');
|
|
11
|
-
const zellij = fs.existsSync(zellijReportPath) ? JSON.parse(fs.readFileSync(zellijReportPath, 'utf8')) : null;
|
|
12
|
-
const requiredGateIds = [
|
|
13
|
-
'release:dag-runner',
|
|
14
|
-
'release:parallel-speed-budget',
|
|
15
|
-
'git:worktree-manifest-append',
|
|
16
|
-
'git:worktree-dirty-main-detection',
|
|
17
|
-
'git:worktree-untracked-diff',
|
|
18
|
-
'git:worktree-diff-envelope',
|
|
19
|
-
'git:worktree-integration-primary',
|
|
20
|
-
'git:worktree-dirty-lock',
|
|
21
|
-
'naruto:worktree-coding:blackbox',
|
|
22
|
-
'release:version-truth'
|
|
23
|
-
];
|
|
24
|
-
const manifestIds = new Set(manifest.gates.map((gate) => gate.id));
|
|
25
|
-
const missing = requiredGateIds.filter((id) => !manifestIds.has(id));
|
|
26
|
-
const score = computeScore({ missing, latestSummary, zellij });
|
|
27
|
-
const report = {
|
|
28
|
-
schema: 'sks.release-stability-report.v1',
|
|
29
|
-
ok: score >= 9.5 && missing.length === 0 && latestSummary?.ok === true && zellij?.ok === true,
|
|
30
|
-
target_score: 9.5,
|
|
31
|
-
score,
|
|
32
|
-
manifest_gate_count: manifest.gates.length,
|
|
33
|
-
latest_release_summary: latestSummary ? path.relative(root, path.join(latestReleaseRun, 'summary.json')) : null,
|
|
34
|
-
release_check_ok: latestSummary?.ok === true,
|
|
35
|
-
release_check_passed: latestSummary?.completed || 0,
|
|
36
|
-
release_check_failed: latestSummary?.failed || 0,
|
|
37
|
-
zellij_real_worker_panes_ok: zellij?.ok === true,
|
|
38
|
-
zellij_real_worker_panes: zellij?.real_pane_ids || 0,
|
|
39
|
-
missing_required_gates: missing,
|
|
40
|
-
blockers: []
|
|
41
|
-
};
|
|
42
|
-
if (!report.ok) {
|
|
43
|
-
report.blockers = [
|
|
44
|
-
...(score >= 9.5 ? [] : ['stability_score_below_target']),
|
|
45
|
-
...(missing.length ? ['required_release_gate_missing'] : []),
|
|
46
|
-
...(latestSummary?.ok === true ? [] : ['latest_release_check_not_green']),
|
|
47
|
-
...(zellij?.ok === true ? [] : ['zellij_real_worker_panes_not_green'])
|
|
48
|
-
];
|
|
49
|
-
}
|
|
50
|
-
fs.mkdirSync(path.join(root, '.sneakoscope', 'reports'), { recursive: true });
|
|
51
|
-
fs.writeFileSync(path.join(root, '.sneakoscope', 'reports', 'release-stability-report.json'), `${JSON.stringify(report, null, 2)}\n`);
|
|
52
|
-
assertGate(report.ok, 'release stability report must meet 9.5+ target', report);
|
|
53
|
-
emitGate('release:stability-report', report);
|
|
54
|
-
function computeScore({ missing, latestSummary, zellij }) {
|
|
55
|
-
let score = 10;
|
|
56
|
-
score -= missing.length * 0.25;
|
|
57
|
-
if (latestSummary?.ok !== true)
|
|
58
|
-
score -= 1.5;
|
|
59
|
-
if ((latestSummary?.failed || 0) > 0)
|
|
60
|
-
score -= 1;
|
|
61
|
-
if (zellij?.ok !== true)
|
|
62
|
-
score -= 1;
|
|
63
|
-
return Number(Math.max(0, score).toFixed(2));
|
|
64
|
-
}
|
|
65
|
-
function latestDir(dir) {
|
|
66
|
-
if (!fs.existsSync(dir))
|
|
67
|
-
return null;
|
|
68
|
-
const dirs = fs.readdirSync(dir)
|
|
69
|
-
.map((name) => path.join(dir, name))
|
|
70
|
-
.filter((candidate) => fs.statSync(candidate).isDirectory())
|
|
71
|
-
.sort((a, b) => fs.statSync(b).mtimeMs - fs.statSync(a).mtimeMs);
|
|
72
|
-
return dirs[0] || null;
|
|
73
|
-
}
|
|
74
|
-
function summarizeCurrentRun(runDir) {
|
|
75
|
-
const results = [];
|
|
76
|
-
for (const entry of fs.readdirSync(runDir)) {
|
|
77
|
-
const result = readJsonIfExists(path.join(runDir, entry, 'result.json'));
|
|
78
|
-
if (result && result.id !== 'release:stability-report')
|
|
79
|
-
results.push(result);
|
|
80
|
-
}
|
|
81
|
-
if (!results.length)
|
|
82
|
-
return null;
|
|
83
|
-
const failed = results.filter((result) => result.ok !== true);
|
|
84
|
-
return {
|
|
85
|
-
schema: 'sks.release-gate-current-run-summary.v1',
|
|
86
|
-
ok: failed.length === 0,
|
|
87
|
-
completed: results.filter((result) => result.ok === true).length,
|
|
88
|
-
failed: failed.length
|
|
89
|
-
};
|
|
90
|
-
}
|
|
91
|
-
function readJsonIfExists(file) {
|
|
92
|
-
try {
|
|
93
|
-
return JSON.parse(fs.readFileSync(file, 'utf8'));
|
|
94
|
-
}
|
|
95
|
-
catch {
|
|
96
|
-
return null;
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
//# sourceMappingURL=release-stability-report-check.js.map
|
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
// @ts-nocheck
|
|
3
|
-
import fs from 'node:fs';
|
|
4
|
-
import path from 'node:path';
|
|
5
|
-
import { spawnSync } from 'node:child_process';
|
|
6
|
-
import { assertGate, emitGate, root } from './sks-1-18-gate-lib.js';
|
|
7
|
-
const pkg = readJson('package.json');
|
|
8
|
-
const expected = String(pkg.version || '');
|
|
9
|
-
const mismatches = [];
|
|
10
|
-
const warnings = [];
|
|
11
|
-
checkJson('package.json', 'version', pkg.version);
|
|
12
|
-
const lock = readJson('package-lock.json');
|
|
13
|
-
checkJson('package-lock.json', 'version', lock.version);
|
|
14
|
-
checkJson('package-lock.json', 'packages[""].version', lock.packages?.['']?.version);
|
|
15
|
-
checkRegex('src/core/version.ts', /PACKAGE_VERSION\s*=\s*['"]([^'"]+)['"]/, 'PACKAGE_VERSION');
|
|
16
|
-
checkRegex('src/core/fsx.ts', /PACKAGE_VERSION\s*=\s*['"]([^'"]+)['"]/, 'PACKAGE_VERSION');
|
|
17
|
-
checkRegex('src/bin/sks.ts', /FAST_PACKAGE_VERSION\s*=\s*['"]([^'"]+)['"]/, 'FAST_PACKAGE_VERSION');
|
|
18
|
-
checkRegex('crates/sks-core/Cargo.toml', /^version\s*=\s*"([^"]+)"/m, 'package.version');
|
|
19
|
-
checkCargoLock('crates/sks-core/Cargo.lock', 'sks-core');
|
|
20
|
-
const dist = readJson('dist/build-manifest.json', null);
|
|
21
|
-
checkJson('dist/build-manifest.json', 'package_version', dist?.package_version);
|
|
22
|
-
checkJson('dist/build-manifest.json', 'version', dist?.version);
|
|
23
|
-
checkChangelog();
|
|
24
|
-
checkReadme();
|
|
25
|
-
checkReleaseMetadataScript();
|
|
26
|
-
checkCargoMetadata();
|
|
27
|
-
const ok = mismatches.length === 0;
|
|
28
|
-
const report = {
|
|
29
|
-
schema: 'sks.release-version-truth.v1',
|
|
30
|
-
ok,
|
|
31
|
-
expected,
|
|
32
|
-
mismatches,
|
|
33
|
-
warnings,
|
|
34
|
-
generated_at: new Date().toISOString()
|
|
35
|
-
};
|
|
36
|
-
const out = path.join(root, '.sneakoscope', 'reports', 'release-version-truth.json');
|
|
37
|
-
fs.mkdirSync(path.dirname(out), { recursive: true });
|
|
38
|
-
fs.writeFileSync(out, `${JSON.stringify(report, null, 2)}\n`);
|
|
39
|
-
assertGate(ok, 'release version truth mismatch', { expected, mismatches });
|
|
40
|
-
emitGate('release:version-truth', { version: expected, checked: 13, warnings: warnings.length });
|
|
41
|
-
function checkJson(file, field, actual) {
|
|
42
|
-
if (actual !== expected)
|
|
43
|
-
mismatch(file, field, actual);
|
|
44
|
-
}
|
|
45
|
-
function checkRegex(file, re, field) {
|
|
46
|
-
const text = readText(file);
|
|
47
|
-
const match = text.match(re);
|
|
48
|
-
if (!match)
|
|
49
|
-
mismatch(file, field, null);
|
|
50
|
-
else if (match[1] !== expected)
|
|
51
|
-
mismatch(file, field, match[1]);
|
|
52
|
-
}
|
|
53
|
-
function checkCargoLock(file, name) {
|
|
54
|
-
const text = readText(file);
|
|
55
|
-
const block = text.split(/\n\[\[package\]\]\n/).find((part) => new RegExp(`name\\s*=\\s*"${escapeRe(name)}"`).test(part));
|
|
56
|
-
const match = block?.match(/version\s*=\s*"([^"]+)"/);
|
|
57
|
-
if (!match)
|
|
58
|
-
mismatch(file, `${name}.version`, null);
|
|
59
|
-
else if (match[1] !== expected)
|
|
60
|
-
mismatch(file, `${name}.version`, match[1]);
|
|
61
|
-
}
|
|
62
|
-
function checkChangelog() {
|
|
63
|
-
const text = readText('CHANGELOG.md');
|
|
64
|
-
const latest = latestVersionedChangelogSection(text);
|
|
65
|
-
if (latest !== expected)
|
|
66
|
-
mismatch('CHANGELOG.md', 'latest release section', latest);
|
|
67
|
-
}
|
|
68
|
-
function checkReadme() {
|
|
69
|
-
const text = readText('README.md');
|
|
70
|
-
const displayed = text.match(/SKS \*\*([0-9]+\.[0-9]+\.[0-9]+)\*\*/)?.[1] || null;
|
|
71
|
-
if (displayed && displayed !== expected)
|
|
72
|
-
mismatch('README.md', 'displayed current version', displayed);
|
|
73
|
-
}
|
|
74
|
-
function checkReleaseMetadataScript() {
|
|
75
|
-
const script = String(pkg.scripts?.['release:metadata'] || '');
|
|
76
|
-
if (!script.includes('dist/scripts/release-metadata-check.js')) {
|
|
77
|
-
mismatch('package.json', 'scripts.release:metadata', script || null, 'node ./dist/scripts/release-metadata-check.js');
|
|
78
|
-
}
|
|
79
|
-
const text = readText('src/scripts/release-metadata-check.ts');
|
|
80
|
-
if (!text.includes('release-metadata-1-19-check.js')) {
|
|
81
|
-
warnings.push({ file: 'src/scripts/release-metadata-check.ts', message: 'generic entrypoint does not reference historical implementation wrapper' });
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
function checkCargoMetadata() {
|
|
85
|
-
const res = spawnSync('cargo', ['metadata', '--no-deps', '--manifest-path', path.join(root, 'crates/sks-core/Cargo.toml'), '--format-version', '1'], {
|
|
86
|
-
cwd: root,
|
|
87
|
-
encoding: 'utf8',
|
|
88
|
-
timeout: 30000
|
|
89
|
-
});
|
|
90
|
-
if (res.status !== 0) {
|
|
91
|
-
warnings.push({ file: 'crates/sks-core/Cargo.toml', message: 'cargo metadata unavailable', stderr_tail: tail(res.stderr) });
|
|
92
|
-
return;
|
|
93
|
-
}
|
|
94
|
-
try {
|
|
95
|
-
const metadata = JSON.parse(res.stdout);
|
|
96
|
-
const crate = metadata.packages?.find((row) => row.name === 'sks-core');
|
|
97
|
-
if (crate?.version !== expected)
|
|
98
|
-
mismatch('cargo metadata', 'sks-core.version', crate?.version || null);
|
|
99
|
-
}
|
|
100
|
-
catch (err) {
|
|
101
|
-
warnings.push({ file: 'cargo metadata', message: `unparseable:${err instanceof Error ? err.message : String(err)}` });
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
function mismatch(file, field, actual, wanted = expected) {
|
|
105
|
-
mismatches.push({ file, field, expected: wanted, actual: actual ?? null });
|
|
106
|
-
}
|
|
107
|
-
function readJson(rel, fallback) {
|
|
108
|
-
try {
|
|
109
|
-
return JSON.parse(readText(rel));
|
|
110
|
-
}
|
|
111
|
-
catch (err) {
|
|
112
|
-
if (arguments.length > 1)
|
|
113
|
-
return fallback;
|
|
114
|
-
throw err;
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
function readText(rel) {
|
|
118
|
-
return fs.readFileSync(path.join(root, rel), 'utf8');
|
|
119
|
-
}
|
|
120
|
-
function escapeRe(value) {
|
|
121
|
-
return String(value).replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
122
|
-
}
|
|
123
|
-
function latestVersionedChangelogSection(text) {
|
|
124
|
-
for (const match of text.matchAll(/^## \[([^\]]+)\]/gm)) {
|
|
125
|
-
if (/^[0-9]+\.[0-9]+\.[0-9]+$/.test(match[1]))
|
|
126
|
-
return match[1];
|
|
127
|
-
}
|
|
128
|
-
return null;
|
|
129
|
-
}
|
|
130
|
-
function tail(value, limit = 1000) {
|
|
131
|
-
const text = String(value || '');
|
|
132
|
-
return text.length > limit ? text.slice(-limit) : text;
|
|
133
|
-
}
|
|
134
|
-
//# sourceMappingURL=release-version-truth-check.js.map
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
// @ts-nocheck
|
|
3
|
-
import fs from 'node:fs';
|
|
4
|
-
import os from 'node:os';
|
|
5
|
-
import path from 'node:path';
|
|
6
|
-
import { assertGate, emitGate, importDist } from './sks-1-18-gate-lib.js';
|
|
7
|
-
const research = await importDist('core/research.js');
|
|
8
|
-
const workGraph = await importDist('core/research/research-work-graph.js');
|
|
9
|
-
const cycleRunner = await importDist('core/research/research-cycle-runner.js');
|
|
10
|
-
const dir = fs.mkdtempSync(path.join(os.tmpdir(), 'sks-research-blueprint-'));
|
|
11
|
-
const plan = await research.writeResearchPlan(dir, 'blueprint densifier blackbox', { missionId: 'M-BLUEPRINT' });
|
|
12
|
-
const graph = workGraph.buildResearchWorkGraph(plan);
|
|
13
|
-
await cycleRunner.runResearchCycle({ root: process.cwd(), dir, plan, graph, cycle: 1, backend: 'mock', timeoutMs: 120000, maxParallelStages: 4, mock: true });
|
|
14
|
-
const blueprint = JSON.parse(fs.readFileSync(path.join(dir, 'implementation-blueprint.json'), 'utf8'));
|
|
15
|
-
assertGate(blueprint.repository_aware === true, 'blueprint must be repository-aware', blueprint);
|
|
16
|
-
assertGate((blueprint.existing_files || []).length > 0, 'blueprint must list concrete existing files', blueprint);
|
|
17
|
-
assertGate((blueprint.sections || []).length >= 8, 'blueprint must keep required sections', blueprint);
|
|
18
|
-
assertGate((blueprint.test_commands || []).some((cmd) => String(cmd).includes('research:stage-cycle-runtime-blackbox')), 'blueprint must include concrete test commands', blueprint);
|
|
19
|
-
assertGate(fs.existsSync(path.join(dir, 'team-handoff-goal.md')), 'team handoff goal must exist');
|
|
20
|
-
emitGate('research:blueprint-densifier', { dir, sections: blueprint.sections.length, files: blueprint.existing_files.length });
|
|
21
|
-
//# sourceMappingURL=research-blueprint-densifier-check.js.map
|