sneakoscope 8.1.2 → 8.2.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 +96 -58
- package/crates/sks-core/Cargo.lock +1 -1
- package/crates/sks-core/Cargo.toml +1 -1
- package/dist/bin/fast-inline.js +5 -51
- package/dist/cli/command-manifest-lite.js +2 -1
- package/dist/cli/command-registry.js +2 -1
- package/dist/cli/global-mode-router.js +1 -1
- package/dist/cli/install-helpers-codex-lb-config.js +112 -914
- package/dist/cli/install-helpers-codex-lb-shared.js +3 -44
- package/dist/cli/install-helpers-install-support.js +4 -20
- package/dist/cli/install-helpers.js +36 -2716
- package/dist/cli/router.js +9 -9
- package/dist/commands/bridge-command-output.js +111 -0
- package/dist/commands/bridge.js +320 -0
- package/dist/commands/codex-app.js +39 -123
- package/dist/commands/doctor-helpers.js +380 -0
- package/dist/commands/doctor-profile.js +3 -0
- package/dist/commands/doctor.js +114 -873
- package/dist/commands/mad-sks.js +0 -4
- package/dist/config/skills-manifest.json +1 -1
- package/dist/core/agents/agent-effort-policy.js +11 -21
- package/dist/core/agents/agent-recursion-guard.js +26 -0
- package/dist/core/agents/agent-runner-codex-exec.js +7 -9
- package/dist/core/architecture-hardening/contracts/contracts.js +225 -161
- package/dist/core/architecture-hardening/state/state-service.js +49 -13
- package/dist/core/auto-review.js +15 -9
- package/dist/core/codex/codex-config-guard.js +8 -0
- package/dist/core/codex-adapter.js +8 -10
- package/dist/core/codex-app/codex-app-fast-ui-repair.js +7 -29
- package/dist/core/codex-app/codex-app-launcher.js +10 -12
- package/dist/core/codex-app/codex-app-restart.js +10 -12
- package/dist/core/codex-app/menubar/constants.js +2 -5
- package/dist/core/codex-app/menubar/global-install.js +3 -2
- package/dist/core/codex-app/menubar/installer/result.js +23 -0
- package/dist/core/codex-app/menubar/installer/runtime.js +28 -0
- package/dist/core/codex-app/menubar/installer.js +5 -96
- package/dist/core/codex-app/menubar/migration.js +1 -42
- package/dist/core/codex-app/openrouter-provider.js +0 -78
- package/dist/core/codex-app.js +97 -360
- package/dist/core/codex-control/codex-app-server-runtime-env.js +8 -28
- package/dist/core/codex-control/codex-current-image-path-real-probe.js +2 -3
- package/dist/core/codex-control/codex-current-web-search-probe.js +2 -3
- package/dist/core/codex-control/codex-sdk-adapter.js +5 -48
- package/dist/core/codex-control/codex-task-runner.js +16 -60
- package/dist/core/codex-control/desktop-bridge-launch-guard.js +227 -0
- package/dist/core/codex-exec-output-schema.js +11 -13
- package/dist/core/codex-lb/bridge-contracts.js +2 -0
- package/dist/core/codex-lb/bridge-runtime-validation/capability.js +104 -0
- package/dist/core/codex-lb/bridge-runtime-validation/catalog.js +52 -0
- package/dist/core/codex-lb/bridge-runtime-validation/shared.js +109 -0
- package/dist/core/codex-lb/bridge-runtime-validation/status.js +250 -0
- package/dist/core/codex-lb/bridge-runtime-validation.js +106 -0
- package/dist/core/codex-lb/capability-runner.js +505 -201
- package/dist/core/codex-lb/codex-lb-env.js +179 -12
- package/dist/core/codex-lb/combined-catalog/builder.js +86 -0
- package/dist/core/codex-lb/combined-catalog/contracts.js +5 -0
- package/dist/core/codex-lb/combined-catalog/normalize.js +170 -0
- package/dist/core/codex-lb/combined-catalog/persistence.js +207 -0
- package/dist/core/codex-lb/combined-catalog/shared.js +12 -0
- package/dist/core/codex-lb/combined-catalog/storage.js +171 -0
- package/dist/core/codex-lb/combined-catalog.js +12 -0
- package/dist/core/codex-lb/desktop-bridge/client.js +4 -1
- package/dist/core/codex-lb/desktop-bridge/header-policy.js +48 -63
- package/dist/core/codex-lb/desktop-bridge/http-forward.js +115 -83
- package/dist/core/codex-lb/desktop-bridge/launchd.js +20 -13
- package/dist/core/codex-lb/desktop-bridge/location-rewrite.js +4 -1
- package/dist/core/codex-lb/desktop-bridge/security.js +381 -267
- package/dist/core/codex-lb/desktop-bridge/server.js +148 -19
- package/dist/core/codex-lb/desktop-bridge/state.js +56 -70
- package/dist/core/codex-lb/desktop-bridge/types.js +6 -1
- package/dist/core/codex-lb/desktop-bridge/websocket-forward.js +281 -106
- package/dist/core/codex-lb/desktop-bridge-migration/historical-config.js +245 -0
- package/dist/core/codex-lb/desktop-bridge-migration/historical-toml.js +56 -0
- package/dist/core/codex-lb/desktop-bridge-migration/metadata.js +73 -0
- package/dist/core/codex-lb/desktop-bridge-migration/receipt.js +52 -0
- package/dist/core/codex-lb/desktop-bridge-migration/retired-runtime-cleanup.js +106 -0
- package/dist/core/codex-lb/desktop-bridge-migration/types.js +1 -0
- package/dist/core/codex-lb/desktop-bridge-migration.js +238 -0
- package/dist/core/codex-lb/desktop-controller-v3/catalog.js +257 -0
- package/dist/core/codex-lb/desktop-controller-v3/diagnostics.js +62 -0
- package/dist/core/codex-lb/desktop-controller-v3/lifecycle-commands.js +203 -0
- package/dist/core/codex-lb/desktop-controller-v3/live-probes.js +293 -0
- package/dist/core/codex-lb/desktop-controller-v3/preflight-probes.js +144 -0
- package/dist/core/codex-lb/desktop-controller-v3/provider-commands.js +182 -0
- package/dist/core/codex-lb/desktop-controller-v3/shared.js +279 -0
- package/dist/core/codex-lb/desktop-controller-v3/status.js +269 -0
- package/dist/core/codex-lb/desktop-controller-v3/types.js +1 -0
- package/dist/core/codex-lb/desktop-controller-v3/verification.js +89 -0
- package/dist/core/codex-lb/desktop-controller-v3.js +67 -0
- package/dist/core/codex-lb/desktop-controller.js +2 -1730
- package/dist/core/codex-lb/desktop-service.js +462 -627
- package/dist/core/codex-lb/migration-receipt.js +560 -118
- package/dist/core/codex-lb/probes/auxiliary-surfaces-probe.js +37 -53
- package/dist/core/codex-lb/probes/bridge-probe.js +125 -64
- package/dist/core/codex-lb/probes/catalog-probe.js +36 -136
- package/dist/core/codex-lb/probes/computer-use-probe.js +63 -39
- package/dist/core/codex-lb/probes/image-generation-probe.js +98 -41
- package/dist/core/codex-lb/probes/probe-evidence.js +32 -33
- package/dist/core/codex-lb/probes/voice-realtime-probe.js +69 -43
- package/dist/core/codex-lb/provider-credentials/configuration.js +127 -0
- package/dist/core/codex-lb/provider-credentials/locks.js +11 -0
- package/dist/core/codex-lb/provider-credentials/private-snapshot.js +28 -0
- package/dist/core/codex-lb/provider-credentials/removal.js +33 -0
- package/dist/core/codex-lb/provider-credentials/resolution.js +59 -0
- package/dist/core/codex-lb/provider-credentials/runtime.js +55 -0
- package/dist/core/codex-lb/provider-credentials/types.js +1 -0
- package/dist/core/codex-lb/provider-credentials/validation-store.js +137 -0
- package/dist/core/codex-lb/provider-credentials.js +5 -0
- package/dist/core/codex-lb/provider-registry.js +323 -0
- package/dist/core/codex-lb/provider-route-policy.js +118 -0
- package/dist/core/codex-lb/request-route-resolver.js +172 -0
- package/dist/core/codex-lb/route-index.js +148 -0
- package/dist/core/codex-lb/trusted-deep-evidence.js +158 -286
- package/dist/core/commands/basic-cli.js +1 -1
- package/dist/core/commands/check-command.js +3 -10
- package/dist/core/commands/gate-result-contract.js +10 -14
- package/dist/core/commands/intent-normalization/normalizer.js +1 -1
- package/dist/core/commands/mad-sks-command.js +2 -6
- package/dist/core/commands/release-command.js +11 -1
- package/dist/core/commands/telegram-command.js +46 -6
- package/dist/core/doctor/doctor-readiness-matrix.js +9 -7
- package/dist/core/doctor/skill-legacy-surface.js +5 -5
- package/dist/core/evidence/v2/evidence-key.js +30 -3
- package/dist/core/feature-fixtures.js +8 -1
- package/dist/core/feature-registry.js +3 -2
- package/dist/core/hooks-runtime/stop-finalization.js +11 -1
- package/dist/core/hooks-runtime/subagent-context.js +15 -1
- package/dist/core/hooks-runtime/subagent-skill-availability-contract.js +1 -1
- package/dist/core/hooks-runtime/tool-output-quarantine.js +1 -1
- package/dist/core/hooks-runtime.js +73 -87
- package/dist/core/image-ux-review/imagegen-adapter.js +108 -94
- package/dist/core/image-ux-review/real-callout-extractor.js +144 -14
- package/dist/core/imagegen/desktop-bridge-imagegen-target.js +77 -0
- package/dist/core/imagegen/imagegen-capability.js +43 -151
- package/dist/core/init/skills/filesystem.js +89 -0
- package/dist/core/init/skills/inventory.js +97 -0
- package/dist/core/init/skills/manifest.js +151 -0
- package/dist/core/init/skills.js +5 -325
- package/dist/core/init.js +0 -63
- package/dist/core/install/installed-package-smoke.js +1 -1
- package/dist/core/managed-assets/managed-assets-manifest.js +0 -1
- package/dist/core/policy/latest-version-guidance.js +15 -2
- package/dist/core/preflight/parallel-preflight-engine.js +27 -51
- package/dist/core/provider/provider-badge.js +9 -4
- package/dist/core/provider/provider-context.js +57 -107
- package/dist/core/providers/openrouter/openrouter-account.js +3 -1
- package/dist/core/providers/openrouter/openrouter-secret-store.js +91 -22
- package/dist/core/release/desktop-bridge-release-evidence.js +457 -0
- package/dist/core/release/gate-manifest.js +0 -1
- package/dist/core/release/main-push-guard.js +13 -0
- package/dist/core/release/main-push-receipt.js +11 -0
- package/dist/core/release/physical-release-gates.js +664 -61
- package/dist/core/release/publish-preflight.js +3 -3
- package/dist/core/release/release-gate-batch-runner.js +19 -6
- package/dist/core/release/release-gate-dag.js +33 -6
- package/dist/core/release/release-gate-node.js +1 -3
- package/dist/core/release/release-gate-output-contract.js +55 -0
- package/dist/core/release/release-pack-contract.js +1 -1
- package/dist/core/release/release-pack-receipt.js +209 -8
- package/dist/core/release/release-real-contract.js +1 -1
- package/dist/core/release/stage-publish.js +106 -28
- package/dist/core/retention/temp-lease.js +204 -0
- package/dist/core/retention.js +18 -195
- package/dist/core/routes.js +1 -2
- package/dist/core/safety/intent-contract/intent-contract.js +3 -3
- package/dist/core/subagents/naruto-host-credentials.js +6 -1
- package/dist/core/subagents/official-subagent-config.js +27 -9
- package/dist/core/subagents/official-subagent-runner.js +14 -31
- package/dist/core/subagents/wave-lifecycle.js +36 -8
- package/dist/core/subagents/wave-parent-guidance.js +2 -1
- package/dist/core/telegram/doctor.js +2 -2
- package/dist/core/telegram/liveness.js +10 -4
- package/dist/core/triwiki/context-graph/compiler/index.js +18 -18
- package/dist/core/update/update-migration-state/fast-mode-config.js +172 -0
- package/dist/core/update/update-migration-state/session-state-split.js +247 -0
- package/dist/core/update/update-migration-state/simple-stages.js +46 -0
- package/dist/core/update/update-migration-state.js +4 -481
- package/dist/core/version.js +1 -1
- package/dist/native/sks-menubar/Sources/OperationCoordinator.swift +28 -4
- package/dist/native/sks-menubar/Sources/OperationModels.swift +112 -2
- package/dist/native/sks-menubar/Sources/ProviderRouteExplanation.swift +21 -0
- package/dist/native/sks-menubar/Sources/ProvidersBridgeCatalog.swift +140 -0
- package/dist/native/sks-menubar/Sources/ProvidersOpenRouter.swift +107 -470
- package/dist/native/sks-menubar/Sources/ProvidersReliability.swift +27 -197
- package/dist/native/sks-menubar/Sources/ProvidersRoutingTruth.swift +335 -269
- package/dist/native/sks-menubar/Sources/ProvidersViewController.swift +233 -437
- package/dist/native/sks-menubar/Sources/RemoteCodingViewController.swift +16 -7
- package/dist/native/sks-menubar/Sources/SecureProcessEnvelope.swift +39 -9
- package/dist/native/sks-menubar/Sources/TelegramSupport.swift +56 -0
- package/dist/scripts/canonical-test-runner.js +7 -1
- package/dist/scripts/check-runtime-schemas.js +7 -2
- package/dist/scripts/codex-sdk-real-smoke-check.js +3 -1
- package/dist/scripts/desktop-bridge-capabilities-check.js +123 -0
- package/dist/scripts/{codex-lb-desktop-bridge-latency-check.js → desktop-bridge-latency-check.js} +61 -16
- package/dist/scripts/desktop-bridge-real-evidence-check.js +64 -0
- package/dist/scripts/{codex-lb-desktop-bridge-check.js → desktop-bridge-transport-check.js} +92 -155
- package/dist/scripts/desktop-bridge-transport-client.js +116 -0
- package/dist/scripts/desktop-bridge-unification-check.js +276 -0
- package/dist/scripts/doctor-fixes-codex-app-fast-ui-check.js +12 -8
- package/dist/scripts/gate-policy-audit-check.js +52 -2
- package/dist/scripts/provider-badge-context-check.js +55 -12
- package/dist/scripts/publish-preflight.js +1 -2
- package/dist/scripts/release-affected-selector-check.js +1 -2
- package/dist/scripts/release-aggressive-resource-governor-check.js +1 -1
- package/dist/scripts/release-cache-glob-hashing-check.js +1 -0
- package/dist/scripts/release-cache-version-neutral-fixture-check.js +1 -0
- package/dist/scripts/release-full-parallelism-blackbox.js +1 -1
- package/dist/scripts/release-gate-batch-runner-check.js +9 -0
- package/dist/scripts/release-gate-dag-runner-check.js +6 -0
- package/dist/scripts/release-gate-dag-runner.js +4 -2
- package/dist/scripts/release-metadata-check.js +16 -3
- package/dist/scripts/release-pack-receipt.js +29 -6
- package/dist/scripts/release-physical-gates-check.js +39 -0
- package/dist/scripts/release-real-check.js +7 -5
- package/package.json +6 -8
- package/release-gates.v2.json +156 -157
- package/runtime-required-scripts.json +11 -11
- package/schemas/codex/desktop-bridge-status-v3.schema.json +286 -0
- package/schemas/codex/desktop-capabilities-v3.schema.json +198 -0
- package/schemas/release/release-gate-node.schema.json +2 -3
- package/dist/cli/codex-lb-setup-warning-output.js +0 -17
- package/dist/cli/install-helpers-codex-lb-chain.js +0 -529
- package/dist/commands/codex-lb.js +0 -1232
- package/dist/core/architecture-hardening/migration/migration.js +0 -111
- package/dist/core/codex-app/auxiliary-oauth-policy.js +0 -36
- package/dist/core/codex-app/catalog-compat/catalog-service.js +0 -104
- package/dist/core/codex-app/child-policy/child-policy.js +0 -35
- package/dist/core/codex-app/desktop-routing-snapshot.js +0 -233
- package/dist/core/codex-app/glm-model-profile.js +0 -1
- package/dist/core/codex-app/glm-profile-installer.js +0 -191
- package/dist/core/codex-app/glm-profile-schema.js +0 -42
- package/dist/core/codex-app/multi-provider-router.js +0 -391
- package/dist/core/codex-app/openrouter-activate.js +0 -405
- package/dist/core/codex-app/openrouter-model-catalog.js +0 -217
- package/dist/core/codex-app/provider-child-policy.js +0 -64
- package/dist/core/codex-app/provider-mode.js +0 -91
- package/dist/core/codex-app/provider-session-policy.js +0 -85
- package/dist/core/codex-app/session-policy/session-pinning.js +0 -68
- package/dist/core/codex-control/codex-lb-launch-recovery.js +0 -319
- package/dist/core/codex-lb/codex-lb-setup.js +0 -293
- package/dist/core/codex-lb/codex-lb-tool-catalog.js +0 -456
- package/dist/core/codex-lb/codex-lb-tool-output-recovery.js +0 -290
- package/dist/core/codex-lb/desktop-center-credentials.js +0 -1083
- package/dist/core/codex-lb/desktop-mode.js +0 -32
- package/dist/core/codex-lb/desktop-real-evidence.js +0 -168
- package/dist/core/codex-lb/legacy-migration.js +0 -576
- package/dist/core/codex-lb/native-openai-transport/transport.js +0 -68
- package/dist/core/codex-lb/provider-routing/provider-router.js +0 -58
- package/dist/core/codex-lb/routing-truth.js +0 -327
- package/dist/core/imagegen/codex-lb-imagegen-target.js +0 -92
- package/dist/native/sks-menubar/Sources/ProvidersConnectTest.swift +0 -118
- package/dist/native/sks-menubar/Sources/ProvidersFastMode.swift +0 -17
- package/dist/native/sks-menubar/Sources/ProvidersMultiProvider.swift +0 -331
- package/dist/native/sks-menubar/Sources/ProvidersRoleModels.swift +0 -260
- package/dist/scripts/codex-lb-catalog-passthrough-check.js +0 -120
- package/dist/scripts/codex-lb-desktop-auth-invariant-check.js +0 -169
- package/dist/scripts/codex-lb-desktop-capabilities-check.js +0 -287
- package/dist/scripts/codex-lb-desktop-real-evidence-check.js +0 -123
- package/dist/scripts/codex-lb-fast-mode-truth-check.js +0 -114
- package/dist/scripts/codex-lb-fast-ui-preservation-check.js +0 -152
- package/dist/scripts/codex-lb-gpt56-fast-profile-check.js +0 -231
|
@@ -6,6 +6,7 @@ import { runReleaseGateDag } from '../core/release/release-gate-dag.js';
|
|
|
6
6
|
import { releaseAuthorizationSnapshot } from '../core/release/release-authorization-snapshot.js';
|
|
7
7
|
import { ensureDistFresh } from './lib/ensure-dist-fresh.js';
|
|
8
8
|
import { ensureCurrentMigrationBeforeCommand } from '../core/update/update-migration-state.js';
|
|
9
|
+
import { GATE_RESULT_CONTRACT, GATE_RESULT_CONTRACT_MODE } from '../core/commands/gate-result-contract.js';
|
|
9
10
|
const root = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..', '..');
|
|
10
11
|
process.env.SKS_RELEASE_GATE_CACHE_MEMOIZE ||= '1';
|
|
11
12
|
const freshness = ensureDistFresh({ rebuild: false });
|
|
@@ -78,7 +79,8 @@ console.log(`SKS Release DAG
|
|
|
78
79
|
certificate: ${result.completion_certificate.confidence} sla=${(result.completion_certificate.sla_ms / 1000).toFixed(0)}s met=${result.completion_certificate.sla_met}
|
|
79
80
|
report: ${result.report_dir}`);
|
|
80
81
|
const gateResult = {
|
|
81
|
-
schema:
|
|
82
|
+
schema: GATE_RESULT_CONTRACT,
|
|
83
|
+
contract_mode: GATE_RESULT_CONTRACT_MODE,
|
|
82
84
|
ok: result.ok === true,
|
|
83
85
|
blockers: result.ok ? [] : result.failures.map((failure) => `release_gate_failed:${failure.id}`),
|
|
84
86
|
summary: {
|
|
@@ -99,7 +101,7 @@ if (!result.ok) {
|
|
|
99
101
|
}
|
|
100
102
|
function failRunner(blocker) {
|
|
101
103
|
console.error(`SKS Release DAG blocked: ${blocker}`);
|
|
102
|
-
console.log(JSON.stringify({ schema:
|
|
104
|
+
console.log(JSON.stringify({ schema: GATE_RESULT_CONTRACT, contract_mode: GATE_RESULT_CONTRACT_MODE, ok: false, blockers: [blocker] }));
|
|
103
105
|
process.exit(1);
|
|
104
106
|
}
|
|
105
107
|
function parseDurationMs(value) {
|
|
@@ -118,6 +118,9 @@ for (const script of requiredPackageScripts)
|
|
|
118
118
|
const fullReleaseScript = String(pkg.scripts?.['release:check:full'] || '');
|
|
119
119
|
assertGate((fullReleaseScript.match(/build:clean/g) || []).length === 1, 'release:check:full must perform exactly one clean build', { script: fullReleaseScript });
|
|
120
120
|
assertGate((fullReleaseScript.match(/npm run test:release --silent/g) || []).length === 1, 'release:check:full must run the release test corpus exactly once', { script: fullReleaseScript });
|
|
121
|
+
assertGate((fullReleaseScript.match(/release-pack-receipt\.js create/g) || []).length === 1, 'release:check:full must create the current clean-HEAD pack receipt exactly once', { script: fullReleaseScript });
|
|
122
|
+
const fullReleaseOrder = ['release-gate-dag-runner.js --preset release --full', 'release-pack-receipt.js create', 'release-real-check.js --skip-release-check', 'release-check-stamp.js write'].map((needle) => fullReleaseScript.indexOf(needle));
|
|
123
|
+
assertGate(fullReleaseOrder.every((index) => index >= 0) && fullReleaseOrder.every((index, position) => position === 0 || index > fullReleaseOrder[position - 1]), 'release:check:full must create pack proof after the DAG and before real-check/stamp', { script: fullReleaseScript });
|
|
121
124
|
assertGate(pkg.scripts?.test === 'node ./dist/scripts/canonical-test-runner.js --all' && pkg.scripts?.['test:all'] === pkg.scripts?.test, 'npm test and test:all must preserve the exhaustive developer corpus');
|
|
122
125
|
assertGate(pkg.scripts?.['test:release'] === 'node ./dist/scripts/canonical-test-runner.js', 'test:release must use the proof-producing release corpus selector');
|
|
123
126
|
for (const id of requiredReleaseGates)
|
|
@@ -175,17 +178,22 @@ assertGate(!/npm\s+stage\s+(?:list|view|download|approve|reject)\b/.test(stageWo
|
|
|
175
178
|
assertGate(/environment: npm-production/.test(stageWorkflow), 'stage workflow must use the npm-production environment');
|
|
176
179
|
assertGate(!/id-token:/.test(workflowPermissions), 'workflow-global permissions must not grant OIDC identity');
|
|
177
180
|
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');
|
|
178
|
-
for (const artifact of ['linux-release-proof', 'macos-menubar-proof'
|
|
181
|
+
for (const artifact of ['linux-release-proof', 'macos-menubar-proof']) {
|
|
179
182
|
assertGate(new RegExp(`name: ${artifact}-\\$\\{\\{ github\\.sha \\}\\}`).test(stageWorkflow), `stage workflow artifact name mismatch: ${artifact}`);
|
|
180
183
|
}
|
|
181
|
-
for (const
|
|
184
|
+
for (const artifact of ['stage-input', 'npm-stage-receipt']) {
|
|
185
|
+
assertGate(new RegExp(`name: ${artifact}-\\$\\{\\{ github\\.sha \\}\\}-\\$\\{\\{ inputs\\.dispatch_nonce \\}\\}`).test(stageWorkflow), `stage workflow artifact name mismatch: ${artifact}`);
|
|
186
|
+
}
|
|
187
|
+
for (const receiptField of ['tarball_sha256', 'tarball_sha512', 'tarball_integrity', 'packed_bytes', 'unpacked_bytes', 'file_count', 'dispatch_nonce', 'physical_evidence_run_id', 'workflow_run_id', 'local_pack_receipt_sha256', 'stage_command_digest', 'stage_output_digest', 'stage_id', 'review_verifier_schema', 'human_2fa_pending']) {
|
|
182
188
|
assertGate(new RegExp(`${receiptField}:`).test(stageJob), `stage receipt missing field: ${receiptField}`);
|
|
183
189
|
}
|
|
184
190
|
assertGate(/stage_id_uuid_invalid/.test(stageJob), 'stage workflow must fail closed on non-UUID stage IDs');
|
|
185
191
|
assertGate(/sha512Integrity !== receipt\.sha512_integrity/.test(stageJob), 'stage workflow must recompute and verify tarball SHA-512 integrity');
|
|
186
192
|
assertGate(/tarball_integrity: sha512Integrity/.test(stageJob), 'stage receipt must serialize recomputed tarball integrity');
|
|
187
193
|
assertGate(/stage-receipt\/stage-output\.json/.test(stageJob) && /path: stage-receipt/.test(stageJob), 'stage receipt artifact must preserve digest-bound raw stage output');
|
|
188
|
-
assertGate(/
|
|
194
|
+
assertGate(/schema: 'sks\.npm-stage-receipt\.v2'/.test(stageJob), 'stage receipt must use the nonce-bound v2 contract');
|
|
195
|
+
assertGate(/review_verifier_schema: 'sks\.npm-stage-review-receipt\.v2'/.test(stageJob), 'stage receipt must declare the maintainer verifier schema');
|
|
196
|
+
assertGate(/^run-name: npm-stage-\$\{\{ inputs\.version \}\}-\$\{\{ inputs\.dispatch_nonce \}\}-physical-\$\{\{ inputs\.physical_evidence_run_id \}\}$/m.test(stageWorkflow), 'stage workflow run name must bind version, dispatch nonce, and physical evidence run');
|
|
189
197
|
assertGate(/localPackReceiptSha256 = crypto\.createHash\('sha256'\)\.update\(localPackReceiptBytes\)/.test(stageJob), 'stage receipt must bind immutable local pack receipt bytes');
|
|
190
198
|
assertGate(/smoke\.postinstall_default\?\.scripts_enabled !== true/.test(stageJob), 'stage job must require scripts-enabled default postinstall proof');
|
|
191
199
|
assertGate(/smoke\.postinstall_default\?\.external_snapshot_match !== true/.test(stageJob), 'stage job must require zero external postinstall mutation');
|
|
@@ -195,6 +203,8 @@ assertGate(!/\bnpm[ \t]+(?:ci|pack|run|publish|login|logout|whoami)\b/.test(stag
|
|
|
195
203
|
assertGate(!/NODE_AUTH_TOKEN|NPM_TOKEN|_authToken/.test(stageWorkflow), 'stage workflow must not inject npm tokens');
|
|
196
204
|
assertGate(/from '\.\/npm-stage-contract\.js'/.test(stageVerifierSupport), 'maintainer stage verifier support must use the shared npm stage contract');
|
|
197
205
|
assertGate(/exactNpmStageCliInvocation\(\)/.test(stageVerifierSource), 'maintainer stage verifier must resolve the exact pinned npm CLI');
|
|
206
|
+
assertGate(/dispatch_nonce_mismatch/.test(stageVerifierSupport) && /physical_evidence_run_id_mismatch/.test(stageVerifierSupport) && /workflow_run_id_mismatch/.test(stageVerifierSupport), 'maintainer stage verifier must validate exact workflow association');
|
|
207
|
+
assertGate(/--dispatch-nonce/.test(stageVerifierCli) && /--physical-evidence-run-id/.test(stageVerifierCli) && /--workflow-run-id/.test(stageVerifierCli), 'maintainer stage verifier CLI must require workflow association inputs');
|
|
198
208
|
assertGate(/\['stage', 'view', stageId, '--json'/.test(stageVerifierSource), 'maintainer stage verifier must inspect the exact stage ID read-only');
|
|
199
209
|
assertGate(/\['stage', 'download', stageId, '--json'/.test(stageVerifierSource), 'maintainer stage verifier must download the exact stage ID read-only');
|
|
200
210
|
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');
|
|
@@ -202,12 +212,15 @@ assertGate(/oidc_environment_not_allowed/.test(stageContract), 'maintainer stage
|
|
|
202
212
|
assertGate(/local_review_verifier/.test(stagePublishSource), 'confirmed stage preflight must require the local review verifier');
|
|
203
213
|
assertGate(/localNpmStageReviewEnvironmentBlocker/.test(stagePublishSource), 'confirmed stage preflight must reject CI and OIDC review environments');
|
|
204
214
|
assertGate(/exactNpmStageCliInvocation\(\)/.test(stagePublishSource), 'confirmed stage preflight must resolve the pinned npm CLI before mutation');
|
|
215
|
+
assertGate(/crypto\.randomBytes\(16\)\.toString\('hex'\)/.test(stagePublishSource), 'stage dispatch must use a cryptographic 128-bit nonce');
|
|
216
|
+
assertGate(/displayTitle/.test(stagePublishSource) && /expectedDisplayTitle/.test(stagePublishSource), 'stage workflow selection must bind the exact nonce-scoped run title');
|
|
205
217
|
assertGate(/if \(!preflight\.ok\) return finish\(\)/.test(stagePublishSource), 'stage preflight failures must stop before push or dispatch');
|
|
206
218
|
assertGate(!/\['stage',\s*'(?:publish|approve|reject)'/.test(`${stageVerifierSource}\n${stageVerifierSupport}\n${stageVerifierCli}`), 'maintainer stage verifier must not contain mutating stage argv');
|
|
207
219
|
assertGate(/npx --yes npm@11\.15\.0/.test(releaseReadinessDoc), 'release readiness must document pinned local npm stage resolution');
|
|
208
220
|
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');
|
|
209
221
|
assertGate(/release-physical-gates-check\.js/.test(stageWorkflow), 'stage workflow must verify tracked source-bound physical release receipts before staging');
|
|
210
222
|
assertGate(/release-physical-gates-check\.js/.test(stagePublishSource), 'local stage preflight must verify physical release receipts before mutation');
|
|
223
|
+
assertGate(/requireReleaseTag:\s*false/.test(text('src/scripts/publish-preflight.ts')), 'direct npm publish preflight must allow the Git release tag to be created after publication');
|
|
211
224
|
assertGate(/requirePhysicalReleaseGates:\s*false/.test(text('src/scripts/publish-preflight.ts')), 'direct npm publish preflight must not require physical receipts (stage/CI owns that gate)');
|
|
212
225
|
assertGate(/PHYSICAL_RELEASE_GATE_IDS/.test(physicalReleaseGateSource) && /artifact_sha256/.test(physicalReleaseGateSource), 'physical release gate contract must bind all required gates to evidence artifact hashes');
|
|
213
226
|
assertGate(pkg.scripts?.prepublishOnly === 'node ./dist/scripts/prepublish-release-check-or-fast.js', 'prepublishOnly must verify release proof during official npm publish');
|
|
@@ -5,7 +5,7 @@ import os from 'node:os';
|
|
|
5
5
|
import path from 'node:path';
|
|
6
6
|
import { spawnSync } from 'node:child_process';
|
|
7
7
|
import { fileURLToPath } from 'node:url';
|
|
8
|
-
import { compareReleasePacks, inspectReleaseTarball, releaseProofDir, validateLocalReleasePackBinding, writeReleaseJson } from '../core/release/release-pack-receipt.js';
|
|
8
|
+
import { compareReleasePacks, inspectLocalReleaseSourceState, inspectReleaseTarball, releaseProofDir, validateLocalReleasePackBinding, writeReleaseJson } from '../core/release/release-pack-receipt.js';
|
|
9
9
|
import { normalizeNpmPackInfo, readCurrentNpmPackGateArtifacts } from '../core/release/npm-pack-proof.js';
|
|
10
10
|
const root = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..', '..');
|
|
11
11
|
const action = process.argv[2] || 'create';
|
|
@@ -13,6 +13,8 @@ const pkg = JSON.parse(fs.readFileSync(path.join(root, 'package.json'), 'utf8'))
|
|
|
13
13
|
const proofDir = releaseProofDir(root, String(pkg.version || 'unknown'));
|
|
14
14
|
if (action === 'create')
|
|
15
15
|
createLocalReceipt();
|
|
16
|
+
else if (action === 'verify')
|
|
17
|
+
verifyLocalReceipt();
|
|
16
18
|
else if (action === 'inspect')
|
|
17
19
|
inspectDownloadedReceipt();
|
|
18
20
|
else if (action === 'compare')
|
|
@@ -20,6 +22,9 @@ else if (action === 'compare')
|
|
|
20
22
|
else
|
|
21
23
|
fail(`unknown action: ${action}`);
|
|
22
24
|
function createLocalReceipt() {
|
|
25
|
+
const sourceBeforePack = inspectLocalReleaseSourceState(root);
|
|
26
|
+
if (!sourceBeforePack.ok)
|
|
27
|
+
fail('source tree is not clean and fully tracked for npm pack', sourceBeforePack.blockers.join('\n'));
|
|
23
28
|
const outputDir = path.resolve(root, option('--output-dir') || path.join(proofDir, 'artifacts'));
|
|
24
29
|
fs.mkdirSync(outputDir, { recursive: true });
|
|
25
30
|
const result = spawnSync('npm', ['pack', '--ignore-scripts', '--json', '--pack-destination', outputDir], {
|
|
@@ -43,7 +48,7 @@ function createLocalReceipt() {
|
|
|
43
48
|
const receipt = inspectReleaseTarball({
|
|
44
49
|
tarball,
|
|
45
50
|
kind: 'local',
|
|
46
|
-
sourceCommit:
|
|
51
|
+
sourceCommit: sourceBeforePack.head,
|
|
47
52
|
root,
|
|
48
53
|
...(gate.ok && gate.proof ? {
|
|
49
54
|
npmPackProof: {
|
|
@@ -74,6 +79,13 @@ function createLocalReceipt() {
|
|
|
74
79
|
receipt.blockers.push('pack_metadata_file_count_mismatch');
|
|
75
80
|
if (String(info?.integrity || '') !== receipt.sha512_integrity)
|
|
76
81
|
receipt.blockers.push('pack_metadata_integrity_mismatch');
|
|
82
|
+
const sourceAfterPack = inspectLocalReleaseSourceState(root);
|
|
83
|
+
if (!sourceAfterPack.ok)
|
|
84
|
+
receipt.blockers.push(...sourceAfterPack.blockers.map((blocker) => `post_pack_source:${blocker}`));
|
|
85
|
+
if (sourceAfterPack.head !== sourceBeforePack.head)
|
|
86
|
+
receipt.blockers.push('post_pack_source_commit_changed');
|
|
87
|
+
if (sourceAfterPack.source_tree_sha256 !== sourceBeforePack.source_tree_sha256)
|
|
88
|
+
receipt.blockers.push('post_pack_source_tree_digest_changed');
|
|
77
89
|
receipt.ok = receipt.blockers.length === 0;
|
|
78
90
|
const binding = validateLocalReleasePackBinding(root, receipt);
|
|
79
91
|
if (!binding.ok)
|
|
@@ -84,6 +96,21 @@ function createLocalReceipt() {
|
|
|
84
96
|
writeReleaseJson(file, receipt);
|
|
85
97
|
emit(receipt, file);
|
|
86
98
|
}
|
|
99
|
+
function verifyLocalReceipt() {
|
|
100
|
+
const file = path.join(proofDir, 'pack-receipt.json');
|
|
101
|
+
const receipt = readReceipt(file);
|
|
102
|
+
const validation = validateLocalReleasePackBinding(root, receipt);
|
|
103
|
+
const blockers = [
|
|
104
|
+
...(Array.isArray(receipt.blockers) ? receipt.blockers : ['pack_receipt_blockers_invalid']),
|
|
105
|
+
...validation.blockers.map((blocker) => `local_binding:${blocker}`)
|
|
106
|
+
];
|
|
107
|
+
if (receipt.package_name !== pkg.name)
|
|
108
|
+
blockers.push('pack_metadata_name_mismatch');
|
|
109
|
+
if (receipt.package_version !== pkg.version)
|
|
110
|
+
blockers.push('pack_metadata_version_mismatch');
|
|
111
|
+
const report = { ...receipt, ok: blockers.length === 0, blockers: [...new Set(blockers)] };
|
|
112
|
+
emit(report, file);
|
|
113
|
+
}
|
|
87
114
|
function inspectDownloadedReceipt() {
|
|
88
115
|
const tarball = required('--tarball');
|
|
89
116
|
const kind = String(option('--kind') || 'staged');
|
|
@@ -115,10 +142,6 @@ function readReceipt(file) {
|
|
|
115
142
|
fail(`unable to read receipt ${file}`, error?.message || String(error));
|
|
116
143
|
}
|
|
117
144
|
}
|
|
118
|
-
function gitHead() {
|
|
119
|
-
const result = spawnSync('git', ['rev-parse', 'HEAD'], { cwd: root, encoding: 'utf8' });
|
|
120
|
-
return result.status === 0 ? String(result.stdout || '').trim() || null : null;
|
|
121
|
-
}
|
|
122
145
|
function sha256Json(value) {
|
|
123
146
|
return crypto.createHash('sha256').update(JSON.stringify(value)).digest('hex');
|
|
124
147
|
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import fs from 'node:fs';
|
|
4
|
+
import { fileURLToPath } from 'node:url';
|
|
5
|
+
import { inspectPhysicalReleaseGates, physicalReleaseEvidenceArchivePath, physicalReleaseGateInspectionPath } from '../core/release/physical-release-gates.js';
|
|
6
|
+
const root = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..', '..');
|
|
7
|
+
const pkg = JSON.parse(fs.readFileSync(path.join(root, 'package.json'), 'utf8'));
|
|
8
|
+
const version = String(pkg.version || '');
|
|
9
|
+
const args = process.argv.slice(2);
|
|
10
|
+
const value = (flag) => {
|
|
11
|
+
const index = args.indexOf(flag);
|
|
12
|
+
return index >= 0 && index + 1 < args.length ? args[index + 1] || null : null;
|
|
13
|
+
};
|
|
14
|
+
const requestedArchive = value('--archive');
|
|
15
|
+
const archive = physicalReleaseEvidenceArchivePath(root, version);
|
|
16
|
+
if (requestedArchive) {
|
|
17
|
+
const source = path.resolve(requestedArchive);
|
|
18
|
+
const stat = fs.lstatSync(source);
|
|
19
|
+
if (!stat.isFile() || stat.isSymbolicLink())
|
|
20
|
+
throw new Error('physical evidence archive must be a regular file');
|
|
21
|
+
fs.mkdirSync(path.dirname(archive), { recursive: true });
|
|
22
|
+
if (source !== archive)
|
|
23
|
+
fs.copyFileSync(source, archive);
|
|
24
|
+
}
|
|
25
|
+
const report = inspectPhysicalReleaseGates({
|
|
26
|
+
root,
|
|
27
|
+
version,
|
|
28
|
+
evidenceArchive: archive,
|
|
29
|
+
evidenceRunId: value('--evidence-run-id'),
|
|
30
|
+
repository: value('--repository')
|
|
31
|
+
});
|
|
32
|
+
const output = physicalReleaseGateInspectionPath(root, version);
|
|
33
|
+
fs.mkdirSync(path.dirname(output), { recursive: true });
|
|
34
|
+
const temporary = `${output}.${process.pid}.tmp`;
|
|
35
|
+
fs.writeFileSync(temporary, `${JSON.stringify(report, null, 2)}\n`, { mode: 0o600 });
|
|
36
|
+
fs.renameSync(temporary, output);
|
|
37
|
+
console.log(JSON.stringify(report, null, 2));
|
|
38
|
+
if (!report.ok)
|
|
39
|
+
process.exitCode = 1;
|
|
@@ -10,6 +10,8 @@ import { releaseAuthorizationSnapshot, sameReleaseAuthorizationSnapshot } from '
|
|
|
10
10
|
import { readCurrentCanonicalTestProof } from '../core/release/canonical-test-proof.js';
|
|
11
11
|
const args = process.argv.slice(2);
|
|
12
12
|
const skipReleaseCheck = args.includes('--skip-release-check') || process.env.SKS_RELEASE_REAL_CHECK_SKIP_RELEASE_CHECK === '1';
|
|
13
|
+
const physicalEvidenceRunId = String(process.env.SKS_PHYSICAL_EVIDENCE_RUN_ID || '');
|
|
14
|
+
const physicalEvidenceRepository = String(process.env.SKS_PHYSICAL_EVIDENCE_REPOSITORY || '');
|
|
13
15
|
const root = process.cwd();
|
|
14
16
|
const concurrency = Math.max(1, Math.min(4, Math.floor(Number(process.env.SKS_RELEASE_REAL_CHECK_CONCURRENCY || 2))));
|
|
15
17
|
const releaseScratchDir = tmpdir('rr-');
|
|
@@ -75,15 +77,15 @@ const tasks = [
|
|
|
75
77
|
task('codex:current:app-server-v2:real', 'direct', { command: nodeScript('codex-current-app-server-v2-check.js'), group: 'environment_required', phase: 'parallel_processing', args: ['--require-real'], policy: requiredPolicy(['sks.release-gate.v1']) }),
|
|
76
78
|
task('codex:current:capability:real', 'direct', { command: nodeScript('codex-current-capability-check.js'), group: 'environment_required', phase: 'parallel_verification', args: ['--require-real'], deps: ['codex:current:app-server-v2:real'], policy: requiredPolicy(['sks.release-gate.v1']) }),
|
|
77
79
|
task('doctor:actual', 'direct', { command: [process.execPath, './dist/bin/sks.js', 'doctor', '--json'], group: 'environment_required', phase: 'parallel_processing', policy: requiredPolicy(['sks.doctor-status.v3'], { statusRequired: true, passStatuses: ['fast_readonly_ok', 'ok'] }) }),
|
|
78
|
-
task('release:pack-receipt', 'release:pack-receipt', { group: 'environment_required', phase: 'parallel_processing', policy: requiredPolicy(['sks.release-pack-receipt.
|
|
80
|
+
task('release:pack-receipt', 'release:pack-receipt', { command: nodeScript('release-pack-receipt.js', 'verify'), group: 'environment_required', phase: 'parallel_processing', policy: requiredPolicy(['sks.release-pack-receipt.v2']) }),
|
|
79
81
|
task('naruto:worktree-coding:blackbox', 'direct', { command: nodeScript('naruto-worktree-coding-blackbox.js'), group: 'real_smoke', phase: 'parallel_processing', args: ['--require-real'], env: { SKS_REQUIRE_GIT_WORKTREE: '1' }, policy: requiredPolicy(['sks.release-gate.v1']) }),
|
|
80
82
|
task('codex-sdk:real-smoke', 'direct', { command: nodeScript('codex-sdk-real-smoke-check.js'), group: 'real_smoke', phase: 'parallel_processing', args: ['--require-real'], policy: requiredPolicy(['sks.release-gate.v1'], { statusRequired: true, passStatuses: ['proven'] }) }),
|
|
81
|
-
task('
|
|
82
|
-
command: nodeScript('
|
|
83
|
+
task('desktop-bridge:real-evidence', 'direct', {
|
|
84
|
+
command: nodeScript('release-physical-gates-check.js', '--evidence-run-id', physicalEvidenceRunId, '--repository', physicalEvidenceRepository),
|
|
83
85
|
group: 'real_ui',
|
|
84
86
|
phase: 'parallel_verification',
|
|
85
87
|
deps: ['codex:actual-config-load-probe'],
|
|
86
|
-
policy: liveOptionalPolicy(['sks.
|
|
88
|
+
policy: liveOptionalPolicy(['sks.release-physical-gates-inspection.v2'], ['passed'])
|
|
87
89
|
}),
|
|
88
90
|
task('imagegen:real-smoke', 'direct', { command: nodeScript('imagegen-real-smoke-check.js'), group: 'real_smoke', phase: 'parallel_processing', policy: liveOptionalPolicy(['sks.imagegen-real-smoke.v1'], ['passed']) }),
|
|
89
91
|
task('ux-review:real-imagegen-smoke', 'direct', { command: nodeScript('ux-review-real-imagegen-smoke-check.js'), group: 'real_smoke', phase: 'parallel_processing', deps: ['imagegen:real-smoke'], policy: liveOptionalPolicy(['sks.ux-real-imagegen-smoke.v1'], ['passed']) }),
|
|
@@ -120,7 +122,7 @@ async function main() {
|
|
|
120
122
|
return await finish(false);
|
|
121
123
|
}
|
|
122
124
|
if (!skipReleaseCheck) {
|
|
123
|
-
report.release_check = await runNpm(task('release:check', 'release:check', { group: 'design', phase: 'design', policy: requiredPolicy(['sks.gate-result.
|
|
125
|
+
report.release_check = await runNpm(task('release:check', 'release:check', { group: 'design', phase: 'design', policy: requiredPolicy(['sks.gate-result.v2']) }));
|
|
124
126
|
if (terminating)
|
|
125
127
|
return;
|
|
126
128
|
collect(report.release_check);
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sneakoscope",
|
|
3
3
|
"displayName": "ㅅㅋㅅ",
|
|
4
|
-
"version": "8.
|
|
4
|
+
"version": "8.2.0",
|
|
5
5
|
"description": "Sneakoscope Codex (`sks`) is an open-source trust layer for Codex CLI and ChatGPT Desktop. It coordinates bounded AI coding agents, records machine-verifiable evidence, preserves project memory, and blocks release claims that are not supported by current tests or artifacts. Search visibility outcomes are measured separately; SKS does not promise rankings or traffic.",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"homepage": "https://github.com/mandarange/Sneakoscope-Codex#readme",
|
|
@@ -37,12 +37,11 @@
|
|
|
37
37
|
"!dist/native/**/Tests",
|
|
38
38
|
"!dist/native/**/UITests",
|
|
39
39
|
"!dist/native/**/QAFixtures",
|
|
40
|
-
"!dist/cli/install-helpers-codex-lb-selftest.js",
|
|
41
|
-
"!dist/cli/install-helpers-codex-lb-selftest-chain.js",
|
|
42
40
|
"!dist/scripts/**",
|
|
43
41
|
"dist/scripts/canonical-test-runner.js",
|
|
44
|
-
"dist/scripts/
|
|
45
|
-
"dist/scripts/{
|
|
42
|
+
"dist/scripts/desktop-bridge-transport-client.js",
|
|
43
|
+
"dist/scripts/{agent-guidance-dedup-check.js,agent-message-bus-reader-check.js,all-feature-deep-completion-check.js,appshots-thread-attachment-discovery-check.js,architecture-guard-check.js,certificate-sla-check.js,check-runtime-schemas.js,cli-output-consistency-check.js,codex-current-app-server-v2-check.js,codex-current-binary-identity-check.js,codex-current-capability-check.js,codex-current-core-real-probes-check.js,codex-current-manifest-check.js,codex-current-policy-check.js,codex-current-thread-store-check.js,codex-agent-role-rich-content-check.js,codex-agent-role-sync-check.js,codex-agent-type-routing-check.js,codex-app-execution-profile-check.js,codex-app-fast-ui-preservation-check.js,codex-app-handoff-check.js,codex-app-handoff-launch-check.js,codex-config-load-probe.js,context-graph-check.js,codex-control-all-pipelines-check.js,codex-control-event-stream-ledger-check.js,codex-control-tool-output-continuity-audit-check.js,desktop-bridge-transport-check.js,desktop-bridge-latency-check.js,desktop-bridge-capabilities-check.js,desktop-bridge-real-evidence-check.js,codex-native-agent-role-content-check.js,codex-native-feature-broker-blackbox.js,codex-native-feature-broker-check.js,codex-native-harness-compat-check.js,codex-native-hook-lifecycle-proof-check.js,codex-native-runtime-e2e-fixture.js,codex-plugin-app-template-policy-check.js,codex-sdk-all-pipelines-check.js,codex-sdk-backend-router-check.js,codex-sdk-capability-check.js,codex-sdk-event-stream-ledger-check.js,codex-sdk-real-smoke-check.js,concurrent-session-collision-check.js,context7-evidence-dedupe-check.js,core-skill-card-schema-check.js,core-skill-deployment-snapshot-check.js,core-skill-heldout-validation-check.js,core-skill-no-inference-optimizer-check.js,core-skill-patch-check.js,core-skill-route-runtime-integration-check.js,current-command-surface-check.js,current-surface-update-e2e-check.js,current-upgrade-matrix-check.js,desktop-bridge-unification-check.js,dfix-fixture-check.js,dfix-patch-handoff-check.js,dfix-verification-check.js,dfix-verification-recommendation-check.js,docs-truthfulness-check.js,doctor-codex-app-harness-check.js,doctor-fix-proves-codex-read-check.js,doctor-fixes-codex-app-fast-ui-check.js,evidence-flagship-coverage-check.js,fast-codex-service-tier-proof-check.js,fixtures/fake-codex-config-loader.js,gate-policy-audit-check.js,geo-claim-evidence-check.js,geo-cli-blackbox-check.js,geo-crawler-policy-check.js,git-worktree-checkpoint-check.js,git-worktree-cross-rebase-check.js,git-worktree-diff-envelope-check.js,git-worktree-dirty-lock-check.js,git-worktree-dirty-main-detection-check.js,git-worktree-integration-primary-check.js,git-worktree-manifest-append-check.js,git-worktree-untracked-diff-check.js,goal-artifact-compat-check.js,harness-benchmark-check.js,helper-dedup-check.js,hook-latency-budget-check.js,image-artifact-path-contract-check.js,imagegen-real-smoke-check.js,init-deep-backup-retention-check.js,installed-package-smoke-check.js,lib/codex-sdk-gate-lib.js,lib/ensure-dist-fresh.js,lib/git-worktree-fixture.js,lib/valid-png-fixture.js,local-collab-all-pipelines-final-gpt-check.js,loop-directive-check-lib.js,loop-integration-finalizer-check.js,loop-worker-fixture-child.js,mad-preflight-blocks-unreadable-config-check.js,mad-sks-app-ui-no-mutation-check.js}",
|
|
44
|
+
"dist/scripts/{latest-version-guidance-check.js,mad-sks-launch-sql-plane-boundary-check.js,mad-sks-sql-plane-capability-check.js,mad-sks-sql-plane-lifecycle-hook-decision-check.js,mad-sks-sql-plane-result-lifecycle-check.js,managed-config-merge-check.js,mcp-plugin-inventory-check.js,model-call-concurrency-check.js,mutation-callsite-analysis.js,mutation-callsite-coverage-check.js,naruto-ssot-gate-aliases-check.js,naruto-ssot-pipeline-default-check.js,naruto-ssot-route-normalization-check.js,naruto-ssot-routing-check.js,naruto-worktree-coding-blackbox.js,native-capability-repair-matrix-check.js,native-image-generation-repair-check.js,official-subagent-workflow-check.js,package-published-contract-check.js,packlist-performance-check.js,pipeline-codex-native-doctor-mad-routing-check.js,pipeline-codex-native-doctor-mad-routing-real-blackbox.js,pipeline-codex-native-image-routing-check.js,pipeline-codex-native-image-routing-real-blackbox.js,pipeline-codex-native-loop-routing-check.js,pipeline-codex-native-loop-routing-real-blackbox.js,pipeline-codex-native-qa-routing-check.js,pipeline-codex-native-qa-routing-real-blackbox.js,pipeline-codex-native-research-routing-check.js,pipeline-codex-native-research-routing-real-blackbox.js,ppt-full-e2e-blackbox-check.js,ppt-real-export-adapter-check.js,ppt-real-imagegen-smoke-check.js,ppt-real-imagegen-wiring-check.js,ppt-reexport-rereview-check.js,prepublish-fast-check.js,publish-preflight.js,prepublish-release-check-or-fast.js,probe-memoization-check.js,product-design-plugin-routing-check.js,prompt-placeholder-guard-check.js,proof-root-cause-policy-check.js,provider-badge-context-check.js,python-codex-sdk-all-pipelines-check.js,qa-loop-app-handoff-capability-check.js,qa-loop-app-handoff-check.js,qa-loop-app-handoff-cli-check.js,qa-loop-app-handoff-confirmation-check.js,qa-loop-app-handoff-gate-lifecycle-check.js,qa-loop-app-handoff-launch-check.js,qa-loop-app-handoff-status-lifecycle-check.js,qa-loop-budget-policy-check.js,qa-loop-effort-escalation-check.js,qa-loop-execution-profile-routing-check.js,qa-loop-image-path-exposure-check.js,qa-loop-image-path-prompt-injection-check.js,release-affected-selector-check.js,release-aggressive-resource-governor-check.js,release-cache-glob-hashing-check.js,release-cache-input-classifier-check.js,release-cache-neutralization-report-check.js,release-cache-version-neutral-fixture-check.js,release-check-stamp.js,release-dynamic-presets-check.js,release-full-parallelism-blackbox.js,release-gate-batch-runner-check.js,release-gate-budget-check.js,release-gate-dag-runner-check.js,release-gate-dag-runner.js,release-latency-slo-check.js,release-metadata-check.js,release-pack-receipt.js,release-parallel-speed-budget-check.js,release-physical-gates-check.js,release-proof-truth-check.js,release-provenance-check.js,release-real-check.js,release-runtime-truth-matrix-check.js,release-speed-summary.js,research-blueprint-densifier-check.js,research-claim-builder-check.js,research-complete-package-fixture-check.js,research-execution-profile-routing-check.js,research-final-reviewer-blackbox.js,responses-retry-policy-centralized-check.js,runtime-proof-summary-check.js,runtime-script-pack-closure-check.js,scheduler-batch-dispatch-check.js,scheduler-parallel-proof-consistency-check.js,scheduler-utilization-integral-check.js,search-visibility-gate-lib.js,secret-preservation-check.js,seo-audit-fixture-check.js,seo-cli-blackbox-check.js,seo-geo-geo-disambiguation-check.js,seo-geo-route-identity-check.js,seo-geo-skill-rich-content-check.js,seo-no-mutation-by-default-check.js,shared-memory-fixture-check.js,side-effect-runtime-report-check.js,skill-name-canonicalizer-check.js,skill-surface-modernization-check.js,skills-manifest-continuity-check.js,sks-cli-gate-lib.js}",
|
|
46
45
|
"dist/scripts/{real-execution-check-lib.js,gate-lib.js,runtime-domain-gate-lib.js,typed-routing-gate-lib.js,codex-native-gate-lib.js,skill-fixture-check-lib.js,sks-uninstall-regression-check.js,sksd-daemon-check.js,super-search-provider-interface-check.js,triwiki-cache-key-check.js,triwiki-proof-bank-blackbox.js,triwiki-proof-bank-check.js,triwiki-proof-card-check.js,trust-fixture-check.js,type-surface-codex-app-check.js,ultra-router-auto-router-check.js,uninstall-inventory-check.js,install-surface-ssot-check.js,ux-review-extract-wires-real-extractor-check.js,ux-review-imagegen-blackbox-check.js,ux-review-patch-diff-recheck-check.js,ux-review-real-imagegen-smoke-check.js,ux-review-run-wires-imagegen-check.js,wrongness-fixture-check.js}",
|
|
47
46
|
"dist/scripts/check-publish-tag.js",
|
|
48
47
|
"!dist/core/triwiki/context-graph/benchmark",
|
|
@@ -141,10 +140,10 @@
|
|
|
141
140
|
"skill:dedupe-blackbox": "node ./dist/scripts/project-skill-dedupe-blackbox.js",
|
|
142
141
|
"release:check:affected": "npm run release:ensure-build --silent && node ./dist/scripts/release-gate-dag-runner.js --preset affected --changed-since auto --sla 5m",
|
|
143
142
|
"release:real-check": "node ./dist/scripts/release-real-check.js",
|
|
144
|
-
"
|
|
143
|
+
"desktop-bridge:real-evidence": "node ./dist/scripts/desktop-bridge-real-evidence-check.js",
|
|
145
144
|
"release:check:fast": "npm run release:ensure-build --silent && node ./dist/scripts/release-gate-dag-runner.js --preset fast --changed-since auto --sla 5m",
|
|
146
145
|
"release:check:confidence": "npm run release:ensure-build --silent && node ./dist/scripts/release-gate-dag-runner.js --preset confidence --changed-since auto --sla 5m",
|
|
147
|
-
"release:check:full": "npm run build:clean --silent && npm run test:release --silent && node ./dist/scripts/release-gate-dag-runner.js --preset release --full && node ./dist/scripts/release-real-check.js --skip-release-check && npm run release:dist-freshness --silent && node ./dist/scripts/release-check-stamp.js write --preset release --full",
|
|
146
|
+
"release:check:full": "npm run build:clean --silent && npm run test:release --silent && node ./dist/scripts/release-gate-dag-runner.js --preset release --full && node ./dist/scripts/release-pack-receipt.js create && node ./dist/scripts/release-real-check.js --skip-release-check && npm run release:dist-freshness --silent && node ./dist/scripts/release-check-stamp.js write --preset release --full",
|
|
148
147
|
"publish:packlist-performance": "node ./dist/scripts/packlist-performance-check.js",
|
|
149
148
|
"gates:run": "node ./dist/scripts/release-gate-dag-runner.js",
|
|
150
149
|
"policy:gate-audit": "node ./dist/scripts/gate-policy-audit-check.js",
|
|
@@ -204,7 +203,6 @@
|
|
|
204
203
|
"@modelcontextprotocol/client": "2.0.0",
|
|
205
204
|
"@modelcontextprotocol/server": "2.0.0",
|
|
206
205
|
"@openai/codex-sdk": "0.146.0",
|
|
207
|
-
"figlet": "^1.11.0",
|
|
208
206
|
"smol-toml": "^1.7.0",
|
|
209
207
|
"typescript": "^5.9.3"
|
|
210
208
|
},
|