RFC-022: enroll branch merge in the unified write path#345
Merged
Conversation
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.
What & why
Enroll branch merge in the RFC-022 unified write adapter so a merge is classified from immutable source/target snapshots, publishes under exact target authority, and remains recoverable without adopting foreign Lance state or re-parenting onto a target winner.
The adapter pre-mints fixed merge lineage and ordered per-table Lance transaction identities, arms schema-v4 recovery before the first table/ref effect, confirms the exact physical and logical output, and publishes the complete merge delta in one manifest CAS.
Backing issue / RFC
Checklist
Notes for reviewers
(read_version, uuid)and zero transparent conflict retries. Confirmation and recovery prove the contiguous exact chain from Lance history. Only aCreateIndexsuffix after the complete chain is rollback-discardable derived state; any foreign, missing, or non-contiguous operation fails closed.Restorebut before the compensating manifest publish recognizes and reuses that exact restore rather than restoring repeatedly.Validation:
cargo test --workspace --lockedcargo test -p omnigraph-engine --features failpoints --test failpoints --locked(94 passed)scripts/check-agents-md.shgit diff --checkGreptile Summary
This PR moves branch merge onto the unified RFC-022 write path. The main changes are:
Confidence Score: 4/5
The branch-merge write path needs fixes before merging. Valid merge states can fail after recovery is armed, and pointer-only merges can lose their recovery intent.
crates/omnigraph/src/exec/merge.rs
Important Files Changed
Sequence Diagram
%%{init: {'theme': 'neutral'}}%% sequenceDiagram participant Merge as Branch merge participant Sidecar as Recovery sidecar participant Lance as Lance tables and refs participant Manifest as Manifest publish Merge->>Sidecar: Arm authority, lineage, planned effects Merge->>Lance: Commit exact data steps or create refs Merge->>Sidecar: Confirm complete merge output Merge->>Manifest: Publish table updates and merge lineage alt crash before manifest publish Sidecar->>Lance: Classify exact effects Sidecar->>Manifest: Roll forward confirmed delta or roll back owned effects end%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%% sequenceDiagram participant Merge as Branch merge participant Sidecar as Recovery sidecar participant Lance as Lance tables and refs participant Manifest as Manifest publish Merge->>Sidecar: Arm authority, lineage, planned effects Merge->>Lance: Commit exact data steps or create refs Merge->>Sidecar: Confirm complete merge output Merge->>Manifest: Publish table updates and merge lineage alt crash before manifest publish Sidecar->>Lance: Classify exact effects Sidecar->>Manifest: Roll forward confirmed delta or roll back owned effects endReviews (1): Last reviewed commit: "Enroll branch merge in RFC-022 write pat..." | Re-trigger Greptile
Context used: