{"openapi":"3.1.0","x-listing-core-fingerprint":"sha256:b9f82fa4842bd82b22dd57932c2afd66c9f4f45ada0b5ea6eebaa7e3e22decee","x-listing-fingerprint":"sha256:18ddd0156a9c5806f9ba686be52789a1766e0cb67e3ab6d42fd937908e50638b","x-bazaar-output-schema":{"type":"object","properties":{"schemaVersion":{"type":"string","const":"2026-07-20"},"product":{"type":"string","const":"sharp-release-choice"},"responseDigest":{"type":"string","pattern":"^sha256:[a-f0-9]{64}$"},"request":{"type":"object","required":["target","profile"]},"dataset":{"type":"object","properties":{"mode":{"const":"reproduced"},"productionReady":{"const":true},"evidenceAsOf":{"type":"string"},"maxEvidenceAgeHours":{"type":"number"},"validUntil":{"type":"string"}},"required":["mode","productionReady","evidenceAsOf","maxEvidenceAgeHours","validUntil"]},"choice":{"type":"object","properties":{"verdict":{"type":"string","enum":["RECOMMEND","CONDITIONAL","NO_KNOWN_GOOD","PREVIEW_ONLY"]},"recommendedVersion":{"type":["string","null"],"enum":["0.35.1","0.35.2","0.35.3",null]},"actions":{"oneOf":[{"type":"object","required":["packageJsonDependency","npmInstallCommand","dockerFrom"]},{"type":"null"}]}},"additionalProperties":{"type":["string","null"]},"required":["verdict","observedBestVersion","recommendedVersion","reason","npmPin","dockerBase","actions"]},"candidates":{"type":"array","minItems":3,"maxItems":3,"items":{"type":"object","properties":{"version":{"type":"string","enum":["0.35.1","0.35.2","0.35.3"]},"classification":{"type":"string","enum":["PASS_PREBUILT","PASS_SOURCE_BUILD","CONDITIONAL","FAIL","INCONCLUSIVE"]},"installMode":{"type":"string","enum":["PREBUILT","SOURCE_BUILD","UNKNOWN"]},"checks":{"type":"object","additionalProperties":{"type":"string","enum":["PASS","FAIL","NOT_REQUIRED","INCONCLUSIVE"]},"required":["cleanInstall","commonJsImport","esmImport","nativeTransform","nftTrace","offlineReplay"]},"evidence":{"type":"object","properties":{"attempts":{"type":"integer","const":2},"consistentAttempts":{"type":"integer","const":2}},"additionalProperties":{"type":"string"},"required":["source","proofId","testedAt","npmIntegrity","imageDigest","harnessDigest","evidenceDigest","attempts","consistentAttempts"]}},"required":["package","version","classification","installMode","checks","evidence"]}},"limitations":{"type":"array","items":{"type":"string"}}},"required":["schemaVersion","product","responseDigest","request","dataset","choice","candidates","limitations"]},"info":{"title":"Sharp Release Compatibility API","version":"0.1.0","description":"Prevent a sharp upgrade that installs cleanly but fails after native loading or @vercel/nft tracing. For one supported Node/Linux amd64 target, compare sharp 0.35.1-0.35.3 on a clean canonical fixture and receive an exact npm pin plus package.json, npm and Docker actions only when a prebuilt candidate passes twice. The response includes an explicit expiry and a recalculable digest. It does not inspect or test the buyer's repository."},"components":{"schemas":{"InvalidJsonError":{"type":"object","additionalProperties":false,"properties":{"error":{"type":"string","const":"invalid_json"},"message":{"type":"string"}},"required":["error","message"]},"InvalidRequestError":{"type":"object","additionalProperties":false,"properties":{"error":{"type":"string","const":"invalid_request"},"message":{"type":"string"},"issues":{"type":"array","minItems":1,"items":{"type":"object","additionalProperties":false,"properties":{"field":{"type":"string"},"message":{"type":"string"},"allowed":{"type":"array","items":{"type":"string"},"uniqueItems":true}},"required":["field","message"]}}},"required":["error","message","issues"]},"UnsupportedTargetError":{"type":"object","additionalProperties":false,"properties":{"error":{"type":"string","const":"unsupported_target"},"message":{"type":"string"}},"required":["error","message"]},"PayloadTooLargeError":{"type":"object","additionalProperties":false,"properties":{"error":{"type":"string","const":"payload_too_large"},"message":{"type":"string"}},"required":["error","message"]},"RateLimitedError":{"type":"object","additionalProperties":false,"properties":{"error":{"type":"string","const":"rate_limited"},"message":{"type":"string"},"retryAfterSeconds":{"type":"integer","minimum":1,"maximum":60}},"required":["error","message","retryAfterSeconds"]},"ServiceUnavailableError":{"oneOf":[{"type":"object","additionalProperties":false,"properties":{"error":{"type":"string","const":"dataset_not_ready"},"message":{"type":"string"},"retryable":{"type":"boolean","const":true}},"required":["error","message","retryable"]},{"type":"object","additionalProperties":false,"properties":{"error":{"type":"string","const":"proof_unavailable"},"message":{"type":"string"},"retryable":{"type":"boolean","const":true}},"required":["error","message","retryable"]}]},"X402PaymentRequired":{"type":"object","properties":{"x402Version":{"type":"integer"},"error":{"type":"string"},"resource":{"type":"object","additionalProperties":true},"accepts":{"type":"array","minItems":1,"items":{"type":"object","additionalProperties":true}},"extensions":{"type":"object","additionalProperties":true}},"required":["x402Version","resource","accepts"],"additionalProperties":true}}},"servers":[{"url":"/","description":"Current host"}],"paths":{"/health":{"get":{"summary":"Process health","responses":{"200":{"description":"The HTTP process is healthy."}}}},"/ready":{"get":{"summary":"Dataset readiness","responses":{"200":{"description":"Reproduced proof bundles are loaded."},"503":{"description":"Only fixtures are loaded; do not launch."}}}},"/v1/sharp/coverage":{"get":{"summary":"List supported targets before paying","responses":{"200":{"description":"Coverage, exact runtime targets, price and dataset state.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"product":{"type":"string","const":"sharp-release-choice"},"package":{"type":"string","const":"sharp"},"datasetMode":{"type":"string","enum":["fixture","reproduced"]},"productionReady":{"type":"boolean"},"evidenceAsOf":{"type":["string","null"],"format":"date-time"},"maxEvidenceAgeHours":{"type":["number","null"]},"targets":{"type":"object","additionalProperties":false,"properties":{"target":{"type":"array","minItems":6,"maxItems":6,"uniqueItems":true,"items":{"type":"string","description":"Exact frozen Node.js, Linux distribution, libc and amd64 runtime tuple to evaluate.","enum":["node22-debian-amd64","node22-alpine-amd64","node24-debian-amd64","node24-alpine-amd64","node26-debian-amd64","node26-alpine-amd64"]}},"profile":{"type":"array","minItems":1,"maxItems":1,"uniqueItems":true,"items":{"type":"string","description":"Fixed clean-fixture proof profile: offline npm ci with lifecycle scripts disabled, CJS/ESM import, native transform, nft trace and network-off replay.","enum":["native+nft-v1"]}}},"required":["target","profile"]},"targetDetails":{"type":"array","minItems":6,"maxItems":6,"items":{"type":"object","additionalProperties":false,"properties":{"target":{"type":"string","description":"Exact frozen Node.js, Linux distribution, libc and amd64 runtime tuple to evaluate.","enum":["node22-debian-amd64","node22-alpine-amd64","node24-debian-amd64","node24-alpine-amd64","node26-debian-amd64","node26-alpine-amd64"]},"nodeVersion":{"type":"string","enum":["22.23.1","24.18.0","26.5.0"]},"imageTag":{"type":"string","pattern":"^node:(?:22\\.23\\.1|24\\.18\\.0|26\\.5\\.0)-(?:bookworm-slim|alpine)$"},"distribution":{"type":"string","enum":["debian-bookworm-slim","alpine"]},"libc":{"type":"string","enum":["glibc","musl"]},"architecture":{"type":"string","const":"amd64"},"lifecycle":{"type":"string","enum":["MAINTENANCE_LTS","ACTIVE_LTS","CURRENT"]}},"required":["target","nodeVersion","imageTag","distribution","libc","architecture","lifecycle"]},"allOf":[{"contains":{"type":"object","properties":{"target":{"const":"node22-debian-amd64"},"nodeVersion":{"const":"22.23.1"},"imageTag":{"const":"node:22.23.1-bookworm-slim"},"distribution":{"const":"debian-bookworm-slim"},"libc":{"const":"glibc"},"architecture":{"const":"amd64"},"lifecycle":{"const":"MAINTENANCE_LTS"}},"required":["target","nodeVersion","imageTag","distribution","libc","architecture","lifecycle"]},"minContains":1,"maxContains":1},{"contains":{"type":"object","properties":{"target":{"const":"node22-alpine-amd64"},"nodeVersion":{"const":"22.23.1"},"imageTag":{"const":"node:22.23.1-alpine"},"distribution":{"const":"alpine"},"libc":{"const":"musl"},"architecture":{"const":"amd64"},"lifecycle":{"const":"MAINTENANCE_LTS"}},"required":["target","nodeVersion","imageTag","distribution","libc","architecture","lifecycle"]},"minContains":1,"maxContains":1},{"contains":{"type":"object","properties":{"target":{"const":"node24-debian-amd64"},"nodeVersion":{"const":"24.18.0"},"imageTag":{"const":"node:24.18.0-bookworm-slim"},"distribution":{"const":"debian-bookworm-slim"},"libc":{"const":"glibc"},"architecture":{"const":"amd64"},"lifecycle":{"const":"ACTIVE_LTS"}},"required":["target","nodeVersion","imageTag","distribution","libc","architecture","lifecycle"]},"minContains":1,"maxContains":1},{"contains":{"type":"object","properties":{"target":{"const":"node24-alpine-amd64"},"nodeVersion":{"const":"24.18.0"},"imageTag":{"const":"node:24.18.0-alpine"},"distribution":{"const":"alpine"},"libc":{"const":"musl"},"architecture":{"const":"amd64"},"lifecycle":{"const":"ACTIVE_LTS"}},"required":["target","nodeVersion","imageTag","distribution","libc","architecture","lifecycle"]},"minContains":1,"maxContains":1},{"contains":{"type":"object","properties":{"target":{"const":"node26-debian-amd64"},"nodeVersion":{"const":"26.5.0"},"imageTag":{"const":"node:26.5.0-bookworm-slim"},"distribution":{"const":"debian-bookworm-slim"},"libc":{"const":"glibc"},"architecture":{"const":"amd64"},"lifecycle":{"const":"CURRENT"}},"required":["target","nodeVersion","imageTag","distribution","libc","architecture","lifecycle"]},"minContains":1,"maxContains":1},{"contains":{"type":"object","properties":{"target":{"const":"node26-alpine-amd64"},"nodeVersion":{"const":"26.5.0"},"imageTag":{"const":"node:26.5.0-alpine"},"distribution":{"const":"alpine"},"libc":{"const":"musl"},"architecture":{"const":"amd64"},"lifecycle":{"const":"CURRENT"}},"required":["target","nodeVersion","imageTag","distribution","libc","architecture","lifecycle"]},"minContains":1,"maxContains":1}]},"candidateVersions":{"type":"array","minItems":3,"maxItems":3,"uniqueItems":true,"items":{"type":"string","enum":["0.35.1","0.35.2","0.35.3"]}},"supportedTuples":{"type":"integer","const":6},"availableBundles":{"type":"integer","minimum":0,"maximum":6},"price":{"type":"string","pattern":"^\\$(?:0|[1-9]\\d*)(?:\\.\\d{1,6})?$"},"note":{"type":"string"}},"required":["product","package","datasetMode","productionReady","evidenceAsOf","maxEvidenceAgeHours","targets","targetDetails","candidateVersions","supportedTuples","availableBundles","price","note"],"oneOf":[{"properties":{"datasetMode":{"const":"fixture"},"productionReady":{"const":false},"evidenceAsOf":{"type":"null"},"maxEvidenceAgeHours":{"type":"null"},"availableBundles":{"const":0}},"required":["datasetMode","productionReady","evidenceAsOf","maxEvidenceAgeHours","availableBundles"]},{"properties":{"datasetMode":{"const":"reproduced"},"productionReady":{"const":false},"evidenceAsOf":{"type":"string","format":"date-time"},"maxEvidenceAgeHours":{"type":"number","exclusiveMinimum":0,"maximum":168},"availableBundles":{"const":0}},"required":["datasetMode","productionReady","evidenceAsOf","maxEvidenceAgeHours","availableBundles"]},{"properties":{"datasetMode":{"const":"reproduced"},"productionReady":{"const":true},"evidenceAsOf":{"type":"string","format":"date-time"},"maxEvidenceAgeHours":{"type":"number","exclusiveMinimum":0,"maximum":168},"availableBundles":{"const":6}},"required":["datasetMode","productionReady","evidenceAsOf","maxEvidenceAgeHours","availableBundles"]}]}}}}}}},"/v1/sharp/release-choice":{"post":{"operationId":"chooseSharpRelease","summary":"Choose a tested sharp release for a deployment target","description":"Returns a cached comparison of three sharp releases across install, CJS/ESM import, native transform, @vercel/nft tracing and offline replay. Invalid or unsupported targets return 400 before the x402 payment flow.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"target":{"type":"string","description":"Exact frozen Node.js, Linux distribution, libc and amd64 runtime tuple to evaluate.","enum":["node22-debian-amd64","node22-alpine-amd64","node24-debian-amd64","node24-alpine-amd64","node26-debian-amd64","node26-alpine-amd64"]},"profile":{"type":"string","description":"Fixed clean-fixture proof profile: offline npm ci with lifecycle scripts disabled, CJS/ESM import, native transform, nft trace and network-off replay.","enum":["native+nft-v1"]}},"required":["target","profile"]},"example":{"target":"node24-alpine-amd64","profile":"native+nft-v1"}}}},"responses":{"200":{"description":"Paid cached release decision and evidence.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"schemaVersion":{"type":"string","const":"2026-07-20"},"product":{"type":"string","const":"sharp-release-choice"},"responseDigest":{"type":"string","pattern":"^sha256:[a-f0-9]{64}$"},"request":{"type":"object","additionalProperties":false,"properties":{"target":{"type":"string","description":"Exact frozen Node.js, Linux distribution, libc and amd64 runtime tuple to evaluate.","enum":["node22-debian-amd64","node22-alpine-amd64","node24-debian-amd64","node24-alpine-amd64","node26-debian-amd64","node26-alpine-amd64"]},"profile":{"type":"string","description":"Fixed clean-fixture proof profile: offline npm ci with lifecycle scripts disabled, CJS/ESM import, native transform, nft trace and network-off replay.","enum":["native+nft-v1"]}},"required":["target","profile"]},"dataset":{"type":"object","additionalProperties":false,"properties":{"mode":{"type":"string","const":"reproduced"},"productionReady":{"type":"boolean","const":true},"evidenceAsOf":{"type":"string","format":"date-time"},"maxEvidenceAgeHours":{"type":"number","exclusiveMinimum":0,"maximum":168},"validUntil":{"type":"string","format":"date-time"},"warning":{"type":"string"}},"required":["mode","productionReady","evidenceAsOf","maxEvidenceAgeHours","validUntil"]},"choice":{"type":"object","additionalProperties":false,"properties":{"verdict":{"type":"string","enum":["RECOMMEND","CONDITIONAL","NO_KNOWN_GOOD","PREVIEW_ONLY"]},"observedBestVersion":{"type":["string","null"],"enum":["0.35.1","0.35.2","0.35.3",null]},"recommendedVersion":{"type":["string","null"],"enum":["0.35.1","0.35.2","0.35.3",null]},"reason":{"type":"string"},"npmPin":{"type":["string","null"]},"dockerBase":{"type":"string","pattern":"^node:(?:22\\.23\\.1|24\\.18\\.0|26\\.5\\.0)-(?:bookworm-slim|alpine)@sha256:[a-f0-9]{64}$"},"actions":{"oneOf":[{"type":"object","additionalProperties":false,"properties":{"packageJsonDependency":{"type":"string"},"npmInstallCommand":{"type":"string"},"dockerFrom":{"type":"string","pattern":"^FROM node:(?:22\\.23\\.1|24\\.18\\.0|26\\.5\\.0)-(?:bookworm-slim|alpine)@sha256:[a-f0-9]{64}$"}},"required":["packageJsonDependency","npmInstallCommand","dockerFrom"]},{"type":"null"}]}},"required":["verdict","observedBestVersion","recommendedVersion","reason","npmPin","dockerBase","actions"],"allOf":[{"if":{"properties":{"verdict":{"const":"RECOMMEND"}},"required":["verdict"]},"then":{"properties":{"observedBestVersion":{"type":"string","enum":["0.35.1","0.35.2","0.35.3"]},"recommendedVersion":{"type":"string","enum":["0.35.1","0.35.2","0.35.3"]},"npmPin":{"type":"string","pattern":"^sharp@0\\.35\\.[123]$"},"actions":{"type":"object","additionalProperties":false,"properties":{"packageJsonDependency":{"type":"string"},"npmInstallCommand":{"type":"string"},"dockerFrom":{"type":"string","pattern":"^FROM node:(?:22\\.23\\.1|24\\.18\\.0|26\\.5\\.0)-(?:bookworm-slim|alpine)@sha256:[a-f0-9]{64}$"}},"required":["packageJsonDependency","npmInstallCommand","dockerFrom"]}}}},{"if":{"properties":{"verdict":{"enum":["CONDITIONAL","NO_KNOWN_GOOD","PREVIEW_ONLY"]}},"required":["verdict"]},"then":{"properties":{"recommendedVersion":{"type":"null"},"npmPin":{"type":"null"},"actions":{"type":"null"}}}},{"if":{"properties":{"verdict":{"const":"NO_KNOWN_GOOD"}},"required":["verdict"]},"then":{"properties":{"observedBestVersion":{"type":"null"},"recommendedVersion":{"type":"null"}}}}]},"candidates":{"type":"array","minItems":3,"maxItems":3,"allOf":[{"contains":{"type":"object","properties":{"version":{"const":"0.35.1"}},"required":["version"]},"minContains":1,"maxContains":1},{"contains":{"type":"object","properties":{"version":{"const":"0.35.2"}},"required":["version"]},"minContains":1,"maxContains":1},{"contains":{"type":"object","properties":{"version":{"const":"0.35.3"}},"required":["version"]},"minContains":1,"maxContains":1}],"items":{"type":"object","additionalProperties":false,"properties":{"package":{"type":"string","const":"sharp"},"version":{"type":"string","enum":["0.35.1","0.35.2","0.35.3"]},"classification":{"type":"string","enum":["PASS_PREBUILT","PASS_SOURCE_BUILD","CONDITIONAL","FAIL","INCONCLUSIVE"]},"installMode":{"type":"string","enum":["PREBUILT","SOURCE_BUILD","UNKNOWN"]},"checks":{"type":"object","additionalProperties":false,"properties":{"cleanInstall":{"type":"string","enum":["PASS","FAIL","NOT_REQUIRED","INCONCLUSIVE"]},"commonJsImport":{"type":"string","enum":["PASS","FAIL","NOT_REQUIRED","INCONCLUSIVE"]},"esmImport":{"type":"string","enum":["PASS","FAIL","NOT_REQUIRED","INCONCLUSIVE"]},"nativeTransform":{"type":"string","enum":["PASS","FAIL","NOT_REQUIRED","INCONCLUSIVE"]},"nftTrace":{"type":"string","enum":["PASS","FAIL","NOT_REQUIRED","INCONCLUSIVE"]},"offlineReplay":{"type":"string","enum":["PASS","FAIL","NOT_REQUIRED","INCONCLUSIVE"]}},"required":["cleanInstall","commonJsImport","esmImport","nativeTransform","nftTrace","offlineReplay"]},"evidence":{"type":"object","additionalProperties":false,"properties":{"source":{"type":"string","const":"reproduced"},"proofId":{"type":"string"},"testedAt":{"type":"string","format":"date-time"},"npmIntegrity":{"type":"string","pattern":"^sha512-[A-Za-z0-9+/]+={0,2}$"},"imageDigest":{"type":"string","pattern":"^sha256:[a-f0-9]{64}$"},"harnessDigest":{"type":"string","pattern":"^sha256:[a-f0-9]{64}$"},"evidenceDigest":{"type":"string","pattern":"^sha256:[a-f0-9]{64}$"},"attempts":{"type":"integer","const":2},"consistentAttempts":{"type":"integer","const":2}},"required":["source","proofId","testedAt","npmIntegrity","imageDigest","harnessDigest","evidenceDigest","attempts","consistentAttempts"]}},"required":["package","version","classification","installMode","checks","evidence"],"allOf":[{"if":{"properties":{"classification":{"const":"PASS_PREBUILT"}},"required":["classification"]},"then":{"properties":{"installMode":{"const":"PREBUILT"},"checks":{"properties":{"cleanInstall":{"const":"PASS"},"commonJsImport":{"const":"PASS"},"esmImport":{"const":"PASS"},"nativeTransform":{"const":"PASS"},"nftTrace":{"const":"PASS"},"offlineReplay":{"const":"PASS"}}}}}},{"if":{"properties":{"classification":{"const":"PASS_SOURCE_BUILD"}},"required":["classification"]},"then":{"properties":{"installMode":{"const":"SOURCE_BUILD"},"checks":{"properties":{"cleanInstall":{"const":"PASS"},"commonJsImport":{"const":"PASS"},"esmImport":{"const":"PASS"},"nativeTransform":{"const":"PASS"},"nftTrace":{"const":"PASS"},"offlineReplay":{"const":"PASS"}}}}}},{"if":{"properties":{"classification":{"enum":["CONDITIONAL","FAIL","INCONCLUSIVE"]}},"required":["classification"]},"then":{"properties":{"checks":{"anyOf":[{"properties":{"cleanInstall":{"enum":["FAIL","NOT_REQUIRED","INCONCLUSIVE"]}},"required":["cleanInstall"]},{"properties":{"commonJsImport":{"enum":["FAIL","NOT_REQUIRED","INCONCLUSIVE"]}},"required":["commonJsImport"]},{"properties":{"esmImport":{"enum":["FAIL","NOT_REQUIRED","INCONCLUSIVE"]}},"required":["esmImport"]},{"properties":{"nativeTransform":{"enum":["FAIL","NOT_REQUIRED","INCONCLUSIVE"]}},"required":["nativeTransform"]},{"properties":{"nftTrace":{"enum":["FAIL","NOT_REQUIRED","INCONCLUSIVE"]}},"required":["nftTrace"]},{"properties":{"offlineReplay":{"enum":["FAIL","NOT_REQUIRED","INCONCLUSIVE"]}},"required":["offlineReplay"]}]}}}}]}},"limitations":{"type":"array","minItems":1,"items":{"type":"string"}}},"required":["schemaVersion","product","responseDigest","request","dataset","choice","candidates","limitations"],"allOf":[{"if":{"properties":{"request":{"properties":{"target":{"enum":["node26-debian-amd64","node26-alpine-amd64"]}},"required":["target"]}},"required":["request"]},"then":{"properties":{"choice":{"properties":{"verdict":{"const":"PREVIEW_ONLY"},"recommendedVersion":{"type":"null"},"npmPin":{"type":"null"},"actions":{"type":"null"}}}}}},{"if":{"properties":{"request":{"properties":{"target":{"enum":["node22-debian-amd64","node22-alpine-amd64","node24-debian-amd64","node24-alpine-amd64"]}},"required":["target"]}},"required":["request"]},"then":{"properties":{"choice":{"properties":{"verdict":{"enum":["RECOMMEND","CONDITIONAL","NO_KNOWN_GOOD"]}}}}}},{"if":{"properties":{"request":{"properties":{"target":{"const":"node22-debian-amd64"}},"required":["target"]}},"required":["request"]},"then":{"properties":{"choice":{"properties":{"dockerBase":{"pattern":"^node:22\\.23\\.1-bookworm-slim@sha256:[a-f0-9]{64}$"},"actions":{"properties":{"dockerFrom":{"pattern":"^FROM node:22\\.23\\.1-bookworm-slim@sha256:[a-f0-9]{64}$"}}}}}}}},{"if":{"properties":{"request":{"properties":{"target":{"const":"node22-alpine-amd64"}},"required":["target"]}},"required":["request"]},"then":{"properties":{"choice":{"properties":{"dockerBase":{"pattern":"^node:22\\.23\\.1-alpine@sha256:[a-f0-9]{64}$"},"actions":{"properties":{"dockerFrom":{"pattern":"^FROM node:22\\.23\\.1-alpine@sha256:[a-f0-9]{64}$"}}}}}}}},{"if":{"properties":{"request":{"properties":{"target":{"const":"node24-debian-amd64"}},"required":["target"]}},"required":["request"]},"then":{"properties":{"choice":{"properties":{"dockerBase":{"pattern":"^node:24\\.18\\.0-bookworm-slim@sha256:[a-f0-9]{64}$"},"actions":{"properties":{"dockerFrom":{"pattern":"^FROM node:24\\.18\\.0-bookworm-slim@sha256:[a-f0-9]{64}$"}}}}}}}},{"if":{"properties":{"request":{"properties":{"target":{"const":"node24-alpine-amd64"}},"required":["target"]}},"required":["request"]},"then":{"properties":{"choice":{"properties":{"dockerBase":{"pattern":"^node:24\\.18\\.0-alpine@sha256:[a-f0-9]{64}$"},"actions":{"properties":{"dockerFrom":{"pattern":"^FROM node:24\\.18\\.0-alpine@sha256:[a-f0-9]{64}$"}}}}}}}},{"if":{"properties":{"request":{"properties":{"target":{"const":"node26-debian-amd64"}},"required":["target"]}},"required":["request"]},"then":{"properties":{"choice":{"properties":{"dockerBase":{"pattern":"^node:26\\.5\\.0-bookworm-slim@sha256:[a-f0-9]{64}$"},"actions":{"properties":{"dockerFrom":{"pattern":"^FROM node:26\\.5\\.0-bookworm-slim@sha256:[a-f0-9]{64}$"}}}}}}}},{"if":{"properties":{"request":{"properties":{"target":{"const":"node26-alpine-amd64"}},"required":["target"]}},"required":["request"]},"then":{"properties":{"choice":{"properties":{"dockerBase":{"pattern":"^node:26\\.5\\.0-alpine@sha256:[a-f0-9]{64}$"},"actions":{"properties":{"dockerFrom":{"pattern":"^FROM node:26\\.5\\.0-alpine@sha256:[a-f0-9]{64}$"}}}}}}}},{"if":{"properties":{"choice":{"properties":{"verdict":{"const":"RECOMMEND"},"recommendedVersion":{"const":"0.35.1"}},"required":["verdict","recommendedVersion"]}},"required":["choice"]},"then":{"properties":{"choice":{"properties":{"observedBestVersion":{"const":"0.35.1"},"npmPin":{"const":"sharp@0.35.1"},"actions":{"properties":{"packageJsonDependency":{"const":"\"sharp\": \"0.35.1\""},"npmInstallCommand":{"const":"npm install --save-exact sharp@0.35.1"}}}}},"candidates":{"allOf":[{"contains":{"type":"object","properties":{"version":{"const":"0.35.1"},"classification":{"const":"PASS_PREBUILT"},"installMode":{"const":"PREBUILT"},"checks":{"properties":{"cleanInstall":{"const":"PASS"},"commonJsImport":{"const":"PASS"},"esmImport":{"const":"PASS"},"nativeTransform":{"const":"PASS"},"nftTrace":{"const":"PASS"},"offlineReplay":{"const":"PASS"}}}},"required":["version","classification","installMode","checks"]},"minContains":1,"maxContains":1},{"contains":{"type":"object","properties":{"version":{"const":"0.35.2"},"classification":{"not":{"const":"PASS_PREBUILT"}}},"required":["version","classification"]},"minContains":1,"maxContains":1},{"contains":{"type":"object","properties":{"version":{"const":"0.35.3"},"classification":{"not":{"const":"PASS_PREBUILT"}}},"required":["version","classification"]},"minContains":1,"maxContains":1}]}}}},{"if":{"properties":{"choice":{"properties":{"verdict":{"const":"RECOMMEND"},"recommendedVersion":{"const":"0.35.2"}},"required":["verdict","recommendedVersion"]}},"required":["choice"]},"then":{"properties":{"choice":{"properties":{"observedBestVersion":{"const":"0.35.2"},"npmPin":{"const":"sharp@0.35.2"},"actions":{"properties":{"packageJsonDependency":{"const":"\"sharp\": \"0.35.2\""},"npmInstallCommand":{"const":"npm install --save-exact sharp@0.35.2"}}}}},"candidates":{"allOf":[{"contains":{"type":"object","properties":{"version":{"const":"0.35.2"},"classification":{"const":"PASS_PREBUILT"},"installMode":{"const":"PREBUILT"},"checks":{"properties":{"cleanInstall":{"const":"PASS"},"commonJsImport":{"const":"PASS"},"esmImport":{"const":"PASS"},"nativeTransform":{"const":"PASS"},"nftTrace":{"const":"PASS"},"offlineReplay":{"const":"PASS"}}}},"required":["version","classification","installMode","checks"]},"minContains":1,"maxContains":1},{"contains":{"type":"object","properties":{"version":{"const":"0.35.3"},"classification":{"not":{"const":"PASS_PREBUILT"}}},"required":["version","classification"]},"minContains":1,"maxContains":1}]}}}},{"if":{"properties":{"choice":{"properties":{"verdict":{"const":"RECOMMEND"},"recommendedVersion":{"const":"0.35.3"}},"required":["verdict","recommendedVersion"]}},"required":["choice"]},"then":{"properties":{"choice":{"properties":{"observedBestVersion":{"const":"0.35.3"},"npmPin":{"const":"sharp@0.35.3"},"actions":{"properties":{"packageJsonDependency":{"const":"\"sharp\": \"0.35.3\""},"npmInstallCommand":{"const":"npm install --save-exact sharp@0.35.3"}}}}},"candidates":{"allOf":[{"contains":{"type":"object","properties":{"version":{"const":"0.35.3"},"classification":{"const":"PASS_PREBUILT"},"installMode":{"const":"PREBUILT"},"checks":{"properties":{"cleanInstall":{"const":"PASS"},"commonJsImport":{"const":"PASS"},"esmImport":{"const":"PASS"},"nativeTransform":{"const":"PASS"},"nftTrace":{"const":"PASS"},"offlineReplay":{"const":"PASS"}}}},"required":["version","classification","installMode","checks"]},"minContains":1,"maxContains":1}]}}}}]}}}},"400":{"description":"Malformed JSON (invalid_json), a request outside the exact schema (invalid_request), or an unavailable exact tuple (unsupported_target). No payment is requested.","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/InvalidJsonError"},{"$ref":"#/components/schemas/InvalidRequestError"},{"$ref":"#/components/schemas/UnsupportedTargetError"}]}}}},"402":{"description":"Valid input and ready dataset; x402 payment is required. The PAYMENT-REQUIRED header carries the encoded protocol challenge.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 PaymentRequired payload.","required":true,"schema":{"type":"string","contentEncoding":"base64"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/X402PaymentRequired"}}}},"413":{"description":"Request exceeds the 2 kB limit. No payment is requested.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PayloadTooLargeError"}}}},"429":{"description":"The process-wide protected-route limit was reached before telemetry, JSON parsing or payment.","headers":{"Retry-After":{"description":"Seconds until this process may accept another protected request.","required":true,"schema":{"type":"integer","minimum":1,"maximum":60}},"RateLimit-Limit":{"description":"Maximum protected requests accepted in the current 60-second window.","required":true,"schema":{"type":"integer","minimum":1}},"RateLimit-Remaining":{"description":"Protected requests remaining in the current window.","required":true,"schema":{"type":"integer","const":0}},"RateLimit-Reset":{"description":"Seconds until the process-wide window resets.","required":true,"schema":{"type":"integer","minimum":1,"maximum":60}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitedError"}}}},"503":{"description":"The full reproduced dataset is not ready (dataset_not_ready), or the exact cached proof is not sellable (proof_unavailable). No payment challenge is issued and fixtures are never sold.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceUnavailableError"}}}}}}},"/methodology":{"get":{"summary":"Proof methodology","responses":{"200":{"description":"Human- and agent-readable methodology."}}}}}}