lance-format / lance-format/lance

Overwrite: action translation + conflict resolution

Open
#6,896 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: #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 the RemoveFragments Selector { Ids, AllCurrent } form (spike #6448 Q3) if not yet present. Round-trip losslessly.
  • Route build_manifest through Action::apply and delete the legacy Overwrite arm.
  • Implement reads() / writes() / rebase() for any action in the list that still lacks it.
  • Add a property-based generator; port the legacy check_overwrite_txn unit 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

  • Overwrite translates to actions; round-trip test passes
  • build_manifest routed through Action::apply; legacy Overwrite arm deleted
  • reads/writes/rebase complete for all actions in the Overwrite decomposition
  • Property-based generator added
  • Legacy check_overwrite_txn unit tests ported and green on the new resolver
  • Differential matrix extended; green for all migrated operations
  • Existing overwrite tests still pass
  • conflict_resolver.rs unmodified

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

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 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.