lance-format / lance-format/lance
Migrate schema operations (Project, Merge) to action-level 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: lance-format/lance#6448.
What to build
Project and Merge already translate to actions and route build_manifest through Action::apply (done under lance-format/lance#6454). This issue migrates their conflict resolution onto the parallel action-level resolver built in lance-format/lance#6892.
For the actions these operations use (ChangeSchema, AddFields, DropFields, UpdateSchemaMetadata):
- Implement
reads()/writes()/rebase(). - Add property-based transaction generators.
- Port the legacy
check_project_txn/check_merge_txnunit tests onto the new resolver. - Extend the differential matrix by these rows/columns; it must stay green for all operations migrated so far.
- Fill the corresponding §5/§6 rules in the design doc.
conflict_resolver.rs must not be modified — it remains the production path and differential oracle until cutover (lance-format/lance#6454).
Acceptance criteria
-
reads/writes/rebaseimplemented forChangeSchema,AddFields,DropFields,UpdateSchemaMetadata - Property-based generators added
- Legacy conflict unit tests ported and green on the new resolver
- Differential matrix extended; green for all migrated operations
- Design doc §5/§6 updated
-
conflict_resolver.rsunmodified
Blocked by
- lance-format/lance#6892 (conflict-resolution framework)
User stories addressed
- 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
Start with the conflict-resolution framework in lance-format/lance#6892 and the existing action-level implementations for ChangeSchema, AddFields, DropFields, and UpdateSchemaMetadata. Then inspect the legacy check_project_txn and check_merge_txn tests, the differential matrix, and the design document §§5/6. Done means the generators, resolver behavior, ported tests, matrix, and design rules are complete while conflict_resolver.rs remains unchanged.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- databases, distributed-systems
- Issue type
- Refactor
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100