Repository navigation
Issue #22 (part 3 slice): Preview agrees with Move under LINK - #219
Merged
Merged
Conversation
Under ConflictMode.LINK Move writes nothing to an existing item, but the category planners emit a GUID-matched merge overwrite whenever fields differ. build_run_plan now converts that into an ALREADY_PRESENT_BY_GUID skip whose detail says the differences are not applied. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This was referenced Nov 2, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Part of #22. This is the self-contained slice of the remainder: the LINK Preview/Move disagreement recorded as a known gap in #101. Part 2 (true Overwrite) is blocked on flexicon mirror-mode / empty-key emission. The rest of Part 3 (GOLD identity resolution layered on Merge, and the planner not comparing
CatalogSourceId) needs a spec and a constitution amendment.Change
Under
ConflictMode.LINK, Move writes nothing to an existing item (transfer.execute: "LINK mode - item present, no field writes"), but the category planners emit a GUID-matchedPlannedOverwrite(write_mode="merge")whenever fields differ, so Preview promised a merge Move never wrote (Principle III).preview._link_mode_skipnow converts that overwrite, inbuild_run_plan's leaf loop, into aSkip(ALREADY_PRESENT_BY_GUID)whose detail says LINK writes no fields and lists the differences that are NOT applied. Natural-key matches and non-merge overwrites are left alone (the executor resolves references through them). Default modes are unchanged (these categories default to UPDATE).Live verification (FLEXLIBS_REQUIRE_LIVE=1)
tests/integration/test_issue22_link_preview_live.py: private sourceGT-Src-22,Targetrestored fromTarget 2026-07-06 0218.fwbackupand claimed with lockout (released afterwards). A POS exists in both with Name/Abbreviation diverged in the source.('GT22 old pos','GT22old')unchanged.('GT22 new pos','GT22new')("UPDATE applied (2 field(s) written)").Unit: new
tests/unit/test_issue22_link_preview.py; full unit suite 5685 passed, 80 skipped, 14 xfailed.Left on #22
CatalogSourceId, which Move writes.Generated with Claude Code