Repository navigation
release: 0.12.0 - #20
Merged
Merged
Conversation
…s as patchflow 0.8 wrote them Found by the Markdown meeting test on 0.11.0 (10 users, 15 min): 40 inconsistencies and words lost by merging. Sessions that reloaded during heavy concurrency committed without exact values (no hash) for a while; their merge commits looked like patchflow 0.8 merges and were read by replaying the history in time order, whose result depends on how much of the history a client has loaded. Clients disagreed about those values, and a merge commit recording its author's (wrong) merged value made it everyone's, deleting 8 words in one merge. Session now marks a patch committed without the exact value of its parents `inexact` (it has no hash either). Such a merge commit is read with merge3, like any merge commit of this version, which does not depend on the loaded history. Only unmarked merge commits without a hash or recorded value (written by patchflow 0.8) are replayed in time order. Test: a session that cannot compute the exact merge commits an inexact merge, read with merge3 (the time-order replay gives a different value; the test fails when the marker is ignored). Tests that simulate patchflow 0.8 writers strip the marker, as 0.8 never wrote it.
Review of #19 (P2): a patch was marked inexact whenever its parents had no exact value, which is also always the case for a session that never computes exact values (a codec without merge3, or the apply-all strategy). Its merge commits are genuine time-order history, but the marker made exact readers read them with merge3, changing their values. Now only a session that computes exact values (PatchGraph.computesExactValues) and lacks them for a commit marks it. Test: the reviewer's case, a current session without merge3 writing a concurrent history, read unchanged by exact readers (merge3 and a different merge): every value is the author's, no patch is marked. The tests that simulated patchflow 0.8 writers no longer strip the marker (fails with the previous rule).
williamstein
force-pushed
the
release/0.12.0
branch
from
October 2, 2026 16:08
a57b52e to
318a335
Compare
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.
Includes #19 (patches committed without exact values are marked
inexact; only unmarked merges are read as patchflow 0.8 wrote them). Merge #19 first; then this PR is only the version bump. After merging, tag v0.12.0 on the merge commit to publish.