lance-format / lance-format/lance
Remove legacy Operation code paths
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 7.1k
- Forks
- 852
- Avg merge
- 3d 18h
- Merged PRs (30d)
- 272
Description
Parent PRD
Milestone: Action-based Transactions (UserOperation) — see milestone #11. Discussion: #5960.
Re-scoped. Originally "remove all legacy Operation logic". The
build_manifesthalf is done — 9/13 operations route throughAction::apply; the rest land via the per-operation issues below. The conflict-resolution half cannot be sliced per-operation in production (a conflict check is per pair of transactions, so a transition would hit mixed migrated/non-migrated pairs), so it is migrated in a parallel resolver validated by an M×M differential matrix (#6892 + per-operation issues). This issue is now the final cutover.
What to build
Precondition: every operation has been migrated onto the parallel action-level resolver and the differential matrix is green for the full N×N operation set.
- Swap the production commit path from
TransactionRebase::check_txnto the action-level resolver (a one-line call-site change against the legacy-shaped adapter from #6892). - Delete the per-
Operationcheck_*_txnmethods and all now-dead code inrust/lance/src/io/commit/conflict_resolver.rs. - Delete the differential test harness — its legacy oracle is gone. Keep the ported per-operation conflict unit tests; they are the permanent coverage.
- Delete any remaining legacy
build_manifestarms and the vestigialAction::conflicts_with. cargo fmt --all;cargo clippy --all --tests --benches -- -D warningsclean.
The Operation enum itself remains for deserialization of old transaction files; only its apply/conflict logic is removed.
Acceptance criteria
- Production commit path uses the action-level resolver
- Per-
Operationcheck_*_txnmethods removed - Legacy
build_manifestarms removed - Differential harness removed; ported unit tests retained and green
- All existing tests pass through the action code path
- No regression in transaction processing behavior
Blocked by
- #6892 (conflict-resolution framework)
- #6893, #6894, #6895 (already-translated operations)
- #6896, #6897, #6898, #6842 (Overwrite / Rewrite / Update / DataReplacement)
User stories addressed
- User story 5: single code path for applying operations
- User story 6: single code path for conflict resolution
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
After #6892 and the listed per-operation migrations are complete, inspect rust/lance/src/io/commit/conflict_resolver.rs and the production commit path. Switch the call site to the action-level resolver, remove the obsolete Operation conflict methods, differential harness, legacy build_manifest arms, and Action::conflicts_with. Retain the ported unit tests, then run the full test suite, cargo fmt --all, and cargo clippy --all --tests --benches -- -D warnings.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- databases
- Issue type
- Refactor
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Clearly specified
- Newbie friendliness
- 35/100