{"record":{"id":"5db4a59933db4531","repo":"Hmbown/CodeWhale","slug":"owned-skill-parent-does-not-exist","errorCode":null,"errorMessage":"owned skill parent {} does not exist","messagePattern":"owned skill parent (.+?) does not exist","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/tui/src/skills/mutation.rs","lineNumber":191,"sourceCode":"        bail!(\n            \"refusing to mutate non-canonical CodeWhale skills root {}\",\n            skills_dir.display()\n        );\n    }\n\n    let anchor_exists = checked_real_directory(anchor)?;\n    if !anchor_exists {\n        if require_existing {\n            bail!(\"owned skill anchor {} does not exist\", anchor.display());\n        }\n        return Ok(());\n    }\n\n    let codewhale_dir = anchor.join(\".codewhale\");\n    let codewhale_exists = checked_real_directory(&codewhale_dir)?;\n    if !codewhale_exists {\n        if require_existing {\n            bail!(\n                \"owned skill parent {} does not exist\",\n                codewhale_dir.display()\n            );\n        }\n        return Ok(());\n    }\n\n    let skills_exists = checked_real_directory(skills_dir)?;\n    if !skills_exists {\n        if require_existing {\n            bail!(\"owned skill root {} does not exist\", skills_dir.display());\n        }\n        return Ok(());\n    }\n\n    let canonical_anchor = fs::canonicalize(anchor)\n        .with_context(|| format!(\"failed to resolve owned anchor {}\", anchor.display()))?;\n    let canonical_skills = fs::canonicalize(skills_dir).with_context(|| {","sourceCodeStart":173,"sourceCodeEnd":209,"githubUrl":"https://github.com/Hmbown/CodeWhale/blob/0c42157ee52f9d55af2b506d71b46249910f77d3/crates/tui/src/skills/mutation.rs#L173-L209","documentation":"validate_owned_target_chain found the anchor present but the <anchor>/.codewhale directory missing while require_existing is true. The mutation targets an installed skill inside an owned root that has not been initialized (or was deleted), so there is no owned package tree to mutate. The missing .codewhale directory is the input at fault; creation is allowed only when require_existing is false.","triggerScenarios":"Thrown at crates/tui/src/skills/mutation.rs:191 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Initialize the owned skills root by running an install in that scope first","If the directory was removed intentionally, re-scan and re-import the skill","Check you are operating in the intended project/home scope"],"exampleFix":null,"handlingStrategy":"validation","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"}