Add retry loop in wait_for_flow_run as defense-in-depth
The subscriber fix (retry counter reset) handles repeated idle-timeout
disconnections. This commit adds a retry loop in wait_for_flow_run that
catches RETRYABLE_EXCEPTIONS and re-creates the subscriber, so the watch
never crashes from ConnectionClosedError even if the subscriber
eventually gives up.
Co-Authored-By: alex.s@prefect.io <ajstreed1@gmail.com>
Add `DbtCoreExecutor` for per-node dbt command execution (Phase 3)
Introduces `ExecutionResult` dataclass, `DbtExecutor` protocol, and
`DbtCoreExecutor` implementation that wraps dbt-core's `dbtRunner` to
execute individual nodes or waves. The executor captures errors as data
(never raises), derives node_ids from actual execution results, and
supports --state/--defer/--favor-state/--threads/--full-refresh flags.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>