interface import: bring #20 to main - #22
Merged
Merged
Conversation
Emits types, never descriptions. Copying warehouse prose into cell.yaml is the rot issue #18 complains about, and automating the copy would only make rot cheap. Types are safe to copy because verify checks them against the warehouse on every run, so divergence is caught; descriptions have no such check, so a copy goes stale silently. The warehouse's prose already rides `observed.source_descriptions`, live and unrottable. An author writes a local `description:` only when they mean something different from the warehouse — authorship, not transcription. datamk interface import -p prod --bind gold_customer --as qfai_customer stdout by default, `--write` splices into the `interface:` block by byte range rather than round-tripping through serde_yaml, which would destroy the teaching comments. Refuses an existing entry without `--force`. The YAML goes to stdout and everything else to stderr, so piping is safe. Types come from the warehouse's own schema; DuckDB stays the authority for a raw-file source. An unmappable type emits `type: unmapped` with the real type in a comment rather than dropping the column, since verify only checks declared columns exist and a dropped one would ship as a hole. No `unit:` is ever inferred, and `grain` and the export description stay empty because both are judgment. `contract: supported` is now satisfied by the meaning being available — either a local description or one on the bound source — rather than by it being restated locally, which would have forced the copy straight back in. The inverse type mappings are siblings of the existing forward predicates, never edits to them, each pinned by an offline round-trip test asserting every declared name they emit satisfies the forward check. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
interface import: scaffold an interface block from a bound object
…o interface-import-to-main # Conflicts: # CHANGELOG.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Brings
datamk interface import(#18, PR #20) tomain.Why this is needed
PR #20 merged on 2026-08-11 — but into
virtual-cells-binding-model, notmain. PR #19 had already merged that branch tomaintwo days earlier, sothe import work landed on a branch with no remaining path to the release
line. It is therefore absent from
v0.0.18(tagged 2026-08-13, after thefeature merged), and would have been absent from every subsequent release
too. Anyone needing it today has to hand-write interface blocks against
INFORMATION_SCHEMA.This PR is
virtual-cells-binding-modelmerged into currentmain, on afresh branch so the merge is reviewable and actually mergeable.
Contents
The two commits stranded on the old branch:
9e8655einterface import: scaffold an interface block from a bound objecte575ff7Merge pull request interface import: scaffold an interface block from a bound object #20datamk interface import -p prod --bind gold_customer --as qfai_customeremits a ready-to-edit bound export block from the warehouse object's own
live types —
type: unmappedwith the real type in a comment rather than aguess for anything without a clean datamk type name.
--writesplices itinto
cell.yamlas a byte-range textual edit, so existing comments survive.It deliberately never emits a
description:(ADR 0012 §3 rot); relatedly,contract: supportedno longer requires a locally authored description on abound export whose source has warehouse-documented columns.
Merge resolution
One conflict, in
CHANGELOG.md— both sides added[Unreleased]entries.Resolved by keeping both. All code files auto-merged:
src/cli.rs,src/main.rs,src/verify.rs,test/integrations/cli.rs.The branch was 9 commits behind
main, including thedatamk_context: 3bump and multi-cell serving, so the merge was verified rather than assumed:
cargo test— 682 passing, 0 failingcargo clippy --all-targets --all-features -- -D warnings— cleancargo build— cleanNote for whoever owns
virtual-cells-binding-modelThat branch is now fully contained in this PR. It should be deleted after
merge rather than left as a target — it has already silently stranded one
user-facing feature by being a base branch that outlived its own merge.
🤖 Generated with Claude Code