-
Notifications
You must be signed in to change notification settings - Fork 0
[compat] DuckDB unsupported metadata source freshness parity #210
Copy link
Copy link
Closed
Labels
area:artifactsManifest, results, catalog, sourcesManifest, results, catalog, sourcesarea:duckdbDuckDB adapter boundaryDuckDB adapter boundaryarea:parserdbt resource parsingdbt resource parsingartifact:sourcessources.jsonsources.jsoncommand:source-freshnesssource freshness commandsource freshness commandgate:focused-pytestNeeds focused pytestNeeds focused pytestgate:zig-testNeeds native Zig test gateNeeds native Zig test gatepriority:p1High priorityHigh priorityready-for-agentReady for agent delegationReady for agent delegationrisk:artifact-contractdbt artifact schema riskdbt artifact schema riskrisk:runtime-boundaryPython/Zig boundary riskPython/Zig boundary riskrole:workerReady for implementation workerReady for implementation workerstatus:readyReady for worktree claimReady for worktree claimtype:compatSource-grounded dbt compatibility sliceSource-grounded dbt compatibility slice
Description
Activity
Metadata
Metadata
Assignees
Labels
area:artifactsManifest, results, catalog, sourcesManifest, results, catalog, sourcesarea:duckdbDuckDB adapter boundaryDuckDB adapter boundaryarea:parserdbt resource parsingdbt resource parsingartifact:sourcessources.jsonsources.jsoncommand:source-freshnesssource freshness commandsource freshness commandgate:focused-pytestNeeds focused pytestNeeds focused pytestgate:zig-testNeeds native Zig test gateNeeds native Zig test gatepriority:p1High priorityHigh priorityready-for-agentReady for agent delegationReady for agent delegationrisk:artifact-contractdbt artifact schema riskdbt artifact schema riskrisk:runtime-boundaryPython/Zig boundary riskPython/Zig boundary riskrole:workerReady for implementation workerReady for implementation workerstatus:readyReady for worktree claimReady for worktree claimtype:compatSource-grounded dbt compatibility sliceSource-grounded dbt compatibility slice
Objective
Implement the first safe child slice from #206: DuckDB metadata-only source freshness should fail with a dbt-grounded unsupported metadata runtime-error row instead of inventing DuckDB metadata freshness behavior.
Current Reality
#206 established that dbt Core can use adapter metadata freshness only when the adapter advertises
TableLastModifiedMetadata/ related metadata APIs. The current dbt-duckdb path does not expose a safe upstream-backed metadata freshness implementation. dxt already supports DuckDBloaded_at_field,loaded_at_query, freshness inheritance, relation identity, and Sources v3-shaped success/runtime-error output.Role and Labels
role:workertype:compat,area:parser,area:artifacts,area:duckdb,artifact:sources,command:source-freshnessstatus:ready,ready-for-agentPriority
priority:p1: source freshness artifacts feed selector behavior and public fixture compatibility.Dependencies / Sequencing
source_status:fresher, selector semantics, or adapter ABI design in this issue.Acceptance Criteria
freshnessbut neitherloaded_at_fieldnorloaded_at_query,dxt source freshnessemits a Sources v3 runtime-error row with a dbt-grounded unsupported metadata message.loaded_at_field/loaded_at_querystill run and emit success/warn/error rows as before.Validation
src/project/source_freshness.zigfor the unsupported metadata reason/writer boundarypython scripts/check_runtime_boundary.pypython scripts/check_public_safety.pyStop Condition
Stop and split if the implementation requires a general adapter capability matrix,
get_relation_last_modified, non-DuckDB adapter behavior, source-status selector changes, or any Python product runtime behavior.