lance-format / lance-format/lance
Overwrite: action translation + conflict resolution
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. Design spike: #6448.
What to build
Operation::Overwrite has no action translation and still uses a legacy build_manifest arm. This is a combined vertical slice — translation, apply routing, and conflict migration in one operation.
- Translate
Overwrite→[RemoveFragments(AllCurrent), ChangeSchema, AddFields?, AddFragments, UpdateConfig?, AddBases?]. Requires theRemoveFragmentsSelector { Ids, AllCurrent }form (spike #6448 Q3) if not yet present. Round-trip losslessly. - Route
build_manifestthroughAction::applyand delete the legacyOverwritearm. - Implement
reads()/writes()/rebase()for any action in the list that still lacks it. - Add a property-based generator; port the legacy
check_overwrite_txnunit tests onto the new resolver; extend the differential matrix; fill design-doc §5/§6.
conflict_resolver.rs must not be modified — it remains the production path and differential oracle until cutover (#6454).
Acceptance criteria
-
Overwritetranslates to actions; round-trip test passes -
build_manifestrouted throughAction::apply; legacyOverwritearm deleted -
reads/writes/rebasecomplete for all actions in theOverwritedecomposition - Property-based generator added
- Legacy
check_overwrite_txnunit tests ported and green on the new resolver - Differential matrix extended; green for all migrated operations
- Existing overwrite tests still pass
-
conflict_resolver.rsunmodified
Blocked by
- #6892 (conflict-resolution framework)
User stories addressed
- User story 5: single code path for applying operations
- User story 6: single code path for conflict resolution
- User story 9: old operations translated to actions
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
Start with blocked issue #6892, then inspect Operation::Overwrite, build_manifest, and Action::apply to understand the existing translation and routing. Read the legacy check_overwrite_txn tests and the design document sections 5 and 6 before adding the generator and differential coverage. Done means all acceptance criteria pass while conflict_resolver.rs remains unchanged.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- backend, distributed-systems
- Issue type
- Refactor
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100