{"asset":"stylized-town/bench-01@0.4.0","id":"bench-01","version":"0.4.0","title":"Park bench","schema":"agent-ready-assets public QA report v1 (sanitized subset of qa/report.json)","published_sha256":"8d32a34221c76117d15285b3ba666d17d1e6101d90b81f507ee32527b69ce70c","artifact":{"path":"bench-01.glb","sha256":"5e09ffce53e232f18133e5aa0e6a8bc81ca2239801d26dcbaf79594bdba7db96","size_bytes":63124},"package_sha256":"f88fd40ea6bc1fa38116f6a3c06413c0da5ba497a36f60c5229cf950a26af2ba","manifest_sha256":"a55b01135b861ed8b215d3a3c6583c3a80d025829b73895fa30bfb278a59c587","release_policy":"kitnevo-production-1","environment":{"blender_build":"5.2.2 LTS","gltf_exporter":"5.2.40","node":"v22.21.1","three":"186","chromium":"156.0.8078.4","playwright":"1.64.1","webgl_renderer":"ANGLE (Google, Vulkan 1.3.0 (SwiftShader Device (LLVM 10.0.0) (0x0000C0DE)), SwiftShader driver)","renderer_policy":"swiftshader","gltf_validator":"2.0.0-dev.3.10","gltf_transform":"4.5.1"},"automated_status":"PASSED","overall_status":"PASSED","release_eligible":true,"release_blockers":[],"visual_approval":{"status":"APPROVED"},"gates":[{"id":"G0","name":"Provenance / license","status":"PASSED","checks":[{"id":"recipe-schema","status":"PASSED","message":"recipe matches schemas/recipe.schema.json"},{"id":"generator-allowlisted","status":"PASSED","message":"town2m-bench@1.1.0 is allowlisted"},{"id":"source-inputs-schema","status":"PASSED","message":"source-inputs.json is schema-valid"},{"id":"recipe-hash-bound","status":"PASSED","message":"recorded recipe hash matches recipe.json"},{"id":"palette-hash-bound","status":"PASSED","message":"recorded palette hash matches the palette file"},{"id":"generator-sources-bound","status":"PASSED","message":"recorded generator source hash matches current generator code"},{"id":"input-rights","status":"PASSED","message":"original-generated: no third-party inputs"},{"id":"ai-models","status":"PASSED","message":"no AI model contributed to this asset"},{"id":"glb-built-from-recipe","status":"PASSED","message":"build-info records the current recipe hash"},{"id":"blender-pinned","status":"PASSED","message":"built with Blender 5.2.2 LTS"},{"id":"exporter-pinned","status":"PASSED","message":"glTF exporter 5.2.40"}]},{"id":"G1","name":"Build reproducibility","status":"PASSED","checks":[{"id":"regenerate","status":"PASSED","message":"recipe regenerated in a fresh headless Blender process"},{"id":"fingerprint-geometry","status":"PASSED","message":"geometry fingerprint matches"},{"id":"fingerprint-materials","status":"PASSED","message":"materials fingerprint matches"},{"id":"fingerprint-nodes","status":"PASSED","message":"nodes fingerprint matches"},{"id":"fingerprint-textures","status":"PASSED","message":"textures fingerprint matches"},{"id":"fingerprint-animations","status":"PASSED","message":"animations fingerprint matches"},{"id":"byte-identical","status":"PASSED","message":"regenerated GLB is byte-identical"}]},{"id":"G2","name":"Portable authoring source (.blend)","status":"PASSED","checks":[{"id":"blend-opens","status":"PASSED","message":"opened in a fresh --factory-startup process"},{"id":"no-linked-libraries","status":"PASSED","message":"0 linked libraries"},{"id":"no-missing-external-files","status":"PASSED","message":"0 of 0 external file references are missing"},{"id":"no-absolute-paths","status":"PASSED","message":"0 absolute file references"},{"id":"images-packed","status":"PASSED","message":"0 unpacked file images"},{"id":"expected-collections","status":"PASSED","message":"missing collections: []"},{"id":"embedded-recipe","status":"PASSED","message":"root carries the canonical recipe hash"}]},{"id":"G3","name":"glTF compliance (Khronos validator)","status":"PASSED","checks":[{"id":"glb-container","status":"PASSED","message":"GLB v2, 63124 bytes"},{"id":"gltf-version","status":"PASSED","message":"asset.version 2.0"},{"id":"khronos-validator","status":"PASSED","message":"0 errors, 0 warnings, 2 infos (validator 2.0.0-dev.3.10)"},{"id":"no-required-extensions","status":"PASSED","message":"no required extensions (baseline loader needs no decoders)"},{"id":"extension-allowlist","status":"PASSED","message":"extensionsUsed ⊆ allowlist (0 used)"},{"id":"self-contained","status":"PASSED","message":"all buffers and images embedded"}]},{"id":"G4","name":"Shape / units / transforms","status":"PASSED","checks":[{"id":"has-geometry","status":"PASSED","message":"1012 triangles in 6 primitives"},{"id":"finite-attributes","status":"PASSED","message":"0 non-finite attribute values"},{"id":"single-root","status":"PASSED","message":"scene roots: root"},{"id":"root-transform","status":"PASSED","message":"root T[0, 0, 0] R[0, 0, 0, 1] S[1, 1, 1]"},{"id":"unique-node-names","status":"PASSED","message":"node names unique"},{"id":"declared-nodes-present","status":"PASSED","message":"all 9 declared nodes present"},{"id":"no-undeclared-nodes","status":"PASSED","message":"no undeclared nodes"},{"id":"node-kinds","status":"PASSED","message":"node kinds and materials match the contract"},{"id":"valid-indices","status":"PASSED","message":"0 triangles with out-of-range indices"},{"id":"degenerate-faces","status":"PASSED","message":"0 zero-area triangles (0%, limit 1%)"},{"id":"outward-winding","status":"PASSED","message":"6 closed primitives wound outward"},{"id":"normals","status":"PASSED","message":"normals: missing on [], 0 triangles disagree with winding, 0 non-unit"},{"id":"finite-bounds","status":"PASSED","message":"world bounds [-0.8, 0, -0.3235] .. [0.8, 0.85, 0.325]"},{"id":"nonzero-bounds","status":"PASSED","message":"world size [1.6, 0.85, 0.6485] m"},{"id":"dimensions","status":"PASSED","message":"measured [1.6, 0.85, 0.6485] m vs target [1.6, 0.85, 0.65] (allowed ±[0.08, 0.0425, 0.0325])"},{"id":"base-on-ground","status":"PASSED","message":"min.y = 0 m (limit ±0.02)"},{"id":"horizontal-pivot","status":"PASSED","message":"bounds center x=0, z=0.0008"},{"id":"world-scale","status":"PASSED","message":"root world scale [1, 1, 1]"},{"id":"measurement-agreement","status":"PASSED","message":"Node (glTF-Transform) and browser (GLTFLoader) bounds differ by 0 m"},{"id":"basis-fixture","status":"PASSED","message":"Blender +X/-Y/+Z arrows load as Three.js +X/+Z/+Y (Y-up, +Z front)"},{"id":"basis-exporter-match","status":"PASSED","message":"basis fixture exported by 5.2.40, asset by 5.2.40"}]},{"id":"G5","name":"Facing and modular alignment","status":"PASSED","checks":[{"id":"front-marker-direction","status":"PASSED","message":"marker +Z axis [0, 0, 1] · declared front [0, 0, 1] = 1 (min 0.99)"},{"id":"front-marker-side","status":"PASSED","message":"marker sits on the declared front side (alignment 1)"},{"id":"anchor:anchor-base","status":"PASSED","message":"at [0, 0, 0] (error 0 m), outward dot 1, up dot 1"},{"id":"multi-view","status":"PASSED","message":"6 of 6 contact-sheet views rendered"}]},{"id":"G6","name":"Materials / texture correctness","status":"PASSED","checks":[{"id":"declared-materials","status":"PASSED","message":"2 declared materials present"},{"id":"no-undeclared-materials","status":"PASSED","message":"no undeclared or duplicate materials"},{"id":"material-factors","status":"PASSED","message":"metallic-roughness factors match the declared palette materials"},{"id":"pbr-runtime-material","status":"PASSED","message":"GLTFLoader created metallic-roughness PBR materials"},{"id":"rendered-material-colors","status":"PASSED","message":"rendered material colors within ±16/255 of the palette"},{"id":"no-placeholder-render","status":"PASSED","message":"no placeholder-magenta in rendered views"}]},{"id":"G7","name":"Web load and render (Chromium + Three.js)","status":"PASSED","checks":[{"id":"loader-ready","status":"PASSED","message":"GLTFLoader parsed the GLB and the scene rendered"},{"id":"tested-bytes","status":"PASSED","message":"browser hashed the exact published bytes"},{"id":"console-errors","status":"PASSED","message":"no console errors"},{"id":"page-errors","status":"PASSED","message":"no uncaught page errors"},{"id":"network","status":"PASSED","message":"no failed or missing resource requests"},{"id":"no-external-requests","status":"PASSED","message":"no requests outside the local origin"},{"id":"webgl-context","status":"PASSED","message":"WebGL context stable"},{"id":"gl-errors","status":"PASSED","message":"gl.getError() == NO_ERROR after every render"},{"id":"draw-calls","status":"PASSED","message":"6 draw calls (ANGLE (Google, Vulkan 1.3.0 (SwiftShader Device (LLVM 10.0.0) (0x0000C0DE)), SwiftShader driver))"},{"id":"render-coverage","status":"PASSED","message":"coverage per view: front 18%, back 18%, left 15.9%, right 16%, top 25.1%, iso 22%"},{"id":"not-black","status":"PASSED","message":"max mean luminance of visible pixels 0.222 (min 0.02)"}]},{"id":"G8","name":"Animation / skin","status":"NOT_APPLICABLE","checks":[{"id":"animations","status":"NOT_APPLICABLE","message":"no animations declared or present (static asset)"}]},{"id":"G9","name":"Optimized variant parity","status":"NOT_APPLICABLE","checks":[{"id":"optimized-variant","status":"NOT_APPLICABLE","message":"no optimized GLB variant in this package (baseline only)"}]},{"id":"G10","name":"Performance budgets","status":"PASSED","checks":[{"id":"glb-size","status":"PASSED","message":"63124 bytes (budget 1048576)"},{"id":"triangles","status":"PASSED","message":"1012 triangles (budget 5000)"},{"id":"materials","status":"PASSED","message":"2 materials (budget 4)"},{"id":"texture-size","status":"PASSED","message":"largest texture 0px (budget 1024)"},{"id":"draw-calls","status":"PASSED","message":"6 draw calls in the iso view (budget 8)"},{"id":"load-timing","status":"PASSED","message":"browser timings recorded in browser.json; advisory only (software renderer, not a device benchmark)"}]},{"id":"G11","name":"Visual consistency + human approval","status":"PASSED","checks":[{"id":"contact-sheet","status":"PASSED","message":"6/6 views in the contact sheet"},{"id":"visual-qa","status":"PASSED","message":"V1-V13 PASSED (V1 PASSED, V2 PASSED, V3 PASSED, V4 PASSED, V5 PASSED, V6 PASSED, V7 PASSED, V8 PASSED, V9 NOT_APPLICABLE, V10 PASSED, V11 PASSED, V12 PASSED, V13 PASSED; technical baseline MATCHED); qa/visual/index.html. Objective checks only: counts_as_approval=false"},{"id":"human-approval","status":"PASSED","message":"approved by Ricardo Carvalho"},{"id":"golden-diff","status":"PASSED","message":"fresh renders vs approved screenshots: front 0%, back 0%, left 0%, right 0%, top 0%, iso 0% (limit 0.2%)"}]},{"id":"G12","name":"Download / install","status":"PASSED","checks":[{"id":"evidence-binding","status":"PASSED","message":"clean-room run bound to GLB 5e09ffce53e2, manifest e1c586c3d9ee, distribution sources 59d6a893dddf"},{"id":"network-isolation","status":"PASSED","message":"online phase: internal docker network (catalog + hostile registries only, no internet); offline phase: --network none"},{"id":"no-blender-environment","status":"PASSED","message":"customer container: blender absent (command -v blender fails); python3 absent; node v22.21.1; three 0.186.1; SDK 0.5.1"},{"id":"clean-room-steps","status":"PASSED","message":"step exit codes {\"transcript_online\":0,\"offline_cli\":0,\"typecheck\":0,\"build\":0,\"browser_tests\":0,\"verify_project\":0,\"starters_online\":0,\"starters_offline\":0}"},{"id":"bench-guide","status":"PASSED","message":"bench page (MCP asset guide: original + tested preset): ready; 6.3% of the canvas drawn; GLBs served from the project (28 distinct); console errors 0, page errors 0, failed 0, external 0"},{"id":"customization-isolation","status":"PASSED","message":"customized bench wood #5A3A22 (own material true), original/source #AE855E/#AE855E, height ratio 1.2"},{"id":"guide-modular-host-written","status":"PASSED","message":"entry file of get_integration_guide stylized-town/house-01@0.2.0 (three) written unchanged: src/host.ts 4c553ff2aae4"},{"id":"guides-written-verbatim","status":"PASSED","message":"entry files from get_integration_guide written unchanged (html entry paths renamed for the r3f and bench pages): src/main.ts 014d359257ed, src/r3f.tsx e86f723d879b, src/bench.ts ab13d2c09b45"},{"id":"host-guide","status":"PASSED","message":"modular host page (MCP asset guide: original + swapped part): ready; 24.2% of the canvas drawn; GLBs served from the project (29 distinct); console errors 0, page errors 0, failed 0, external 0"},{"id":"host-install-pulls-parts","status":"PASSED","message":"add stylized-town/house-01@0.2.0 in a fresh project: exit 0 installed; lockfile 7 packages (6 pinned parts, all present); verify exit 0"},{"id":"install-idempotent","status":"PASSED","message":"add stylized-town/bench-01@0.4.0 (registry from the lockfile, public): installed; kit add again: unchanged"},{"id":"install-via-mcp-url","status":"PASSED","message":"get_download_url (entitlement ent-customer) -> agent-ready-assets kit add --url: installed; lockfile package sha256 17fd2f57c7c6339f == MCP == catalog"},{"id":"installed-files-verified","status":"PASSED","message":"verify: stylized-town/bench-01@0.4.0 PASS (13 files); stylized-town@0.4.0 PASS (256 files)"},{"id":"installed-pins-match-catalog","status":"PASSED","message":"for every kit asset: installed GLB + manifest sha256 (CLI inspect) == MCP get_asset pins"},{"id":"modular-swap-isolation","status":"PASSED","message":"stylized-town/cafe-01@0.1.0 front-door=door-01: mounted anchor-door-main:stylized-town/door-01@0.1.0 (declared anchor-door-main:stylized-town/door-01@0.1.0); an unmodified instance mounts 0 parts (baked default); shared source unchanged"},{"id":"offline-customize-modular","status":"PASSED","message":"customize stylized-town/house-01@0.2.0 (swap + colour + toggle) --dry-run: exit 0, config sha256 0c8e79f33ca0"},{"id":"offline-customize","status":"PASSED","message":"customize --dry-run: config sha256 491b148ab9e3"},{"id":"offline-inspect","status":"PASSED","message":"inspect stylized-town/bench-01@0.4.0: wood-color, size-scale, armrests"},{"id":"offline-network-disabled","status":"PASSED","message":"<internal https origin> unreachable (container runs with --network none)"},{"id":"offline-reinstall-noop","status":"PASSED","message":"kit add stylized-town@0.4.0 with no network: unchanged (lockfile fast path)"},{"id":"offline-scene-snaps","status":"PASSED","message":"scene validate --resolve offline: exit 0, 77 attach_to snaps resolved"},{"id":"offline-scene-validate","status":"PASSED","message":"scene validate: PASS"},{"id":"offline-tamper-detected","status":"PASSED","message":"one flipped byte in bench-01.glb -> verify exit 1 INTEGRITY_FAILED; restored -> exit 0"},{"id":"offline-verify","status":"PASSED","message":"verify against assets.lock.json: exit 0"},{"id":"r3f-town","status":"PASSED","message":"React Three Fiber town (MCP kit guide, r3f): ready; 99.7% of the canvas drawn; GLBs served from the project (28 distinct); console errors 0, page errors 0, failed 0, external 0"},{"id":"scene-snaps-resolved","status":"PASSED","message":"scene validate --resolve: 77 attach_to snaps resolved (recommend_scene said 77), 0 outside 1 mm / opposed / aligned"},{"id":"scene-validate","status":"PASSED","message":"recommend_scene -> src/scenes/town.scene.json: PASS, 161 instances"},{"id":"starter-starter-r3f:build","status":"PASSED","message":"vite build: exit 0"},{"id":"starter-starter-r3f:kit-add","status":"PASSED","message":"pnpm run kit:add (agent-ready-assets kit add stylized-town@0.4.0 --to public/assets, the kit src/scenes/starter.scene.json pins: stylized-town@0.4.0): exit 0 installed"},{"id":"starter-starter-r3f:no-credential-in-project","status":"PASSED","message":"no project file contains the token (the lockfile records the entitlement id only)"},{"id":"starter-starter-r3f:reinstall-offline-noop","status":"PASSED","message":"kit add stylized-town@0.4.0 with no network, registry or token: unchanged (lockfile fast path)"},{"id":"starter-starter-r3f:renders","status":"PASSED","message":"starter-r3f: data-ready true; 7 instances (6 snapped); 93.8% of the canvas drawn; 6 distinct GLBs served from the project; console errors 0, page errors 0, failed 0, external 0"},{"id":"starter-starter-r3f:scene-validate","status":"PASSED","message":"scene validate src/scenes/starter.scene.json --resolve: exit 0, scene 1.1.0, 7 instances, 6 snapped (max mate distance 0.0e+0 m)"},{"id":"starter-starter-r3f:typecheck","status":"PASSED","message":"tsc --noEmit: exit 0"},{"id":"starter-starter-r3f:verify-project-locally-validated","status":"PASSED","message":"verify-project --browser chromium: exit 0, LOCALLY_VALIDATED; 0 configs + 1 scenes"},{"id":"starter-starter-r3f:verify","status":"PASSED","message":"agent-ready-assets verify: exit 0 stylized-town@0.4.0 PASS"},{"id":"starter-starter-vanilla:build","status":"PASSED","message":"vite build: exit 0"},{"id":"starter-starter-vanilla:kit-add","status":"PASSED","message":"pnpm run kit:add (agent-ready-assets kit add stylized-town@0.4.0 --to public/assets, the kit src/scenes/starter.scene.json pins: stylized-town@0.4.0): exit 0 installed"},{"id":"starter-starter-vanilla:no-credential-in-project","status":"PASSED","message":"no project file contains the token (the lockfile records the entitlement id only)"},{"id":"starter-starter-vanilla:reinstall-offline-noop","status":"PASSED","message":"kit add stylized-town@0.4.0 with no network, registry or token: unchanged (lockfile fast path)"},{"id":"starter-starter-vanilla:renders","status":"PASSED","message":"starter-vanilla: data-ready true; 7 instances (6 snapped); 96.1% of the canvas drawn; 6 distinct GLBs served from the project; console errors 0, page errors 0, failed 0, external 0"},{"id":"starter-starter-vanilla:scene-validate","status":"PASSED","message":"scene validate src/scenes/starter.scene.json --resolve: exit 0, scene 1.1.0, 7 instances, 6 snapped (max mate distance 0.0e+0 m)"},{"id":"starter-starter-vanilla:typecheck","status":"PASSED","message":"tsc --noEmit: exit 0"},{"id":"starter-starter-vanilla:verify-project-locally-validated","status":"PASSED","message":"verify-project --browser chromium: exit 0, LOCALLY_VALIDATED; 0 configs + 1 scenes"},{"id":"starter-starter-vanilla:verify","status":"PASSED","message":"agent-ready-assets verify: exit 0 stylized-town@0.4.0 PASS"},{"id":"vanilla-town","status":"PASSED","message":"plain Three.js town (MCP kit guide, three): ready; 36.1% of the canvas drawn; GLBs served from the project (28 distinct); console errors 0, page errors 0, failed 0, external 0"},{"id":"dimensions-match-manifest","status":"PASSED","message":"stylized-town/bench-01@0.4.0: measured 1.6 x 0.85 x 0.6485 m vs manifest 1.6 x 0.85 x 0.64845 m (tolerance 5% or 2 cm); GLB sha256 5e09ffce53e232f1..."},{"id":"installed-bytes-pinned","status":"PASSED","message":"installed public/assets/stylized-town/assets/bench-01/0.4.0/bench-01.glb sha256 5e09ffce53e232f1 / manifest e1c586c3d9ee2240 vs catalog pins 5e09ffce53e232f1 / e1c586c3d9ee2240"}]},{"id":"G13","name":"Source / package security","status":"PASSED","checks":[{"id":"security-suite","status":"PASSED","message":"110/110 hostile/auth/ticket/server/MCP/metadata/credential cases refused exactly as expected with no side effects (hostile-registry 33, origin 3, entitlement 5, install 7, offline 3, project-safety 12, server 12, mcp 19, metadata 6, modular 8, credentials 2)"},{"id":"credential-hygiene","status":"PASSED","message":"the catalog server log of the clean-room run contains no token and no download ticket (tickets are redacted)"},{"id":"auth-expired-token","status":"PASSED","message":"kit add stylized-town@0.4.0 -> exit 3 ENTITLEMENT_EXPIRED/ENTITLEMENT_EXPIRED; project unchanged"},{"id":"auth-no-token","status":"PASSED","message":"kit add stylized-town@0.4.0 -> exit 3 ENTITLEMENT_REQUIRED/ENTITLEMENT_REQUIRED; project unchanged"},{"id":"auth-wrong-scope","status":"PASSED","message":"kit add stylized-town@0.4.0 -> exit 3 ENTITLEMENT_REQUIRED/ENTITLEMENT_REQUIRED; project unchanged"},{"id":"hostile-archive-symlink","status":"PASSED","message":"add evil/archive-symlink@1.0.0 -> exit 1 INTEGRITY_FAILED/SYMLINK_ENTRY; project unchanged"},{"id":"hostile-archive-traversal","status":"PASSED","message":"add evil/archive-traversal@1.0.0 -> exit 1 INTEGRITY_FAILED/PATH_TRAVERSAL; project unchanged"},{"id":"hostile-corrupt-bytes","status":"PASSED","message":"add evil/corrupt-bytes@1.0.0 -> exit 1 INTEGRITY_FAILED/PACKAGE_HASH_MISMATCH; project unchanged"},{"id":"hostile-cross-origin-ticket","status":"PASSED","message":"add evil/cross-origin-ticket@1.0.0 -> exit 1 UNSAFE_ORIGIN/CROSS_ORIGIN; project unchanged"},{"id":"hostile-gzip-bomb","status":"PASSED","message":"add evil/gzip-bomb@1.0.0 -> exit 1 INTEGRITY_FAILED/ARCHIVE_TOO_LARGE; project unchanged"},{"id":"hostile-manifest-path-escape","status":"PASSED","message":"add evil/manifest-path-escape@1.0.0 -> exit 1 INTEGRITY_FAILED/MANIFEST_INVALID; project unchanged"},{"id":"hostile-phantom-capability","status":"PASSED","message":"add evil/phantom-capability@1.0.0 -> exit 1 INTEGRITY_FAILED/CONTRACT_INVALID; project unchanged"},{"id":"hostile-redirect","status":"PASSED","message":"add evil/redirect@1.0.0 -> exit 1 UNSAFE_ORIGIN/REDIRECT; project unchanged"},{"id":"insecure-scheme","status":"PASSED","message":"add stylized-town/bench-01@0.4.0 --registry <internal http origin> -> exit 1 UNSAFE_ORIGIN/INSECURE_SCHEME; project unchanged"},{"id":"mcp-download-requires-entitlement","status":"PASSED","message":"anonymous: ENTITLEMENT_REQUIRED; expired token: ENTITLEMENT_EXPIRED"},{"id":"no-credential-in-project","status":"PASSED","message":"no token in any project file (lockfile records the entitlement id only)"},{"id":"tls-untrusted-certificate","status":"PASSED","message":"add stylized-town/bench-01@0.4.0 -> exit 1 UNSAFE_ORIGIN/TLS_UNTRUSTED; project unchanged"}]},{"id":"G14","name":"Capability contract","status":"PASSED","checks":[{"id":"manifest-schema","status":"PASSED","message":"manifest matches asset.schema.json v1.1.0"},{"id":"contract","status":"PASSED","message":"3 capabilities with valid typed inputs/defaults/references; every operation is implemented by SDK 0.5.1 (material-color, uniform-scale, node-visibility, modular-swap)"},{"id":"default-valid:wood-color","status":"PASSED","message":"default \"#AE855E\" validates through the SDK"},{"id":"default-valid:size-scale","status":"PASSED","message":"default 1 validates through the SDK"},{"id":"default-valid:armrests","status":"PASSED","message":"default true validates through the SDK"},{"id":"glb-targets","status":"PASSED","message":"every target resolves exactly once in the exact GLB bytes: wood-color -> material #1; size-scale -> node #8; armrests -> node #1,2"},{"id":"modularity","status":"PASSED","message":"1 connectors with unit/orthogonal frames, 0 slots and 2 optional parts consistent with the measured GLB names"},{"id":"glb-modularity","status":"PASSED","message":"every snappable connector is one GLB node whose frame equals the manifest frame (<= 1 mm, dot >= 0.999); optional parts hold no anchor, marker or slot"},{"id":"declaration-binding","status":"PASSED","message":"manifest customization/engines are exactly the declaration for stylized-town/bench-01@0.4.0"},{"id":"recipe-knobs-not-advertised","status":"PASSED","message":"none of the 13 publisher recipe parameters (e.g. width-m, height-m) is advertised as a consumer capability"},{"id":"runtime-resolution","status":"PASSED","message":"SDK resolved every capability on the loaded scene exactly as declared (wood-color: mat-wood/backrest/seat; size-scale: root)"},{"id":"defaults-reproduce-baseline","status":"PASSED","message":"all-default instance vs unmodified asset: max material color delta 0 sRGB levels, bounds delta 0 m"},{"id":"runtime-resolution-0.4","status":"PASSED","message":"SDK resolved armrests on the loaded scene exactly as declared (slot anchors, baked nodes, hideable nodes, swatch materials)"},{"id":"defaults-reproduce-baseline-0.4","status":"PASSED","message":"all-default instance: 0 mounted parts, 0 hidden nodes, max colour delta 0, bounds delta 0 m"}]},{"id":"G15","name":"Variation correctness","status":"PASSED","checks":[{"id":"all-cases-ran","status":"PASSED","message":"158 corpus cases executed in Chromium through the SDK"},{"id":"accepted-cases-applied","status":"PASSED","message":"119 legal configurations applied; browser config hashes equal the Node canonical hashes"},{"id":"rejected-cases-refused","status":"PASSED","message":"39 invalid/unsupported configurations refused with the expected structured code"},{"id":"reject-no-side-effects","status":"PASSED","message":"no rejected request created, changed or leaked anything (stats, source, other instances, scene)"},{"id":"target-color","status":"PASSED","message":"target material of every accepted case is an instance-owned copy with exactly the requested sRGB color, rendered within 16 levels under probe light"},{"id":"material-properties-preserved","status":"PASSED","message":"recolor changes only the base color: type, emissive, roughness, metalness and maps are unchanged"},{"id":"off-target-unchanged","status":"PASSED","message":"non-target surfaces keep the shared material and render unchanged (probe <= 2, region mean <= 1, p99 <= 6; background untouched)"},{"id":"visible-change","status":"PASSED","message":"every requested color >= 24 levels from the default visibly changes the target region; default-colored cases do not"},{"id":"scale-bounds","status":"PASSED","message":"measured world bounds equal the authored bounds x size-scale within 0.0001 m"},{"id":"base-contact","status":"PASSED","message":"scaled instances keep their base at y=0 and their pivot at the origin"},{"id":"root-transform-preserved","status":"PASSED","message":"scale lives on the SDK wrapper; the GLB root keeps its identity transform (canonical 1 m units)"},{"id":"front-orientation","status":"PASSED","message":"front marker stays on +Z (dot >= 0.99)"},{"id":"stable-ids","status":"PASSED","message":"customized instances keep every semantic mesh/material id"},{"id":"instance-isolation","status":"PASSED","message":"no case changed the shared source, an unmodified instance or another customized instance"},{"id":"resource-release","status":"PASSED","message":"release() returns the library to its prior state for every case; 60 mount/render/release cycles: owned materials 60 created / 60 disposed, GPU geometries 6 -> 6, textures 1 -> 1; shared cache survives while used and is evicted after"},{"id":"successive-absolute","status":"PASSED","message":"successive customizations are absolute (unspecified -> default), earlier instances keep their state, {} restores the authored asset"},{"id":"input-mutation","status":"PASSED","message":"mutating the request object after application has no effect; instance values are frozen"},{"id":"no-errors","status":"PASSED","message":"no console or page errors"},{"id":"network","status":"PASSED","message":"no failed, missing or external requests"},{"id":"webgl","status":"PASSED","message":"no GL errors or context loss"},{"id":"evidence-screenshots","status":"PASSED","message":"16 preset renders + 2 multi-instance line-ups saved; line-ups left the shared source unchanged"},{"id":"coverage-accounting","status":"PASSED","message":"tested 119 accepted + 39 rejected cases (seed 20261023; 96 pairwise combinations; per capability wood-color 108/12, size-scale 104/15, armrests 10/4). NOT exhaustive: untested legal configs are SUPPORTED_BUT_UNTESTED."},{"id":"modular-cases-ran","status":"PASSED","message":"158 SDK 0.4.0 corpus cases executed in Chromium through the SDK"},{"id":"modular-accepted-applied","status":"PASSED","message":"119 legal configurations applied (swaps, toggles, swatches and their combinations); browser config hashes equal the Node canonical hashes"},{"id":"modular-rejected-refused","status":"PASSED","message":"39 invalid requests refused with the documented code (non-allowlisted parts, wrong types, free colours on swatches, unknown keys)"},{"id":"modular-reject-no-side-effects","status":"PASSED","message":"no refused request created, changed or leaked anything (stats, sources, other instances)"},{"id":"plug-mates-slot","status":"PASSED","message":"every mounted part's plug node mates its slot anchor node within 1 mm, opposed outward (dot <= -0.999) and aligned up (dot >= 0.999)"},{"id":"baked-default-replaced","status":"PASSED","message":"a swapped slot no longer contains its baked default part; a default choice keeps exactly one visible baked part and mounts nothing"},{"id":"connectors-preserved","status":"PASSED","message":"every other connector node stays within 1 mm and keeps its orientation"},{"id":"ground-contact","status":"PASSED","message":"the lowest point stays within 2 cm of the authored asset"},{"id":"swap-bounds","status":"PASSED","message":"no bounds face moves outward by more than 0.5 m; buildings stay inside their lot (1 mm)"},{"id":"visibility-applied","status":"PASSED","message":"node-visibility hides exactly the declared node on this instance and shows it when true"},{"id":"visibility-coverage","status":"PASSED","message":"every hidden node removes visible pixels of the instance (fixed camera): a smaller silhouette, or >= 0.02% of the frame showing its own depth-tested surfaces"},{"id":"mandatory-nodes-visible","status":"PASSED","message":"anchors, markers, slot parts and non-optional parts never disappear (Q5)"},{"id":"swatch-color","status":"PASSED","message":"swatches/colours land on every host target material through an instance-owned copy"},{"id":"part-color","status":"PASSED","message":"recolour targets also land on every mounted part with a material of that name (instance-owned copies)"},{"id":"modular-isolation","status":"PASSED","message":"no case changed a shared source, the unmodified instance or another customized instance"},{"id":"modular-resource-release","status":"PASSED","message":"release() restores the library for every case; 24 mount/render/release cycles: 0 part instances mounted / 0 released, owned materials 24 created / 24 disposed"},{"id":"modular-no-errors","status":"PASSED","message":"no console or page errors"},{"id":"modular-network","status":"PASSED","message":"no failed, missing or external requests"},{"id":"modular-webgl","status":"PASSED","message":"no GL errors or context loss"},{"id":"modular-coverage-accounting","status":"PASSED","message":"tested 119 accepted + 39 rejected SDK 0.4.0 cases (seed 20261023); every swap choice, both visibility states and every swatch individually; 8 SDK 0.4.0 combination cases (full-product over a sampled space of 8) plus 88 colour x scale pairs. NOT exhaustive: untested legal configs are SUPPORTED_BUT_UNTESTED."}]},{"id":"G16","name":"Clean-room consumer E2E (no Blender)","status":"PASSED","checks":[{"id":"evidence-binding","status":"PASSED","message":"clean-room run bound to GLB 5e09ffce53e2, contract 58c9781b89a6, SDK sources 92f097f4200b"},{"id":"no-blender-environment","status":"PASSED","message":"9/9 clean-room assertions passed (blender-not-on-path, blender-bin-unset, blender-not-installed, bpy-not-importable, publisher-scripts-absent, no-blend-sources, no-blender-mcp-packages, consumer-code-has-no-blender-path, installed-sdk-has-no-blender-path)"},{"id":"network-disabled","status":"PASSED","message":"container network: none"},{"id":"published-artifacts-only","status":"PASSED","message":"customer project installed 15 dependencies from packed SDK tarballs + public npm registry (pnpm install --frozen-lockfile during the image build; tests run with --network none); workspace links: 0; unpublished/private packages: 0"},{"id":"customer-build-dev-offline","status":"PASSED","message":"development build (React Strict Mode checks active) succeeded offline"},{"id":"customer-build-offline","status":"PASSED","message":"vite build of the plain Three.js + R3F pages succeeded with --network none"},{"id":"customer-typecheck","status":"PASSED","message":"the customer code type-checks (tsc 7.0.2, strict) against the PUBLISHED .d.ts of the SDK tarballs"},{"id":"kit-files-unchanged","status":"PASSED","message":"251 kit files (manifests, GLBs, thumbnails) unchanged; the original GLB is never written"},{"id":"r3f-capabilities","status":"PASSED","message":"React Three Fiber <Asset customize>, published SDK, --network none: wood-color=#2E5A88, size-scale=1.2, armrests=false applied as declared; the unmodified instance mounts nothing, hides nothing and keeps the shared materials; source unchanged; a released extra instance leaves nothing behind"},{"id":"r3f-loads","status":"PASSED","message":"page loaded the kit through the SDK; console/page errors 0, failed requests 0, external requests 0"},{"id":"r3f-original-unchanged","status":"PASSED","message":"original bench still uses the shared source material #AE855E, rendered sRGB(170,130,92); the recolor did not reach it"},{"id":"r3f-recolor","status":"PASSED","message":"recolored bench: seat material #5A3A22 (instance-owned copy), rendered sRGB(88,57,33) vs requested #5A3A22"},{"id":"r3f-scale","status":"PASSED","message":"scaled bench: size ratio 1.20000 x 1.20000 x 1.20000 (want 1.2), base at y=0.000000, wood stays default #AE855E"},{"id":"r3f-scene-assembly","status":"PASSED","message":"161/161 pinned instances (explorable town: snapped tiles, modular buildings, street furniture) from scenes/town.scene.json; ground contact ok; road anchor joints 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000 m (<= 0.01); per-instance customizations as declared; 77 attach_to snaps measured within 1 mm, outward opposed"},{"id":"r3f-shared-cache-unchanged","status":"PASSED","message":"the cached source (materials + geometry hashes) equals a freshly loaded copy; GLB requested 5x, pinned sha256 5e09ffce53e2…"},{"id":"r3f-strict-mode-lifecycle","status":"PASSED","message":"React dev build with <StrictMode> around and inside <Canvas>: 8 steps (mount-3 3/2, re-customize-b 3/2, same-values-new-object 3/2, unmount-all 0/0, flash-mount 0/0, unmount-before-load 0/0, remount-2 2/1, final-unmount 0/0); mismatches: none; final live 0, owned materials 0, cache evicted true (GPU geometries after evict: 0); GPU geometries 6 -> 6, textures 1 -> 1, programs 1 -> 1; render double-invocation observed (2 renders / 1 effect mounts, 0 unmounts)"},{"id":"r3f-unsupported-refused","status":"PASSED","message":"{ slats: 8 } -> UNSUPPORTED_OPERATION/UNKNOWN_CAPABILITY, legal alternatives wood-color, size-scale, armrests; still exactly 3 live instances (nothing half-created)"},{"id":"sdk-from-published-tarballs","status":"PASSED","message":"5 SDK packages installed from 5 packed tarballs (agent-ready-assets-contracts-0.5.1.tgz a5bdf0e8e61f, agent-ready-assets-customization-0.5.1.tgz 27f8d9e5f236, agent-ready-assets-runtime-three-0.5.1.tgz 375568d160e0, agent-ready-assets-runtime-r3f-0.5.1.tgz 301dab5c77f2, agent-ready-assets-asset-cli-0.5.1.tgz f23727fa70b4); workspace/link specs in lockfile: 0; packages not from the tarballs: 0"},{"id":"vanilla-capabilities","status":"PASSED","message":"plain Three.js library.instantiate, published SDK, --network none: wood-color=#2E5A88, size-scale=1.2, armrests=false applied as declared; the unmodified instance mounts nothing, hides nothing and keeps the shared materials; source unchanged; a released extra instance leaves nothing behind"},{"id":"vanilla-loads","status":"PASSED","message":"page loaded the kit through the SDK; console/page errors 0, failed requests 0, external requests 0"},{"id":"vanilla-original-unchanged","status":"PASSED","message":"original bench still uses the shared source material #AE855E, rendered sRGB(171,130,92); the recolor did not reach it"},{"id":"vanilla-recolor","status":"PASSED","message":"recolored bench: seat material #5A3A22 (instance-owned copy), rendered sRGB(88,57,33) vs requested #5A3A22"},{"id":"vanilla-scale","status":"PASSED","message":"scaled bench: size ratio 1.20000 x 1.20000 x 1.20000 (want 1.2), base at y=0.000000, wood stays default #AE855E"},{"id":"vanilla-scene-assembly","status":"PASSED","message":"161/161 pinned instances (explorable town: snapped tiles, modular buildings, street furniture) from scenes/town.scene.json; ground contact ok; road anchor joints 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000 m (<= 0.01); per-instance customizations as declared; 77 attach_to snaps measured within 1 mm, outward opposed"},{"id":"vanilla-shared-cache-unchanged","status":"PASSED","message":"the cached source (materials + geometry hashes) equals a freshly loaded copy; GLB requested 2x, pinned sha256 5e09ffce53e2…"},{"id":"vanilla-unsupported-refused","status":"PASSED","message":"{ slats: 8 } -> UNSUPPORTED_OPERATION/UNKNOWN_CAPABILITY, legal alternatives wood-color, size-scale, armrests; still exactly 3 live instances (nothing half-created)"}]},{"id":"G17","name":"Agent / CLI contract","status":"PASSED","checks":[{"id":"evidence-binding","status":"PASSED","message":"clean-room run bound to GLB 5e09ffce53e2, contract 58c9781b89a6, SDK sources 92f097f4200b"},{"id":"agent-transcript-path-b","status":"PASSED","message":"44/44 scripted agent steps matched their expected outcome (read kit -> doctor -> inspect -> customize x2 -> 6 refusals -> modular host: read, inspect, swap + colour + toggle, 2 refusals, snapped scene, incompatible snap refused -> 8 capability assets: inspect, dry-run config, refused value -> verify-project)"},{"id":"cli-capabilities-config","status":"PASSED","message":"installed CLI, no MCP: inspect --capabilities -> wood-color (material-color), size-scale (uniform-scale), armrests (node-visibility); customize --dry-run of {\"wood-color\":\"#2E5A88\",\"size-scale\":1.2,\"armrests\":false} -> exit 0, config sha256 75318b47070d"},{"id":"cli-customize-declarative","status":"PASSED","message":"walnut and large configs written as canonical declarative JSON; GLBs written outside the kit: 0"},{"id":"cli-doctor-no-blender","status":"PASSED","message":"exit 0"},{"id":"cli-inspect-exact-capabilities","status":"PASSED","message":"inspect returns exactly the manifest capabilities (ids, typed inputs, targets): identical"},{"id":"cli-inspect-l1-truthful","status":"PASSED","message":"the lamp is reported with exactly its declared capabilities (light); none recolours it"},{"id":"cli-json-contract","status":"PASSED","message":"41 CLI --json responses, all valid against cli-output.schema.json (from the published @agent-ready-assets/contracts)"},{"id":"cli-no-side-effects-on-refusal","status":"PASSED","message":"none of the 17 refused requests created or changed a file"},{"id":"cli-output-sandbox","status":"PASSED","message":"writing outside the project is refused and nothing appears there"},{"id":"cli-refuses-export-glb","status":"PASSED","message":"exit 4 NOT_IMPLEMENTED/EXPORT_GLB_NOT_SUPPORTED"},{"id":"cli-refuses-invalid-parameter","status":"PASSED","message":"size-scale 2 -> INVALID_PARAMETER/OUT_OF_RANGE: size-scale: 2 outside [0.85, 1.2]"},{"id":"cli-refuses-unsupported","status":"PASSED","message":"slats -> UNSUPPORTED_OPERATION (alternatives: wood-color,size-scale,armrests; hint: seat_slats, back_slats are publisher-only Blender recipe parameters (declared.recipe_param…); lamp recolor -> UNSUPPORTED_OPERATION (\"glass-color\" is not an advertised Blender-free capability; supported Blender-fr…)"},{"id":"cli-refuses-unsupported-value","status":"PASSED","message":"wood-color=\"red\" -> INVALID_PARAMETER/MALFORMED_COLOR: wood-color: expected #RRGGBB color (6 hex digits, sRGB), got \"red\"; nothing written"},{"id":"cli-scene-snapping","status":"PASSED","message":"scenes/town.scene.json: PASS, 161 instances, 77 snapped within tolerance; bench onto a road end -> INCOMPATIBLE_PART/SNAP_INCOMPATIBLE"},{"id":"cli-version-mismatch","status":"PASSED","message":"exit 1 VERSION_MISMATCH/VERSION_MISMATCH"},{"id":"verify-project-locally-validated","status":"PASSED","message":"LOCALLY_VALIDATED: 3 configs + 1 scene rendered in 156.0.8078.4 (ANGLE (Google, Vulkan 1.3.0 (SwiftShader Device (LLVM 10.0.0) (0x0000C0DE)), SwiftShader driver)); 40 browser checks; report .agent-ready-assets/verify/report.json"},{"id":"remote-mcp-binding","status":"PASSED","message":"MCP discovery -> CLI install -> SDK checks of the M3 clean room, bound to this asset's bytes"},{"id":"mcp:customize-modular","status":"PASSED","message":"stylized-town/house-01@0.2.0 {\"front-door\":\"door-02\",\"wall-color\":\"paving\",\"chimney\":false} -> exit 0 src/generated/host-modular.customization.json (config sha256 0c8e79f33ca0)"},{"id":"mcp:customize-supported","status":"PASSED","message":"wood-color #2E6B4F + size-scale 1.1 -> src/generated/bench-green.customization.json (config sha256 491b148ab9e3)"},{"id":"mcp:mcp-capabilities","status":"PASSED","message":"bench: wood-color, size-scale, armrests (recipe knobs flagged as non-customer: width_m, height_m, depth_m); lamp: L2, capabilities light (none recolours it)"},{"id":"mcp:mcp-cli-capabilities-consistent","status":"PASSED","message":"MCP get_customization_capabilities == installed manifest via CLI inspect: wood-color,size-scale,armrests"},{"id":"mcp:mcp-discovery","status":"PASSED","message":"list_kits -> stylized-town@0.4.0; search \"park bench\" -> stylized-town/bench-01@0.4.0, stylized-town/lawn-tile-01@0.1.0, stylized-town/shrub-01@0.2.0, stylized-town/tree-01@0.2.0, stylized-town/tree-02@0.1.0, stylized-town/bus-stop-01@0.1.0; get_kit -> stylized-town/awning-01@0.1.0, stylized-town/bench-01@0.4.0, stylized-town/bus-stop-01@0.1.0, stylized-town/cafe-01@0.1.0, stylized-town/door-01@0.1.0, stylized-town/door-02@0.1.0, stylized-town/fence-01@0.2.0, stylized-town/hedge-01@0.1.0, stylized-town/house-01@0.2.0, stylized-town/house-02@0.1.0, stylized-town/lawn-tile-01@0.1.0, stylized-town/mailbox-01@0.1.0, stylized-town/market-stall-01@0.1.0, stylized-town/plaza-tile-01@0.1.0, stylized-town/road-corner-01@0.2.0, stylized-town/road-cross-01@0.1.0, stylized-town/road-crosswalk-01@0.1.0, stylized-town/road-straight-01@0.3.0, stylized-town/road-tee-01@0.2.0, stylized-town/roof-gable-01@0.1.0, stylized-town/roof-hip-01@0.1.0, stylized-town/shop-01@0.2.0, stylized-town/shrub-01@0.2.0, stylized-town/street-lamp-01@0.3.0, stylized-town/townhall-01@0.1.0, stylized-town/trash-bin-01@0.2.0, stylized-town/tree-01@0.2.0, stylized-town/tree-02@0.1.0, stylized-town/window-01@0.1.0, stylized-town/window-02@0.1.0"},{"id":"mcp:mcp-modular-capabilities","status":"PASSED","message":"stylized-town/house-01@0.2.0: front-door -> door-01*=stylized-town/door-01@0.1.0 (plug door-plug), door-02=stylized-town/door-02@0.1.0 (plug door-plug); window-style -> window-01*=stylized-town/window-01@0.1.0 (plug window-plug), window-02=stylized-town/window-02@0.1.0 (plug window-plug); roof -> roof-gable-01*=stylized-town/roof-gable-01@0.1.0 (plug roof-plug-house), roof-hip-01=stylized-town/roof-hip-01@0.1.0 (plug roof-plug-house); snapping 1.1.0, 1 connectors; 6 pinned parts; storeys listed as unsupported: true"},{"id":"mcp:mcp-modular-guide","status":"PASSED","message":"get_customization_guide stylized-town/house-01@0.2.0: 14 unsupported examples (storeys refused, foreign part PART_NOT_ALLOWED); code uses instance.parts: true"},{"id":"mcp:mcp-recommend-snapped","status":"PASSED","message":"recommend_scene town-customized: scene 1.1.0, 161 instances, 77 attach_to snaps (tested scene: 77), 871 free connectors"},{"id":"mcp:mcp-tools-read-only","status":"PASSED","message":"10 tools (search_assets, get_asset, list_kits, get_kit, recommend_scene, get_integration_guide, get_customization_capabilities, get_customization_guide, get_validation_report, get_download_url), all readOnlyHint; server agent-ready-assets-catalog@0.1.0"},{"id":"mcp:refuses-foreign-part","status":"PASSED","message":"front-door=window-01 -> INCOMPATIBLE_PART/PART_NOT_ALLOWED: front-door: \"window-01\" is not an allowlisted part for this slot; allowed: \"door-01\" (stylized-town/door-01@0.1.0), \"doo"},{"id":"mcp:refuses-roof-config","status":"PASSED","message":"roof-color: before install KIT_NOT_FOUND (nothing to validate against yet), after install UNSUPPORTED_OPERATION: \"roof-color\" is not an advertised Blender-free capability; supported Blender-free capabilities of stylized-town/bench-01"},{"id":"mcp:refuses-slats","status":"PASSED","message":"slats: UNSUPPORTED_OPERATION"},{"id":"mcp:refuses-storeys","status":"PASSED","message":"\"three storeys\" (storeys: 3) -> UNSUPPORTED_OPERATION/UNKNOWN_CAPABILITY: \"storeys\" is not an advertised Blender-free capability; supported Blender-free capabilities of stylized-town/house-01@0."},{"id":"mcp:roof-request-via-capability","status":"PASSED","message":"stylized-town/house-01@0.2.0 declares roof-color (enum, swatches terracotta/curb-stone): \"terracotta\" (#C97755, closest to red #B22222) -> customize exit 0, src/generated/red-roof.customization.json; roof-color on the bench is still refused (see refuses-roof-config)"}]}],"customization":{"status":"PASSED","sdk_version":"0.5.1","tested_cases":{"accepted":119,"rejected":39,"total":158,"exhaustive":false,"pairwise_combinations":96},"presets":[{"id":"original","values":{},"config_sha256":"721a7ab6ef313fb05f45e427fde2734a6b216e8d1cadc127231632fb323cfc43","status":"PASSED"},{"id":"walnut","values":{"wood-color":"#5A3A22"},"config_sha256":"9eefe42841c00786b0dac3998620d02eccad527e7abb7beb7ecb3572990526c3","status":"PASSED"},{"id":"light-oak","values":{"wood-color":"#C9A27A"},"config_sha256":"bfed4635963b1cec282654552ef45309e66528500eaeb58007ec6daf1e2cf8cb","status":"PASSED"},{"id":"painted-blue","values":{"wood-color":"#4F6D7A"},"config_sha256":"6da6d1712dcc5740e43fbfee1863be3ce79e32b7774b44b41cba018b9e30887d","status":"PASSED"},{"id":"smallest","values":{"size-scale":0.85},"config_sha256":"41811912d2a71b630f40d6c6296e5af33899fe169aeb3c6f96402c7e6d986e3c","status":"PASSED"},{"id":"largest","values":{"size-scale":1.2},"config_sha256":"fedc5a3bc63967dab2cc4b2cc64334ae80b1c6e39c09e0dc613109f030a705d9","status":"PASSED"},{"id":"walnut-large","values":{"wood-color":"#5A3A22","size-scale":1.2},"config_sha256":"b0e807e669f082ef443b2cc2e4c8cbed903f3a640e1ae284c477eed2ff53f105","status":"PASSED"},{"id":"armrests-false","values":{"armrests":false},"config_sha256":"33776a507ad8cf74e939875d6ae9411b1bc470d7059bddda1823b015bbb67e75","status":"PASSED"}]},"sanitization":{"redactions":0,"rules":[],"dropped_fields":[]}}
