rfc: add RFC 0050, engine crate topology - #615
Draft
aaltshuler wants to merge 2 commits into
Draft
Conversation
Draft the decision record for splitting the engine package into a sealed substrate crate, a logical authority crate, an executor crate, a write-protocol crate, and a thin facade, with typed seams and the guards that make the boundaries compiler facts. Registers 0050 and advances the next available number.
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.
Drafts RFC 0050: split the engine package into a seven-crate family with a sealed substrate boundary. omnigraph-lance is the only production crate that links Lance and DataFusion execution. Its operational API is Lance-free, while a closed compatibility module preserves the four existing read-only SnapshotDataset and SnapshotScanner signatures that already name Lance types.
The RFC now makes the authority boundaries explicit without changing user behavior: omnigraph-graph owns accepted graph state and captured write authority; omnigraph-exec owns typed read execution; and a policy-configured omnigraph-write owns supported graph-write orchestration. Existing actor-less maintenance dispositions remain unchanged.
Graph publication is separated from physical CAS. publish_once performs graph-aware validation and bounded retry, while omnigraph-lance exposes a single-attempt manifest CAS tied to an exact physical observation. Exact-authority operations keep a fixed WriteTxn; existing explicitly rebasable adapters retain that behavior. Only proven no-commit contention retries, while ambiguous outcomes remain recovery-owned.
The facade keeps the current public Rust surface by re-export. New crates publish in dependency order, with API snapshots and structural guards covering the compatibility allow-list, policy dispositions, and the sole workspace production caller of the physical manifest CAS.
Process: draft status per step 2 of the RFC guide. Registers 0050 and moves the next available number to 0051.
Checks: python3 scripts/check-docs.py, bash scripts/check-agents-md.sh, python3 scripts/check-workflow-action-pins.py, and git diff --check pass.