dbt-labs/dbt-core · error
the recorded model DDL should remain available after the…
Error message
the recorded model DDL should remain available after the probe mismatch
What it means
Test-only assertion: after a compile-time datediff probe mismatch consumed no event, the recorded model DDL write must still be available for later matching. Fires only if semantic-match consumption incorrectly eats recorded events on probe mismatch — a replay-engine regression.
Solutions
- Fix take_semantic_match so mismatched probes do not consume recorded events
- Re-run the event replay tests around probe/DDL ordering
- Treat failure as a replay determinism regression
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at crates/dbt-adapter/src/time_machine/event_replay.rs:3162 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/09a1144475f4360f.
Report an issue: GitHub.
Appendix: source
Thrown at crates/dbt-adapter/src/time_machine/event_replay.rs:3162
}]);
let actual_args = serde_json::json!([actual_date_spine_probe_sql]);
let event = recording.take_semantic_match(
node_id,
"execute",
&actual_args,
SemanticCategory::Write,
);
assert!(
event.is_none(),
"date_spine's compile-time datediff probe should not consume the recorded model DDL write"
);
let model_args = serde_json::json!([recorded_model_sql]);
let event = recording
.take_semantic_match(node_id, "execute", &model_args, SemanticCategory::Write)
.expect("the recorded model DDL should remain available after the probe mismatch");
assert_eq!(event.args, model_args);
}
/// Recording has [SHOW_PARAMS, DATEDIFF_PROBE, CREATE_VIEW] but Fusion emits them
/// as [DATEDIFF_PROBE, SHOW_PARAMS, CREATE_VIEW]. In semantic mode all three should
/// still be matched correctly.
#[test]
fn test_semantic_mode_date_spine_ordering_mismatch() {
let node_id = "model.project.date_details";
let show_sql = "show parameters like 'query_tag' in session";
let probe_sql =
"select datediff(day, '2018-12-31'::date, sysdate()::date + interval '1 day')";
let ddl_sql = "create or replace view analytics.public.date_details as (select 1)";
let make_exec = |seq: u32, sql: &str| AdapterCallEvent {
node_id: node_id.to_string(),
seq,
method: "execute".to_string(),View on GitHub (pinned to 0267ce9170)