lance-format / lance-format/lance

Migrate schema operations (Project, Merge) to action-level conflict resolution

Open
#6,894 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
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_txn unit 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/rebase implemented for ChangeSchema, 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.rs unmodified

Blocked by

  • lance-format/lance#6892 (conflict-resolution framework)

User stories addressed

  • User story 6: single code path for conflict resolution

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.