dbt-labs/dbt-core · error
manifest should preserve the sequence-valued argument
Error message
manifest should preserve the sequence-valued argument
What it means
Test-only assertion in the #13604 regression test: after manifest resolution, the sequence-valued `value` argument must be preserved verbatim in the serialized definition, matching dbt Core's behavior of storing the raw unvalidated value. Fires if normalization rewrites or flattens the sequence.
Solutions
- Fix resolve_manifest_selectors to keep raw sequence-valued arguments untouched
- Check that definition cloning does not re-serialize through the normalized AST
- Treat failure as a manifest serialization regression
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at crates/dbt-parser/src/resolve/resolve_selectors.rs:933 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of dbt-labs/dbt-core@0267ce9170 (2026-09-07).
Data as JSON: /api/errors/ef986beef4ff26f8.
Report an issue: GitHub.
Appendix: source
Thrown at crates/dbt-parser/src/resolve/resolve_selectors.rs:933
// dbt Core stores the raw, unvalidated `value` in the manifest.
let resolved_selectors = HashMap::from([(
"default".to_string(),
SelectorEntry {
include: normalized_include,
is_default: false,
description: None,
definition: original_definition,
},
)]);
let manifest_selectors = resolve_manifest_selectors(resolved_selectors)?;
let definition = manifest_selectors
.get("default")
.and_then(|selector| selector.definition.as_ref())
.expect("selector definition should be present");
let value = definition
.get("value")
.and_then(|v| v.as_sequence())
.expect("manifest should preserve the sequence-valued argument");
assert_eq!(value.len(), 1);
assert_eq!(value[0].as_str(), Some("models"));
Ok(())
}
}
View on GitHub (pinned to 0267ce9170)