{"record":{"id":"9f85e11475a6f395","repo":"tinyhumansai/openhuman","slug":"read-chunk-row-e","errorCode":null,"errorMessage":"read_chunk_row: {e}","messagePattern":"read_chunk_row: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/openhuman/memory/read_rpc/chunks.rs","lineNumber":417,"sourceCode":"        format!(\"memory_tree::read: recall n={n}\"),\n    ))\n}\n\n// ── small helpers ───────────────────────────────────────────────────────\n\n/// One chunk rendered for inspection.\n///\n/// Reads through the bound driver's [`MemoryChunks::chunk_detail`], which\n/// returns the row, its vault body, content path, lifecycle state and embedding\n/// presence in **one** call. It used to make four separate engine calls in\n/// process; four bus round trips per rendered row would have been the direct\n/// translation, and this is used to render lists.\npub async fn read_chunk_row(chunk_id: &str) -> Result<Option<ChunkRow>> {\n    use crate::openhuman::memory::api::provider::MemoryProvider;\n\n    let guard = crate::openhuman::memory::ops::guard::active_memory_guard()\n        .await\n        .map_err(|e| anyhow::anyhow!(\"read_chunk_row: {e}\"))?;\n    let Some(detail) = guard\n        .as_chunks()\n        .ok_or_else(|| anyhow::anyhow!(\"read_chunk_row: driver has no chunk family\"))?\n        .chunk_detail(chunk_id)\n        .await?\n    else {\n        return Ok(None);\n    };\n\n    let chunk = detail.chunk;\n    // A failed vault read falls back to the row's own content, as before —\n    // `body: None` means \"could not read\", not \"empty\".\n    let body = detail.body.unwrap_or_else(|| chunk.content.clone());\n    let preview: String = body.chars().take(PREVIEW_MAX_CHARS).collect();\n    Ok(Some(ChunkRow {\n        id: chunk.id,\n        source_kind: chunk.metadata.source_kind.as_str().to_string(),\n        source_id: chunk.metadata.source_id,","sourceCodeStart":399,"sourceCodeEnd":435,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/749120085864ce16e0f273c7b86fac7740b39c5b/src/openhuman/memory/read_rpc/chunks.rs#L399-L435","documentation":"Error mapping around read_chunk_row, a helper that renders one chunk for inspection by a single MemoryChunks::chunk_detail bus call (row, vault body, content path, lifecycle state, embedding presence). The error fires when that driver call fails — unknown chunk_id, driver unavailable, or transport error — and is prefixed for grep-ability since it is used to render lists of rows.","triggerScenarios":"Thrown at src/openhuman/memory/read_rpc/chunks.rs:417 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Retry — chunk reads can race module restarts","Check the chained error for the underlying driver fault","Verify the chunk id still exists (it may have been dropped)"],"exampleFix":null,"handlingStrategy":"retry","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"}