Log in

Commit c85a464b

c85a464b4b25

Merged on mrmrs-250abb
mrmrs · 1 month ago · 26 files +1 added ~25 modified
M config/conformance_expected_failures.json
@@ -1,28 +1,117 @@
11 {
2- "schema_version": 1,
3- "subject": "oak",
4- "measured_with": "oak 0.105.0 (macOS APFS, case-insensitive, normalization-insensitive)",
5- "policy": "Strict: a listed behaviour that passes is FIXED (remove it); one failing at different legs is a regression. Tickets: fb-N when filed, proposed:<slug> until filed (see docs/vcs-conformance.md).",
6- "entries": [
7- {"behaviour": "path_roundtrip_v1", "ticket": "fb-531", "failed_legs": ["behaviour"],
8- "reason": "legacy v1 scenario: oak commit rejects the tab-containing fixture name"},
9- {"behaviour": "path_tab_v1", "ticket": "fb-531", "failed_legs": ["commit_push"],
10- "reason": "oak commit: cannot track \"tab\\tname\": tab in filename"},
11- {"behaviour": "path_newline_v1", "ticket": "proposed:oak-control-char-filenames", "failed_legs": ["commit_push"],
12- "reason": "oak commit rejects newline/CR in file names (same validate_entry_name rule as fb-531)"},
13- {"behaviour": "path_control_chars_v1", "ticket": "proposed:oak-control-char-filenames", "failed_legs": ["commit_push"],
14- "reason": "oak commit rejects C0/DEL control characters in file names"},
15- {"behaviour": "path_backslash_v1", "ticket": "proposed:oak-backslash-filename-split", "failed_legs": ["commit_push"],
16- "reason": "a literal backslash is committed as a directory separator (back\\slash -> back/slash, source status clean); with a trailing backslash (trailing\\) oak push then rejects the commit oak just created ('new-side path \"trailing/\" is absent')"},
17- {"behaviour": "path_long_component_v1", "ticket": "proposed:oak-clone-name-max", "failed_legs": ["clone_fs"],
18- "reason": "oak clone fails 'File name too long (os error 63)' on a 255-byte component Oak committed and pushed"},
19- {"behaviour": "path_case_only_rename_v1", "ticket": "proposed:oak-pull-case-only-rename-deletes", "failed_legs": ["pull_fs", "pull_status_clean"],
20- "reason": "case-insensitive FS: pulling a committed File.txt -> file.txt rename deletes the file from the worktree"},
21- {"behaviour": "symlink_to_dir_real_v1", "ticket": "proposed:oak-pull-writes-through-symlink", "failed_legs": ["pull_fs", "pull_status_clean"],
22- "reason": "pull replacing symlink p with directory p/ writes p/inner.txt through the old link (outside the checkout for absolute targets) and drops p"},
23- {"behaviour": "file_to_dir_v1", "ticket": "proposed:oak-pull-file-dir-transition", "failed_legs": ["pull_fs"],
24- "reason": "oak pull: IO error: File exists (os error 17) on a committed file -> directory transition"},
25- {"behaviour": "file_to_deep_dir_v1", "ticket": "proposed:oak-pull-file-dir-transition", "failed_legs": ["pull_fs"],
26- "reason": "oak pull: IO error: Not a directory (os error 20) on a committed file -> deeper directory transition"}
27- ]
2+ "schema_version": 2,
3+ "subject": "oak",
4+ "measured_with": "oak 0.105.0 on darwin-ci-ni (macOS APFS: case-insensitive, normalization-insensitive)",
5+ "policy": "Strict xfail: a listed behaviour must fail at exactly these legs with details fully matching these patterns (re.fullmatch); anything else is a regression. A listed behaviour that passes where the entry applies is FIXED (remove it). outcome=refused marks typed policy refusals (product decision) vs bugs. fs_profiles scopes an entry to filesystem classes (default: all). coverage.<profile>.expected_skips: any other skip on that profile is a coverage loss (UNMEASURED).",
6+ "entries": [
7+ {
8+ "behaviour": "path_roundtrip_v1",
9+ "ticket": "fb-531",
10+ "outcome": "refused",
11+ "failed_legs": {
12+ "behaviour": "command\\ \\('commit',\\ '\\-\\-no\\-verify'\\)\\ failed\\ \\(2\\):\\ b'error:\\ cannot\\ track\\ \"tab\\\\\\\\tname\":\\ tab\\ in\\ filename\\\\n'"
13+ },
14+ "reason": "legacy v1 scenario: oak commit refuses the tab-containing fixture name (policy; fb-531)"
15+ },
16+ {
17+ "behaviour": "path_tab_v1",
18+ "ticket": "fb-531",
19+ "outcome": "refused",
20+ "failed_legs": {
21+ "commit_push": "oak commit --no-verify exited 2: error: cannot track \"tab\\\\tname\": tab in filename"
22+ },
23+ "reason": "oak commit refuses a tab in a file name (policy, needs product decision)"
24+ },
25+ {
26+ "behaviour": "path_newline_v1",
27+ "ticket": "fb-531",
28+ "outcome": "refused",
29+ "failed_legs": {
30+ "commit_push": "oak commit --no-verify exited 2: error: cannot track \"(line\\\\nbreak|carriage\\\\rreturn)\": (newline|control character) in filename"
31+ },
32+ "reason": "oak commit refuses newline/CR in file names (same validate_entry_name policy as fb-531)"
33+ },
34+ {
35+ "behaviour": "path_control_chars_v1",
36+ "ticket": "fb-531",
37+ "outcome": "refused",
38+ "failed_legs": {
39+ "commit_push": "oak commit --no-verify exited 2: error: cannot track \"(bell\\\\u\\{7\\}name|escape\\\\u\\{1b\\}\\[0m|delete\\\\u\\{7f\\}name|unit\\\\u\\{1f\\}sep)\": control character in filename"
40+ },
41+ "reason": "oak commit refuses C0/DEL control characters in file names (policy)"
42+ },
43+ {
44+ "behaviour": "path_backslash_v1",
45+ "ticket": "fb-543",
46+ "outcome": "bug",
47+ "failed_legs": {
48+ "commit_push": "oak push --repo exited 2: error: push admission phase rejected outgoing commit [0-9a-f]{64}: file-change closure new-side path \"trailing/\" is absent from current; no remote state was mutated"
49+ },
50+ "reason": "a literal backslash is committed as a directory separator (back\\slash -> back/slash, source status clean); with a trailing backslash oak push rejects the commit oak just created"
51+ },
52+ {
53+ "behaviour": "path_long_component_v1",
54+ "ticket": "fb-544",
55+ "outcome": "bug",
56+ "failed_legs": {
57+ "clone_fs": "oak clone conformance/r\\d+-\\d+ exited 1: error: IO error: File name too long \\(os error 63\\)"
58+ },
59+ "reason": "oak clone fails ENAMETOOLONG on a 255-byte component Oak committed and pushed",
60+ "fs_profiles": [
61+ "darwin-ci-ni"
62+ ]
63+ },
64+ {
65+ "behaviour": "path_case_only_rename_v1",
66+ "ticket": "fb-545",
67+ "outcome": "bug",
68+ "failed_legs": {
69+ "pull_fs": "missing=\\['file\\.txt'\\]",
70+ "pull_status_clean": "oak status reports changes: \\[\\{\"path\": \"file\\.txt\", \"status\": \"deleted\"\\}(, \\{\"path\": \"file\\.txt\", \"status\": \"deleted\"\\})*\\]"
71+ },
72+ "reason": "case-insensitive FS: pulling a committed File.txt -> file.txt rename deletes the file from the worktree",
73+ "fs_profiles": [
74+ "darwin-ci-ni"
75+ ]
76+ },
77+ {
78+ "behaviour": "symlink_to_dir_real_v1",
79+ "ticket": "fb-542",
80+ "outcome": "bug",
81+ "failed_legs": {
82+ "pull_fs": "missing=\\['p/inner\\.txt'\\]; extra=\\['elsewhere/inner\\.txt'\\]",
83+ "pull_status_clean": "oak status reports changes: \\[\\{\"path\": \"elsewhere/inner\\.txt\", \"status\": \"renamed\", \"old_path\": \"p/inner\\.txt\"\\}(, \\{\"path\": \"elsewhere/inner\\.txt\", \"status\": \"renamed\", \"old_path\": \"p/inner\\.txt\"\\})*\\]"
84+ },
85+ "reason": "SECURITY: pull replacing symlink p with directory p/ writes p/inner.txt through the old link (outside the checkout for absolute targets) and drops p"
86+ },
87+ {
88+ "behaviour": "file_to_dir_v1",
89+ "ticket": "fb-546",
90+ "outcome": "bug",
91+ "failed_legs": {
92+ "pull_fs": "oak pull exited 1: error: IO error: File exists \\(os error 17\\)"
93+ },
94+ "reason": "oak pull fails EEXIST on a committed file -> directory transition"
95+ },
96+ {
97+ "behaviour": "file_to_deep_dir_v1",
98+ "ticket": "fb-546",
99+ "outcome": "bug",
100+ "failed_legs": {
101+ "pull_fs": "oak pull exited 1: error: IO error: Not a directory \\(os error 20\\)"
102+ },
103+ "reason": "oak pull fails ENOTDIR on a committed file -> deeper directory transition"
104+ }
105+ ],
106+ "coverage": {
107+ "darwin-ci-ni": {
108+ "expected_skips": [
109+ "path_unicode_nfc_nfd_pair_v1",
110+ "path_non_utf8_v1",
111+ "path_case_distinct_v1",
112+ "huge_file_sparse_v1"
113+ ],
114+ "note": "APFS default: case-insensitive and normalization-insensitive, no non-UTF-8 names; huge_file_sparse_v1 is gated (and a gated skip even when run: reader legs over bound)"
115+ }
116+ }
28117 }