Repository navigation
Preserve merge markers and measure the driver's historical effect - #256
Conversation
Quest-Claim: 4b9caed036295fe5
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
kixelated
left a comment
There was a problem hiding this comment.
Automated review by review (OpenAI)
Reviewed commit: abc2503
No actionable bugs found. Passing Git's marker size and all three labels through the existing parser/renderer is a focused improvement; rejecting multiline labels before writing and retaining native merge-file fallback avoid unnecessary new merge heuristics. The real-Git regressions cover quoted labels, custom marker lengths, and missing/older binaries. Preserving existing driver configuration with an explicit migration instruction is sensible.
The replacement replay is clearly distinguished from the unrecoverable original sample, and mechanical resolution counts are not presented as semantic correctness. Verification limits: static inspection only; I did not run tests or reproduce the historical replay, binary checksum, or reported counts.
|
Merge summary:
(written by Claude Opus 5.5) |
Git supplies custom merge-driver labels and marker sizes, but unresolved quest conflicts previously used fixed
ours/base/theirslabels and seven-character markers. Pass%L,%X,%S, and%Ythrough the CLI and merge-file, retaining the same metadata in the missing/older-quest fallback. Real Git regressions compare the result byte-for-byte with native diff3 output, including a quoted branch name and 13-character markers.Measurement method and limitation
The original plan reports 280 merges, 128 conflicted, and 29 quest-only, but its recorded plan and kixelated/quest#219 contain no merge SHA list or ref snapshot; that exact sample could not be recovered. As a research-method implementation choice, use the pinned broader replacement below. These results do not reproduce the original sample and are not directly comparable to its 128/29 counts. No acceptance threshold or general claim about other repositories follows from them. The goal of measuring the driver's real effect and preserving native marker metadata is complete; the quest and its links are removed.
Reproducible replacement measurement
Read-only history from moq-dev/moq, replayed only in this checkout's private
.tmp/moq-replay.git. Select all two-parent merges reachable from the cloned local heads, committed from2026-09-23T00:00:00-07:00through2026-10-23T09:11:00-07:00, whose second parent is on the first-parent chain of main snapshotbea4214598a6b3b2419dd59ce7f8ea44837ca3f8. This intentionally broader selector includes historical mainline ancestry under its former branch name. It does not select cases to reach 280. No further exclusions.quest/Git 2.55.0; replay each recorded merge's first and second parent with
git merge-tree --write-tree --name-only --no-messages -z. Disable global/system config and attributes; overridequest/** merge=textfor native baseline andquest/** merge=questfor the driver. Replay the driver for all 363 cases with any native quest conflict. The binary is built from this implementation, SHA25616fa3aaaf945501e80d0783369beed1bf5ca91573c2f7ccba5599819fa08b268. All 111 fully resolved merges came from the quest-only group. Counts measure mechanical conflict resolution, not semantic equivalence to historical manual resolutions.Remaining shapes include prose conflicts (for example, competing summary sentences in
0b253f9e8537731b7c797e9805439824a24d5986,quest/m1/release-audit/README.md) and modify/delete conflicts (verified Git messages forb717778ef17a88f7c254f28b6821db5be50ddf39,quest/m0/release-backports/README.mdandquest/m0/release-fixed-delay.md). Across the 109 remaining merges, 96 path occurrences contain text conflict markers and 89 do not. No new resolution heuristic is introduced.Validation and implementation choices
just install,just check, andjust testpassed; focused resolve suite: 24 tests passed.quest check --base origin/main: 59 documents pass..tmp/; result SHA256: b59ca524712a2b11e574c079a9ddfe07b265ad28b632ee956ba546b390a0a317; ref snapshot SHA256: af7091697cedeee5f562f96e84f48796d22022af01385f070fb0119c82d10b87.%Sis included so diff3 matches native Git. Git shell-quotes the label substitutions; integration regressions cover apostrophes. Labels containing line breaks fail before modifying input, avoiding a parser falsely treating a conflict as clean.help resolvebut rejects the new flags, fallback uses native merge-file.Exact replacement corpus — 1,108 merge SHAs, in replay order
(written by GPT-6)