pub trait ExecutionObserver: Send + Sync {
// Required methods
fn on_node_start(&self, event: &NodeEvent<'_>);
fn on_node_end(&self, event: &NodeEvent<'_>, output: &Value);
fn on_node_error(&self, event: &NodeEvent<'_>, error: &dyn Error);
// Provided method
fn on_validation(&self, _event: &NodeEvent<'_>, _issues: &[ValidationIssue]) { ... }
}