{"record":{"id":"462b411126013f4c","repo":"CloakHQ/CloakBrowser","slug":"pro-download-completed-but-binary-not-found-at-b","errorCode":null,"errorMessage":"Pro download completed but binary not found at: {binary_path}","messagePattern":"Pro download completed but binary not found at: (.+?)","errorType":"exception","errorClass":"RuntimeError","httpStatus":null,"severity":"error","filePath":"cloakbrowser/download.py","lineNumber":411,"sourceCode":"    # --- Pinned: launch the exact requested version, no server cross-check, no\n    # marker write (a rollback pin must not stick future unpinned launches). ---\n    if requested_version:\n        if _pro_binary_ready(requested_version):\n            binary_path = get_binary_path(requested_version, pro=True)\n            logger.debug(\n                \"Pinned Pro binary found in cache: %s (version %s)\",\n                binary_path,\n                requested_version,\n            )\n            _show_welcome(welcome_tier)\n            return str(binary_path)\n        logger.info(\n            \"Downloading Pro Chromium %s for %s...\", requested_version, get_platform_tag()\n        )\n        _download_pro_binary(requested_version, license_key)\n        binary_path = get_binary_path(requested_version, pro=True)\n        if not binary_path.exists():\n            raise RuntimeError(\n                f\"Pro download completed but binary not found at: {binary_path}\"\n            )\n        _show_welcome(welcome_tier)\n        return str(binary_path)\n\n    # --- Unpinned: track the server's latest selected channel. ---\n    effective = get_effective_version(pro=True, release_channel=release_channel)\n\n    # Honor CLOAKBROWSER_AUTO_UPDATE=false the way the free path does: if the user\n    # froze updates AND a Pro build is already cached, keep it and skip the server\n    # check. With no cached build we must still fetch one — a valid Pro license can\n    # never launch the free binary. (The `update` CLI ignores this and always acts.)\n    frozen = os.environ.get(\"CLOAKBROWSER_AUTO_UPDATE\", \"\").lower() == \"false\"\n    if frozen and _pro_binary_ready(effective):\n        logger.debug(\"Pro auto-update disabled; using cached %s\", effective)\n        _show_welcome(welcome_tier)\n        return str(get_binary_path(effective, pro=True))\n","sourceCodeStart":393,"sourceCodeEnd":429,"githubUrl":"https://github.com/CloakHQ/CloakBrowser/blob/d6bad5de261bedf025280ace1d14e800aee13923/cloakbrowser/download.py#L393-L429","documentation":"For a PINNED Pro version: after _download_pro_binary completes, the Pro binary is not found at get_binary_path(version, pro=True). Indicates download/extraction inconsistency for the Pro artifact.","triggerScenarios":"Calling ensure_binary with browser_version pinned and a valid Pro license; Pro tarball downloaded but not executable/present at the expected pro path.","commonSituations":"Pro archive layout change; interrupted extraction; cache corruption; disk full.","solutions":["Clear the Pro cache directory and retry","Check disk space and permissions","Report the pinned version to maintainers"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":"try:\n    ensure_binary(browser_version=PIN)  # with license key set\nexcept RuntimeError as e:\n    if \"Pro download completed but binary not found\" in str(e):\n        clear_pro_cache(); ensure_binary(browser_version=PIN)\n    else:\n        raise","preventionTips":["Pin Pro versions you've verified install cleanly","Pre-install during CI to catch packaging issues early"],"tags":["pro-license","download","packaging"],"backgroundTag":"binary-extraction-failed","analyzedSha":"d6bad5de261bedf025280ace1d14e800aee13923","analyzedAt":"2026-08-28T14:13:12.918Z","schemaVersion":2},"datasetVersion":"2026-08-28T16:17:29.566Z"}