{"record":{"id":"f1ae103d414c7739","repo":"Hmbown/CodeWhale","slug":"not-persisted-err","errorCode":null,"errorMessage":" (not persisted: {err})","messagePattern":" \\(not persisted: (.+?)\\)","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/tui/src/tui/ui/apply.rs","lineNumber":861,"sourceCode":"    let preference_changed = app.reasoning_effort_preference != Some(effort);\n    let selection_changed = effort != previous_effort || live_changed;\n\n    if live_changed || preference_changed {\n        app.reasoning_effort = effective_effort;\n        app.reasoning_effort_preference = Some(effort);\n    }\n    if selection_changed {\n        app.invalidate_route_receipts_for_reasoning_change();\n        app.update_model_compaction_budget();\n    }\n\n    let persist_warning = app\n        .startup_defaults\n        .apply_blocking(\n            crate::tui::startup_defaults::StartupDefaults::reasoning_effort(effort.as_setting()),\n        )\n        .err()\n        .map(|err| format!(\" (not persisted: {err})\"));\n\n    if live_changed {\n        apply_model_and_compaction_update(\n            engine_handle,\n            app.compaction_config(),\n            app.mode,\n            app.active_route_limits,\n        )\n        .await;\n    }\n\n    let persisted = persist_warning.is_none();\n    let mut summary = if selection_changed {\n        format!(\n            \"Thinking: {} → {} · model {}\",\n            previous_effort.display_label_for_provider(app.api_provider),\n            effort.display_label_for_provider(app.api_provider),\n            app.model_display_label()","sourceCodeStart":843,"sourceCodeEnd":879,"githubUrl":"https://github.com/Hmbown/CodeWhale/blob/0c42157ee52f9d55af2b506d71b46249910f77d3/crates/tui/src/tui/ui/apply.rs#L843-L879","documentation":"When a reasoning-effort choice is applied from the model picker, the session-level change always takes effect; if the blocking startup-defaults persistence fails, the suffix \" (not persisted: {err})\" is appended to the status message. This tells the user the selection is active now but will not survive restart — a non-fatal persistence degradation.","triggerScenarios":"Thrown at crates/tui/src/tui/ui/apply.rs:861 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Fix the underlying persist error (permissions, disk, config lock) shown after 'not persisted:'","Re-apply the reasoning effort via startup defaults once persistence works","Treat the session choice as valid; only restart durability is lost"],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"0c42157ee52f9d55af2b506d71b46249910f77d3","analyzedAt":"2026-08-20T21:50:45.477Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}