{"record":{"id":"f15fa8e50e4f3436","repo":"tinyhumansai/openhuman","slug":"playwright-daemon-response-id-mismatch","errorCode":null,"errorMessage":"Playwright daemon response id mismatch","messagePattern":"Playwright daemon response id mismatch","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/openhuman/tools/impl/browser/playwright_backend.rs","lineNumber":177,"sourceCode":"            Err(_) => {\n                tracing::debug!(\n                    request_id = id,\n                    timeout_ms = PLAYWRIGHT_RESPONSE_TIMEOUT.as_millis() as u64,\n                    \"[browser::playwright] daemon response timed out; dropping daemon\"\n                );\n                self.daemon = None;\n                anyhow::bail!(\"Timed out waiting for Playwright response\");\n            }\n        };\n\n        if response.id != Some(id) {\n            tracing::debug!(\n                expected_id = id,\n                response_id = ?response.id,\n                \"[browser::playwright] daemon response id mismatch; dropping daemon\"\n            );\n            self.daemon = None;\n            anyhow::bail!(\"Playwright daemon response id mismatch\");\n        }\n\n        if response.success {\n            tracing::debug!(\n                request_id = id,\n                action = %action,\n                \"[browser::playwright] action completed\"\n            );\n            Ok(response.data.unwrap_or_else(|| json!({ \"ok\": true })))\n        } else {\n            tracing::debug!(\n                request_id = id,\n                action = %action,\n                error = ?response.error,\n                \"[browser::playwright] action failed\"\n            );\n            anyhow::bail!(\n                \"{}\",","sourceCodeStart":159,"sourceCodeEnd":195,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/749120085864ce16e0f273c7b86fac7740b39c5b/src/openhuman/tools/impl/browser/playwright_backend.rs#L159-L195","documentation":"A response did arrive from the Playwright daemon, but its id field does not equal the request id that was sent. That means replies are out of order or the daemon state is corrupt, so the response cannot be matched to this call and the request is rejected.","triggerScenarios":"Thrown at src/openhuman/tools/impl/browser/playwright_backend.rs:177 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Retry the action so a fresh daemon and request id are used","Ensure only one request at a time is multiplexed over the shared daemon connection","Restart the Playwright daemon if mismatched ids recur"],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"749120085864ce16e0f273c7b86fac7740b39c5b","analyzedAt":"2026-08-17T21:21:45.363Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}