benchmarksPublic
benchmarksPublic
Commit e70815b9
M
suites/merge/README.md
@@ -96,9 +96,9 @@
9696
|---|---|9797
| `equal-to-git` | Same clean/conflicted status and the same conflicted path set. Every non-conflicted path has identical content and mode. |9898
| `differs-but-valid` | Differs from Git, but no side's change is lost or fabricated at any non-conflicted path. `reasons` say how, for example `oak_conflicts_where_git_clean` (a false conflict, typically because Oak has no rename detection), `oak_clean_where_git_conflicts` (Oak's path-level merge kept both sides where merge-ort reports a rename conflict), `tree_differs(...)` (Git relocated a file through directory-rename detection while Oak left it in place), or `text_merge_algorithm_differs`. |99-
| `oak-wrong` | A non-conflicted path lost a side's change (`lost_change`), lost a side's mode or kind change (`lost_mode_change`), was committed clean with conflict markers no input had (`committed_conflict_markers`), or holds content nothing explains (`fabricated_content`). Also: a scenario's stated expectation was violated (`expectation_violated`), or Oak errored on a valid input (`oak_error`). A failed pull that moved HEAD while leaving a pre-merge worktree adds `failed_pull_moved_head_worktree_stale`. |99+
| `oak-wrong` | A non-conflicted path lost a side's change (`lost_change`), lost a side's mode or kind change (`lost_mode_change`), was committed clean with conflict markers no input had (`committed_conflict_markers`), or holds content nothing explains (`fabricated_content`). Also: a scenario's stated expectation was violated (`expectation_violated`), or Oak errored on a valid input (`oak_error`). A failed pull must leave the worktree matching HEAD; one that moved HEAD over a pre-merge worktree adds `failed_pull_moved_head_worktree_stale`, and one that kept HEAD but half-applied the merge to a previously clean worktree adds `failed_pull_left_worktree_dirty`. |100100
| `oak-unsupported` | Decided before Oak runs. The input cannot be expressed through Oak's surface: gitlinks (the git import drops them), several git merge bases, or unrelated histories. |101-
| `harness-error` | The instrument failed: fixture build, oracle, or shim. It is never an Oak verdict. |101+
| `harness-error` | The instrument failed (fixture build, oracle, shim), or a scripted setup step before the measured merge failed (`setup_failed:`). It is never an Oak verdict. |102102
103103
Nothing passes silently. Unmeasured law values are `null` (ADR-0002). An104104
example is the no-lost-change law where no unique merge base exists.@@ -125,11 +125,33 @@
125125
126126
### Known bugs127127
128-
`known_bugs.json` maps oak-wrong rows to filed Oak bugs (first matching rule129-
wins; fb-537..fb-541). Each row carries `known_bug`. The summary reports rows130-
per bug, oak-wrong rows no rule maps (`oak_wrong_unmapped`), and any bug that131-
no longer reproduces (`NOT reproduced (fixed?)`), so a fix flips visibly.132-
Unknown class values are rejected (`classify.validate_class`).128+
`known_bugs.json` maps oak-wrong rows to filed Oak bugs (fb-537..fb-541,129+
filed by o-4d on 2026-09-28 from QA's standalone repros). Each row carries130+
`known_bug`. The rules are strict so that a new bug cannot hide behind a131+
known one:132+
133+
- A row maps to a bug only if **every** reason on the row matches that bug's134+
`reason_patterns` (regex). One unexplained extra reason leaves the row135+
unmapped.136+
- fb-540 matches only its four exact error signatures (errno 17 and 20,137+
"cannot build tree with both file…", "refusing to replace non-empty138+
directory…") plus the two failed-pull invariant reasons. Any other Oak139+
error, such as a panic or a server 500, stays unmapped.140+
- fb-537 requires `committed_conflict_markers_no_final_newline`. Markers in141+
inputs that end with a newline give the plain `committed_conflict_markers`142+
reason, which no bug maps.143+
- fb-541 requires the labelled expectation144+
`expectation_violated[criss_cross_divergent_resolution]`.145+
- Failures in scripted setup steps (import, push, staged pull) are146+
`harness-error` with `setup_failed:`, never an Oak verdict or a known bug.147+
- `expected_rows` pins each bug's rows from the oak 0.105.0 run. The summary148+
reports `new_rows` and `vanished_rows` per bug (status `reproduced as149+
pinned`, `changed`, or `NOT reproduced (fixed?)`), plus150+
`oak_wrong_unmapped_rows`.151+
152+
`--resummarize RUN.jsonl` recomputes the summary and bug mapping from an153+
existing run without running Oak. Unknown class values are rejected154+
(`classify.validate_class`).133155
134156
## Scenario sources and licenses135157
M
suites/merge/RESULTS-2026-09-28.md
Loading diff…
M
suites/merge/known_bugs.json
Loading diff…
M
suites/merge/mergesuite/classify.py
Loading diff…
M
suites/merge/mergesuite/oak_adapter.py
Loading diff…
M
suites/merge/mergesuite/runner.py
Loading diff…
M
suites/merge/mergesuite/sources.py
Loading diff…
M
suites/merge/run_merge_suite.py
Loading diff…
M
tests/test_merge_suite.py
Loading diff…