{"record":{"id":"ebf862de2cb13cb5","repo":"tinyhumansai/openhuman","slug":"channel-message-edit-route-not-implemented-by-back","errorCode":null,"errorMessage":"channel message edit route not implemented by backend ({provider}, message {message_id})","messagePattern":"channel message edit route not implemented by backend \\((.+?), message (.+?)\\)","errorType":"http","errorClass":"BackendApiError::ChannelEditUnsupported","httpStatus":404,"severity":"error","filePath":"src/api/rest.rs","lineNumber":718,"sourceCode":"                    && (channel_message.is_some()\n                        || (url.path().contains(\"/channels/\") && url.path().contains(\"/messages/\")))\n                    && is_unmatched_route_404(&text)\n                {\n                    let (provider, message_id) = channel_message\n                        .map(|(provider, id)| (provider.to_string(), id.to_string()))\n                        .unwrap_or_else(|| (\"unknown\".to_string(), \"unknown\".to_string()));\n                    tracing::warn!(\n                        domain = \"backend_api\",\n                        operation = \"authed_json\",\n                        provider = provider,\n                        message_id = message_id,\n                        \"[backend_api] channel-message edit 404 on {} {} — backend implements no \\\n                         edit route; surfacing ChannelEditUnsupported so callers degrade instead \\\n                         of forgetting the message id (#5230)\",\n                        method.as_str(),\n                        url.path(),\n                    );\n                    return Err(anyhow::Error::new(\n                        BackendApiError::ChannelEditUnsupported {\n                            provider,\n                            message_id,\n                        },\n                    ));\n                }\n\n                if let Some((provider, message_id)) = channel_message {\n                    tracing::info!(\n                        domain = \"backend_api\",\n                        operation = \"authed_json\",\n                        provider = provider,\n                        message_id = message_id,\n                        \"[backend_api] message-not-found 404 on {} {} — surfacing typed error\",\n                        method.as_str(),\n                        url.path(),\n                    );\n                    return Err(anyhow::Error::new(BackendApiError::MessageNotFound {","sourceCodeStart":700,"sourceCodeEnd":736,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/749120085864ce16e0f273c7b86fac7740b39c5b/src/api/rest.rs#L700-L736","documentation":"A channel-message edit hit an unmatched-route 404 on a /channels/.../messages/... path, which the classifier reads as the backend not implementing the edit route for that provider. Mapped to the typed ChannelEditUnsupported error rather than a generic failure.","triggerScenarios":"Thrown at src/api/rest.rs:718 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Fall back to a new message instead of editing on that provider","Track the backend feature and retry once the edit route ships for the provider"],"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"}