You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Incubate a DataFusion-inspired, deferred, fluent query engine inside python-sdk, implemented as a Python-independent Rust crate (cldk-query-core) with a PyO3 adapter (cldk-python). Implements the semantics of the fluent-query-core design (#212, Epic B #155) on a Rust core per the incubation RFC. No schema-v2 change — the engine consumes schema 2.0.0 (analysis.json, emitted Neo4j graphs). One new contract is introduced: the versioned LogicalPlan wire format (PlanEnvelope, semver string).
Extraction boundary: no PyO3 in core; language-neutral results; versioned PlanEnvelope; extract only when independently consumed/released.
Scope guard: Epic-E cross-service model (service topology, gRPC/proto contracts, across_services(), Go analyzer) is OUT — it is schema-v2 evolution across analyzers and enters designing-cldk-changes separately. The RFC's boutique examples are the north star, not this epic.
CHILDREN (one per rung/PR-unit; checklist updated as they land)
The two Odoo PoE audit queries run end-to-end on both backends; .explain() output reproduces the manual audit evidence; identical results in-memory vs Neo4j.
cargo test passes in cldk-query-core with no Python interpreter; serialized plans round-trip independent of Python fluent objects.
SDK public accessor API unchanged; the fluent API ships additively.
cldk.graph slicer deprecation only after Rust slicer passes the same exact-set gates.
Docs / CHANGELOG updated; wheel matrix publishes for all supported platforms.
SUMMARY
Incubate a DataFusion-inspired, deferred, fluent query engine inside python-sdk, implemented as a Python-independent Rust crate (
cldk-query-core) with a PyO3 adapter (cldk-python). Implements the semantics of the fluent-query-core design (#212, Epic B #155) on a Rust core per the incubation RFC. No schema-v2 change — the engine consumes schema 2.0.0 (analysis.json, emitted Neo4j graphs). One new contract is introduced: the versioned LogicalPlan wire format (PlanEnvelope, semver string).AFFECTED REPOS (from Contract-Impact Triage)
crates/{cldk-query-core,cldk-python}, workspace Cargo.toml at repo root) + fluent facade (cldk/query/) — cldk-sdk-frontendDESIGN DECISIONS (locked with the user; recorded in .claude/FACADE_DECISIONS.md and docs spec 2026-07-21)
.explain()reproduces the manual audit evidence.can://is canonical (07-09 spec'scldk://amended); no parallelservice:///proto://schemes.analysis.jsonnatively (serde CPG models) and speaks Bolt (neo4rs); cargo-only core tests on fixture JSONs.explain()marks the split.cldkbecomes a maturin/PyO3 abi3 platform wheel (accepted: not pure-Python anymore; release build matrix; sdist needs a Rust toolchain).cldk.graphslice engine (F7: L3/L4 consumption API — shared program-slice engine + five facade verbs (slice/flows/def-use) #270/feat(graph): L3/L4 program-slice engine core (Tasks 1–6 of #270) #271); deprecation gated on exact-set gate parity.across_services(), Go analyzer) is OUT — it is schema-v2 evolution across analyzers and enters designing-cldk-changes separately. The RFC's boutique examples are the north star, not this epic.CHILDREN (one per rung/PR-unit; checklist updated as they land)
DEFINITION OF DONE (epic-level)
.explain()output reproduces the manual audit evidence; identical results in-memory vs Neo4j.cargo testpasses incldk-query-corewith no Python interpreter; serialized plans round-trip independent of Python fluent objects.cldk.graphslicer deprecation only after Rust slicer passes the same exact-set gates.