{"schemaVersion":1,"status":{"id":"c665af50-ea43-437f-8016-e3928e3b908a","scanId":"f5159824-8818-480a-ae21-959bee506d7d","invalidatedAt":null,"invalidationReason":null,"replacedBy":null,"snapshotAvailable":true,"policyAllowed":true,"createdAt":"2026-10-09T11:12:56.271Z","observationRevision":0,"previousScanId":null,"previousReportId":null,"current":true},"report":{"schemaVersion":1,"id":"c665af50-ea43-437f-8016-e3928e3b908a","scanId":"f5159824-8818-480a-ae21-959bee506d7d","classifierRevision":"classifier_v2","observedAt":"2026-10-09T11:12:55.843Z","classifiedAt":"2026-10-09T11:12:56.274Z","artifact":{"name":"ajv","version":"8.20.0","integrity":"sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==","tarballUrl":"https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz"},"preparation":{"id":"6e0af4a5-856a-40ba-ba03-6141b405fcf6","outcome":"pass","failure":null,"profileRevision":"npm_11_19_0_linux_amd64_v2","snapshot":{"id":"f0d48138-0a2c-475d-8ede-c4880fc6dbdd","generation":"cbc9c80a-f6f0-46b6-a0d8-5891d631172f","lockDigest":"430f528ddcc8055b5fb270a06ee62d42cb90435fe2477597bf37375e71ffd25e","treeDigest":"2edfb9d96ad041a55135c36e0b7d470603ac9d10d51d9bd684681f3cfb3b59e3","profileRevision":"npm_11_19_0_linux_amd64_v2","installerImage":"node:24.21.0-bookworm-slim@sha256:5cbc7caba8c2c0f0bca675d1b61b9f2857e1cf1853c6164ee9dd409501a936e7"},"installedCount":5,"omittedOptionalCount":0,"staticObservations":{"native":{"count":0,"paths":[],"buildIndicators":[],"prerequisiteProven":false},"declared":{"main":"dist/ajv.js","scripts":{"test":"npm run json-tests && npm run prettier:check && npm run eslint && npm link && npm link --legacy-peer-deps ajv && npm run test-cov","build":"rm -rf dist && tsc && cp -r lib/refs dist && rm dist/refs/json-schema-2019-09/index.ts && rm dist/refs/json-schema-2020-12/index.ts && rm dist/refs/jtd-schema.ts","bundle":"rm -rf bundle && node ./scripts/bundle.js ajv ajv7 ajv7 && node ./scripts/bundle.js 2019 ajv2019 ajv2019 && node ./scripts/bundle.js 2020 ajv2020 ajv2020 && node ./scripts/bundle.js jtd ajvJTD ajvJTD","eslint":"eslint \"lib/**/*.ts\" \"spec/**/*.*s\" --ignore-pattern spec/JSON-Schema-Test-Suite","rollup":"rm -rf bundle && rollup -c","test-ci":"AJV_FULL_TEST=true npm test","docs:dev":"./scripts/prepare-site && vuepress dev docs","test-all":"npm run test-cov","test-cov":"nyc npm run test-spec","benchmark":"npm i && npm run build && npm link && cd ./benchmark && npm link --legacy-peer-deps ajv && npm i && node ./jtd","test-spec":"cross-env TS_NODE_PROJECT=spec/tsconfig.json mocha -r ts-node/register \"spec/**/*.spec.{ts,js}\" -R dot","docs:build":"./scripts/prepare-site && vuepress build docs","json-tests":"rm -rf spec/_json/*.js && node scripts/jsontests","prepublish":"npm run build","test-debug":"npm run test-spec -- --inspect-brk","test-karma":"karma start","test-browser":"rm -rf .browser && npm run bundle && scripts/prepare-tests && karma start","test-codegen":"nyc cross-env TS_NODE_PROJECT=spec/tsconfig.json mocha -r ts-node/register 'spec/codegen.spec.ts' -R spec","prettier:check":"prettier --list-different \"./**/*.{json,yaml,js,ts}\"","prettier:write":"prettier --write \"./**/*.{json,yaml,js,ts}\""},"dependencies":{"fast-uri":"^3.0.1","fast-deep-equal":"^3.1.3","require-from-string":"^2.0.2","json-schema-traverse":"^1.0.0"},"devDependencies":{"nyc":"^15.1.0","re2":"^1.20.9","chai":"^4.4.1","glob":"^10.3.10","jimp":"^0.22.10","dayjs":"^1.11.10","husky":"^9.0.11","karma":"^6.4.2","mocha":"^10.3.0","tsify":"^5.0.4","eslint":"^8.57.0","rollup":"^2.79.1","uri-js":"^4.4.1","ts-node":"^10.9.2","prettier":"3.0.3","cross-env":"^7.0.3","browserify":"^17.0.0","node-fetch":"^3.3.2","typescript":"5.3.3","@types/chai":"^4.3.11","@types/node":"^20.11.30","ajv-formats":"^3.0.1","js-beautify":"^1.15.1","karma-mocha":"^2.0.1","lint-staged":"^15.2.2","@types/mocha":"^10.0.6","dayjs-plugin-utc":"^0.1.2","json-schema-test":"^2.0.0","module-from-string":"^3.3.0","@rollup/plugin-json":"^6.1.0","rollup-plugin-terser":"^7.0.2","@ajv-validator/config":"^0.5.0","karma-chrome-launcher":"^3.2.0","eslint-config-prettier":"^9.1.0","@rollup/plugin-commonjs":"^25.0.7","@rollup/plugin-typescript":"^11.1.6","@typescript-eslint/parser":"^7.3.1","@types/require-from-string":"^1.2.3","@rollup/plugin-node-resolve":"^15.2.3","@typescript-eslint/eslint-plugin":"^7.3.1"}},"platform":{"os":true,"cpu":true,"libc":true},"evidenceLevel":"static_only","lifecycleScripts":[]}},"matrix":{"id":"bfab88d7-3f4a-41b5-97a9-5aafd5bda511","revision":"production_ab51508deb208994caf81cb80f14b800","platform":"linux_amd64_glibc","harnessRevision":"load_v2","planRevision":"explicit_exports_v1","policyRevision":"runtime_limits_v2","images":[{"profileId":"node_24_21_0","kind":"node","version":"24.21.0","imageId":"sha256:f2fcbb4dfbd6d5f57f4e43de97e70182d9982ac7cc0cc063dfff2cf1759a411d","builtAt":"2026-10-04T15:20:38.392Z","sourceImage":"node:24.21.0-bookworm-slim@sha256:5cbc7caba8c2c0f0bca675d1b61b9f2857e1cf1853c6164ee9dd409501a936e7","baseImage":"gcr.io/distroless/cc-debian13:nonroot@sha256:20afe6a70f2565277b704cc17289cb557f353a3619f6350f52a2317106598df4","supportImage":"node:26.10.0-bookworm-slim@sha256:0a992e1420e2d70611578f1844a6f10a9d11fe6bb535aabf72efe3007f13d79b","platform":"linux_amd64_glibc","recipeRevision":"runtime_image_v1"},{"profileId":"node_26_10_0","kind":"node","version":"26.10.0","imageId":"sha256:9c1c93cc35d1408d26a61c4efccbde37c35425e362a2e723b885c3333d2be073","builtAt":"2026-10-04T15:20:47.161Z","sourceImage":"node:26.10.0-bookworm-slim@sha256:0a992e1420e2d70611578f1844a6f10a9d11fe6bb535aabf72efe3007f13d79b","baseImage":"gcr.io/distroless/cc-debian13:nonroot@sha256:20afe6a70f2565277b704cc17289cb557f353a3619f6350f52a2317106598df4","supportImage":"node:26.10.0-bookworm-slim@sha256:0a992e1420e2d70611578f1844a6f10a9d11fe6bb535aabf72efe3007f13d79b","platform":"linux_amd64_glibc","recipeRevision":"runtime_image_v1"},{"profileId":"bun_1_4_2","kind":"bun","version":"1.4.2","imageId":"sha256:2343363679fb92d59a395ff081b783b5514f06295b1bc6d61baaeef17e793789","builtAt":"2026-10-04T15:21:07.160Z","sourceImage":"oven/bun:1.4.2-debian@sha256:53710ce0f14eef8312521c586a7ae1d9aeab4011840f09f1966073b68fc2e2ab","baseImage":"gcr.io/distroless/cc-debian13:nonroot@sha256:20afe6a70f2565277b704cc17289cb557f353a3619f6350f52a2317106598df4","supportImage":"node:26.10.0-bookworm-slim@sha256:0a992e1420e2d70611578f1844a6f10a9d11fe6bb535aabf72efe3007f13d79b","platform":"linux_amd64_glibc","recipeRevision":"runtime_image_v1"},{"profileId":"deno_2_9_7","kind":"deno","version":"2.9.7","imageId":"sha256:4292bb23555f98fb9dfc30fb447daa1c301686d89264fd8643ccb86bc0d53c29","builtAt":"2026-10-04T15:21:22.570Z","sourceImage":"denoland/deno:debian-2.9.7@sha256:869d374bdaddda4fde029c492d7219199b0e821c2c53cca5357b3a6f5b9336fc","baseImage":"gcr.io/distroless/cc-debian13:nonroot@sha256:20afe6a70f2565277b704cc17289cb557f353a3619f6350f52a2317106598df4","supportImage":"node:26.10.0-bookworm-slim@sha256:0a992e1420e2d70611578f1844a6f10a9d11fe6bb535aabf72efe3007f13d79b","platform":"linux_amd64_glibc","recipeRevision":"runtime_image_v1"}]},"omissions":{"counts":{"pattern":0,"non_executable":0,"not_exported":0,"invalid_subpath":0,"coverage_limit":0},"samples":[]},"outcome":"pass","evidenceLevel":"smoke_tested","coverageComplete":true,"cells":[{"runId":"dbd2a742-8d19-4d5c-b45e-3380f153c423","profileId":"node_24_21_0","group":"root","mode":"esm","method":"fresh_root_v2","outcome":"pass","evidenceLevel":"smoke_tested","coverage":{"planned":1,"observed":1,"passed":1,"failed":0,"prerequisiteLimited":0,"interrupted":0,"untested":0,"complete":true},"durationMs":300.7467169999145,"failure":null,"entries":[{"index":0,"specifier":"ajv","displaySpecifier":"ajv","outcome":"pass","durationMs":32.004179,"resolvedTo":"file:///workspace/node_modules/ajv/dist/ajv.js","failure":null}],"sessions":[{"probeId":"2071a4ff-1d17-42dd-bb65-dae8e41693ef","startIndex":0,"stopReason":"completed","exitCode":0,"oomKilled":false,"durationMs":300.7467169999145}]},{"runId":"1d4e2f10-431d-4c78-8ea2-27cb0a1a5e92","profileId":"node_24_21_0","group":"root","mode":"commonjs","method":"fresh_root_v2","outcome":"pass","evidenceLevel":"smoke_tested","coverage":{"planned":1,"observed":1,"passed":1,"failed":0,"prerequisiteLimited":0,"interrupted":0,"untested":0,"complete":true},"durationMs":320.0109649999067,"failure":null,"entries":[{"index":0,"specifier":"ajv","displaySpecifier":"ajv","outcome":"pass","durationMs":32.749607999999995,"resolvedTo":"/workspace/node_modules/ajv/dist/ajv.js","failure":null}],"sessions":[{"probeId":"fe00af07-29be-4847-8ff9-e304dac5518b","startIndex":0,"stopReason":"completed","exitCode":0,"oomKilled":false,"durationMs":320.0109649999067}]},{"runId":"104042b3-6585-43df-b1b6-fde56acf047a","profileId":"node_24_21_0","group":"subpaths","mode":"esm","method":"sequential_batch_v2","outcome":"not_applicable","evidenceLevel":"static_only","coverage":{"planned":0,"observed":0,"passed":0,"failed":0,"prerequisiteLimited":0,"interrupted":0,"untested":0,"complete":true},"durationMs":0,"failure":null,"entries":[],"sessions":[]},{"runId":"9438c10c-515e-4a74-82d5-5b626ec13211","profileId":"node_24_21_0","group":"subpaths","mode":"commonjs","method":"sequential_batch_v2","outcome":"not_applicable","evidenceLevel":"static_only","coverage":{"planned":0,"observed":0,"passed":0,"failed":0,"prerequisiteLimited":0,"interrupted":0,"untested":0,"complete":true},"durationMs":0,"failure":null,"entries":[],"sessions":[]},{"runId":"a135fc88-32c0-4d1a-bb61-078004482aab","profileId":"node_26_10_0","group":"root","mode":"esm","method":"fresh_root_v2","outcome":"pass","evidenceLevel":"smoke_tested","coverage":{"planned":1,"observed":1,"passed":1,"failed":0,"prerequisiteLimited":0,"interrupted":0,"untested":0,"complete":true},"durationMs":334.1837039999664,"failure":null,"entries":[{"index":0,"specifier":"ajv","displaySpecifier":"ajv","outcome":"pass","durationMs":25.373824,"resolvedTo":"file:///workspace/node_modules/ajv/dist/ajv.js","failure":null}],"sessions":[{"probeId":"18b200df-cb65-4df8-97df-aa022ff1b13a","startIndex":0,"stopReason":"completed","exitCode":0,"oomKilled":false,"durationMs":334.1837039999664}]},{"runId":"b4f17428-beb1-4596-a06e-d0bdd46013d3","profileId":"node_26_10_0","group":"root","mode":"commonjs","method":"fresh_root_v2","outcome":"pass","evidenceLevel":"smoke_tested","coverage":{"planned":1,"observed":1,"passed":1,"failed":0,"prerequisiteLimited":0,"interrupted":0,"untested":0,"complete":true},"durationMs":417.9932709999848,"failure":null,"entries":[{"index":0,"specifier":"ajv","displaySpecifier":"ajv","outcome":"pass","durationMs":37.221649,"resolvedTo":"/workspace/node_modules/ajv/dist/ajv.js","failure":null}],"sessions":[{"probeId":"a9089a44-6ad7-4a61-ad70-334d46e6d1bb","startIndex":0,"stopReason":"completed","exitCode":0,"oomKilled":false,"durationMs":417.9932709999848}]},{"runId":"dfe47960-f35b-444d-803a-3007b0070cbd","profileId":"node_26_10_0","group":"subpaths","mode":"esm","method":"sequential_batch_v2","outcome":"not_applicable","evidenceLevel":"static_only","coverage":{"planned":0,"observed":0,"passed":0,"failed":0,"prerequisiteLimited":0,"interrupted":0,"untested":0,"complete":true},"durationMs":0,"failure":null,"entries":[],"sessions":[]},{"runId":"d5e8ce3f-48b3-4719-b713-0c6b80db71cc","profileId":"node_26_10_0","group":"subpaths","mode":"commonjs","method":"sequential_batch_v2","outcome":"not_applicable","evidenceLevel":"static_only","coverage":{"planned":0,"observed":0,"passed":0,"failed":0,"prerequisiteLimited":0,"interrupted":0,"untested":0,"complete":true},"durationMs":0,"failure":null,"entries":[],"sessions":[]},{"runId":"c5fc3155-891b-40d4-b3de-bfd83bc43926","profileId":"bun_1_4_2","group":"root","mode":"esm","method":"fresh_root_v2","outcome":"pass","evidenceLevel":"smoke_tested","coverage":{"planned":1,"observed":1,"passed":1,"failed":0,"prerequisiteLimited":0,"interrupted":0,"untested":0,"complete":true},"durationMs":320.8564240001142,"failure":null,"entries":[{"index":0,"specifier":"ajv","displaySpecifier":"ajv","outcome":"pass","durationMs":36.484739,"resolvedTo":"file:///workspace/node_modules/ajv/dist/ajv.js","failure":null}],"sessions":[{"probeId":"1fabbd59-8fad-4764-b9e4-9dc567fd68a0","startIndex":0,"stopReason":"completed","exitCode":0,"oomKilled":false,"durationMs":320.8564240001142}]},{"runId":"2716404c-9f21-4bf4-bc0a-ef11d7aa551a","profileId":"bun_1_4_2","group":"root","mode":"commonjs","method":"fresh_root_v2","outcome":"pass","evidenceLevel":"smoke_tested","coverage":{"planned":1,"observed":1,"passed":1,"failed":0,"prerequisiteLimited":0,"interrupted":0,"untested":0,"complete":true},"durationMs":302.890211999882,"failure":null,"entries":[{"index":0,"specifier":"ajv","displaySpecifier":"ajv","outcome":"pass","durationMs":37.777889,"resolvedTo":"/workspace/node_modules/ajv/dist/ajv.js","failure":null}],"sessions":[{"probeId":"d5e87acc-a606-4fe9-b6ba-16f7a9676d8c","startIndex":0,"stopReason":"completed","exitCode":0,"oomKilled":false,"durationMs":302.890211999882}]},{"runId":"4a707d9e-2638-4b57-8157-b9562a441ed6","profileId":"bun_1_4_2","group":"subpaths","mode":"esm","method":"sequential_batch_v2","outcome":"not_applicable","evidenceLevel":"static_only","coverage":{"planned":0,"observed":0,"passed":0,"failed":0,"prerequisiteLimited":0,"interrupted":0,"untested":0,"complete":true},"durationMs":0,"failure":null,"entries":[],"sessions":[]},{"runId":"0b78a8e8-8ea0-457a-9945-a33c7e167275","profileId":"bun_1_4_2","group":"subpaths","mode":"commonjs","method":"sequential_batch_v2","outcome":"not_applicable","evidenceLevel":"static_only","coverage":{"planned":0,"observed":0,"passed":0,"failed":0,"prerequisiteLimited":0,"interrupted":0,"untested":0,"complete":true},"durationMs":0,"failure":null,"entries":[],"sessions":[]},{"runId":"bcfae4f3-27a2-4926-a8aa-f262e38b165a","profileId":"deno_2_9_7","group":"root","mode":"esm","method":"fresh_root_v2","outcome":"pass","evidenceLevel":"smoke_tested","coverage":{"planned":1,"observed":1,"passed":1,"failed":0,"prerequisiteLimited":0,"interrupted":0,"untested":0,"complete":true},"durationMs":527.0566839999519,"failure":null,"entries":[{"index":0,"specifier":"ajv","displaySpecifier":"ajv","outcome":"pass","durationMs":160.984696,"resolvedTo":"file:///workspace/node_modules/ajv/dist/ajv.js","failure":null}],"sessions":[{"probeId":"be5c82bf-3abe-4481-9873-689b9e55dcdd","startIndex":0,"stopReason":"completed","exitCode":0,"oomKilled":false,"durationMs":527.0566839999519}]},{"runId":"6db39fcc-fb8e-4d6f-af93-d6a06adadaa3","profileId":"deno_2_9_7","group":"root","mode":"commonjs","method":"fresh_root_v2","outcome":"pass","evidenceLevel":"smoke_tested","coverage":{"planned":1,"observed":1,"passed":1,"failed":0,"prerequisiteLimited":0,"interrupted":0,"untested":0,"complete":true},"durationMs":414.024446999887,"failure":null,"entries":[{"index":0,"specifier":"ajv","displaySpecifier":"ajv","outcome":"pass","durationMs":89.04557299999999,"resolvedTo":"/workspace/node_modules/ajv/dist/ajv.js","failure":null}],"sessions":[{"probeId":"855fcea0-1cb4-4f33-bd30-c958ba0bd3d9","startIndex":0,"stopReason":"completed","exitCode":0,"oomKilled":false,"durationMs":414.024446999887}]},{"runId":"34a5c1f3-7f14-432a-bd3f-0393dd1370f7","profileId":"deno_2_9_7","group":"subpaths","mode":"esm","method":"sequential_batch_v2","outcome":"not_applicable","evidenceLevel":"static_only","coverage":{"planned":0,"observed":0,"passed":0,"failed":0,"prerequisiteLimited":0,"interrupted":0,"untested":0,"complete":true},"durationMs":0,"failure":null,"entries":[],"sessions":[]},{"runId":"b9583937-a45a-474b-8750-35fadb971a42","profileId":"deno_2_9_7","group":"subpaths","mode":"commonjs","method":"sequential_batch_v2","outcome":"not_applicable","evidenceLevel":"static_only","coverage":{"planned":0,"observed":0,"passed":0,"failed":0,"prerequisiteLimited":0,"interrupted":0,"untested":0,"complete":true},"durationMs":0,"failure":null,"entries":[],"sessions":[]}],"limitations":["Only installation and loading were observed; functional correctness and package safety are not established.","Subpath batches share module caches and globals; root modes use separate fresh sandboxes.","Package-visible harness observations can be tampered with. They are not adversarial attestation.","Evidence applies to these exact artifacts, dependency snapshot, runtime images and Linux amd64/glibc policy.","Runtime error codes are captured observations and can also be thrown by package code."]}}