jdx/mise · warning · eyre::Report
"{path_raw}".{id}: no recognized operation (block, source, o
Error message
"{path_raw}".{id}: no recognized operation (block, source, or line), ignoring entry What it means
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.
Source
Thrown at src/system/edits.rs:249
let entry = match entry {
EditTomlEntry::Block(inline) => EditTomlTable {
block: Some(inline),
source: None,
template: None,
line: None,
comment: None,
},
EditTomlEntry::Table(table) => table,
};
let is_block = entry.block.is_some() || entry.source.is_some();
let op = match (&is_block, &entry.line) {
(true, Some(_)) => {
bail!(
"\"{path_raw}\".{id}: block/source and line are mutually exclusive, ignoring entry"
)
}
(false, None) => {
bail!(
"\"{path_raw}\".{id}: no recognized operation (block, source, or line), ignoring entry"
)
}
(true, None) => {
let source = match (entry.block, entry.source) {
(Some(_), Some(_)) => {
bail!(
"\"{path_raw}\".{id}: block and source are mutually exclusive, ignoring entry"
)
}
(Some(inline), None) => BlockSource::Inline(inline),
(None, Some(src)) => {
let src = file::replace_path(&src);
BlockSource::File(if src.is_relative() {
base.join(src)
} else {
src
})View on GitHub (pinned to 9dcfcaa0dc)
Solutions
- Add exactly one of block =, source =, or line = to the entry
- Check for typos in the operation key (line, not lnie/lines)
Example fix
# before
[dotfiles]
"~/.zshrc/aliases" = { template = "tera" }
# after
[dotfiles]
"~/.zshrc/aliases" = { block = 'alias g=git', template = "tera" } Defensive patterns
Strategy: validation
Validate before calling
python3 - <<'EOF'
import tomllib
for key, v in tomllib.load(open('mise.toml','rb')).get('dotfiles', {}).items():
if isinstance(v, dict):
assert any(k in v for k in ('block', 'source', 'line')), f'no operation: {key}'
EOF Prevention
- 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
When it happens
Trigger: { template = "tera" } or { comment = "#" } or { } as an edit entry value in [dotfiles].
Common situations: 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.
Understand the failure class
Background: "Missing required field" and "field is required" errors: why libraries reject payloads that omit mandatory fields — this error's family across 20 libraries.
Related errors
- path "{path_raw}" must be absolute or start with ~/, ignorin
- "{path_raw}".{id:?}: ids may only contain letters, digits, '
- "{path_raw}".{id}: block/source and line are mutually exclus
- "{path_raw}".{id}: block and source are mutually exclusive,
- "{path_raw}".{id}: unknown template engine '{other}' (expect
AI-assisted analysis of jdx/mise@9dcfcaa0dc (2026-08-17).
Data as JSON: /api/errors/d4ce316b6e45a448.
Report an issue: GitHub.