{"appId":"demo-app-launcher","generatedAt":"2026-08-10T00:24:17.086Z","status":"ready","fingerprint":"b1bfda3f2a7beb578b6002d4b29fbb31aa98dc80afed2a58a180904b2ebb0836","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":"passed","findings":[]},{"id":"adapter","label":"roku adapter","status":"passed","findings":[]}],"summary":{"errors":0,"warnings":0,"assetsChecked":12,"adapterTargets":3,"webtvAdapterStatus":"ready"},"manifest":{"valid":true,"status":"valid","fingerprint":"b1bfda3f2a7beb578b6002d4b29fbb31aa98dc80afed2a58a180904b2ebb0836","findings":[]},"assets":{"appId":"demo-app-launcher","generatedAt":"2026-08-10T00:24:17.085Z","totals":{"assets":12,"ok":12,"warnings":0,"errors":0},"findings":[{"asset":{"id":"demo-app-launcher.logo","type":"image","url":"https://placehold.co/512x512/111318/F7D046?text=Demo%20App%20Launcher","usage":"logo"},"severity":"ok","message":"Asset is reachable.","checkedWith":"HEAD","contentType":"image/svg+xml; charset=utf-8","elapsedMs":138,"status":200},{"asset":{"id":"demo-app-launcher.splash","type":"image","url":"https://placehold.co/1920x1080/111318/F5F7FA?text=Demo%20App%20Launcher","usage":"splash"},"severity":"ok","message":"Asset is reachable.","checkedWith":"HEAD","contentType":"image/svg+xml; charset=utf-8","elapsedMs":159,"status":200},{"asset":{"id":"launcher-youtube.poster","type":"image","url":"https://placehold.co/960x540/20242E/F5F7FA?text=YouTube","usage":"poster","contentId":"launcher-youtube"},"severity":"ok","message":"Asset is reachable.","checkedWith":"HEAD","contentType":"image/svg+xml; charset=utf-8","elapsedMs":138,"status":200},{"asset":{"id":"launcher-youtube.background","type":"image","url":"https://placehold.co/1920x1080/111318/F5F7FA?text=YouTube","usage":"background","contentId":"launcher-youtube"},"severity":"ok","message":"Asset is reachable.","checkedWith":"HEAD","contentType":"image/svg+xml; charset=utf-8","elapsedMs":147,"status":200},{"asset":{"id":"launcher-live.poster","type":"image","url":"https://placehold.co/960x540/20242E/F5F7FA?text=Live%20TV","usage":"poster","contentId":"launcher-live"},"severity":"ok","message":"Asset is reachable.","checkedWith":"HEAD","contentType":"image/svg+xml; charset=utf-8","elapsedMs":117,"status":200},{"asset":{"id":"launcher-live.background","type":"image","url":"https://placehold.co/1920x1080/111318/F5F7FA?text=Live%20TV","usage":"background","contentId":"launcher-live"},"severity":"ok","message":"Asset is reachable.","checkedWith":"HEAD","contentType":"image/svg+xml; charset=utf-8","elapsedMs":106,"status":200},{"asset":{"id":"launcher-settings.poster","type":"image","url":"https://placehold.co/960x540/20242E/F5F7FA?text=Settings","usage":"poster","contentId":"launcher-settings"},"severity":"ok","message":"Asset is reachable.","checkedWith":"HEAD","contentType":"image/svg+xml; charset=utf-8","elapsedMs":109,"status":200},{"asset":{"id":"launcher-settings.background","type":"image","url":"https://placehold.co/1920x1080/111318/F5F7FA?text=Settings","usage":"background","contentId":"launcher-settings"},"severity":"ok","message":"Asset is reachable.","checkedWith":"HEAD","contentType":"image/svg+xml; charset=utf-8","elapsedMs":108,"status":200},{"asset":{"id":"launcher-help.poster","type":"image","url":"https://placehold.co/960x540/20242E/F5F7FA?text=Help","usage":"poster","contentId":"launcher-help"},"severity":"ok","message":"Asset is reachable.","checkedWith":"HEAD","contentType":"image/svg+xml; charset=utf-8","elapsedMs":117,"status":200},{"asset":{"id":"launcher-help.background","type":"image","url":"https://placehold.co/1920x1080/111318/F5F7FA?text=Help","usage":"background","contentId":"launcher-help"},"severity":"ok","message":"Asset is reachable.","checkedWith":"HEAD","contentType":"image/svg+xml; charset=utf-8","elapsedMs":125,"status":200},{"asset":{"id":"demo-app-launcher-home.background","type":"image","url":"https://placehold.co/1920x1080/111318/F5F7FA?text=Demo%20App%20Launcher%20Home","usage":"background","screenId":"demo-app-launcher-home"},"severity":"ok","message":"Asset is reachable.","checkedWith":"HEAD","contentType":"image/svg+xml; charset=utf-8","elapsedMs":129,"status":200},{"asset":{"id":"demo-app-launcher-home.safe-embed.embed","type":"embed","url":"https://www.openstreetmap.org/export/embed.html?bbox=2.2600%2C48.8000%2C2.4300%2C48.9100&layer=mapnik","usage":"embed","screenId":"demo-app-launcher-home","blockId":"safe-embed"},"severity":"ok","message":"Asset is reachable.","checkedWith":"HEAD","contentType":"text/html; charset=utf-8","elapsedMs":62,"status":200}]},"adapters":[{"adapterId":"webtv-reference","target":"browser-webtv","status":"ready","entryRoutes":{"portal":"/portal?project=demo-app-launcher","preview":"/?project=demo-app-launcher","manifest":"/api/app-manifest/current?project=demo-app-launcher"},"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":"ready","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-app-launcher","purchaseEndpoint":"/api/subscription/purchase","restoreEndpoint":"/api/subscription/restore","providerMode":"none"},"findings":[]},{"adapterId":"roku-target","target":"roku","status":"ready","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-app-launcher","purchaseEndpoint":"/api/subscription/purchase","restoreEndpoint":"/api/subscription/restore","providerMode":"none"},"findings":[]}],"webtvAdapter":{"adapterId":"webtv-reference","target":"browser-webtv","status":"ready","entryRoutes":{"portal":"/portal?project=demo-app-launcher","preview":"/?project=demo-app-launcher","manifest":"/api/app-manifest/current?project=demo-app-launcher"},"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":[]}}