Skip to content

refactor: move compile-path logic out of executor and user-code shims - #1113

Merged
kvlonge merged 11 commits into
mainfrom
feat/native-group-14
Oct 15, 2026
Merged

kvlonge merged 11 commits into
mainfrom
feat/native-group-14

Conversation

@kvlonge

@kvlonge kvlonge commented Oct 15, 2026

Copy link
Copy Markdown
Contributor

Why

Logic that was exempt from the Rust move because it lived in executor, adapter or user-code areas should move unless it is executor runtime, the user-code shim, a public facade or third-party glue.

Changes

  • Native SQL-test and scenario comparison SQL, difference samples, missing-column text and resource ids used by compile and CLI; type comparisons call the native normaliser directly.
  • Native relation-name fitting and microbatch interval merging, removing duplicate Python logic.
  • Native diff tolerance and sampling config, raw-query checks via the Rust SQL library, and build result counts.
  • Dagster selection uses the native selector engine; Dagster and Rivers share one native DAG loader.
  • Native Python-node graph and macro load planning; Python keeps only the code that reads or executes user modules.
  • Stays entries narrowed or removed accordingly.

Verification

  • 11,388 unit/integration tests passed; make check-ci passed with all optional dependencies available.
  • Compiler differential: 371 projects, unchanged goldens. Planner differential: 11 projects matched the main baseline.
  • Render and discovery capture tests pass; compile outputs and exit codes match the reference on synthetic and private compile-only projects.
  • Before/after comparisons covered SQL rendering, name fitting, interval merging, diff config, build counts, Dagster selection, node graphs and macro load order.
  • Independent review: no correctness findings; three unsupported-input edge cases accepted.

…ompile and CLI callers

Rust compile, plan and CLI paths no longer round-trip through executor Python
to render SQL test comparison and difference-sample SQL, describe missing
expected columns, build scenario comparison SQL or format SQL test and audit
resource ids. Planner, rules and refactor type comparisons call the native
type normaliser directly instead of the Python types_equal wrapper.
Planner scenario naming no longer calls back into Python to fit artifact
logical names; the executor imports the native fitting functions. The
executor's raw microbatch interval merge uses the native cursor algebra in
place of the duplicate Python implementation.
Raw-query diff validation parses with the native SQL library instead of the
Python binding of the same library, and row-diff tolerance and sampling
configuration is resolved by native functions shared by the CLI and the
executor.
CLI result documents no longer import executor Python to recount a partial
build; the native aggregation is shared with the executor.
The Dagster integration resolves SQLBuild selectors over the DAG artifact with
the native selector parser and graph closures instead of a Python
re-implementation, and Dagster and Rivers share one native DAG artifact
loader in place of two duplicated Python copies.
… shim

Discovered Python node records, decorator identity configuration, dependency
resolution and graph indexes are built natively; Python keeps only the shim
that reads provider annotations, identities and decorated dependency names
from loaded user functions. Native compile, plan, check, dag and build
callers no longer round-trip through Python graph entry points.
The synthetic package digest, parent package set and dependency-first
execution order of project macro modules come from a native planner; Python
keeps only the shim that installs modules and executes user macro code.
@kvlonge
kvlonge enabled auto-merge (squash) October 15, 2026 10:38
@kvlonge
kvlonge merged commit 624b408 into main Oct 15, 2026
40 checks passed
@kvlonge
kvlonge deleted the feat/native-group-14 branch October 15, 2026 11:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant