{"actions":{"bootstrapAndRun":{"effect":"installs rote if missing, inspects, prepares, and asks before running","href":"https://play.modiqo.ai/install?play=charan/blank-page-forensics@0.1.0","method":"GET","rel":"https://rote.dev/rels/bootstrap-and-run","requiresConsent":true,"responseMediaType":"text/x-shellscript"},"inspect":{"command":"rote play inspect https://play.modiqo.ai/charan/blank-page-forensics@0.1.0","effect":"read-only"},"installCliOnly":{"effect":"installs the rote CLI, nothing else","href":"https://play.modiqo.ai/install","method":"GET","rel":"https://rote.dev/rels/install-cli","requiresConsent":true,"responseMediaType":"text/x-shellscript"},"run":{"command":"rote play run https://play.modiqo.ai/charan/blank-page-forensics@0.1.0","effect":"executes the play locally after consent","headless":{"approvalAssertion":"--yes","approvalRequiredBeforeInvocation":true,"commandTemplate":"rote play run https://play.modiqo.ai/charan/blank-page-forensics@0.1.0 <name=value...> --yes","stdinPolicy":"never pipe input to automate the interactive Ready selector"},"requiresConsent":true}},"description":"A page can answer 200 and still render blank. This finds the reason. It reads the page once, inventories every file the HTML tells a browser to load - scripts, stylesheets, fonts, media, icons, and the url() references inside inline CSS - then requests each one in parallel and reports the ones a visitor never gets. It separates four failure modes a status-code check cannot: a file that 404s, a file served with a content type the browser will not use, an http:// asset the browser blocks on an https page, and a reference that is a path from the machine that built the site rather than a URL on the server, which returns no status code at all. It also asks the host for a path that cannot exist, because a host answering 200 with its app shell for any path is the reason a mistyped bundle path looks perfectly healthy; loads each internal route directly, the way a refresh does; compares the HTML a phone is served against the HTML a desktop is served; and reads the HTML cache policy against the build-hashed filenames i","distribution":{"digest":"sha256:bf2f11364d3d4e696a2c68c6f08e74ec577020ee878850fec2502333ebb21e66","mediaType":"application/vnd.modiqo.rote-flow","size":22202,"verifiedBy":"rote verifies the downloaded archive against this digest before it runs"},"effects":{"credentialsProvidedBy":"runner","credentialsRemainLocal":true,"declaredWrites":[],"publisherReceivesCredentials":false},"id":"https://play.modiqo.ai/charan/blank-page-forensics@0.1.0","inputPolicy":{"optionalWithDefault":"show_default_and_accept_override","optionalWithoutDefault":"omit_unless_supplied","required":"ask","secrets":"collect_locally_outside_conversation"},"license":"MIT","links":{"docs":"https://rote.dev","page":"https://play.modiqo.ai/charan/blank-page-forensics@0.1.0","protocol":"https://play.modiqo.ai/.well-known/rote","self":"https://play.modiqo.ai/charan/blank-page-forensics@0.1.0.json"},"name":"blank-page-forensics","owner":{"kind":"user","slug":"charan"},"parameters":[{"description":"The page to inspect. A bare host is upgraded to https, and redirects are followed to the address a visitor actually lands on, so the assets are read from the page that is really served.","example":"https://example.com","input":{"allowCustom":true,"choices":[],"label":"Url"},"name":"url","required":true,"type":"string"},{"default":"60","description":"Cap on how many referenced files are requested. A page referencing more than this says so in its report rather than reporting a clean result it did not earn. Raise it for an asset-heavy page.","example":"60","input":{"allowCustom":true,"choices":[],"label":"Max assets"},"name":"max_assets","required":false,"type":"string"}],"preparation":[{"action":{"command":"rote play inspect https://play.modiqo.ai/charan/blank-page-forensics@0.1.0 --json","effect":"read-only"},"step":1,"type":"inspect_local_readiness"},{"references":["/parameters"],"step":2,"type":"collect_parameters"},{"references":["/parameters","/requirements","/effects"],"step":3,"type":"review"},{"consentBoundary":"the user approves the exact play and parameter values","references":["/parameters","/requirements","/effects"],"step":4,"type":"obtain_run_consent"},{"action":{"command":"rote play run https://play.modiqo.ai/charan/blank-page-forensics@0.1.0","headlessCommandTemplate":"rote play run https://play.modiqo.ai/charan/blank-page-forensics@0.1.0 <name=value...> --yes"},"preservesAcquisitionBoundaries":["adapter_selection","oauth_dcr","google_discovery","static_token_setup","runtime_security_checks"],"requiresConsent":true,"step":5,"type":"run"}],"producedBy":{"roteVersion":"0.79.0"},"publishedAt":"2026-09-03T12:07:14.452798+00:00","reference":"charan/blank-page-forensics@0.1.0","requirements":{"adapters":[],"browser":{"dependencies":[],"runtime":false,"signIn":false},"localTools":["python3"],"roteCli":{"minimumVersion":"0.62.0"},"sessions":false},"resolution":"pinned","schema":"rote.play.v1","stats":{"downloads":4,"installs":0},"steps":{"count":9,"names":["cache_policy","dns_probe","host_variants","mobile_fetch","page_fetch","probe_assets","route_probes","soft_404","tls_probe"]},"title":"blank-page-forensics","type":"play","version":"0.1.0","visibility":"public"}