{"record":{"id":"b3f2ca42e1d0a868","repo":"GitoxideLabs/gitoxide","slug":"the-todo-cannot-edit-a-hidden-reference","errorCode":null,"errorMessage":"the todo cannot edit a hidden reference","messagePattern":"the todo cannot edit a hidden reference","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"gix-tix/src/edit/todo.rs","lineNumber":1160,"sourceCode":"    } else {\n        let mut full = BString::from(\"refs/heads/\");\n        full.extend_from_slice(input);\n        full\n    };\n    let name = gix::refs::FullName::try_from(full).context(\"the todo contains an invalid reference name\")?;\n    if name.as_bstr().starts_with(crate::history::PIN_PREFIX)\n        || name.as_bstr().starts_with(crate::history::STASH_PREFIX)\n        || name.as_bstr().starts_with(crate::history::REVIEW_PREFIX)\n        || super::undo::is_queue_ref(name.as_bstr())\n        || matches!(\n            name.category(),\n            Some(gix::refs::Category::Tag | gix::refs::Category::RemoteBranch)\n        )\n    {\n        anyhow::bail!(\"the todo cannot edit this reference namespace\");\n    }\n    if refs.iter().any(|reference| reference.name == name) {\n        anyhow::bail!(\"the todo cannot edit a hidden reference\");\n    }\n    let old = repo\n        .try_find_reference(name.as_ref())?\n        .map(|reference| {\n            reference\n                .try_id()\n                .map(gix::Id::detach)\n                .context(\"an existing symbolic reference outside the editable history cannot be moved\")\n        })\n        .transpose()?;\n    refs.push(rebase::ExpectedRef {\n        name: name.clone(),\n        old,\n        target: old.unwrap_or(repo.head_id()?.detach()),\n        new: old,\n        follows_tip: false,\n        editable: true,\n        placement: None,","sourceCodeStart":1142,"sourceCodeEnd":1178,"githubUrl":"https://github.com/GitoxideLabs/gitoxide/blob/e73179060badf27222d790981fac3f84c1830a7e/gix-tix/src/edit/todo.rs#L1142-L1178","documentation":"Visibility check inside `resolve_ref_name` during todo parsing. Hidden references (tool-internal or filtered-out refs, e.g. hidden tags/categories configured by the app) are excluded from editing; a todo line naming such a ref bails so hidden bookkeeping refs cannot be moved or deleted through an edited plan. Distinct from the namespace guard: the ref may be in a normal namespace but is currently hidden from the user's view. Fix by unhiding the reference in the tool's settings or editing a visible branch instead.","triggerScenarios":"Thrown at gix-tix/src/edit/todo.rs:1160 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Remove the todo line that targets the hidden reference (tag, hidden branch, or other non-editable category)","Point the edit at a regular refs/heads/ branch that the todo is allowed to modify","Re-run the todo edit after correcting or deleting the offending reference entry"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"e73179060badf27222d790981fac3f84c1830a7e","analyzedAt":"2026-09-08T11:26:50.865Z","contentChangedAt":"2026-09-08T11:26:50.865Z","schemaVersion":2},"datasetVersion":"2026-09-15T23:17:13.987Z"}