{"record":{"id":"d4ce316b6e45a448","repo":"jdx/mise","slug":"path-raw-id-no-recognized-operation-block","errorCode":null,"errorMessage":"\"{path_raw}\".{id}: no recognized operation (block, source, or line), ignoring entry","messagePattern":"\"(.+?)\"\\.(.+?): no recognized operation \\(block, source, or line\\), ignoring entry","errorType":"validation","errorClass":"eyre::Report","httpStatus":null,"severity":"warning","filePath":"src/system/edits.rs","lineNumber":249,"sourceCode":"    let entry = match entry {\n        EditTomlEntry::Block(inline) => EditTomlTable {\n            block: Some(inline),\n            source: None,\n            template: None,\n            line: None,\n            comment: None,\n        },\n        EditTomlEntry::Table(table) => table,\n    };\n    let is_block = entry.block.is_some() || entry.source.is_some();\n    let op = match (&is_block, &entry.line) {\n        (true, Some(_)) => {\n            bail!(\n                \"\\\"{path_raw}\\\".{id}: block/source and line are mutually exclusive, ignoring entry\"\n            )\n        }\n        (false, None) => {\n            bail!(\n                \"\\\"{path_raw}\\\".{id}: no recognized operation (block, source, or line), ignoring entry\"\n            )\n        }\n        (true, None) => {\n            let source = match (entry.block, entry.source) {\n                (Some(_), Some(_)) => {\n                    bail!(\n                        \"\\\"{path_raw}\\\".{id}: block and source are mutually exclusive, ignoring entry\"\n                    )\n                }\n                (Some(inline), None) => BlockSource::Inline(inline),\n                (None, Some(src)) => {\n                    let src = file::replace_path(&src);\n                    BlockSource::File(if src.is_relative() {\n                        base.join(src)\n                    } else {\n                        src\n                    })","sourceCodeStart":231,"sourceCodeEnd":267,"githubUrl":"https://github.com/jdx/mise/blob/9dcfcaa0dc8747a2577d3270b69bb9d8313b2807/src/system/edits.rs#L231-L267","documentation":"After parsing, an edit entry table must contain at least one recognized operation: block, source, or line. A table with none of them (for example only template, comment, or empty) is warned about and skipped. The fields are deliberately loosely typed so entries using future operations degrade to this warning instead of failing the whole config parse.","triggerScenarios":"{ template = \"tera\" } or { comment = \"#\" } or { } as an edit entry value in [dotfiles].","commonSituations":"Starting an entry from a template scaffold and forgetting the content key; YAML-to-TOML conversion dropping the content key; typo like lnie = ... that silently parses as an unknown key.","solutions":["Add exactly one of block =, source =, or line = to the entry","Check for typos in the operation key (line, not lnie/lines)"],"exampleFix":"# before\n[dotfiles]\n\"~/.zshrc/aliases\" = { template = \"tera\" }\n\n# after\n[dotfiles]\n\"~/.zshrc/aliases\" = { block = 'alias g=git', template = \"tera\" }","handlingStrategy":"validation","validationCode":"python3 - <<'EOF'\nimport tomllib\nfor key, v in tomllib.load(open('mise.toml','rb')).get('dotfiles', {}).items():\n    if isinstance(v, dict):\n        assert any(k in v for k in ('block', 'source', 'line')), f'no operation: {key}'\nEOF","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Start new entries from block = '' or line = '' and fill content, so the operation key is never missing","Watch mise's warn output on config load — skipped entries announce themselves there"],"tags":["dotfiles","edits","missing-field","validation"],"backgroundTag":"missing-required-field","analyzedSha":"9dcfcaa0dc8747a2577d3270b69bb9d8313b2807","analyzedAt":"2026-08-17T14:28:50.624Z","schemaVersion":2},"datasetVersion":"2026-08-21T23:17:16.201Z"}