docs(lance-backend): proven kv-lance feature-gate reference (lite-unified)#47
Conversation
Document the lite-unified surreal build: `--no-default-features --features kv-lance` drops the C++ (kv-rocksdb) and gRPC (kv-tikv) storage engines, keeping a pure-Rust columnar surreal backed by Lance. Captures the in-tree pins (lance =7.0.0, lance-index =7.0.0, lancedb =0.30.0, arrow 58), a troubleshooting matrix, and the ractor breakthrough loop (Lance versions() -> scheduler actor -> jitson -> SoA tenant write). Supersedes the stale patches/Cargo-toml.patch.txt (lance "1.0", arrow "55", "not yet wired"); the feature is now wired in surrealdb/core/Cargo.toml. Cross-references the ractor MessagingErr::Saturated fix on the same branch that unblocks the actor-driven Lance version-subscription loop. Append-only AGENT_LOG entry added per .claude board convention. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CcpLeEC3XK8Eye53GKBVvi
📝 WalkthroughWalkthroughAdds a new documentation card ChangesLance Feature Gates Documentation
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~3 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 7f7e27c0b5
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
|
||
| ```bash | ||
| # Lite-unified: pure-Rust columnar surreal, no RocksDB(C++), no TiKV(gRPC). | ||
| cargo build -p surrealdb --no-default-features --features kv-lance,rustls |
There was a problem hiding this comment.
Don't include rustls in the no-cc proof command
For the non-WASM SDK build, this rustls feature is not a pure-Rust/no-cc choice: surrealdb/Cargo.toml enables rustls with aws_lc_rs, and the checked-in lockfile shows rustls depending on aws-lc-rs while aws-lc-sys depends on cc and cmake. As written, the documented “lite-unified” proof command can still require native build tooling and contradicts the later “Zero cc/C++ in the closure” claim, so users trying to verify a no-native-toolchain Lance-only build can get misleading results; use the core-only command for that proof or document the SDK rustls caveat.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
🧹 Nitpick comments (1)
.claude/lance-backend/LANCE_FEATURE_GATES.md (1)
110-122: ⚡ Quick winFenced code block missing language specification.
The code block rendering the ractor loop diagram should include a language identifier to comply with Markdown linting standards. Consider using
```textto mark it as plain text.🔧 Proposed fix
- ``` + ```text Lance Dataset::versions() (kv-lance backend, this card)🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In @.claude/lance-backend/LANCE_FEATURE_GATES.md around lines 110 - 122, The fenced code block in LANCE_FEATURE_GATES.md containing the ractor loop diagram (with Lance Dataset::versions(), LanceVersionScheduler, jitson/Cranelift formula, and MailboxSoaView) is missing a language specification. Add the language identifier 'text' to the opening fence of this code block by changing the opening fence from three backticks alone to three backticks followed by 'text' to comply with Markdown linting standards.Source: Linters/SAST tools
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Nitpick comments:
In @.claude/lance-backend/LANCE_FEATURE_GATES.md:
- Around line 110-122: The fenced code block in LANCE_FEATURE_GATES.md
containing the ractor loop diagram (with Lance Dataset::versions(),
LanceVersionScheduler, jitson/Cranelift formula, and MailboxSoaView) is missing
a language specification. Add the language identifier 'text' to the opening
fence of this code block by changing the opening fence from three backticks
alone to three backticks followed by 'text' to comply with Markdown linting
standards.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro Plus
Run ID: abfc4c89-50f2-4592-9636-bb86bdb8303d
📒 Files selected for processing (2)
.claude/board/AGENT_LOG.md.claude/lance-backend/LANCE_FEATURE_GATES.md
What
Adds
.claude/lance-backend/LANCE_FEATURE_GATES.md— a proven, reference + troubleshooting card for the lite-unified surreal build: a pure-Rust columnar surreal whose backing store is Lance, with the C++ and gRPC storage engines dropped.The proven invocation
cargo build -p surrealdb --no-default-features --features kv-lance,rustls # core-only, fastest loop: cargo check -p surrealdb-core --no-default-features --features kv-lance--no-default-featuresis load-bearing: it dropskv-rocksdb(C++cc/libstdc++) andkv-tikv(gRPC/protoc), keepingkv-lance(lance,lance-index,lancedb,arrow-array,arrow-schema— all pure Rust). Observed clean compile (~5m43s cold, seconds incremental), zero C++ in the closure.What the card contains
kv-lance.lance =7.0.0,lance-index =7.0.0,lancedb =0.30.0,arrow 58, matching theAdaWorldAPI/lance-graphworkspace lockstep (PR link because because issue surrealdb/surrealdb#445). Documents the P0 fork-pin discipline (never substitute crates.io to make a compile pass).Patch ... was not used/lance-family-drift/default-feature-leak.Dataset::versions()→LanceVersionScheduler(ractor actor, bounded mailbox) → jitson/Cranelift formula →MailboxSoaViewtenant write → commits a new Lance version → loop closes. Notes that DataFusion is NOT on this path (compute, not query) while lance/lancedb/arrow are (zero-copy columnar store), and thatMessagingErr::Saturatedis the backpressure valve between a fast Lance commit stream and a slower jitson worker.This supersedes the stale
patches/Cargo-toml.patch.txt(which still describeskv-lanceas not-yet-wired,lance = "1.0",arrow = "55"); the feature is now wired insurrealdb/core/Cargo.toml.Honest caveats (recorded in the doc)
surreal_containerconsumer is stillBLOCKED(C): the kv-lance fork dep isn't wired into itsCargo.toml. That wiring + the loop is the remaining work, not a 12-day lift.Notes
.claude/(the AdaWorldAPI engineering-session workspace) — no source or realCargo.tomlchanges. Append-onlyAGENT_LOG.mdentry added per the.claudeboard convention.MessagingErr::Saturatedfix that unblocks the actor-driven Lance subscription loop), on the same branch name.🤖 Generated with Claude Code
Generated by Claude Code
Summary by CodeRabbit
Documentation
Chores