{"appId":"demo-bundle-subscription","generatedAt":"2026-08-10T00:15:40.180Z","status":"warning","fingerprint":"4f669c0730dbd705e591ccce30d3660056660807270b4f5389b959bf489cbd5f","stages":[{"id":"manifest","label":"Manifest validation","status":"passed","findings":[]},{"id":"assets","label":"Asset preflight","status":"passed","findings":[]},{"id":"analytics","label":"Analytics readiness","status":"passed","findings":[]},{"id":"security","label":"Embed security","status":"passed","findings":[]},{"id":"adapter","label":"WebTV adapter","status":"passed","findings":[]},{"id":"adapter","label":"android-tv adapter","status":"warning","findings":[{"severity":"warning","path":"$.screens[2].blocks[1].type","message":"android-tv-target renders providerLogoRail through fallback mapping: Logo LazyRow."},{"severity":"warning","path":"$.screens[2].blocks[2].type","message":"android-tv-target renders promoMosaic through fallback mapping: Poster grid."}]},{"id":"adapter","label":"roku adapter","status":"warning","findings":[{"severity":"warning","path":"$.screens[2].blocks[1].type","message":"roku-target renders providerLogoRail through fallback mapping: Poster/Label RowList."},{"severity":"warning","path":"$.screens[2].blocks[2].type","message":"roku-target renders promoMosaic through fallback mapping: PosterGrid/RowList."}]}],"summary":{"errors":0,"warnings":4,"assetsChecked":19,"adapterTargets":3,"webtvAdapterStatus":"ready"},"manifest":{"valid":true,"status":"valid","fingerprint":"4f669c0730dbd705e591ccce30d3660056660807270b4f5389b959bf489cbd5f","findings":[]},"assets":{"appId":"demo-bundle-subscription","generatedAt":"2026-08-10T00:15:40.180Z","totals":{"assets":19,"ok":19,"warnings":0,"errors":0},"findings":[{"asset":{"id":"demo-bundle-subscription.logo","type":"image","url":"https://placehold.co/512x512/F3F1EC/0B6E4F?text=Demo%20Bundle%20Subscription","usage":"logo"},"severity":"ok","message":"Asset is reachable.","checkedWith":"HEAD","contentType":"image/svg+xml; charset=utf-8","elapsedMs":185,"status":200},{"asset":{"id":"demo-bundle-subscription.splash","type":"image","url":"https://placehold.co/1920x1080/F3F1EC/17130F?text=Demo%20Bundle%20Subscription","usage":"splash"},"severity":"ok","message":"Asset is reachable.","checkedWith":"HEAD","contentType":"image/svg+xml; charset=utf-8","elapsedMs":180,"status":200},{"asset":{"id":"bundle-provider-cinema.poster","type":"image","url":"https://placehold.co/960x540/FFFFFF/17130F?text=Cinema%20Plus","usage":"poster","contentId":"bundle-provider-cinema"},"severity":"ok","message":"Asset is reachable.","checkedWith":"HEAD","contentType":"image/svg+xml; charset=utf-8","elapsedMs":170,"status":200},{"asset":{"id":"bundle-provider-cinema.background","type":"image","url":"https://placehold.co/1920x1080/F3F1EC/17130F?text=Cinema%20Plus","usage":"background","contentId":"bundle-provider-cinema"},"severity":"ok","message":"Asset is reachable.","checkedWith":"HEAD","contentType":"image/svg+xml; charset=utf-8","elapsedMs":185,"status":200},{"asset":{"id":"bundle-provider-docs.poster","type":"image","url":"https://placehold.co/960x540/FFFFFF/17130F?text=Docs%20Now","usage":"poster","contentId":"bundle-provider-docs"},"severity":"ok","message":"Asset is reachable.","checkedWith":"HEAD","contentType":"image/svg+xml; charset=utf-8","elapsedMs":104,"status":200},{"asset":{"id":"bundle-provider-docs.background","type":"image","url":"https://placehold.co/1920x1080/F3F1EC/17130F?text=Docs%20Now","usage":"background","contentId":"bundle-provider-docs"},"severity":"ok","message":"Asset is reachable.","checkedWith":"HEAD","contentType":"image/svg+xml; charset=utf-8","elapsedMs":105,"status":200},{"asset":{"id":"bundle-provider-family.poster","type":"image","url":"https://placehold.co/960x540/FFFFFF/17130F?text=Family%20Stream","usage":"poster","contentId":"bundle-provider-family"},"severity":"ok","message":"Asset is reachable.","checkedWith":"HEAD","contentType":"image/svg+xml; charset=utf-8","elapsedMs":108,"status":200},{"asset":{"id":"bundle-provider-family.background","type":"image","url":"https://placehold.co/1920x1080/F3F1EC/17130F?text=Family%20Stream","usage":"background","contentId":"bundle-provider-family"},"severity":"ok","message":"Asset is reachable.","checkedWith":"HEAD","contentType":"image/svg+xml; charset=utf-8","elapsedMs":112,"status":200},{"asset":{"id":"bundle-drama-poster.poster","type":"image","url":"https://placehold.co/960x540/FFFFFF/17130F?text=The%20Crossing","usage":"poster","contentId":"bundle-drama-poster"},"severity":"ok","message":"Asset is reachable.","checkedWith":"HEAD","contentType":"image/svg+xml; charset=utf-8","elapsedMs":170,"status":200},{"asset":{"id":"bundle-drama-poster.background","type":"image","url":"https://placehold.co/1920x1080/F3F1EC/17130F?text=The%20Crossing","usage":"background","contentId":"bundle-drama-poster"},"severity":"ok","message":"Asset is reachable.","checkedWith":"HEAD","contentType":"image/svg+xml; charset=utf-8","elapsedMs":170,"status":200},{"asset":{"id":"bundle-drama-poster.playback","type":"playback","url":"https://samplelib.com/lib/preview/mp4/sample-10s.mp4","usage":"playback","contentId":"bundle-drama-poster"},"severity":"ok","message":"Asset is reachable.","checkedWith":"HEAD","contentType":"video/mp4","elapsedMs":305,"status":200},{"asset":{"id":"bundle-western-poster.poster","type":"image","url":"https://placehold.co/960x540/FFFFFF/17130F?text=Dark%20Range","usage":"poster","contentId":"bundle-western-poster"},"severity":"ok","message":"Asset is reachable.","checkedWith":"HEAD","contentType":"image/svg+xml; charset=utf-8","elapsedMs":168,"status":200},{"asset":{"id":"bundle-western-poster.background","type":"image","url":"https://placehold.co/1920x1080/F3F1EC/17130F?text=Dark%20Range","usage":"background","contentId":"bundle-western-poster"},"severity":"ok","message":"Asset is reachable.","checkedWith":"HEAD","contentType":"image/svg+xml; charset=utf-8","elapsedMs":200,"status":200},{"asset":{"id":"bundle-western-poster.playback","type":"playback","url":"https://samplelib.com/lib/preview/mp4/sample-20s.mp4","usage":"playback","contentId":"bundle-western-poster"},"severity":"ok","message":"Asset is reachable.","checkedWith":"HEAD","contentType":"video/mp4","elapsedMs":412,"status":200},{"asset":{"id":"bundle-comedy-poster.poster","type":"image","url":"https://placehold.co/960x540/FFFFFF/17130F?text=After%20Ever%20After","usage":"poster","contentId":"bundle-comedy-poster"},"severity":"ok","message":"Asset is reachable.","checkedWith":"HEAD","contentType":"image/svg+xml; charset=utf-8","elapsedMs":196,"status":200},{"asset":{"id":"bundle-comedy-poster.background","type":"image","url":"https://placehold.co/1920x1080/F3F1EC/17130F?text=After%20Ever%20After","usage":"background","contentId":"bundle-comedy-poster"},"severity":"ok","message":"Asset is reachable.","checkedWith":"HEAD","contentType":"image/svg+xml; charset=utf-8","elapsedMs":192,"status":200},{"asset":{"id":"bundle-comedy-poster.playback","type":"playback","url":"https://samplelib.com/lib/preview/mp4/sample-5s.mp4","usage":"playback","contentId":"bundle-comedy-poster"},"severity":"ok","message":"Asset is reachable.","checkedWith":"HEAD","contentType":"video/mp4","elapsedMs":309,"status":200},{"asset":{"id":"demo-bundle-subscription-home.background","type":"image","url":"https://placehold.co/1920x1080/F3F1EC/17130F?text=Demo%20Bundle%20Subscription%20Home","usage":"background","screenId":"demo-bundle-subscription-home"},"severity":"ok","message":"Asset is reachable.","checkedWith":"HEAD","contentType":"image/svg+xml; charset=utf-8","elapsedMs":260,"status":200},{"asset":{"id":"demo-bundle-subscription-subscription.background","type":"image","url":"https://placehold.co/1920x1080/F3F1EC/17130F?text=A%20Better%20Way%20To%20Bundle","usage":"background","screenId":"demo-bundle-subscription-subscription"},"severity":"ok","message":"Asset is reachable.","checkedWith":"HEAD","contentType":"image/svg+xml; charset=utf-8","elapsedMs":151,"status":200}]},"adapters":[{"adapterId":"webtv-reference","target":"browser-webtv","status":"ready","entryRoutes":{"portal":"/portal?project=demo-bundle-subscription","preview":"/?project=demo-bundle-subscription","manifest":"/api/app-manifest/current?project=demo-bundle-subscription"},"supported":{"blockTypes":["hero","rail","grid","liveGuide","continueWatching","posterList","text","banner","actions","embed","searchKeyboard","searchResults","searchPreview","bundleOffer","providerLogoRail","promoMosaic"],"streamFormats":["mp4","external","youtube","hls","dash","webrtc"],"navigationModels":["browser","spatial","rowPriority"]},"findings":[]},{"adapterId":"android-tv-target","target":"android-tv","status":"warning","runtime":{"language":"Kotlin / Jetpack Compose for TV","rendererEntry":"native/android-tv/app/src/main/java/app/universalmedia/MainActivity.kt","packageRoot":"native/android-tv"},"supported":{"blockTypes":["hero","searchKeyboard","searchResults","searchPreview","bundleOffer","providerLogoRail","promoMosaic"],"nativeBlockTypes":["hero","searchKeyboard","searchResults","searchPreview","bundleOffer"],"fallbackBlockTypes":["providerLogoRail","promoMosaic"],"streamFormats":["hls","dash","mp4","external"],"billingProviders":["iap","external"]},"billing":{"entitlementEndpoint":"/api/subscription/entitlement?project=demo-bundle-subscription","purchaseEndpoint":"/api/subscription/purchase","restoreEndpoint":"/api/subscription/restore","providerMode":"none"},"findings":[{"severity":"warning","path":"$.screens[2].blocks[1].type","message":"android-tv-target renders providerLogoRail through fallback mapping: Logo LazyRow."},{"severity":"warning","path":"$.screens[2].blocks[2].type","message":"android-tv-target renders promoMosaic through fallback mapping: Poster grid."}]},{"adapterId":"roku-target","target":"roku","status":"warning","runtime":{"language":"BrightScript / SceneGraph","rendererEntry":"native/roku/source/main.brs","packageRoot":"native/roku"},"supported":{"blockTypes":["searchKeyboard","searchResults","searchPreview","bundleOffer","providerLogoRail","promoMosaic"],"nativeBlockTypes":["searchKeyboard","searchResults","searchPreview","bundleOffer"],"fallbackBlockTypes":["providerLogoRail","promoMosaic"],"streamFormats":["hls","dash","mp4","external"],"billingProviders":["iap","external"]},"billing":{"entitlementEndpoint":"/api/subscription/entitlement?project=demo-bundle-subscription","purchaseEndpoint":"/api/subscription/purchase","restoreEndpoint":"/api/subscription/restore","providerMode":"none"},"findings":[{"severity":"warning","path":"$.screens[2].blocks[1].type","message":"roku-target renders providerLogoRail through fallback mapping: Poster/Label RowList."},{"severity":"warning","path":"$.screens[2].blocks[2].type","message":"roku-target renders promoMosaic through fallback mapping: PosterGrid/RowList."}]}],"webtvAdapter":{"adapterId":"webtv-reference","target":"browser-webtv","status":"ready","entryRoutes":{"portal":"/portal?project=demo-bundle-subscription","preview":"/?project=demo-bundle-subscription","manifest":"/api/app-manifest/current?project=demo-bundle-subscription"},"supported":{"blockTypes":["hero","rail","grid","liveGuide","continueWatching","posterList","text","banner","actions","embed","searchKeyboard","searchResults","searchPreview","bundleOffer","providerLogoRail","promoMosaic"],"streamFormats":["mp4","external","youtube","hls","dash","webrtc"],"navigationModels":["browser","spatial","rowPriority"]},"findings":[]}}