fix enrich: PER_NODE + concurrency=1 for UI visibility without DuckDB deadlock
ThreadPoolTaskRunner still deadlocks: concurrent dbtRunner.invoke() calls
share the same class-level DuckDB _ENV and block on each other internally.
concurrency=1 serializes node execution (sets max_workers=1 on the process
pool) while keeping each node as a distinct Prefect task in the UI.
DuckDB sees only one writer at a time. CacheConfig stays (PER_NODE only).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>