| 1 | {
|
| 2 | "note": "Known Oak bugs this suite reproduces. IDs fb-537..fb-541 were filed by o-4d 2026-09-28 from QA standalone repros (bench-program/repro-p3). An oak-wrong row maps to a bug only if EVERY reason on the row matches that bug's reason_patterns (regex, re.search) and its optional scenario_glob. expected_rows pins the rows each bug produced on oak 0.105.0; the summary reports new_rows and vanished_rows per bug so a fix (rows vanish) or a regression hiding behind a known bug (new rows) is visible. Setup-step failures are harness-error (setup_failed:), never mapped.",
|
| 3 | "bugs": [
|
| 4 | {
|
| 5 | "id": "fb-540",
|
| 6 | "family": "F5",
|
| 7 | "severity": "Blocker",
|
| 8 | "title": "file<->directory transitions make oak pull (and oak switch) fail; the failed pull can move HEAD with a pre-merge worktree, or leave a half-merged worktree with HEAD unchanged",
|
| 9 | "reason_patterns": [
|
| 10 | "^oak_error: IO error: File exists \\(os error 17\\)",
|
| 11 | "^oak_error: IO error: Not a directory \\(os error 20\\)",
|
| 12 | "^oak_error: cannot build tree with both file \"[^\"]*\" and child path ",
|
| 13 | "^oak_error: refusing to replace non-empty directory '[^']*' with a tracked file",
|
| 14 | "^failed_pull_moved_head_worktree_stale: ",
|
| 15 | "^failed_pull_left_worktree_dirty: "
|
| 16 | ],
|
| 17 | "expected_rows": [
|
| 18 | "gix-cartesian/matrix/add-free-a--file-to-dir|A-B",
|
| 19 | "gix-cartesian/matrix/add-free-a--rename-and-file-to-dir|A-B",
|
| 20 | "gix-cartesian/matrix/add-free-b--file-to-dir|A-B",
|
| 21 | "gix-cartesian/matrix/add-free-b--rename-and-file-to-dir|A-B",
|
| 22 | "gix-cartesian/matrix/delete-occupied--file-to-dir|A-B",
|
| 23 | "gix-cartesian/matrix/delete-occupied--rename-and-file-to-dir|A-B",
|
| 24 | "gix-cartesian/matrix/keep--file-to-dir|A-B",
|
| 25 | "gix-cartesian/matrix/keep--rename-and-file-to-dir|A-B",
|
| 26 | "gix-cartesian/matrix/modify-occupied--file-to-dir|A-B",
|
| 27 | "gix-cartesian/matrix/modify-occupied--rename-and-file-to-dir|A-B",
|
| 28 | "gix-cartesian/matrix/modify-source--file-to-dir|A-B",
|
| 29 | "gix-cartesian/matrix/modify-source--file-to-dir|B-A",
|
| 30 | "gix-cartesian/matrix/modify-source--rename-and-file-to-dir|A-B",
|
| 31 | "gix-cartesian/matrix/modify-source--rename-and-file-to-dir|B-A",
|
| 32 | "gix-tree/added-file-vs-added-directory/A-B|A-B",
|
| 33 | "gix-tree/added-file-vs-added-directory/A-B|B-A",
|
| 34 | "gix-tree/deleted-file-replaced-by-renamed-dir/A-B|B-A",
|
| 35 | "gix-tree/nested-rename-blocks-relocated-addition/A-B|A-B",
|
| 36 | "gix-tree/nested-rename-blocks-relocated-addition/A-B|B-A",
|
| 37 | "gix-tree/non-tree-to-tree-with-rename/A-B|A-B",
|
| 38 | "gix-tree/non-tree-to-tree-with-rename/A-B|B-A",
|
| 39 | "gix-tree/non-tree-to-tree/A-B|A-B",
|
| 40 | "gix-tree/non-tree-to-tree/A-B|B-A",
|
| 41 | "gix-tree/rename-delete-after-consumed-path/A-B|A-B",
|
| 42 | "gix-tree/renamed-file-inside-renamed-directory/A-B|A-B",
|
| 43 | "gix-tree/renamed-file-replaced-by-renamed-dir/A-B|A-B",
|
| 44 | "gix-tree/renamed-file-replaced-by-renamed-dir/A-B|B-A",
|
| 45 | "gix-tree/same-source-rewrites-after-consumed-path/A-B|A-B",
|
| 46 | "gix-tree/simple/side-1-2-various-conflicts|side1-side2",
|
| 47 | "gix-tree/simple/side-1-2-various-conflicts|side2-side1",
|
| 48 | "gix-tree/simple/tweak1-side2|side2-tweak1",
|
| 49 | "gix-tree/simple/tweak1-side2|tweak1-side2",
|
| 50 | "gix-tree/tree-to-non-tree-with-rename/A-B|A-B",
|
| 51 | "gix-tree/tree-to-non-tree-with-rename/A-B|B-A",
|
| 52 | "gix-tree/tree-to-non-tree/A-B|A-B",
|
| 53 | "gix-tree/tree-to-non-tree/A-B|B-A",
|
| 54 | "gix-tree/unrelated-renames-overlapping-destinations/A-B|A-B",
|
| 55 | "gix-tree/unrelated-renames-overlapping-destinations/A-B|B-A"
|
| 56 | ]
|
| 57 | },
|
| 58 | {
|
| 59 | "id": "fb-538",
|
| 60 | "family": "F2",
|
| 61 | "severity": "High",
|
| 62 | "title": "symlinks (or symlink vs file) changed on both sides are text-merged; target committed with glued conflict markers",
|
| 63 | "reason_patterns": [
|
| 64 | "^committed_conflict_markers_symlink: "
|
| 65 | ],
|
| 66 | "expected_rows": [
|
| 67 | "gix-tree/rename-add-symlink/A-B|B-A",
|
| 68 | "gix-tree/symlink-addition/A-B|A-B",
|
| 69 | "gix-tree/symlink-addition/A-B|B-A",
|
| 70 | "gix-tree/symlink-modification/A-B|A-B",
|
| 71 | "gix-tree/symlink-modification/A-B|B-A",
|
| 72 | "gix-tree/type-change-to-symlink/A-B|A-B",
|
| 73 | "gix-tree/type-change-to-symlink/A-B|B-A",
|
| 74 | "gix-tree/unrelated-renames-to-same-path-with-type-mismatch/A-B|B-A"
|
| 75 | ]
|
| 76 | },
|
| 77 | {
|
| 78 | "id": "fb-537",
|
| 79 | "family": "F1+F3",
|
| 80 | "severity": "Blocker",
|
| 81 | "title": "conflict markers committed as a clean merge when a merge input lacks a final newline (text and UTF-8-decodable binary)",
|
| 82 | "reason_patterns": [
|
| 83 | "^committed_conflict_markers_no_final_newline: "
|
| 84 | ],
|
| 85 | "expected_rows": [
|
| 86 | "gix-text/complex/conflict-without-LF|ours-theirs",
|
| 87 | "gix-text/complex/conflict-without-LF|theirs-ours",
|
| 88 | "gix-text/complex/marker-newline-handling-crlf|ours-theirs",
|
| 89 | "gix-text/complex/marker-newline-handling-crlf|theirs-ours",
|
| 90 | "gix-text/complex/marker-newline-handling-lf2|ours-theirs",
|
| 91 | "gix-text/complex/marker-newline-handling-lf2|theirs-ours",
|
| 92 | "gix-text/complex/marker-newline-handling-lf|ours-theirs",
|
| 93 | "gix-text/complex/marker-newline-handling-lf|theirs-ours",
|
| 94 | "gix-text/complex/missing-LF-at-EOF|ours-theirs",
|
| 95 | "gix-text/unique-merge-base-with-insertion|ours-theirs",
|
| 96 | "gix-text/unique-merge-base-with-insertion|theirs-ours",
|
| 97 | "gix-tree/both-modify-binary/A-B|A-B",
|
| 98 | "gix-tree/both-modify-binary/A-B|B-A"
|
| 99 | ]
|
| 100 | },
|
| 101 | {
|
| 102 | "id": "fb-539",
|
| 103 | "family": "F4",
|
| 104 | "severity": "High",
|
| 105 | "title": "mode change silently lost (chmod vs content edit, or both sides disagree on mode)",
|
| 106 | "reason_patterns": [
|
| 107 | "^lost_mode_change: "
|
| 108 | ],
|
| 109 | "expected_rows": [
|
| 110 | "generated/s20260928-004|A-B",
|
| 111 | "generated/s20260928-014|A-B",
|
| 112 | "generated/s20260928-021|A-B",
|
| 113 | "generated/s20260928-022|A-B",
|
| 114 | "generated/s20260928-026|A-B",
|
| 115 | "gix-tree/identical-renames-to-same-destination-with-mode-change/A-B|A-B",
|
| 116 | "gix-tree/identical-renames-to-same-destination-with-mode-change/A-B|B-A",
|
| 117 | "gix-tree/remove-executable-mode/A-B|B-A",
|
| 118 | "gix-tree/same-rename-different-mode/A-B|A-B",
|
| 119 | "gix-tree/same-rename-different-mode/A-B|B-A"
|
| 120 | ]
|
| 121 | },
|
| 122 | {
|
| 123 | "id": "fb-541",
|
| 124 | "family": "F6",
|
| 125 | "severity": "Medium",
|
| 126 | "title": "criss-cross with divergent resolutions merges silently (one best common ancestor picked)",
|
| 127 | "reason_patterns": [
|
| 128 | "^expectation_violated\\[criss_cross_divergent_resolution\\]: "
|
| 129 | ],
|
| 130 | "expected_rows": [
|
| 131 | "git-t6416-criss-cross-modify-delete|branch-into-main-sync"
|
| 132 | ]
|
| 133 | }
|
| 134 | ]
|
| 135 | }
|