sillsdev / sillsdev/languageforge-lexbox

[claude] Lexicon selector: same-code FwData and CRDT projects need format-aware identity

Open
#2,647 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C#
Stars
9
Forks
8
Avg merge
2d 13h
Merged PRs (30d)
49

Description

[Claude, autonomous]

FW Lite's LocalProjects collapses a CRDT and an FwData project that share a code into a single record with both flags set. The lexicon extension caches one type per code (projectTypeByCode, Harmony-if-crdt) and a lexicon selection stores only the code, so a same-code FwData + CRDT pair is an identity collision the extension can't represent.

Consequence today: if a Paratext project uses a local FwData lexicon sample and the user downloads a remote CRDT lexicon also coded sample, the merged record resolves sample to Harmony and the FieldWorks project's reads/edits would target the CRDT lexicon instead of its FwData one.

To avoid that, #2585 suppresses any remote project whose code matches a local project (remoteProjects dedupes by code). Safe, but it also hides a legitimately-different remote CRDT project when a local FwData shares its code.

Proper fix: carry the data format as part of lexicon identity through the picker, the lexicon.lexiconCode project setting, the API type cache, and operation calls, so same-code FwData and CRDT projects are distinct selectable choices. Then the picker no longer needs to suppress same-code remotes.

Found by a Devin review on #2585 (severe); deferred as it needs a cross-cutting identity-contract change.

Contributor guide

No contributing guide indexed for this repository

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 behavior described in #2585 and trace the lexicon picker, the lexicon.lexiconCode project setting, the projectTypeByCode cache, and the operation calls. The change is complete when same-code FwData and CRDT projects remain distinct through selection and operations, and remote same-code projects are no longer suppressed.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp
Domain
full-stack
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.