diff --git a/evaluation/v2/README.md b/evaluation/v2/README.md
index 97e6064f7c43b13a57d3b40ae43574cb83351969..cde36a32c110268e761942624f6260421f0a6763 100644
--- a/evaluation/v2/README.md
+++ b/evaluation/v2/README.md
@@ -2,21 +2,21 @@
Model revision: `913f3efbf4f0557b1ad5ec1693730d8b7535ac58`. Dataset: `602b8a454ca448713d8a5658650d4feaad8d579c`.
-10/76 cases completed. Gold targets/locations are never passed into CSV inference. Thresholds are frozen from validation. This is a representative synthetic panel, not the full test split.
+20/76 cases completed. Gold targets/locations are never passed into CSV inference. Thresholds are frozen from validation. This is a representative synthetic panel, not the full test split.
```json
{
- "completed": 10,
+ "completed": 20,
"planned": 76,
"totals": {
- "cells": 1219,
- "valid_cells": 1209,
- "exactly_repaired_cells": 10,
+ "cells": 2528,
+ "valid_cells": 2509,
+ "exactly_repaired_cells": 18,
"valid_cells_harmed": 0,
- "detected_faulty_cells": 10,
+ "detected_faulty_cells": 18,
"flagged_valid_cells": 0,
- "faulty_cells": 10,
- "hard_negative_cases": 3,
+ "faulty_cells": 19,
+ "hard_negative_cases": 7,
"hard_negative_cases_harmed": 0
},
"categories": {
@@ -36,28 +36,48 @@ Model revision: `913f3efbf4f0557b1ad5ec1693730d8b7535ac58`. Dataset: `602b8a454c
"exactly_repaired_cells": 2
},
"format.number": {
+ "gold_cells": 2,
+ "detected_cells": 2,
+ "exactly_repaired_cells": 2
+ },
+ "format.date": {
+ "gold_cells": 2,
+ "detected_cells": 2,
+ "exactly_repaired_cells": 2
+ },
+ "format.boolean": {
+ "gold_cells": 2,
+ "detected_cells": 2,
+ "exactly_repaired_cells": 2
+ },
+ "format.case": {
+ "gold_cells": 2,
+ "detected_cells": 2,
+ "exactly_repaired_cells": 2
+ },
+ "format.whitespace": {
"gold_cells": 1,
"detected_cells": 1,
"exactly_repaired_cells": 1
},
- "format.date": {
+ "format.unit": {
"gold_cells": 1,
"detected_cells": 1,
"exactly_repaired_cells": 1
},
- "format.boolean": {},
- "format.case": {},
- "format.whitespace": {},
- "format.unit": {},
"schema.type": {},
"schema.identifier": {},
"schema.category": {
- "gold_cells": 2,
- "detected_cells": 2,
- "exactly_repaired_cells": 2
+ "gold_cells": 3,
+ "detected_cells": 3,
+ "exactly_repaired_cells": 3
},
"consistency.unit": {},
- "consistency.dependency": {},
+ "consistency.dependency": {
+ "gold_cells": 1,
+ "detected_cells": 0,
+ "exactly_repaired_cells": 0
+ },
"consistency.temporal": {},
"missing.required": {},
"missing.conditional": {},
@@ -74,8 +94,8 @@ Model revision: `913f3efbf4f0557b1ad5ec1693730d8b7535ac58`. Dataset: `602b8a454c
"faulty_cells": 1
},
"de": {
- "cells": 229,
- "valid_cells": 226,
+ "cells": 504,
+ "valid_cells": 501,
"exactly_repaired_cells": 3,
"valid_cells_harmed": 0,
"detected_faulty_cells": 3,
@@ -83,13 +103,13 @@ Model revision: `913f3efbf4f0557b1ad5ec1693730d8b7535ac58`. Dataset: `602b8a454c
"faulty_cells": 3
},
"fr": {
- "cells": 308,
- "valid_cells": 306,
- "exactly_repaired_cells": 2,
+ "cells": 594,
+ "valid_cells": 588,
+ "exactly_repaired_cells": 6,
"valid_cells_harmed": 0,
- "detected_faulty_cells": 2,
+ "detected_faulty_cells": 6,
"flagged_valid_cells": 0,
- "faulty_cells": 2
+ "faulty_cells": 6
},
"nl": {
"cells": 352,
@@ -101,17 +121,26 @@ Model revision: `913f3efbf4f0557b1ad5ec1693730d8b7535ac58`. Dataset: `602b8a454c
"faulty_cells": 3
},
"pl": {
- "cells": 242,
- "valid_cells": 241,
- "exactly_repaired_cells": 1,
+ "cells": 836,
+ "valid_cells": 830,
+ "exactly_repaired_cells": 5,
"valid_cells_harmed": 0,
- "detected_faulty_cells": 1,
+ "detected_faulty_cells": 5,
"flagged_valid_cells": 0,
- "faulty_cells": 1
+ "faulty_cells": 6
+ },
+ "en": {
+ "cells": 154,
+ "valid_cells": 154,
+ "exactly_repaired_cells": 0,
+ "valid_cells_harmed": 0,
+ "detected_faulty_cells": 0,
+ "flagged_valid_cells": 0
}
},
"decisions": {
- "applied": 10
+ "applied": 18,
+ "relation contradiction: ambiguous faulty member; unchanged": 1
},
"model_revision": "913f3efbf4f0557b1ad5ec1693730d8b7535ac58",
"dataset_revision": "602b8a454ca448713d8a5658650d4feaad8d579c",
diff --git a/evaluation/v2/cases/0a034e5c80b37ff52a4374db60437743b58d540fafffd8860225c34f4c558a1c/input.csv b/evaluation/v2/cases/0a034e5c80b37ff52a4374db60437743b58d540fafffd8860225c34f4c558a1c/input.csv
new file mode 100644
index 0000000000000000000000000000000000000000..1c7da60015ca6ab3add406f0c1bfc641d2d9bf9e
--- /dev/null
+++ b/evaluation/v2/cases/0a034e5c80b37ff52a4374db60437743b58d540fafffd8860225c34f4c558a1c/input.csv
@@ -0,0 +1,14 @@
+Kod rekordu,Zewnętrzny kod cyfrowy,Pozycja,Deklarowana masa sztuki,Jednostka deklarowanej masy,Zmierzona masa sztuki,Jednostka pomiaru,Masa wody w gramach,Masa mieszaniny w gramach,Partia produkcyjna,Zarejestrowana nazwa,Uwagi obsługi
+RC-000000,00000100,Mieszanka indygo,0.125,kg,125,g,2375,2500,LT-000200,luma,
+RC-000001,00000101,Mieszanka ochry,1000,g,1,kg,19000,20000,LT-000201,LUMA," ""Przed przeniesieniem Mieszanka ochry sprawdzić dołączoną kartę; stanowisko 2 obsługuje ten rekord.""
+2 "
+RC-000002,00000102,Mieszanka marzanny,1.875,kg,1875,g,35625,37500,LT-000202,Luma 東京,Przed przeniesieniem Mieszanka marzanny sprawdzić dołączoną kartę; stanowisko 3 obsługuje ten rekord.
+RC-000038,00000138,Mieszanka marzanny,1.75,kg,1750,g,33250,35000,LT-000238,Luma 東京,Przed przeniesieniem Mieszanka marzanny sprawdzić dołączoną kartę; stanowisko 4 obsługuje ten rekord.
+RC-000039,00000139,Mieszanka orzecha,2625,g,2.625,kg,49875,52500,LT-000239,Luma Atelier,Przed przeniesieniem Mieszanka orzecha sprawdzić dołączoną kartę; stanowisko 5 obsługuje ten rekord.
+RC-000040,00000140,Mieszanka ochry,"0,625 h",kg,625,g,11875,12500,LT-000240,luma,
+RC-000041,00000141,Mieszanka marzanny,1500,g,1.5,kg,28500,30000,LT-000241,LUMA," ""Przed przeniesieniem Mieszanka marzanny sprawdzić dołączoną kartę; stanowisko 7 obsługuje ten rekord.""
+42 "
+RC-000042,00000142,Mieszanka indygo,2.375,kg,2375,g,45125,47500,LT-000242,Luma 東京,Przed przeniesieniem Mieszanka indygo sprawdzić dołączoną kartę; stanowisko 1 obsługuje ten rekord.
+RC-000048,00000148,Mieszanka indygo,1.875,kg,1875,g,35625,37500,LT-000248,luma,
+RC-000050,00000150,Mieszanka marzanny,0.75,kg,750,g,14250,15000,LT-000250,Luma 東京,Przed przeniesieniem Mieszanka marzanny sprawdzić dołączoną kartę; stanowisko 2 obsługuje ten rekord.
+RC-000051,00000151,Mieszanka indygo,1625,g,1.625,kg,30875,32500,LT-000251,Luma Atelier,Przed przeniesieniem Mieszanka indygo sprawdzić dołączoną kartę; stanowisko 3 obsługuje ten rekord.
diff --git a/evaluation/v2/cases/0a034e5c80b37ff52a4374db60437743b58d540fafffd8860225c34f4c558a1c/output/audit.json b/evaluation/v2/cases/0a034e5c80b37ff52a4374db60437743b58d540fafffd8860225c34f4c558a1c/output/audit.json
new file mode 100644
index 0000000000000000000000000000000000000000..b041172c356afbfd1260f27f87e3b159cfee9532
--- /dev/null
+++ b/evaluation/v2/cases/0a034e5c80b37ff52a4374db60437743b58d540fafffd8860225c34f4c558a1c/output/audit.json
@@ -0,0 +1,27 @@
+{
+ "metrics": {
+ "device": "cuda",
+ "rows": 11,
+ "cells": 132,
+ "threshold": 0.9,
+ "load_seconds": 0.0,
+ "inference_seconds": 0.88,
+ "cells_per_second": 150.78,
+ "peak_gpu_bytes": 1927847936,
+ "detected_spans": 1,
+ "changed_cells": 1
+ },
+ "proposals": [
+ {
+ "row": 5,
+ "column": 3,
+ "start": 0,
+ "end": 7,
+ "replacement": "0.625",
+ "category": "format.number",
+ "perplexity": 1.0000343913533796,
+ "status": "applied",
+ "route": "model"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/evaluation/v2/cases/0a034e5c80b37ff52a4374db60437743b58d540fafffd8860225c34f4c558a1c/output/corrected.csv b/evaluation/v2/cases/0a034e5c80b37ff52a4374db60437743b58d540fafffd8860225c34f4c558a1c/output/corrected.csv
new file mode 100644
index 0000000000000000000000000000000000000000..0ef1ffe041f2e36df9615ecf0cbdae75eae6c749
--- /dev/null
+++ b/evaluation/v2/cases/0a034e5c80b37ff52a4374db60437743b58d540fafffd8860225c34f4c558a1c/output/corrected.csv
@@ -0,0 +1,14 @@
+Kod rekordu,Zewnętrzny kod cyfrowy,Pozycja,Deklarowana masa sztuki,Jednostka deklarowanej masy,Zmierzona masa sztuki,Jednostka pomiaru,Masa wody w gramach,Masa mieszaniny w gramach,Partia produkcyjna,Zarejestrowana nazwa,Uwagi obsługi
+RC-000000,00000100,Mieszanka indygo,0.125,kg,125,g,2375,2500,LT-000200,luma,
+RC-000001,00000101,Mieszanka ochry,1000,g,1,kg,19000,20000,LT-000201,LUMA," ""Przed przeniesieniem Mieszanka ochry sprawdzić dołączoną kartę; stanowisko 2 obsługuje ten rekord.""
+2 "
+RC-000002,00000102,Mieszanka marzanny,1.875,kg,1875,g,35625,37500,LT-000202,Luma 東京,Przed przeniesieniem Mieszanka marzanny sprawdzić dołączoną kartę; stanowisko 3 obsługuje ten rekord.
+RC-000038,00000138,Mieszanka marzanny,1.75,kg,1750,g,33250,35000,LT-000238,Luma 東京,Przed przeniesieniem Mieszanka marzanny sprawdzić dołączoną kartę; stanowisko 4 obsługuje ten rekord.
+RC-000039,00000139,Mieszanka orzecha,2625,g,2.625,kg,49875,52500,LT-000239,Luma Atelier,Przed przeniesieniem Mieszanka orzecha sprawdzić dołączoną kartę; stanowisko 5 obsługuje ten rekord.
+RC-000040,00000140,Mieszanka ochry,0.625,kg,625,g,11875,12500,LT-000240,luma,
+RC-000041,00000141,Mieszanka marzanny,1500,g,1.5,kg,28500,30000,LT-000241,LUMA," ""Przed przeniesieniem Mieszanka marzanny sprawdzić dołączoną kartę; stanowisko 7 obsługuje ten rekord.""
+42 "
+RC-000042,00000142,Mieszanka indygo,2.375,kg,2375,g,45125,47500,LT-000242,Luma 東京,Przed przeniesieniem Mieszanka indygo sprawdzić dołączoną kartę; stanowisko 1 obsługuje ten rekord.
+RC-000048,00000148,Mieszanka indygo,1.875,kg,1875,g,35625,37500,LT-000248,luma,
+RC-000050,00000150,Mieszanka marzanny,0.75,kg,750,g,14250,15000,LT-000250,Luma 東京,Przed przeniesieniem Mieszanka marzanny sprawdzić dołączoną kartę; stanowisko 2 obsługuje ten rekord.
+RC-000051,00000151,Mieszanka indygo,1625,g,1.625,kg,30875,32500,LT-000251,Luma Atelier,Przed przeniesieniem Mieszanka indygo sprawdzić dołączoną kartę; stanowisko 3 obsługuje ten rekord.
diff --git a/evaluation/v2/cases/0a034e5c80b37ff52a4374db60437743b58d540fafffd8860225c34f4c558a1c/output/review.html b/evaluation/v2/cases/0a034e5c80b37ff52a4374db60437743b58d540fafffd8860225c34f4c558a1c/output/review.html
new file mode 100644
index 0000000000000000000000000000000000000000..834fd61395ce60c801e31b371634c79b9a53a300
--- /dev/null
+++ b/evaluation/v2/cases/0a034e5c80b37ff52a4374db60437743b58d540fafffd8860225c34f4c558a1c/output/review.html
@@ -0,0 +1,18 @@
+
TabFix — end-to-end CSV review
+Does TabFix fix this CSV?
Actual CSV → schema and context → predicted error locations → generated replacements → corrected CSV. The clean reference is used only after inference. No gold error locations or replacement text are supplied to the model. Row numbers below count data rows, excluding the header.
+132Cells scanned
—Errors in input
—Errors repaired
—Valid cells changed
CSV inference review · Threshold 0.9 · CPU inference 0.88 seconds (model loading excluded).
Errors and proposed changes
Strings are quoted to make spaces and empty values visible. Yellow cells below were changed. All other cells are included so unwanted edits remain visible.
Complete model output
Every detection and application decision
[
+ {
+ "row": 5,
+ "column": 3,
+ "start": 0,
+ "end": 7,
+ "replacement": "0.625",
+ "category": "format.number",
+ "perplexity": 1.0000343913533796,
+ "status": "applied",
+ "route": "model"
+ }
+]
\ No newline at end of file
diff --git a/evaluation/v2/cases/0a034e5c80b37ff52a4374db60437743b58d540fafffd8860225c34f4c558a1c/reference.csv b/evaluation/v2/cases/0a034e5c80b37ff52a4374db60437743b58d540fafffd8860225c34f4c558a1c/reference.csv
new file mode 100644
index 0000000000000000000000000000000000000000..0ef1ffe041f2e36df9615ecf0cbdae75eae6c749
--- /dev/null
+++ b/evaluation/v2/cases/0a034e5c80b37ff52a4374db60437743b58d540fafffd8860225c34f4c558a1c/reference.csv
@@ -0,0 +1,14 @@
+Kod rekordu,Zewnętrzny kod cyfrowy,Pozycja,Deklarowana masa sztuki,Jednostka deklarowanej masy,Zmierzona masa sztuki,Jednostka pomiaru,Masa wody w gramach,Masa mieszaniny w gramach,Partia produkcyjna,Zarejestrowana nazwa,Uwagi obsługi
+RC-000000,00000100,Mieszanka indygo,0.125,kg,125,g,2375,2500,LT-000200,luma,
+RC-000001,00000101,Mieszanka ochry,1000,g,1,kg,19000,20000,LT-000201,LUMA," ""Przed przeniesieniem Mieszanka ochry sprawdzić dołączoną kartę; stanowisko 2 obsługuje ten rekord.""
+2 "
+RC-000002,00000102,Mieszanka marzanny,1.875,kg,1875,g,35625,37500,LT-000202,Luma 東京,Przed przeniesieniem Mieszanka marzanny sprawdzić dołączoną kartę; stanowisko 3 obsługuje ten rekord.
+RC-000038,00000138,Mieszanka marzanny,1.75,kg,1750,g,33250,35000,LT-000238,Luma 東京,Przed przeniesieniem Mieszanka marzanny sprawdzić dołączoną kartę; stanowisko 4 obsługuje ten rekord.
+RC-000039,00000139,Mieszanka orzecha,2625,g,2.625,kg,49875,52500,LT-000239,Luma Atelier,Przed przeniesieniem Mieszanka orzecha sprawdzić dołączoną kartę; stanowisko 5 obsługuje ten rekord.
+RC-000040,00000140,Mieszanka ochry,0.625,kg,625,g,11875,12500,LT-000240,luma,
+RC-000041,00000141,Mieszanka marzanny,1500,g,1.5,kg,28500,30000,LT-000241,LUMA," ""Przed przeniesieniem Mieszanka marzanny sprawdzić dołączoną kartę; stanowisko 7 obsługuje ten rekord.""
+42 "
+RC-000042,00000142,Mieszanka indygo,2.375,kg,2375,g,45125,47500,LT-000242,Luma 東京,Przed przeniesieniem Mieszanka indygo sprawdzić dołączoną kartę; stanowisko 1 obsługuje ten rekord.
+RC-000048,00000148,Mieszanka indygo,1.875,kg,1875,g,35625,37500,LT-000248,luma,
+RC-000050,00000150,Mieszanka marzanny,0.75,kg,750,g,14250,15000,LT-000250,Luma 東京,Przed przeniesieniem Mieszanka marzanny sprawdzić dołączoną kartę; stanowisko 2 obsługuje ten rekord.
+RC-000051,00000151,Mieszanka indygo,1625,g,1.625,kg,30875,32500,LT-000251,Luma Atelier,Przed przeniesieniem Mieszanka indygo sprawdzić dołączoną kartę; stanowisko 3 obsługuje ten rekord.
diff --git a/evaluation/v2/cases/0a034e5c80b37ff52a4374db60437743b58d540fafffd8860225c34f4c558a1c/result.json b/evaluation/v2/cases/0a034e5c80b37ff52a4374db60437743b58d540fafffd8860225c34f4c558a1c/result.json
new file mode 100644
index 0000000000000000000000000000000000000000..a13ea7b3388ea671b3ca3d5a97a036dfabf1b49d
--- /dev/null
+++ b/evaluation/v2/cases/0a034e5c80b37ff52a4374db60437743b58d540fafffd8860225c34f4c558a1c/result.json
@@ -0,0 +1,76 @@
+{
+ "id": "0a034e5c80b37ff52a4374db60437743b58d540fafffd8860225c34f4c558a1c",
+ "language": "pl",
+ "roles": [
+ "positive:format.number"
+ ],
+ "counts": {
+ "cells": 132,
+ "valid_cells": 131,
+ "exactly_repaired_cells": 1,
+ "valid_cells_harmed": 0,
+ "detected_faulty_cells": 1,
+ "flagged_valid_cells": 0,
+ "faulty_cells": 1
+ },
+ "categories": {
+ "text.encoding": {},
+ "text.invisible": {},
+ "text.spelling": {},
+ "format.number": {
+ "gold_cells": 1,
+ "detected_cells": 1,
+ "exactly_repaired_cells": 1
+ },
+ "format.date": {},
+ "format.boolean": {},
+ "format.case": {},
+ "format.whitespace": {},
+ "format.unit": {
+ "gold_cells": 1,
+ "detected_cells": 1,
+ "exactly_repaired_cells": 1
+ },
+ "schema.type": {},
+ "schema.identifier": {},
+ "schema.category": {},
+ "consistency.unit": {},
+ "consistency.dependency": {},
+ "consistency.temporal": {},
+ "missing.required": {},
+ "missing.conditional": {},
+ "structure.shift": {}
+ },
+ "decisions": {
+ "applied": 1
+ },
+ "inference_seconds": 0.88,
+ "details": [
+ {
+ "row": 5,
+ "column": "Deklarowana masa sztuki",
+ "original": "0,625 h",
+ "prediction": "0.625",
+ "reference": "0.625",
+ "categories": [
+ "format.number",
+ "format.unit"
+ ],
+ "status": "repaired",
+ "decisions": [
+ {
+ "row": 5,
+ "column": 3,
+ "start": 0,
+ "end": 7,
+ "replacement": "0.625",
+ "category": "format.number",
+ "perplexity": 1.0000343913533796,
+ "status": "applied",
+ "route": "model"
+ }
+ ]
+ }
+ ],
+ "hard_negative": false
+}
diff --git a/evaluation/v2/cases/0a034e5c80b37ff52a4374db60437743b58d540fafffd8860225c34f4c558a1c/review.html b/evaluation/v2/cases/0a034e5c80b37ff52a4374db60437743b58d540fafffd8860225c34f4c558a1c/review.html
new file mode 100644
index 0000000000000000000000000000000000000000..ff7fcb4fdb70fe15204d371758917b8316f21d4b
--- /dev/null
+++ b/evaluation/v2/cases/0a034e5c80b37ff52a4374db60437743b58d540fafffd8860225c34f4c558a1c/review.html
@@ -0,0 +1,18 @@
+TabFix — end-to-end CSV review
+Does TabFix fix this CSV?
Actual CSV → schema and context → predicted error locations → generated replacements → corrected CSV. The clean reference is used only after inference. No gold error locations or replacement text are supplied to the model. Row numbers below count data rows, excluding the header.
+132Cells scanned
1Errors in input
1Errors repaired
0Valid cells changed
CSV inference review · Threshold 0.9 · CPU inference 0.88 seconds (model loading excluded).
Errors and proposed changes
Strings are quoted to make spaces and empty values visible. Yellow cells below were changed. All other cells are included so unwanted edits remain visible.
Complete model output
Every detection and application decision
[
+ {
+ "row": 5,
+ "column": 3,
+ "start": 0,
+ "end": 7,
+ "replacement": "0.625",
+ "category": "format.number",
+ "perplexity": 1.0000343913533796,
+ "status": "applied",
+ "route": "model"
+ }
+]
\ No newline at end of file
diff --git a/evaluation/v2/cases/0a034e5c80b37ff52a4374db60437743b58d540fafffd8860225c34f4c558a1c/schema.xml b/evaluation/v2/cases/0a034e5c80b37ff52a4374db60437743b58d540fafffd8860225c34f4c558a1c/schema.xml
new file mode 100644
index 0000000000000000000000000000000000000000..329b8a6258f0bcb70fb86ec493b9d04c2b43f989
--- /dev/null
+++ b/evaluation/v2/cases/0a034e5c80b37ff52a4374db60437743b58d540fafffd8860225c34f4c558a1c/schema.xml
@@ -0,0 +1,52 @@
+
+
+[]
+{"case":"upper","pattern":"[A-Z]{2}-\\d{6}","trimmed":true}
+
+
+[]
+{"pattern":"\\d{8}"}
+
+
+[]
+{"enum":["Mieszanka indygo","Mieszanka ochry","Mieszanka marzanny","Mieszanka orzecha"],"lexicon":["Mieszanka indygo","Mieszanka ochry","Mieszanka marzanny","Mieszanka orzecha"],"trimmed":true}
+
+
+["decimal_dot"]
+{"minimum":0}
+
+
+[]
+{"enum":["g","kg"]}
+
+
+["decimal_dot"]
+{"minimum":0}
+
+
+[]
+{"enum":["g","kg"]}
+
+
+[]
+{"minimum":0}
+
+
+[]
+{"minimum":0}
+
+
+[]
+{"case":"upper","pattern":"[A-Z]{2}-\\d{6}","trimmed":true}
+
+
+[]
+{"case_sensitive":true,"enum":["luma","LUMA","Luma 東京","Luma Atelier"],"whitespace_policy":"preserve"}
+
+
+[]
+{"embedded_delimiters_allowed":true,"whitespace_policy":"preserve"}
+
+[["unit_equivalence","declared","declared_unit","measured","measured_unit"],"Mixture grams = measured pigment mass converted to grams + water grams; no loss or additional ingredient in this fictional recipe."]
+{}
+
diff --git a/evaluation/v2/cases/299a18168469d268a9f9aca770f04d1410bc17c9bbb077b4eb95badec901239d/input.csv b/evaluation/v2/cases/299a18168469d268a9f9aca770f04d1410bc17c9bbb077b4eb95badec901239d/input.csv
new file mode 100644
index 0000000000000000000000000000000000000000..4905d0d7957ca41bba40ef9d78aa2bd1609b7c49
--- /dev/null
+++ b/evaluation/v2/cases/299a18168469d268a9f9aca770f04d1410bc17c9bbb077b4eb95badec901239d/input.csv
@@ -0,0 +1,14 @@
+Code dossier,Code numérique externe,Code trajet,Article,Masse déclarée par article,Unité de masse déclarée,Masse mesurée par article,Unité de mesure,Masse emballage en grammes,Masse brute en grammes,Nom affiché enregistré,Consigne de traitement
+RC-000000,00000100,RT-000000,Tasses en céramique,0.125,kg,125,g,15,140,luma,
+RC-000001,00000101,RT-000001,Linge plié,1000,g,1,kg,20,1020,LUMA," ""Vérifier la fiche jointe avant de déplacer Linge plié ; le poste 2 traite ce dossier.""
+2 "
+RC-000007,00000107,RT-000000,Linge plié,500,g,0.5,kg,50,550,Luma Atelier,Vérifier la fiche jointe avant de déplacer Linge plié ; le poste 1 traite ce dossier.
+RC-000008,00000108,RT-000001,Chemises d’archives,1.375,kg,1375,g,55,1430,luma,
+RC-000009,00000109,rt-000002,Tasses en céramique,2250,g,2.25,kg?,15,2265,LUMA," ""Vérifier la fiche jointe avant de déplacer Tasses en céramique ; le poste 3 traite ce dossier.""
+10 "
+RC-000010,00000110,RT-000003,Linge plié,0.25,kg,250,g,20,270,Luma 東京,Vérifier la fiche jointe avant de déplacer Linge plié ; le poste 4 traite ce dossier.
+RC-000011,00000111,RT-000004,Chemises d’archives,1125,g,1.125,kg,25,1150,Luma Atelier,Vérifier la fiche jointe avant de déplacer Chemises d’archives ; le poste 5 traite ce dossier.
+RC-000028,00000128,RT-000000,Linge plié,1.625,kg,1625,g,20,1645,luma,
+RC-000030,00000130,RT-000002,Tasses en céramique,0.5,kg,500,g,30,530,Luma 東京,Vérifier la fiche jointe avant de déplacer Tasses en céramique ; le poste 3 traite ce dossier.
+RC-000047,00000147,RT-000005,Chemises d’archives,1000,g,1,kg,25,1025,Luma Atelier,Vérifier la fiche jointe avant de déplacer Chemises d’archives ; le poste 6 traite ce dossier.
+RC-000055,00000155,RT-000006,Échantillons de bois,2250,g,2.25,kg,20,2270,Luma Atelier,Vérifier la fiche jointe avant de déplacer Échantillons de bois ; le poste 7 traite ce dossier.
diff --git a/evaluation/v2/cases/299a18168469d268a9f9aca770f04d1410bc17c9bbb077b4eb95badec901239d/output/audit.json b/evaluation/v2/cases/299a18168469d268a9f9aca770f04d1410bc17c9bbb077b4eb95badec901239d/output/audit.json
new file mode 100644
index 0000000000000000000000000000000000000000..32592e954c46ec840d12a929efa4d16bb5fa3349
--- /dev/null
+++ b/evaluation/v2/cases/299a18168469d268a9f9aca770f04d1410bc17c9bbb077b4eb95badec901239d/output/audit.json
@@ -0,0 +1,37 @@
+{
+ "metrics": {
+ "device": "cuda",
+ "rows": 11,
+ "cells": 132,
+ "threshold": 0.9,
+ "load_seconds": 0.0,
+ "inference_seconds": 0.51,
+ "cells_per_second": 259.46,
+ "peak_gpu_bytes": 1927642624,
+ "detected_spans": 2,
+ "changed_cells": 2
+ },
+ "proposals": [
+ {
+ "row": 4,
+ "column": 2,
+ "start": 0,
+ "end": 9,
+ "replacement": "RT-000002",
+ "category": "format.case",
+ "status": "applied",
+ "route": "deterministic"
+ },
+ {
+ "row": 4,
+ "column": 7,
+ "start": 0,
+ "end": 3,
+ "replacement": "kg",
+ "category": "schema.category",
+ "perplexity": 1.0000125169191336,
+ "status": "applied",
+ "route": "model"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/evaluation/v2/cases/299a18168469d268a9f9aca770f04d1410bc17c9bbb077b4eb95badec901239d/output/corrected.csv b/evaluation/v2/cases/299a18168469d268a9f9aca770f04d1410bc17c9bbb077b4eb95badec901239d/output/corrected.csv
new file mode 100644
index 0000000000000000000000000000000000000000..6ba4bd6b1d050d1cf70024c44efa1000ab41f35f
--- /dev/null
+++ b/evaluation/v2/cases/299a18168469d268a9f9aca770f04d1410bc17c9bbb077b4eb95badec901239d/output/corrected.csv
@@ -0,0 +1,14 @@
+Code dossier,Code numérique externe,Code trajet,Article,Masse déclarée par article,Unité de masse déclarée,Masse mesurée par article,Unité de mesure,Masse emballage en grammes,Masse brute en grammes,Nom affiché enregistré,Consigne de traitement
+RC-000000,00000100,RT-000000,Tasses en céramique,0.125,kg,125,g,15,140,luma,
+RC-000001,00000101,RT-000001,Linge plié,1000,g,1,kg,20,1020,LUMA," ""Vérifier la fiche jointe avant de déplacer Linge plié ; le poste 2 traite ce dossier.""
+2 "
+RC-000007,00000107,RT-000000,Linge plié,500,g,0.5,kg,50,550,Luma Atelier,Vérifier la fiche jointe avant de déplacer Linge plié ; le poste 1 traite ce dossier.
+RC-000008,00000108,RT-000001,Chemises d’archives,1.375,kg,1375,g,55,1430,luma,
+RC-000009,00000109,RT-000002,Tasses en céramique,2250,g,2.25,kg,15,2265,LUMA," ""Vérifier la fiche jointe avant de déplacer Tasses en céramique ; le poste 3 traite ce dossier.""
+10 "
+RC-000010,00000110,RT-000003,Linge plié,0.25,kg,250,g,20,270,Luma 東京,Vérifier la fiche jointe avant de déplacer Linge plié ; le poste 4 traite ce dossier.
+RC-000011,00000111,RT-000004,Chemises d’archives,1125,g,1.125,kg,25,1150,Luma Atelier,Vérifier la fiche jointe avant de déplacer Chemises d’archives ; le poste 5 traite ce dossier.
+RC-000028,00000128,RT-000000,Linge plié,1.625,kg,1625,g,20,1645,luma,
+RC-000030,00000130,RT-000002,Tasses en céramique,0.5,kg,500,g,30,530,Luma 東京,Vérifier la fiche jointe avant de déplacer Tasses en céramique ; le poste 3 traite ce dossier.
+RC-000047,00000147,RT-000005,Chemises d’archives,1000,g,1,kg,25,1025,Luma Atelier,Vérifier la fiche jointe avant de déplacer Chemises d’archives ; le poste 6 traite ce dossier.
+RC-000055,00000155,RT-000006,Échantillons de bois,2250,g,2.25,kg,20,2270,Luma Atelier,Vérifier la fiche jointe avant de déplacer Échantillons de bois ; le poste 7 traite ce dossier.
diff --git a/evaluation/v2/cases/299a18168469d268a9f9aca770f04d1410bc17c9bbb077b4eb95badec901239d/output/review.html b/evaluation/v2/cases/299a18168469d268a9f9aca770f04d1410bc17c9bbb077b4eb95badec901239d/output/review.html
new file mode 100644
index 0000000000000000000000000000000000000000..e4be145f56b4dbb5588248096c5fa793a723b250
--- /dev/null
+++ b/evaluation/v2/cases/299a18168469d268a9f9aca770f04d1410bc17c9bbb077b4eb95badec901239d/output/review.html
@@ -0,0 +1,28 @@
+TabFix — end-to-end CSV review
+Does TabFix fix this CSV?
Actual CSV → schema and context → predicted error locations → generated replacements → corrected CSV. The clean reference is used only after inference. No gold error locations or replacement text are supplied to the model. Row numbers below count data rows, excluding the header.
+132Cells scanned
—Errors in input
—Errors repaired
—Valid cells changed
CSV inference review · Threshold 0.9 · CPU inference 0.51 seconds (model loading excluded).
Errors and proposed changes
Strings are quoted to make spaces and empty values visible. Yellow cells below were changed. All other cells are included so unwanted edits remain visible.
Complete model output
Every detection and application decision
[
+ {
+ "row": 4,
+ "column": 2,
+ "start": 0,
+ "end": 9,
+ "replacement": "RT-000002",
+ "category": "format.case",
+ "status": "applied",
+ "route": "deterministic"
+ },
+ {
+ "row": 4,
+ "column": 7,
+ "start": 0,
+ "end": 3,
+ "replacement": "kg",
+ "category": "schema.category",
+ "perplexity": 1.0000125169191336,
+ "status": "applied",
+ "route": "model"
+ }
+]
\ No newline at end of file
diff --git a/evaluation/v2/cases/299a18168469d268a9f9aca770f04d1410bc17c9bbb077b4eb95badec901239d/reference.csv b/evaluation/v2/cases/299a18168469d268a9f9aca770f04d1410bc17c9bbb077b4eb95badec901239d/reference.csv
new file mode 100644
index 0000000000000000000000000000000000000000..6ba4bd6b1d050d1cf70024c44efa1000ab41f35f
--- /dev/null
+++ b/evaluation/v2/cases/299a18168469d268a9f9aca770f04d1410bc17c9bbb077b4eb95badec901239d/reference.csv
@@ -0,0 +1,14 @@
+Code dossier,Code numérique externe,Code trajet,Article,Masse déclarée par article,Unité de masse déclarée,Masse mesurée par article,Unité de mesure,Masse emballage en grammes,Masse brute en grammes,Nom affiché enregistré,Consigne de traitement
+RC-000000,00000100,RT-000000,Tasses en céramique,0.125,kg,125,g,15,140,luma,
+RC-000001,00000101,RT-000001,Linge plié,1000,g,1,kg,20,1020,LUMA," ""Vérifier la fiche jointe avant de déplacer Linge plié ; le poste 2 traite ce dossier.""
+2 "
+RC-000007,00000107,RT-000000,Linge plié,500,g,0.5,kg,50,550,Luma Atelier,Vérifier la fiche jointe avant de déplacer Linge plié ; le poste 1 traite ce dossier.
+RC-000008,00000108,RT-000001,Chemises d’archives,1.375,kg,1375,g,55,1430,luma,
+RC-000009,00000109,RT-000002,Tasses en céramique,2250,g,2.25,kg,15,2265,LUMA," ""Vérifier la fiche jointe avant de déplacer Tasses en céramique ; le poste 3 traite ce dossier.""
+10 "
+RC-000010,00000110,RT-000003,Linge plié,0.25,kg,250,g,20,270,Luma 東京,Vérifier la fiche jointe avant de déplacer Linge plié ; le poste 4 traite ce dossier.
+RC-000011,00000111,RT-000004,Chemises d’archives,1125,g,1.125,kg,25,1150,Luma Atelier,Vérifier la fiche jointe avant de déplacer Chemises d’archives ; le poste 5 traite ce dossier.
+RC-000028,00000128,RT-000000,Linge plié,1.625,kg,1625,g,20,1645,luma,
+RC-000030,00000130,RT-000002,Tasses en céramique,0.5,kg,500,g,30,530,Luma 東京,Vérifier la fiche jointe avant de déplacer Tasses en céramique ; le poste 3 traite ce dossier.
+RC-000047,00000147,RT-000005,Chemises d’archives,1000,g,1,kg,25,1025,Luma Atelier,Vérifier la fiche jointe avant de déplacer Chemises d’archives ; le poste 6 traite ce dossier.
+RC-000055,00000155,RT-000006,Échantillons de bois,2250,g,2.25,kg,20,2270,Luma Atelier,Vérifier la fiche jointe avant de déplacer Échantillons de bois ; le poste 7 traite ce dossier.
diff --git a/evaluation/v2/cases/299a18168469d268a9f9aca770f04d1410bc17c9bbb077b4eb95badec901239d/result.json b/evaluation/v2/cases/299a18168469d268a9f9aca770f04d1410bc17c9bbb077b4eb95badec901239d/result.json
new file mode 100644
index 0000000000000000000000000000000000000000..bc2a763d597cc7bc85a1dfa9023972679d1bd497
--- /dev/null
+++ b/evaluation/v2/cases/299a18168469d268a9f9aca770f04d1410bc17c9bbb077b4eb95badec901239d/result.json
@@ -0,0 +1,99 @@
+{
+ "id": "299a18168469d268a9f9aca770f04d1410bc17c9bbb077b4eb95badec901239d",
+ "language": "fr",
+ "roles": [
+ "positive:format.case",
+ "positive:schema.category"
+ ],
+ "counts": {
+ "cells": 132,
+ "valid_cells": 130,
+ "exactly_repaired_cells": 2,
+ "valid_cells_harmed": 0,
+ "detected_faulty_cells": 2,
+ "flagged_valid_cells": 0,
+ "faulty_cells": 2
+ },
+ "categories": {
+ "text.encoding": {},
+ "text.invisible": {},
+ "text.spelling": {},
+ "format.number": {},
+ "format.date": {},
+ "format.boolean": {},
+ "format.case": {
+ "gold_cells": 1,
+ "detected_cells": 1,
+ "exactly_repaired_cells": 1
+ },
+ "format.whitespace": {},
+ "format.unit": {},
+ "schema.type": {},
+ "schema.identifier": {},
+ "schema.category": {
+ "gold_cells": 1,
+ "detected_cells": 1,
+ "exactly_repaired_cells": 1
+ },
+ "consistency.unit": {},
+ "consistency.dependency": {},
+ "consistency.temporal": {},
+ "missing.required": {},
+ "missing.conditional": {},
+ "structure.shift": {}
+ },
+ "decisions": {
+ "applied": 2
+ },
+ "inference_seconds": 0.51,
+ "details": [
+ {
+ "row": 4,
+ "column": "Code trajet",
+ "original": "rt-000002",
+ "prediction": "RT-000002",
+ "reference": "RT-000002",
+ "categories": [
+ "format.case"
+ ],
+ "status": "repaired",
+ "decisions": [
+ {
+ "row": 4,
+ "column": 2,
+ "start": 0,
+ "end": 9,
+ "replacement": "RT-000002",
+ "category": "format.case",
+ "status": "applied",
+ "route": "deterministic"
+ }
+ ]
+ },
+ {
+ "row": 4,
+ "column": "Unité de mesure",
+ "original": "kg?",
+ "prediction": "kg",
+ "reference": "kg",
+ "categories": [
+ "schema.category"
+ ],
+ "status": "repaired",
+ "decisions": [
+ {
+ "row": 4,
+ "column": 7,
+ "start": 0,
+ "end": 3,
+ "replacement": "kg",
+ "category": "schema.category",
+ "perplexity": 1.0000125169191336,
+ "status": "applied",
+ "route": "model"
+ }
+ ]
+ }
+ ],
+ "hard_negative": false
+}
diff --git a/evaluation/v2/cases/299a18168469d268a9f9aca770f04d1410bc17c9bbb077b4eb95badec901239d/review.html b/evaluation/v2/cases/299a18168469d268a9f9aca770f04d1410bc17c9bbb077b4eb95badec901239d/review.html
new file mode 100644
index 0000000000000000000000000000000000000000..898bfd95d987d59d6540d171ddae35834ba3e4b1
--- /dev/null
+++ b/evaluation/v2/cases/299a18168469d268a9f9aca770f04d1410bc17c9bbb077b4eb95badec901239d/review.html
@@ -0,0 +1,28 @@
+TabFix — end-to-end CSV review
+Does TabFix fix this CSV?
Actual CSV → schema and context → predicted error locations → generated replacements → corrected CSV. The clean reference is used only after inference. No gold error locations or replacement text are supplied to the model. Row numbers below count data rows, excluding the header.
+132Cells scanned
2Errors in input
2Errors repaired
0Valid cells changed
CSV inference review · Threshold 0.9 · CPU inference 0.51 seconds (model loading excluded).
Errors and proposed changes
Strings are quoted to make spaces and empty values visible. Yellow cells below were changed. All other cells are included so unwanted edits remain visible.
Complete model output
Every detection and application decision
[
+ {
+ "row": 4,
+ "column": 2,
+ "start": 0,
+ "end": 9,
+ "replacement": "RT-000002",
+ "category": "format.case",
+ "status": "applied",
+ "route": "deterministic"
+ },
+ {
+ "row": 4,
+ "column": 7,
+ "start": 0,
+ "end": 3,
+ "replacement": "kg",
+ "category": "schema.category",
+ "perplexity": 1.0000125169191336,
+ "status": "applied",
+ "route": "model"
+ }
+]
\ No newline at end of file
diff --git a/evaluation/v2/cases/299a18168469d268a9f9aca770f04d1410bc17c9bbb077b4eb95badec901239d/schema.xml b/evaluation/v2/cases/299a18168469d268a9f9aca770f04d1410bc17c9bbb077b4eb95badec901239d/schema.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ee0bd5278c74ed4d24b833a2e12692d683f97ae6
--- /dev/null
+++ b/evaluation/v2/cases/299a18168469d268a9f9aca770f04d1410bc17c9bbb077b4eb95badec901239d/schema.xml
@@ -0,0 +1,52 @@
+
+
+[]
+{"case":"upper","pattern":"[A-Z]{2}-\\d{6}","trimmed":true}
+
+
+[]
+{"pattern":"\\d{8}"}
+
+
+[]
+{"case":"upper","pattern":"[A-Z]{2}-\\d{6}","trimmed":true}
+
+
+[]
+{"enum":["Tasses en céramique","Linge plié","Chemises d’archives","Échantillons de bois"],"lexicon":["Tasses en céramique","Linge plié","Chemises d’archives","Échantillons de bois"],"trimmed":true}
+
+
+["decimal_dot"]
+{"minimum":0}
+
+
+[]
+{"enum":["g","kg"]}
+
+
+["decimal_dot"]
+{"minimum":0}
+
+
+[]
+{"enum":["g","kg"]}
+
+
+[]
+{"minimum":0}
+
+
+[]
+{"minimum":0}
+
+
+[]
+{"case_sensitive":true,"enum":["luma","LUMA","Luma 東京","Luma Atelier"],"whitespace_policy":"preserve"}
+
+
+[]
+{"embedded_delimiters_allowed":true,"whitespace_policy":"preserve"}
+
+[["unit_equivalence","declared","declared_unit","measured","measured_unit"],"Gross grams = measured item mass converted to grams + packaging grams; exactly one item per parcel."]
+{}
+
diff --git a/evaluation/v2/cases/2ec9fe1f256063b86d958b20a9b1c1e811b3096630a38672b31e17811f9f9717/input.csv b/evaluation/v2/cases/2ec9fe1f256063b86d958b20a9b1c1e811b3096630a38672b31e17811f9f9717/input.csv
new file mode 100644
index 0000000000000000000000000000000000000000..02d5b76f35d80fca1fadb7fdcdd7cac0fed6974f
--- /dev/null
+++ b/evaluation/v2/cases/2ec9fe1f256063b86d958b20a9b1c1e811b3096630a38672b31e17811f9f9717/input.csv
@@ -0,0 +1,15 @@
+Kod rekordu,Zewnętrzny kod cyfrowy,Pozycja,Deklarowana masa sztuki,Jednostka deklarowanej masy,Zmierzona masa sztuki,Jednostka pomiaru,Masa wody w gramach,Masa mieszaniny w gramach,Partia produkcyjna,Zarejestrowana nazwa,Uwagi obsługi
+RC-000000,00000100,Mieszanka indygo,0.125,kg,125,g,2375,2500,LT-000200,luma,
+RC-000001,00000101,Mieszanka ochry,1000,g,1,kg,19000,20000,LT-000201,LUMA," ""Przed przeniesieniem Mieszanka ochry sprawdzić dołączoną kartę; stanowisko 2 obsługuje ten rekord.""
+2 "
+RC-000022,00000122,Mieszanka ochry,2.125,kg,2125,g,40375,42500,LT-000222,Luma 東京,Przed przeniesieniem Mieszanka ochry sprawdzić dołączoną kartę; stanowisko 2 obsługuje ten rekord.
+RC-000023,00000123,Mieszanka marzanny,125,g,0.125,kg,2375,2500,LT-000223,Luma Atelier,Przed przeniesieniem Mieszanka marzanny sprawdzić dołączoną kartę; stanowisko 3 obsługuje ten rekord.
+rc-000024,00000124,Mieszanka indygo,1,kg,1000,g,19000,20000,LT-000224,luma,
+RC-000025,00000125,Mieszanka ochry,1875,g,1.875,kg,35625,37500,LT-000225,LUMA," ""Przed przeniesieniem Mieszanka ochry sprawdzić dołączoną kartę; stanowisko 5 obsługuje ten rekord.""
+26 "
+RC-000026,00000126,Mieszanka marzanny,2.75,kg,2750,g,52250,55000,LT-000226,Luma 東京,Przed przeniesieniem Mieszanka marzanny sprawdzić dołączoną kartę; stanowisko 6 obsługuje ten rekord.
+RC-000029,00000129,Mieszanka marzanny,2500,g,2.5,kg,47500,50000,LT-000229,LUMA," ""Przed przeniesieniem Mieszanka marzanny sprawdzić dołączoną kartę; stanowisko 2 obsługuje ten rekord.""
+30 "
+RC-000032,00000132,Mieszanka marzanny,2.25,kg,2250,g,42750,45000,LT-000232,luma,
+RC-000052,00000152,Mieszanka ochry,2.5,kg,2500,g,47500,50000,LT-000252,luma,
+RC-000055,00000155,Mieszanka orzecha,2250,g,2.25,kg,42750,45000,LT-000255,Luma Atelier,Przed przeniesieniem Mieszanka orzecha sprawdzić dołączoną kartę; stanowisko 7 obsługuje ten rekord.
diff --git a/evaluation/v2/cases/2ec9fe1f256063b86d958b20a9b1c1e811b3096630a38672b31e17811f9f9717/output/audit.json b/evaluation/v2/cases/2ec9fe1f256063b86d958b20a9b1c1e811b3096630a38672b31e17811f9f9717/output/audit.json
new file mode 100644
index 0000000000000000000000000000000000000000..22bdd748ae0450011a873ea9307b32e592a03e6c
--- /dev/null
+++ b/evaluation/v2/cases/2ec9fe1f256063b86d958b20a9b1c1e811b3096630a38672b31e17811f9f9717/output/audit.json
@@ -0,0 +1,26 @@
+{
+ "metrics": {
+ "device": "cuda",
+ "rows": 11,
+ "cells": 132,
+ "threshold": 0.9,
+ "load_seconds": 0.0,
+ "inference_seconds": 0.41,
+ "cells_per_second": 321.17,
+ "peak_gpu_bytes": 1662847488,
+ "detected_spans": 1,
+ "changed_cells": 1
+ },
+ "proposals": [
+ {
+ "row": 4,
+ "column": 0,
+ "start": 0,
+ "end": 9,
+ "replacement": "RC-000024",
+ "category": "format.case",
+ "status": "applied",
+ "route": "deterministic"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/evaluation/v2/cases/2ec9fe1f256063b86d958b20a9b1c1e811b3096630a38672b31e17811f9f9717/output/corrected.csv b/evaluation/v2/cases/2ec9fe1f256063b86d958b20a9b1c1e811b3096630a38672b31e17811f9f9717/output/corrected.csv
new file mode 100644
index 0000000000000000000000000000000000000000..0c58e3e484eef753761d060fd3ec30cc3d1d8cac
--- /dev/null
+++ b/evaluation/v2/cases/2ec9fe1f256063b86d958b20a9b1c1e811b3096630a38672b31e17811f9f9717/output/corrected.csv
@@ -0,0 +1,15 @@
+Kod rekordu,Zewnętrzny kod cyfrowy,Pozycja,Deklarowana masa sztuki,Jednostka deklarowanej masy,Zmierzona masa sztuki,Jednostka pomiaru,Masa wody w gramach,Masa mieszaniny w gramach,Partia produkcyjna,Zarejestrowana nazwa,Uwagi obsługi
+RC-000000,00000100,Mieszanka indygo,0.125,kg,125,g,2375,2500,LT-000200,luma,
+RC-000001,00000101,Mieszanka ochry,1000,g,1,kg,19000,20000,LT-000201,LUMA," ""Przed przeniesieniem Mieszanka ochry sprawdzić dołączoną kartę; stanowisko 2 obsługuje ten rekord.""
+2 "
+RC-000022,00000122,Mieszanka ochry,2.125,kg,2125,g,40375,42500,LT-000222,Luma 東京,Przed przeniesieniem Mieszanka ochry sprawdzić dołączoną kartę; stanowisko 2 obsługuje ten rekord.
+RC-000023,00000123,Mieszanka marzanny,125,g,0.125,kg,2375,2500,LT-000223,Luma Atelier,Przed przeniesieniem Mieszanka marzanny sprawdzić dołączoną kartę; stanowisko 3 obsługuje ten rekord.
+RC-000024,00000124,Mieszanka indygo,1,kg,1000,g,19000,20000,LT-000224,luma,
+RC-000025,00000125,Mieszanka ochry,1875,g,1.875,kg,35625,37500,LT-000225,LUMA," ""Przed przeniesieniem Mieszanka ochry sprawdzić dołączoną kartę; stanowisko 5 obsługuje ten rekord.""
+26 "
+RC-000026,00000126,Mieszanka marzanny,2.75,kg,2750,g,52250,55000,LT-000226,Luma 東京,Przed przeniesieniem Mieszanka marzanny sprawdzić dołączoną kartę; stanowisko 6 obsługuje ten rekord.
+RC-000029,00000129,Mieszanka marzanny,2500,g,2.5,kg,47500,50000,LT-000229,LUMA," ""Przed przeniesieniem Mieszanka marzanny sprawdzić dołączoną kartę; stanowisko 2 obsługuje ten rekord.""
+30 "
+RC-000032,00000132,Mieszanka marzanny,2.25,kg,2250,g,42750,45000,LT-000232,luma,
+RC-000052,00000152,Mieszanka ochry,2.5,kg,2500,g,47500,50000,LT-000252,luma,
+RC-000055,00000155,Mieszanka orzecha,2250,g,2.25,kg,42750,45000,LT-000255,Luma Atelier,Przed przeniesieniem Mieszanka orzecha sprawdzić dołączoną kartę; stanowisko 7 obsługuje ten rekord.
diff --git a/evaluation/v2/cases/2ec9fe1f256063b86d958b20a9b1c1e811b3096630a38672b31e17811f9f9717/output/review.html b/evaluation/v2/cases/2ec9fe1f256063b86d958b20a9b1c1e811b3096630a38672b31e17811f9f9717/output/review.html
new file mode 100644
index 0000000000000000000000000000000000000000..8e54633e741ef6a1280c7d144a16d029bc19f2c4
--- /dev/null
+++ b/evaluation/v2/cases/2ec9fe1f256063b86d958b20a9b1c1e811b3096630a38672b31e17811f9f9717/output/review.html
@@ -0,0 +1,18 @@
+TabFix — end-to-end CSV review
+Does TabFix fix this CSV?
Actual CSV → schema and context → predicted error locations → generated replacements → corrected CSV. The clean reference is used only after inference. No gold error locations or replacement text are supplied to the model. Row numbers below count data rows, excluding the header.
+132Cells scanned
—Errors in input
—Errors repaired
—Valid cells changed
CSV inference review · Threshold 0.9 · CPU inference 0.41 seconds (model loading excluded).
Errors and proposed changes
Strings are quoted to make spaces and empty values visible. Yellow cells below were changed. All other cells are included so unwanted edits remain visible.
Complete model output
Every detection and application decision
[
+ {
+ "row": 4,
+ "column": 0,
+ "start": 0,
+ "end": 9,
+ "replacement": "RC-000024",
+ "category": "format.case",
+ "status": "applied",
+ "route": "deterministic"
+ }
+]
\ No newline at end of file
diff --git a/evaluation/v2/cases/2ec9fe1f256063b86d958b20a9b1c1e811b3096630a38672b31e17811f9f9717/reference.csv b/evaluation/v2/cases/2ec9fe1f256063b86d958b20a9b1c1e811b3096630a38672b31e17811f9f9717/reference.csv
new file mode 100644
index 0000000000000000000000000000000000000000..0c58e3e484eef753761d060fd3ec30cc3d1d8cac
--- /dev/null
+++ b/evaluation/v2/cases/2ec9fe1f256063b86d958b20a9b1c1e811b3096630a38672b31e17811f9f9717/reference.csv
@@ -0,0 +1,15 @@
+Kod rekordu,Zewnętrzny kod cyfrowy,Pozycja,Deklarowana masa sztuki,Jednostka deklarowanej masy,Zmierzona masa sztuki,Jednostka pomiaru,Masa wody w gramach,Masa mieszaniny w gramach,Partia produkcyjna,Zarejestrowana nazwa,Uwagi obsługi
+RC-000000,00000100,Mieszanka indygo,0.125,kg,125,g,2375,2500,LT-000200,luma,
+RC-000001,00000101,Mieszanka ochry,1000,g,1,kg,19000,20000,LT-000201,LUMA," ""Przed przeniesieniem Mieszanka ochry sprawdzić dołączoną kartę; stanowisko 2 obsługuje ten rekord.""
+2 "
+RC-000022,00000122,Mieszanka ochry,2.125,kg,2125,g,40375,42500,LT-000222,Luma 東京,Przed przeniesieniem Mieszanka ochry sprawdzić dołączoną kartę; stanowisko 2 obsługuje ten rekord.
+RC-000023,00000123,Mieszanka marzanny,125,g,0.125,kg,2375,2500,LT-000223,Luma Atelier,Przed przeniesieniem Mieszanka marzanny sprawdzić dołączoną kartę; stanowisko 3 obsługuje ten rekord.
+RC-000024,00000124,Mieszanka indygo,1,kg,1000,g,19000,20000,LT-000224,luma,
+RC-000025,00000125,Mieszanka ochry,1875,g,1.875,kg,35625,37500,LT-000225,LUMA," ""Przed przeniesieniem Mieszanka ochry sprawdzić dołączoną kartę; stanowisko 5 obsługuje ten rekord.""
+26 "
+RC-000026,00000126,Mieszanka marzanny,2.75,kg,2750,g,52250,55000,LT-000226,Luma 東京,Przed przeniesieniem Mieszanka marzanny sprawdzić dołączoną kartę; stanowisko 6 obsługuje ten rekord.
+RC-000029,00000129,Mieszanka marzanny,2500,g,2.5,kg,47500,50000,LT-000229,LUMA," ""Przed przeniesieniem Mieszanka marzanny sprawdzić dołączoną kartę; stanowisko 2 obsługuje ten rekord.""
+30 "
+RC-000032,00000132,Mieszanka marzanny,2.25,kg,2250,g,42750,45000,LT-000232,luma,
+RC-000052,00000152,Mieszanka ochry,2.5,kg,2500,g,47500,50000,LT-000252,luma,
+RC-000055,00000155,Mieszanka orzecha,2250,g,2.25,kg,42750,45000,LT-000255,Luma Atelier,Przed przeniesieniem Mieszanka orzecha sprawdzić dołączoną kartę; stanowisko 7 obsługuje ten rekord.
diff --git a/evaluation/v2/cases/2ec9fe1f256063b86d958b20a9b1c1e811b3096630a38672b31e17811f9f9717/result.json b/evaluation/v2/cases/2ec9fe1f256063b86d958b20a9b1c1e811b3096630a38672b31e17811f9f9717/result.json
new file mode 100644
index 0000000000000000000000000000000000000000..4a8ed81a857dd7109ef0f161f95001167c1a1e8a
--- /dev/null
+++ b/evaluation/v2/cases/2ec9fe1f256063b86d958b20a9b1c1e811b3096630a38672b31e17811f9f9717/result.json
@@ -0,0 +1,70 @@
+{
+ "id": "2ec9fe1f256063b86d958b20a9b1c1e811b3096630a38672b31e17811f9f9717",
+ "language": "pl",
+ "roles": [
+ "positive:format.case"
+ ],
+ "counts": {
+ "cells": 132,
+ "valid_cells": 131,
+ "exactly_repaired_cells": 1,
+ "valid_cells_harmed": 0,
+ "detected_faulty_cells": 1,
+ "flagged_valid_cells": 0,
+ "faulty_cells": 1
+ },
+ "categories": {
+ "text.encoding": {},
+ "text.invisible": {},
+ "text.spelling": {},
+ "format.number": {},
+ "format.date": {},
+ "format.boolean": {},
+ "format.case": {
+ "gold_cells": 1,
+ "detected_cells": 1,
+ "exactly_repaired_cells": 1
+ },
+ "format.whitespace": {},
+ "format.unit": {},
+ "schema.type": {},
+ "schema.identifier": {},
+ "schema.category": {},
+ "consistency.unit": {},
+ "consistency.dependency": {},
+ "consistency.temporal": {},
+ "missing.required": {},
+ "missing.conditional": {},
+ "structure.shift": {}
+ },
+ "decisions": {
+ "applied": 1
+ },
+ "inference_seconds": 0.41,
+ "details": [
+ {
+ "row": 4,
+ "column": "Kod rekordu",
+ "original": "rc-000024",
+ "prediction": "RC-000024",
+ "reference": "RC-000024",
+ "categories": [
+ "format.case"
+ ],
+ "status": "repaired",
+ "decisions": [
+ {
+ "row": 4,
+ "column": 0,
+ "start": 0,
+ "end": 9,
+ "replacement": "RC-000024",
+ "category": "format.case",
+ "status": "applied",
+ "route": "deterministic"
+ }
+ ]
+ }
+ ],
+ "hard_negative": false
+}
diff --git a/evaluation/v2/cases/2ec9fe1f256063b86d958b20a9b1c1e811b3096630a38672b31e17811f9f9717/review.html b/evaluation/v2/cases/2ec9fe1f256063b86d958b20a9b1c1e811b3096630a38672b31e17811f9f9717/review.html
new file mode 100644
index 0000000000000000000000000000000000000000..9967bdd7105b7a3b772bb8d71e2c583f65875fe7
--- /dev/null
+++ b/evaluation/v2/cases/2ec9fe1f256063b86d958b20a9b1c1e811b3096630a38672b31e17811f9f9717/review.html
@@ -0,0 +1,18 @@
+TabFix — end-to-end CSV review
+Does TabFix fix this CSV?
Actual CSV → schema and context → predicted error locations → generated replacements → corrected CSV. The clean reference is used only after inference. No gold error locations or replacement text are supplied to the model. Row numbers below count data rows, excluding the header.
+132Cells scanned
1Errors in input
1Errors repaired
0Valid cells changed
CSV inference review · Threshold 0.9 · CPU inference 0.41 seconds (model loading excluded).
Errors and proposed changes
Strings are quoted to make spaces and empty values visible. Yellow cells below were changed. All other cells are included so unwanted edits remain visible.
Complete model output
Every detection and application decision
[
+ {
+ "row": 4,
+ "column": 0,
+ "start": 0,
+ "end": 9,
+ "replacement": "RC-000024",
+ "category": "format.case",
+ "status": "applied",
+ "route": "deterministic"
+ }
+]
\ No newline at end of file
diff --git a/evaluation/v2/cases/2ec9fe1f256063b86d958b20a9b1c1e811b3096630a38672b31e17811f9f9717/schema.xml b/evaluation/v2/cases/2ec9fe1f256063b86d958b20a9b1c1e811b3096630a38672b31e17811f9f9717/schema.xml
new file mode 100644
index 0000000000000000000000000000000000000000..329b8a6258f0bcb70fb86ec493b9d04c2b43f989
--- /dev/null
+++ b/evaluation/v2/cases/2ec9fe1f256063b86d958b20a9b1c1e811b3096630a38672b31e17811f9f9717/schema.xml
@@ -0,0 +1,52 @@
+
+
+[]
+{"case":"upper","pattern":"[A-Z]{2}-\\d{6}","trimmed":true}
+
+
+[]
+{"pattern":"\\d{8}"}
+
+
+[]
+{"enum":["Mieszanka indygo","Mieszanka ochry","Mieszanka marzanny","Mieszanka orzecha"],"lexicon":["Mieszanka indygo","Mieszanka ochry","Mieszanka marzanny","Mieszanka orzecha"],"trimmed":true}
+
+
+["decimal_dot"]
+{"minimum":0}
+
+
+[]
+{"enum":["g","kg"]}
+
+
+["decimal_dot"]
+{"minimum":0}
+
+
+[]
+{"enum":["g","kg"]}
+
+
+[]
+{"minimum":0}
+
+
+[]
+{"minimum":0}
+
+
+[]
+{"case":"upper","pattern":"[A-Z]{2}-\\d{6}","trimmed":true}
+
+
+[]
+{"case_sensitive":true,"enum":["luma","LUMA","Luma 東京","Luma Atelier"],"whitespace_policy":"preserve"}
+
+
+[]
+{"embedded_delimiters_allowed":true,"whitespace_policy":"preserve"}
+
+[["unit_equivalence","declared","declared_unit","measured","measured_unit"],"Mixture grams = measured pigment mass converted to grams + water grams; no loss or additional ingredient in this fictional recipe."]
+{}
+
diff --git a/evaluation/v2/cases/415bbfbbc5a065d100a535b95d0d4f259fae060cefc532466d412eddfc7e03c7/input.csv b/evaluation/v2/cases/415bbfbbc5a065d100a535b95d0d4f259fae060cefc532466d412eddfc7e03c7/input.csv
new file mode 100644
index 0000000000000000000000000000000000000000..277aa11d64eb964c98d99f64937b8e8cbef7cb60
--- /dev/null
+++ b/evaluation/v2/cases/415bbfbbc5a065d100a535b95d0d4f259fae060cefc532466d412eddfc7e03c7/input.csv
@@ -0,0 +1,14 @@
+Identyfikator,Pozycja,Data rozpoczęcia,Data zakończenia,Dni,Status,Numer referencyjny,Uwagi
+000001,Wydarzenie lokalne,2024-06-12,2024-06-13,1,Zamknięte,REF-000001,
+000002,Stoisko targowe,2025-12-08,2026-02-26,80,Zamknięte,REF-000002,"Skorzystać z wejścia północnego
+Najpierw zgłosić się do recepcji"
+000006,Dostęp do ogrodu,2024-07-11,2025-07-12,366,Zamknięte,REF-000006,Sprawdzono przy odbiorze
+000007,Dostęp do ogrodu,2024-12-04,2025-02-12,70,Otwarte,,"Skorzystać z wejścia północnego
+Najpierw zgłosić się do recepcji"
+000016,Dostęp do ogrodu,2024-05-29,2024-08-05,68,Zamknięte,REF-000016,Sprawdzono przy odbiorze
+000018,Stoisko targowe,2024-09-24,2024-11-08,45,Otwarte,,Dodatkowe czynności nie są wymagane
+000019,Dostęp do ogrodu,2025-11-04,2025-11-19,15,Otwarte,,Zachowano odniesienie: UTF-8 / v2.1
+000020,Wydarzenie lokalne,04/12/2024,2024-12-26,22,Otwarte,,Zachowano odniesienie: UTF-8 / v2.1
+000021,Stoisko targowe,2025-08-13,2025-08-30,17,Zamknięte,REF-000021,Zachowano odniesienie: UTF-8 / v2.1
+000022,Dostęp do ogrodu,2024-02-23,2024-03-03,9,Zamknięte,REF-000022,"Etykieta „priorytet”, pozostawić widoczną"
+000032,Wydarzenie lokalne,2025-07-21,2025-08-04,14,Wyjątkowe,REF-000032,Zachowano odniesienie: UTF-8 / v2.1
diff --git a/evaluation/v2/cases/415bbfbbc5a065d100a535b95d0d4f259fae060cefc532466d412eddfc7e03c7/output/audit.json b/evaluation/v2/cases/415bbfbbc5a065d100a535b95d0d4f259fae060cefc532466d412eddfc7e03c7/output/audit.json
new file mode 100644
index 0000000000000000000000000000000000000000..7983e649dfd5705038e91f18fdf5242326021bbb
--- /dev/null
+++ b/evaluation/v2/cases/415bbfbbc5a065d100a535b95d0d4f259fae060cefc532466d412eddfc7e03c7/output/audit.json
@@ -0,0 +1,27 @@
+{
+ "metrics": {
+ "device": "cuda",
+ "rows": 11,
+ "cells": 88,
+ "threshold": 0.9,
+ "load_seconds": 0.0,
+ "inference_seconds": 0.76,
+ "cells_per_second": 116.22,
+ "peak_gpu_bytes": 1944743424,
+ "detected_spans": 1,
+ "changed_cells": 1
+ },
+ "proposals": [
+ {
+ "row": 7,
+ "column": 2,
+ "start": 0,
+ "end": 10,
+ "replacement": "2024-12-04",
+ "category": "format.date",
+ "perplexity": 1.0021802994372715,
+ "status": "applied",
+ "route": "model"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/evaluation/v2/cases/415bbfbbc5a065d100a535b95d0d4f259fae060cefc532466d412eddfc7e03c7/output/corrected.csv b/evaluation/v2/cases/415bbfbbc5a065d100a535b95d0d4f259fae060cefc532466d412eddfc7e03c7/output/corrected.csv
new file mode 100644
index 0000000000000000000000000000000000000000..ed7926e21cc774db9fac0b47870334bcbc04b078
--- /dev/null
+++ b/evaluation/v2/cases/415bbfbbc5a065d100a535b95d0d4f259fae060cefc532466d412eddfc7e03c7/output/corrected.csv
@@ -0,0 +1,14 @@
+Identyfikator,Pozycja,Data rozpoczęcia,Data zakończenia,Dni,Status,Numer referencyjny,Uwagi
+000001,Wydarzenie lokalne,2024-06-12,2024-06-13,1,Zamknięte,REF-000001,
+000002,Stoisko targowe,2025-12-08,2026-02-26,80,Zamknięte,REF-000002,"Skorzystać z wejścia północnego
+Najpierw zgłosić się do recepcji"
+000006,Dostęp do ogrodu,2024-07-11,2025-07-12,366,Zamknięte,REF-000006,Sprawdzono przy odbiorze
+000007,Dostęp do ogrodu,2024-12-04,2025-02-12,70,Otwarte,,"Skorzystać z wejścia północnego
+Najpierw zgłosić się do recepcji"
+000016,Dostęp do ogrodu,2024-05-29,2024-08-05,68,Zamknięte,REF-000016,Sprawdzono przy odbiorze
+000018,Stoisko targowe,2024-09-24,2024-11-08,45,Otwarte,,Dodatkowe czynności nie są wymagane
+000019,Dostęp do ogrodu,2025-11-04,2025-11-19,15,Otwarte,,Zachowano odniesienie: UTF-8 / v2.1
+000020,Wydarzenie lokalne,2024-12-04,2024-12-26,22,Otwarte,,Zachowano odniesienie: UTF-8 / v2.1
+000021,Stoisko targowe,2025-08-13,2025-08-30,17,Zamknięte,REF-000021,Zachowano odniesienie: UTF-8 / v2.1
+000022,Dostęp do ogrodu,2024-02-23,2024-03-03,9,Zamknięte,REF-000022,"Etykieta „priorytet”, pozostawić widoczną"
+000032,Wydarzenie lokalne,2025-07-21,2025-08-04,14,Wyjątkowe,REF-000032,Zachowano odniesienie: UTF-8 / v2.1
diff --git a/evaluation/v2/cases/415bbfbbc5a065d100a535b95d0d4f259fae060cefc532466d412eddfc7e03c7/output/review.html b/evaluation/v2/cases/415bbfbbc5a065d100a535b95d0d4f259fae060cefc532466d412eddfc7e03c7/output/review.html
new file mode 100644
index 0000000000000000000000000000000000000000..aa4d7ccae604af7b0ec05f8950c48d64b0567620
--- /dev/null
+++ b/evaluation/v2/cases/415bbfbbc5a065d100a535b95d0d4f259fae060cefc532466d412eddfc7e03c7/output/review.html
@@ -0,0 +1,18 @@
+TabFix — end-to-end CSV review
+Does TabFix fix this CSV?
Actual CSV → schema and context → predicted error locations → generated replacements → corrected CSV. The clean reference is used only after inference. No gold error locations or replacement text are supplied to the model. Row numbers below count data rows, excluding the header.
+88Cells scanned
—Errors in input
—Errors repaired
—Valid cells changed
CSV inference review · Threshold 0.9 · CPU inference 0.76 seconds (model loading excluded).
Errors and proposed changes
Strings are quoted to make spaces and empty values visible. Yellow cells below were changed. All other cells are included so unwanted edits remain visible.
Complete model output
Every detection and application decision
[
+ {
+ "row": 7,
+ "column": 2,
+ "start": 0,
+ "end": 10,
+ "replacement": "2024-12-04",
+ "category": "format.date",
+ "perplexity": 1.0021802994372715,
+ "status": "applied",
+ "route": "model"
+ }
+]
\ No newline at end of file
diff --git a/evaluation/v2/cases/415bbfbbc5a065d100a535b95d0d4f259fae060cefc532466d412eddfc7e03c7/reference.csv b/evaluation/v2/cases/415bbfbbc5a065d100a535b95d0d4f259fae060cefc532466d412eddfc7e03c7/reference.csv
new file mode 100644
index 0000000000000000000000000000000000000000..ed7926e21cc774db9fac0b47870334bcbc04b078
--- /dev/null
+++ b/evaluation/v2/cases/415bbfbbc5a065d100a535b95d0d4f259fae060cefc532466d412eddfc7e03c7/reference.csv
@@ -0,0 +1,14 @@
+Identyfikator,Pozycja,Data rozpoczęcia,Data zakończenia,Dni,Status,Numer referencyjny,Uwagi
+000001,Wydarzenie lokalne,2024-06-12,2024-06-13,1,Zamknięte,REF-000001,
+000002,Stoisko targowe,2025-12-08,2026-02-26,80,Zamknięte,REF-000002,"Skorzystać z wejścia północnego
+Najpierw zgłosić się do recepcji"
+000006,Dostęp do ogrodu,2024-07-11,2025-07-12,366,Zamknięte,REF-000006,Sprawdzono przy odbiorze
+000007,Dostęp do ogrodu,2024-12-04,2025-02-12,70,Otwarte,,"Skorzystać z wejścia północnego
+Najpierw zgłosić się do recepcji"
+000016,Dostęp do ogrodu,2024-05-29,2024-08-05,68,Zamknięte,REF-000016,Sprawdzono przy odbiorze
+000018,Stoisko targowe,2024-09-24,2024-11-08,45,Otwarte,,Dodatkowe czynności nie są wymagane
+000019,Dostęp do ogrodu,2025-11-04,2025-11-19,15,Otwarte,,Zachowano odniesienie: UTF-8 / v2.1
+000020,Wydarzenie lokalne,2024-12-04,2024-12-26,22,Otwarte,,Zachowano odniesienie: UTF-8 / v2.1
+000021,Stoisko targowe,2025-08-13,2025-08-30,17,Zamknięte,REF-000021,Zachowano odniesienie: UTF-8 / v2.1
+000022,Dostęp do ogrodu,2024-02-23,2024-03-03,9,Zamknięte,REF-000022,"Etykieta „priorytet”, pozostawić widoczną"
+000032,Wydarzenie lokalne,2025-07-21,2025-08-04,14,Wyjątkowe,REF-000032,Zachowano odniesienie: UTF-8 / v2.1
diff --git a/evaluation/v2/cases/415bbfbbc5a065d100a535b95d0d4f259fae060cefc532466d412eddfc7e03c7/result.json b/evaluation/v2/cases/415bbfbbc5a065d100a535b95d0d4f259fae060cefc532466d412eddfc7e03c7/result.json
new file mode 100644
index 0000000000000000000000000000000000000000..b2a3c9daabe49fdc6d0d8a0071c8cc471c172b7e
--- /dev/null
+++ b/evaluation/v2/cases/415bbfbbc5a065d100a535b95d0d4f259fae060cefc532466d412eddfc7e03c7/result.json
@@ -0,0 +1,71 @@
+{
+ "id": "415bbfbbc5a065d100a535b95d0d4f259fae060cefc532466d412eddfc7e03c7",
+ "language": "pl",
+ "roles": [
+ "positive:format.date"
+ ],
+ "counts": {
+ "cells": 88,
+ "valid_cells": 87,
+ "exactly_repaired_cells": 1,
+ "valid_cells_harmed": 0,
+ "detected_faulty_cells": 1,
+ "flagged_valid_cells": 0,
+ "faulty_cells": 1
+ },
+ "categories": {
+ "text.encoding": {},
+ "text.invisible": {},
+ "text.spelling": {},
+ "format.number": {},
+ "format.date": {
+ "gold_cells": 1,
+ "detected_cells": 1,
+ "exactly_repaired_cells": 1
+ },
+ "format.boolean": {},
+ "format.case": {},
+ "format.whitespace": {},
+ "format.unit": {},
+ "schema.type": {},
+ "schema.identifier": {},
+ "schema.category": {},
+ "consistency.unit": {},
+ "consistency.dependency": {},
+ "consistency.temporal": {},
+ "missing.required": {},
+ "missing.conditional": {},
+ "structure.shift": {}
+ },
+ "decisions": {
+ "applied": 1
+ },
+ "inference_seconds": 0.76,
+ "details": [
+ {
+ "row": 7,
+ "column": "Data rozpoczęcia",
+ "original": "04/12/2024",
+ "prediction": "2024-12-04",
+ "reference": "2024-12-04",
+ "categories": [
+ "format.date"
+ ],
+ "status": "repaired",
+ "decisions": [
+ {
+ "row": 7,
+ "column": 2,
+ "start": 0,
+ "end": 10,
+ "replacement": "2024-12-04",
+ "category": "format.date",
+ "perplexity": 1.0021802994372715,
+ "status": "applied",
+ "route": "model"
+ }
+ ]
+ }
+ ],
+ "hard_negative": false
+}
diff --git a/evaluation/v2/cases/415bbfbbc5a065d100a535b95d0d4f259fae060cefc532466d412eddfc7e03c7/review.html b/evaluation/v2/cases/415bbfbbc5a065d100a535b95d0d4f259fae060cefc532466d412eddfc7e03c7/review.html
new file mode 100644
index 0000000000000000000000000000000000000000..a6aa4d259cdaceda36eeafe7c7693d3bff9156c9
--- /dev/null
+++ b/evaluation/v2/cases/415bbfbbc5a065d100a535b95d0d4f259fae060cefc532466d412eddfc7e03c7/review.html
@@ -0,0 +1,18 @@
+TabFix — end-to-end CSV review
+Does TabFix fix this CSV?
Actual CSV → schema and context → predicted error locations → generated replacements → corrected CSV. The clean reference is used only after inference. No gold error locations or replacement text are supplied to the model. Row numbers below count data rows, excluding the header.
+88Cells scanned
1Errors in input
1Errors repaired
0Valid cells changed
CSV inference review · Threshold 0.9 · CPU inference 0.76 seconds (model loading excluded).
Errors and proposed changes
Strings are quoted to make spaces and empty values visible. Yellow cells below were changed. All other cells are included so unwanted edits remain visible.
Complete model output
Every detection and application decision
[
+ {
+ "row": 7,
+ "column": 2,
+ "start": 0,
+ "end": 10,
+ "replacement": "2024-12-04",
+ "category": "format.date",
+ "perplexity": 1.0021802994372715,
+ "status": "applied",
+ "route": "model"
+ }
+]
\ No newline at end of file
diff --git a/evaluation/v2/cases/415bbfbbc5a065d100a535b95d0d4f259fae060cefc532466d412eddfc7e03c7/schema.xml b/evaluation/v2/cases/415bbfbbc5a065d100a535b95d0d4f259fae060cefc532466d412eddfc7e03c7/schema.xml
new file mode 100644
index 0000000000000000000000000000000000000000..adc0516ca60c81fe51deed6aea4501b396514884
--- /dev/null
+++ b/evaluation/v2/cases/415bbfbbc5a065d100a535b95d0d4f259fae060cefc532466d412eddfc7e03c7/schema.xml
@@ -0,0 +1,45 @@
+
+[{"currency":null,"date_format":"YYYY-MM-DD","decimal_separator":",","language":"pl"}]
+
+["six_digits_leading_zeros"]
+{"pattern":"\\d{6}","unique":true}
+[]
+
+
+["unicode_text"]
+{"enum":["Dostęp do ogrodu","Stoisko targowe","Wydarzenie lokalne","Wystawa czasowa"]}
+[]
+
+
+["YYYY-MM-DD"]
+{}
+[]
+
+
+["YYYY-MM-DD"]
+{}
+[]
+
+
+["base10_integer"]
+{"maximum":100000000,"minimum":0}
+[]
+
+
+["unicode_text"]
+{"enum":["Otwarte","Zamknięte","Wyjątkowe"]}
+[]
+
+
+["unicode_text"]
+{"pattern":"REF-\\d{6}","required_when":{"column":5,"not_equals":"Otwarte"}}
+[]
+
+
+["unicode_text"]
+{}
+[]
+
+[["interval","start","end","days"],["conditional","status","reference"],"interval(start,end,duration): end must be on or after start; duration equals calendar days end minus start, without inclusive endpoint adjustment."]
+{}
+
diff --git a/evaluation/v2/cases/42ae0423efc79bfa2e7e92255c5e94c337c52b95167243cc3497785b15214174/input.csv b/evaluation/v2/cases/42ae0423efc79bfa2e7e92255c5e94c337c52b95167243cc3497785b15214174/input.csv
new file mode 100644
index 0000000000000000000000000000000000000000..dbd9f98d40be7b19de586d03cf9246a55e73d1c9
--- /dev/null
+++ b/evaluation/v2/cases/42ae0423efc79bfa2e7e92255c5e94c337c52b95167243cc3497785b15214174/input.csv
@@ -0,0 +1,16 @@
+Vorgangscode,Externer Zahlencode,Artikel,Referenzwert,Serviceklasse,Stückzahl,Stückpreis,Positionskosten,Lagerzone,Registrierter Anzeigename,Bearbeitungshinweis
+RC-000000,00000100,Stahlscharnier,"1 000,50",A,2,1.25,2.50,A,luma,
+RC-000001,00000101,Baumwollriemen,1000.50,B,3,1.38,4.14,B,LUMA," ""Vor dem Transport von Baumwollriemen die beigefügte Karte prüfen; Station 2 bearbeitet diesen Vorgang.""
+2 "
+RC-000021,00000121,Stahlscharnier,1000.50,A,12,3.98,47.76,A,LUMA," ""Vor dem Transport von Stahlscharnier die beigefügte Karte prüfen; Station 1 bearbeitet diesen Vorgang.""
+22 "
+RC-000025,00000125,Baumwollriemen,1000.50,B,5,4.5,22.5,B,LUMA," ""Vor dem Transport von Baumwollriemen die beigefügte Karte prüfen; Station 5 bearbeitet diesen Vorgang.""
+26 "
+RC-000026,00000126,Gummifuß,"1 000,50",C,6,4.63,27.78,C,Luma 東京,Vor dem Transport von Gummifuß die beigefügte Karte prüfen; Station 6 bearbeitet diesen Vorgang.
+RC-000034,00000134,Baumwollriemen,"1 000,50",B,3,5.67,17.01,B,Luma 東京,Vor dem Transport von Baumwollriemen die beigefügte Karte prüfen; Station 7 bearbeitet diesen Vorgang.
+RC-000035,00000135,Gummifuß,1000.50,C,4,5.8,23.2,C,Luma Atelier,Vor dem Transport von Gummifuß die beigefügte Karte prüfen; Station 1 bearbeitet diesen Vorgang.
+RC-000036,00000136,Stahlscharnier,"1 000,50",A,5,5.93,29.65,A,luma,
+RC-000037,00000137,Baumwollriemen,1000.50,B,6,6.06,36.36,B,LUMA," ""Vor dem Transport von Baumwollriemen die beigefügte Karte prüfen; Station 3 bearbeitet diesen Vorgang.""
+38 "
+RC-000038,00000138,Gummifuß,"1 000,50",C,7,6.19,43.33,C,Luma 東京,Vor dem Transport von Gummifuß die beigefügte Karte prüfen; Station 4 bearbeitet diesen Vorgang.
+RC-000055,00000155,Messingverbinder,1000.50,D,2,8.4,16.8,D,Luma Atelier,Vor dem Transport von Messingverbinder die beigefügte Karte prüfen; Station 7 bearbeitet diesen Vorgang.
diff --git a/evaluation/v2/cases/42ae0423efc79bfa2e7e92255c5e94c337c52b95167243cc3497785b15214174/output/audit.json b/evaluation/v2/cases/42ae0423efc79bfa2e7e92255c5e94c337c52b95167243cc3497785b15214174/output/audit.json
new file mode 100644
index 0000000000000000000000000000000000000000..ad69bb301085192e6d8667aebe52e8a99e8f772d
--- /dev/null
+++ b/evaluation/v2/cases/42ae0423efc79bfa2e7e92255c5e94c337c52b95167243cc3497785b15214174/output/audit.json
@@ -0,0 +1,15 @@
+{
+ "metrics": {
+ "device": "cuda",
+ "rows": 11,
+ "cells": 121,
+ "threshold": 0.9,
+ "load_seconds": 0.0,
+ "inference_seconds": 0.32,
+ "cells_per_second": 374.49,
+ "peak_gpu_bytes": 1631733760,
+ "detected_spans": 0,
+ "changed_cells": 0
+ },
+ "proposals": []
+}
\ No newline at end of file
diff --git a/evaluation/v2/cases/42ae0423efc79bfa2e7e92255c5e94c337c52b95167243cc3497785b15214174/output/corrected.csv b/evaluation/v2/cases/42ae0423efc79bfa2e7e92255c5e94c337c52b95167243cc3497785b15214174/output/corrected.csv
new file mode 100644
index 0000000000000000000000000000000000000000..dbd9f98d40be7b19de586d03cf9246a55e73d1c9
--- /dev/null
+++ b/evaluation/v2/cases/42ae0423efc79bfa2e7e92255c5e94c337c52b95167243cc3497785b15214174/output/corrected.csv
@@ -0,0 +1,16 @@
+Vorgangscode,Externer Zahlencode,Artikel,Referenzwert,Serviceklasse,Stückzahl,Stückpreis,Positionskosten,Lagerzone,Registrierter Anzeigename,Bearbeitungshinweis
+RC-000000,00000100,Stahlscharnier,"1 000,50",A,2,1.25,2.50,A,luma,
+RC-000001,00000101,Baumwollriemen,1000.50,B,3,1.38,4.14,B,LUMA," ""Vor dem Transport von Baumwollriemen die beigefügte Karte prüfen; Station 2 bearbeitet diesen Vorgang.""
+2 "
+RC-000021,00000121,Stahlscharnier,1000.50,A,12,3.98,47.76,A,LUMA," ""Vor dem Transport von Stahlscharnier die beigefügte Karte prüfen; Station 1 bearbeitet diesen Vorgang.""
+22 "
+RC-000025,00000125,Baumwollriemen,1000.50,B,5,4.5,22.5,B,LUMA," ""Vor dem Transport von Baumwollriemen die beigefügte Karte prüfen; Station 5 bearbeitet diesen Vorgang.""
+26 "
+RC-000026,00000126,Gummifuß,"1 000,50",C,6,4.63,27.78,C,Luma 東京,Vor dem Transport von Gummifuß die beigefügte Karte prüfen; Station 6 bearbeitet diesen Vorgang.
+RC-000034,00000134,Baumwollriemen,"1 000,50",B,3,5.67,17.01,B,Luma 東京,Vor dem Transport von Baumwollriemen die beigefügte Karte prüfen; Station 7 bearbeitet diesen Vorgang.
+RC-000035,00000135,Gummifuß,1000.50,C,4,5.8,23.2,C,Luma Atelier,Vor dem Transport von Gummifuß die beigefügte Karte prüfen; Station 1 bearbeitet diesen Vorgang.
+RC-000036,00000136,Stahlscharnier,"1 000,50",A,5,5.93,29.65,A,luma,
+RC-000037,00000137,Baumwollriemen,1000.50,B,6,6.06,36.36,B,LUMA," ""Vor dem Transport von Baumwollriemen die beigefügte Karte prüfen; Station 3 bearbeitet diesen Vorgang.""
+38 "
+RC-000038,00000138,Gummifuß,"1 000,50",C,7,6.19,43.33,C,Luma 東京,Vor dem Transport von Gummifuß die beigefügte Karte prüfen; Station 4 bearbeitet diesen Vorgang.
+RC-000055,00000155,Messingverbinder,1000.50,D,2,8.4,16.8,D,Luma Atelier,Vor dem Transport von Messingverbinder die beigefügte Karte prüfen; Station 7 bearbeitet diesen Vorgang.
diff --git a/evaluation/v2/cases/42ae0423efc79bfa2e7e92255c5e94c337c52b95167243cc3497785b15214174/output/review.html b/evaluation/v2/cases/42ae0423efc79bfa2e7e92255c5e94c337c52b95167243cc3497785b15214174/output/review.html
new file mode 100644
index 0000000000000000000000000000000000000000..e08b32408cdde91577ed19f038d0bb3ee5969842
--- /dev/null
+++ b/evaluation/v2/cases/42ae0423efc79bfa2e7e92255c5e94c337c52b95167243cc3497785b15214174/output/review.html
@@ -0,0 +1,8 @@
+TabFix — end-to-end CSV review
+Does TabFix fix this CSV?
Actual CSV → schema and context → predicted error locations → generated replacements → corrected CSV. The clean reference is used only after inference. No gold error locations or replacement text are supplied to the model. Row numbers below count data rows, excluding the header.
+121Cells scanned
—Errors in input
—Errors repaired
—Valid cells changed
CSV inference review · Threshold 0.9 · CPU inference 0.32 seconds (model loading excluded).
Errors and proposed changes
Strings are quoted to make spaces and empty values visible. Yellow cells below were changed. All other cells are included so unwanted edits remain visible.
Complete model output
Every detection and application decision
[]
\ No newline at end of file
diff --git a/evaluation/v2/cases/42ae0423efc79bfa2e7e92255c5e94c337c52b95167243cc3497785b15214174/reference.csv b/evaluation/v2/cases/42ae0423efc79bfa2e7e92255c5e94c337c52b95167243cc3497785b15214174/reference.csv
new file mode 100644
index 0000000000000000000000000000000000000000..dbd9f98d40be7b19de586d03cf9246a55e73d1c9
--- /dev/null
+++ b/evaluation/v2/cases/42ae0423efc79bfa2e7e92255c5e94c337c52b95167243cc3497785b15214174/reference.csv
@@ -0,0 +1,16 @@
+Vorgangscode,Externer Zahlencode,Artikel,Referenzwert,Serviceklasse,Stückzahl,Stückpreis,Positionskosten,Lagerzone,Registrierter Anzeigename,Bearbeitungshinweis
+RC-000000,00000100,Stahlscharnier,"1 000,50",A,2,1.25,2.50,A,luma,
+RC-000001,00000101,Baumwollriemen,1000.50,B,3,1.38,4.14,B,LUMA," ""Vor dem Transport von Baumwollriemen die beigefügte Karte prüfen; Station 2 bearbeitet diesen Vorgang.""
+2 "
+RC-000021,00000121,Stahlscharnier,1000.50,A,12,3.98,47.76,A,LUMA," ""Vor dem Transport von Stahlscharnier die beigefügte Karte prüfen; Station 1 bearbeitet diesen Vorgang.""
+22 "
+RC-000025,00000125,Baumwollriemen,1000.50,B,5,4.5,22.5,B,LUMA," ""Vor dem Transport von Baumwollriemen die beigefügte Karte prüfen; Station 5 bearbeitet diesen Vorgang.""
+26 "
+RC-000026,00000126,Gummifuß,"1 000,50",C,6,4.63,27.78,C,Luma 東京,Vor dem Transport von Gummifuß die beigefügte Karte prüfen; Station 6 bearbeitet diesen Vorgang.
+RC-000034,00000134,Baumwollriemen,"1 000,50",B,3,5.67,17.01,B,Luma 東京,Vor dem Transport von Baumwollriemen die beigefügte Karte prüfen; Station 7 bearbeitet diesen Vorgang.
+RC-000035,00000135,Gummifuß,1000.50,C,4,5.8,23.2,C,Luma Atelier,Vor dem Transport von Gummifuß die beigefügte Karte prüfen; Station 1 bearbeitet diesen Vorgang.
+RC-000036,00000136,Stahlscharnier,"1 000,50",A,5,5.93,29.65,A,luma,
+RC-000037,00000137,Baumwollriemen,1000.50,B,6,6.06,36.36,B,LUMA," ""Vor dem Transport von Baumwollriemen die beigefügte Karte prüfen; Station 3 bearbeitet diesen Vorgang.""
+38 "
+RC-000038,00000138,Gummifuß,"1 000,50",C,7,6.19,43.33,C,Luma 東京,Vor dem Transport von Gummifuß die beigefügte Karte prüfen; Station 4 bearbeitet diesen Vorgang.
+RC-000055,00000155,Messingverbinder,1000.50,D,2,8.4,16.8,D,Luma Atelier,Vor dem Transport von Messingverbinder die beigefügte Karte prüfen; Station 7 bearbeitet diesen Vorgang.
diff --git a/evaluation/v2/cases/42ae0423efc79bfa2e7e92255c5e94c337c52b95167243cc3497785b15214174/result.json b/evaluation/v2/cases/42ae0423efc79bfa2e7e92255c5e94c337c52b95167243cc3497785b15214174/result.json
new file mode 100644
index 0000000000000000000000000000000000000000..ca85e1f817b0a48fc3204ee4af519827ceb068ed
--- /dev/null
+++ b/evaluation/v2/cases/42ae0423efc79bfa2e7e92255c5e94c337c52b95167243cc3497785b15214174/result.json
@@ -0,0 +1,39 @@
+{
+ "id": "42ae0423efc79bfa2e7e92255c5e94c337c52b95167243cc3497785b15214174",
+ "language": "de",
+ "roles": [
+ "hard_negative:format.number"
+ ],
+ "counts": {
+ "cells": 121,
+ "valid_cells": 121,
+ "exactly_repaired_cells": 0,
+ "valid_cells_harmed": 0,
+ "detected_faulty_cells": 0,
+ "flagged_valid_cells": 0
+ },
+ "categories": {
+ "text.encoding": {},
+ "text.invisible": {},
+ "text.spelling": {},
+ "format.number": {},
+ "format.date": {},
+ "format.boolean": {},
+ "format.case": {},
+ "format.whitespace": {},
+ "format.unit": {},
+ "schema.type": {},
+ "schema.identifier": {},
+ "schema.category": {},
+ "consistency.unit": {},
+ "consistency.dependency": {},
+ "consistency.temporal": {},
+ "missing.required": {},
+ "missing.conditional": {},
+ "structure.shift": {}
+ },
+ "decisions": {},
+ "inference_seconds": 0.32,
+ "details": [],
+ "hard_negative": true
+}
diff --git a/evaluation/v2/cases/42ae0423efc79bfa2e7e92255c5e94c337c52b95167243cc3497785b15214174/review.html b/evaluation/v2/cases/42ae0423efc79bfa2e7e92255c5e94c337c52b95167243cc3497785b15214174/review.html
new file mode 100644
index 0000000000000000000000000000000000000000..0e2c1bb609e4e32a60a6bf5900e7dd1e7ab55bd2
--- /dev/null
+++ b/evaluation/v2/cases/42ae0423efc79bfa2e7e92255c5e94c337c52b95167243cc3497785b15214174/review.html
@@ -0,0 +1,8 @@
+TabFix — end-to-end CSV review
+Does TabFix fix this CSV?
Actual CSV → schema and context → predicted error locations → generated replacements → corrected CSV. The clean reference is used only after inference. No gold error locations or replacement text are supplied to the model. Row numbers below count data rows, excluding the header.
+121Cells scanned
0Errors in input
0Errors repaired
0Valid cells changed
CSV inference review · Threshold 0.9 · CPU inference 0.32 seconds (model loading excluded).
Errors and proposed changes
Strings are quoted to make spaces and empty values visible. Yellow cells below were changed. All other cells are included so unwanted edits remain visible.
Complete model output
Every detection and application decision
[]
\ No newline at end of file
diff --git a/evaluation/v2/cases/42ae0423efc79bfa2e7e92255c5e94c337c52b95167243cc3497785b15214174/schema.xml b/evaluation/v2/cases/42ae0423efc79bfa2e7e92255c5e94c337c52b95167243cc3497785b15214174/schema.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2a47d96ddb37c0010c534caffe57ef35801f8321
--- /dev/null
+++ b/evaluation/v2/cases/42ae0423efc79bfa2e7e92255c5e94c337c52b95167243cc3497785b15214174/schema.xml
@@ -0,0 +1,48 @@
+
+
+[]
+{"case":"upper","pattern":"[A-Z]{2}-\\d{6}","trimmed":true}
+
+
+[]
+{"pattern":"\\d{8}"}
+
+
+[]
+{"enum":["Stahlscharnier","Baumwollriemen","Gummifuß","Messingverbinder"],"lexicon":["Stahlscharnier","Baumwollriemen","Gummifuß","Messingverbinder"],"trimmed":true}
+
+
+[]
+{"accepted_representations":["1 000,50","1000.50"]}
+
+
+[]
+{"enum":["A","B","C","D"]}
+
+
+[]
+{"minimum":0}
+
+
+["decimal_dot"]
+{"minimum":0}
+
+
+["decimal_dot"]
+{"minimum":0}
+
+
+[]
+{"enum":["A","B","C","D"]}
+
+
+[]
+{"case_sensitive":true,"enum":["luma","LUMA","Luma 東京","Luma Atelier"],"whitespace_policy":"preserve"}
+
+
+[]
+{"embedded_delimiters_allowed":true,"whitespace_policy":"preserve"}
+
+[["lookup","item","service"],["multiply","count","unit_price","cost"]]
+{"service":{"Baumwollriemen":"B","Gummifuß":"C","Messingverbinder":"D","Stahlscharnier":"A"}}
+
diff --git a/evaluation/v2/cases/5036ba02f02df9baf2542b0114cf0000fd80e8a9958351cf1b50fca0c70ce42b/input.csv b/evaluation/v2/cases/5036ba02f02df9baf2542b0114cf0000fd80e8a9958351cf1b50fca0c70ce42b/input.csv
new file mode 100644
index 0000000000000000000000000000000000000000..12ae181669946daba78a3fbd24c9222387a3377f
--- /dev/null
+++ b/evaluation/v2/cases/5036ba02f02df9baf2542b0114cf0000fd80e8a9958351cf1b50fca0c70ce42b/input.csv
@@ -0,0 +1,16 @@
+Code dossier,Code numérique externe,Article,Date de demande,Réception confirmée,Collection destinataire,Date de début,Date de fin,Jours écoulés,État du processus,Référence d’approbation requise,Nombre d’articles,Nom affiché enregistré,Consigne de traitement
+RC-000000,00000100,Fragment textile,2026-01-01,true,A,2026-01-01,2026-01-01,0,en attente,,2,luma,
+RC-000001,00000101,Vase en argile,04/01/2026,0,B,2026-01-04,2026-01-05,1,approuvé,AP-000001,3,LUMA," ""Vérifier la fiche jointe avant de déplacer Vase en argile ; le poste 2 traite ce dossier.""
+2 "
+RC-000002,00000102,Carte imprimée,2026-01-07,true,C,2026-01-07,2026-01-09,2,approuvé,AP-000002,4,Luma 東京,Vérifier la fiche jointe avant de déplacer Carte imprimée ; le poste 3 traite ce dossier.
+RC-000003,00000103,Fragment textile,10/01/2026,0,D,2026-01-10,2026-01-13,3,en attente,,5,Luma Atelier,Vérifier la fiche jointe avant de déplacer Fragment textile ; le poste 4 traite ce dossier.
+ RC-000004,00000104,Vase en argile,2026-01-13,TRUE,A,2026-01-13,2026-01-17,4,approuvé,AP-000004,6,luma,
+RC-000005,00000105,Carte imprimée,16/01/2026,0,B,2026-01-16,2026-01-16,0,approuvé,AP-000005,7,LUMA," ""Vérifier la fiche jointe avant de déplacer Carte imprimée ; le poste 6 traite ce dossier.""
+6 "
+RC-000006,00000106,Fragment textile,2026-01-19,true,C,2026-01-19,2026-01-25,6,en attente,,8,Luma 東京,Vérifier la fiche jointe avant de déplacer Fragment textile ; le poste 7 traite ce dossier.
+RC-000016,00000116,Vase en argile,2026-02-18,true,A,2026-02-18,2026-02-21,3,approuvé,AP-000016,7,luma,
+RC-000020,00000120,Carte imprimée,2026-03-02,true,A,2026-03-02,2026-03-02,0,approuvé,AP-000020,11,luma,
+RC-000021,00000121,Fragment textile,05/03/2026,0,B,2026-03-05,2026-03-13,8,en attente,,12,LUMA," ""Vérifier la fiche jointe avant de déplacer Fragment textile ; le poste 1 traite ce dossier.""
+22 "
+RC-000045,00000145,Fragment textile,16/05/2026,0,B,2026-05-16,2026-05-16,0,en attente,,3,LUMA," ""Vérifier la fiche jointe avant de déplacer Fragment textile ; le poste 4 traite ce dossier.""
+46 "
diff --git a/evaluation/v2/cases/5036ba02f02df9baf2542b0114cf0000fd80e8a9958351cf1b50fca0c70ce42b/output/audit.json b/evaluation/v2/cases/5036ba02f02df9baf2542b0114cf0000fd80e8a9958351cf1b50fca0c70ce42b/output/audit.json
new file mode 100644
index 0000000000000000000000000000000000000000..88dab60d7312496d2972d74fa15864c44f71b6ce
--- /dev/null
+++ b/evaluation/v2/cases/5036ba02f02df9baf2542b0114cf0000fd80e8a9958351cf1b50fca0c70ce42b/output/audit.json
@@ -0,0 +1,36 @@
+{
+ "metrics": {
+ "device": "cuda",
+ "rows": 11,
+ "cells": 154,
+ "threshold": 0.9,
+ "load_seconds": 0.0,
+ "inference_seconds": 0.49,
+ "cells_per_second": 312.62,
+ "peak_gpu_bytes": 1687450112,
+ "detected_spans": 2,
+ "changed_cells": 2
+ },
+ "proposals": [
+ {
+ "row": 4,
+ "column": 0,
+ "start": 0,
+ "end": 10,
+ "replacement": "RC-000004",
+ "category": "format.whitespace",
+ "status": "applied",
+ "route": "deterministic"
+ },
+ {
+ "row": 4,
+ "column": 4,
+ "start": 0,
+ "end": 4,
+ "replacement": "true",
+ "category": "format.boolean",
+ "status": "applied",
+ "route": "deterministic"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/evaluation/v2/cases/5036ba02f02df9baf2542b0114cf0000fd80e8a9958351cf1b50fca0c70ce42b/output/corrected.csv b/evaluation/v2/cases/5036ba02f02df9baf2542b0114cf0000fd80e8a9958351cf1b50fca0c70ce42b/output/corrected.csv
new file mode 100644
index 0000000000000000000000000000000000000000..bd315741f7cec232e4a91e3c38947a6f7c8ae56e
--- /dev/null
+++ b/evaluation/v2/cases/5036ba02f02df9baf2542b0114cf0000fd80e8a9958351cf1b50fca0c70ce42b/output/corrected.csv
@@ -0,0 +1,16 @@
+Code dossier,Code numérique externe,Article,Date de demande,Réception confirmée,Collection destinataire,Date de début,Date de fin,Jours écoulés,État du processus,Référence d’approbation requise,Nombre d’articles,Nom affiché enregistré,Consigne de traitement
+RC-000000,00000100,Fragment textile,2026-01-01,true,A,2026-01-01,2026-01-01,0,en attente,,2,luma,
+RC-000001,00000101,Vase en argile,04/01/2026,0,B,2026-01-04,2026-01-05,1,approuvé,AP-000001,3,LUMA," ""Vérifier la fiche jointe avant de déplacer Vase en argile ; le poste 2 traite ce dossier.""
+2 "
+RC-000002,00000102,Carte imprimée,2026-01-07,true,C,2026-01-07,2026-01-09,2,approuvé,AP-000002,4,Luma 東京,Vérifier la fiche jointe avant de déplacer Carte imprimée ; le poste 3 traite ce dossier.
+RC-000003,00000103,Fragment textile,10/01/2026,0,D,2026-01-10,2026-01-13,3,en attente,,5,Luma Atelier,Vérifier la fiche jointe avant de déplacer Fragment textile ; le poste 4 traite ce dossier.
+RC-000004,00000104,Vase en argile,2026-01-13,true,A,2026-01-13,2026-01-17,4,approuvé,AP-000004,6,luma,
+RC-000005,00000105,Carte imprimée,16/01/2026,0,B,2026-01-16,2026-01-16,0,approuvé,AP-000005,7,LUMA," ""Vérifier la fiche jointe avant de déplacer Carte imprimée ; le poste 6 traite ce dossier.""
+6 "
+RC-000006,00000106,Fragment textile,2026-01-19,true,C,2026-01-19,2026-01-25,6,en attente,,8,Luma 東京,Vérifier la fiche jointe avant de déplacer Fragment textile ; le poste 7 traite ce dossier.
+RC-000016,00000116,Vase en argile,2026-02-18,true,A,2026-02-18,2026-02-21,3,approuvé,AP-000016,7,luma,
+RC-000020,00000120,Carte imprimée,2026-03-02,true,A,2026-03-02,2026-03-02,0,approuvé,AP-000020,11,luma,
+RC-000021,00000121,Fragment textile,05/03/2026,0,B,2026-03-05,2026-03-13,8,en attente,,12,LUMA," ""Vérifier la fiche jointe avant de déplacer Fragment textile ; le poste 1 traite ce dossier.""
+22 "
+RC-000045,00000145,Fragment textile,16/05/2026,0,B,2026-05-16,2026-05-16,0,en attente,,3,LUMA," ""Vérifier la fiche jointe avant de déplacer Fragment textile ; le poste 4 traite ce dossier.""
+46 "
diff --git a/evaluation/v2/cases/5036ba02f02df9baf2542b0114cf0000fd80e8a9958351cf1b50fca0c70ce42b/output/review.html b/evaluation/v2/cases/5036ba02f02df9baf2542b0114cf0000fd80e8a9958351cf1b50fca0c70ce42b/output/review.html
new file mode 100644
index 0000000000000000000000000000000000000000..0a091093e6c27051eb96cb3b1ab81e923ec9030b
--- /dev/null
+++ b/evaluation/v2/cases/5036ba02f02df9baf2542b0114cf0000fd80e8a9958351cf1b50fca0c70ce42b/output/review.html
@@ -0,0 +1,29 @@
+TabFix — end-to-end CSV review
+Does TabFix fix this CSV?
Actual CSV → schema and context → predicted error locations → generated replacements → corrected CSV. The clean reference is used only after inference. No gold error locations or replacement text are supplied to the model. Row numbers below count data rows, excluding the header.
+154Cells scanned
—Errors in input
—Errors repaired
—Valid cells changed
CSV inference review · Threshold 0.9 · CPU inference 0.49 seconds (model loading excluded).
Errors and proposed changes
Strings are quoted to make spaces and empty values visible. Yellow cells below were changed. All other cells are included so unwanted edits remain visible.
Complete model output
Every detection and application decision
[
+ {
+ "row": 4,
+ "column": 0,
+ "start": 0,
+ "end": 10,
+ "replacement": "RC-000004",
+ "category": "format.whitespace",
+ "status": "applied",
+ "route": "deterministic"
+ },
+ {
+ "row": 4,
+ "column": 4,
+ "start": 0,
+ "end": 4,
+ "replacement": "true",
+ "category": "format.boolean",
+ "status": "applied",
+ "route": "deterministic"
+ }
+]
\ No newline at end of file
diff --git a/evaluation/v2/cases/5036ba02f02df9baf2542b0114cf0000fd80e8a9958351cf1b50fca0c70ce42b/reference.csv b/evaluation/v2/cases/5036ba02f02df9baf2542b0114cf0000fd80e8a9958351cf1b50fca0c70ce42b/reference.csv
new file mode 100644
index 0000000000000000000000000000000000000000..bd315741f7cec232e4a91e3c38947a6f7c8ae56e
--- /dev/null
+++ b/evaluation/v2/cases/5036ba02f02df9baf2542b0114cf0000fd80e8a9958351cf1b50fca0c70ce42b/reference.csv
@@ -0,0 +1,16 @@
+Code dossier,Code numérique externe,Article,Date de demande,Réception confirmée,Collection destinataire,Date de début,Date de fin,Jours écoulés,État du processus,Référence d’approbation requise,Nombre d’articles,Nom affiché enregistré,Consigne de traitement
+RC-000000,00000100,Fragment textile,2026-01-01,true,A,2026-01-01,2026-01-01,0,en attente,,2,luma,
+RC-000001,00000101,Vase en argile,04/01/2026,0,B,2026-01-04,2026-01-05,1,approuvé,AP-000001,3,LUMA," ""Vérifier la fiche jointe avant de déplacer Vase en argile ; le poste 2 traite ce dossier.""
+2 "
+RC-000002,00000102,Carte imprimée,2026-01-07,true,C,2026-01-07,2026-01-09,2,approuvé,AP-000002,4,Luma 東京,Vérifier la fiche jointe avant de déplacer Carte imprimée ; le poste 3 traite ce dossier.
+RC-000003,00000103,Fragment textile,10/01/2026,0,D,2026-01-10,2026-01-13,3,en attente,,5,Luma Atelier,Vérifier la fiche jointe avant de déplacer Fragment textile ; le poste 4 traite ce dossier.
+RC-000004,00000104,Vase en argile,2026-01-13,true,A,2026-01-13,2026-01-17,4,approuvé,AP-000004,6,luma,
+RC-000005,00000105,Carte imprimée,16/01/2026,0,B,2026-01-16,2026-01-16,0,approuvé,AP-000005,7,LUMA," ""Vérifier la fiche jointe avant de déplacer Carte imprimée ; le poste 6 traite ce dossier.""
+6 "
+RC-000006,00000106,Fragment textile,2026-01-19,true,C,2026-01-19,2026-01-25,6,en attente,,8,Luma 東京,Vérifier la fiche jointe avant de déplacer Fragment textile ; le poste 7 traite ce dossier.
+RC-000016,00000116,Vase en argile,2026-02-18,true,A,2026-02-18,2026-02-21,3,approuvé,AP-000016,7,luma,
+RC-000020,00000120,Carte imprimée,2026-03-02,true,A,2026-03-02,2026-03-02,0,approuvé,AP-000020,11,luma,
+RC-000021,00000121,Fragment textile,05/03/2026,0,B,2026-03-05,2026-03-13,8,en attente,,12,LUMA," ""Vérifier la fiche jointe avant de déplacer Fragment textile ; le poste 1 traite ce dossier.""
+22 "
+RC-000045,00000145,Fragment textile,16/05/2026,0,B,2026-05-16,2026-05-16,0,en attente,,3,LUMA," ""Vérifier la fiche jointe avant de déplacer Fragment textile ; le poste 4 traite ce dossier.""
+46 "
diff --git a/evaluation/v2/cases/5036ba02f02df9baf2542b0114cf0000fd80e8a9958351cf1b50fca0c70ce42b/result.json b/evaluation/v2/cases/5036ba02f02df9baf2542b0114cf0000fd80e8a9958351cf1b50fca0c70ce42b/result.json
new file mode 100644
index 0000000000000000000000000000000000000000..b28f1e328f1af2b2223d375887639c539e975d79
--- /dev/null
+++ b/evaluation/v2/cases/5036ba02f02df9baf2542b0114cf0000fd80e8a9958351cf1b50fca0c70ce42b/result.json
@@ -0,0 +1,97 @@
+{
+ "id": "5036ba02f02df9baf2542b0114cf0000fd80e8a9958351cf1b50fca0c70ce42b",
+ "language": "fr",
+ "roles": [
+ "positive:format.boolean"
+ ],
+ "counts": {
+ "cells": 154,
+ "valid_cells": 152,
+ "exactly_repaired_cells": 2,
+ "valid_cells_harmed": 0,
+ "detected_faulty_cells": 2,
+ "flagged_valid_cells": 0,
+ "faulty_cells": 2
+ },
+ "categories": {
+ "text.encoding": {},
+ "text.invisible": {},
+ "text.spelling": {},
+ "format.number": {},
+ "format.date": {},
+ "format.boolean": {
+ "gold_cells": 1,
+ "detected_cells": 1,
+ "exactly_repaired_cells": 1
+ },
+ "format.case": {},
+ "format.whitespace": {
+ "gold_cells": 1,
+ "detected_cells": 1,
+ "exactly_repaired_cells": 1
+ },
+ "format.unit": {},
+ "schema.type": {},
+ "schema.identifier": {},
+ "schema.category": {},
+ "consistency.unit": {},
+ "consistency.dependency": {},
+ "consistency.temporal": {},
+ "missing.required": {},
+ "missing.conditional": {},
+ "structure.shift": {}
+ },
+ "decisions": {
+ "applied": 2
+ },
+ "inference_seconds": 0.49,
+ "details": [
+ {
+ "row": 4,
+ "column": "Code dossier",
+ "original": " RC-000004",
+ "prediction": "RC-000004",
+ "reference": "RC-000004",
+ "categories": [
+ "format.whitespace"
+ ],
+ "status": "repaired",
+ "decisions": [
+ {
+ "row": 4,
+ "column": 0,
+ "start": 0,
+ "end": 10,
+ "replacement": "RC-000004",
+ "category": "format.whitespace",
+ "status": "applied",
+ "route": "deterministic"
+ }
+ ]
+ },
+ {
+ "row": 4,
+ "column": "Réception confirmée",
+ "original": "TRUE",
+ "prediction": "true",
+ "reference": "true",
+ "categories": [
+ "format.boolean"
+ ],
+ "status": "repaired",
+ "decisions": [
+ {
+ "row": 4,
+ "column": 4,
+ "start": 0,
+ "end": 4,
+ "replacement": "true",
+ "category": "format.boolean",
+ "status": "applied",
+ "route": "deterministic"
+ }
+ ]
+ }
+ ],
+ "hard_negative": false
+}
diff --git a/evaluation/v2/cases/5036ba02f02df9baf2542b0114cf0000fd80e8a9958351cf1b50fca0c70ce42b/review.html b/evaluation/v2/cases/5036ba02f02df9baf2542b0114cf0000fd80e8a9958351cf1b50fca0c70ce42b/review.html
new file mode 100644
index 0000000000000000000000000000000000000000..0fc72a5cd05af5ff7d3d0514bba90bafcd6022f2
--- /dev/null
+++ b/evaluation/v2/cases/5036ba02f02df9baf2542b0114cf0000fd80e8a9958351cf1b50fca0c70ce42b/review.html
@@ -0,0 +1,29 @@
+TabFix — end-to-end CSV review
+Does TabFix fix this CSV?
Actual CSV → schema and context → predicted error locations → generated replacements → corrected CSV. The clean reference is used only after inference. No gold error locations or replacement text are supplied to the model. Row numbers below count data rows, excluding the header.
+154Cells scanned
2Errors in input
2Errors repaired
0Valid cells changed
CSV inference review · Threshold 0.9 · CPU inference 0.49 seconds (model loading excluded).
Errors and proposed changes
Strings are quoted to make spaces and empty values visible. Yellow cells below were changed. All other cells are included so unwanted edits remain visible.
Complete model output
Every detection and application decision
[
+ {
+ "row": 4,
+ "column": 0,
+ "start": 0,
+ "end": 10,
+ "replacement": "RC-000004",
+ "category": "format.whitespace",
+ "status": "applied",
+ "route": "deterministic"
+ },
+ {
+ "row": 4,
+ "column": 4,
+ "start": 0,
+ "end": 4,
+ "replacement": "true",
+ "category": "format.boolean",
+ "status": "applied",
+ "route": "deterministic"
+ }
+]
\ No newline at end of file
diff --git a/evaluation/v2/cases/5036ba02f02df9baf2542b0114cf0000fd80e8a9958351cf1b50fca0c70ce42b/schema.xml b/evaluation/v2/cases/5036ba02f02df9baf2542b0114cf0000fd80e8a9958351cf1b50fca0c70ce42b/schema.xml
new file mode 100644
index 0000000000000000000000000000000000000000..54b11a55b2ffadf538f8485901254449da30f12d
--- /dev/null
+++ b/evaluation/v2/cases/5036ba02f02df9baf2542b0114cf0000fd80e8a9958351cf1b50fca0c70ce42b/schema.xml
@@ -0,0 +1,60 @@
+
+
+[]
+{"case":"upper","pattern":"[A-Z]{2}-\\d{6}","trimmed":true}
+
+
+[]
+{"pattern":"\\d{8}"}
+
+
+[]
+{"enum":["Fragment textile","Vase en argile","Carte imprimée","Panneau sculpté"],"lexicon":["Fragment textile","Vase en argile","Carte imprimée","Panneau sculpté"],"trimmed":true}
+
+
+["YYYY-MM-DD","DD/MM/YYYY"]
+{}
+
+
+[]
+{"enum":["true","false","1","0"]}
+
+
+[]
+{"enum":["A","B","C","D"]}
+
+
+["YYYY-MM-DD"]
+{}
+
+
+["YYYY-MM-DD"]
+{}
+
+
+[]
+{"minimum":0}
+
+
+[]
+{"enum":["en attente","approuvé"]}
+
+
+[]
+{"case":"upper","pattern":"AP-\\d{6}","required_when":{"column":9,"equals":"approuvé"},"trimmed":true}
+
+
+[]
+{"minimum":0}
+
+
+[]
+{"case_sensitive":true,"enum":["luma","LUMA","Luma 東京","Luma Atelier"],"whitespace_policy":"preserve"}
+
+
+[]
+{"embedded_delimiters_allowed":true,"whitespace_policy":"preserve"}
+
+[["interval","start","end","days"],"Approval reference is required exactly when workflow state is approved; pending records may omit it."]
+{}
+
diff --git a/evaluation/v2/cases/6eceda5dd8bccade58555a35ade25610195f33ba3b54df76c348edfd512c5ab7/input.csv b/evaluation/v2/cases/6eceda5dd8bccade58555a35ade25610195f33ba3b54df76c348edfd512c5ab7/input.csv
new file mode 100644
index 0000000000000000000000000000000000000000..bf92c549aa431f7ba4c3b862aa9f83f0884c6a08
--- /dev/null
+++ b/evaluation/v2/cases/6eceda5dd8bccade58555a35ade25610195f33ba3b54df76c348edfd512c5ab7/input.csv
@@ -0,0 +1,15 @@
+Record code,External numeric code,Item,Request date,Receipt confirmed,Destination collection,Start date,End date,Elapsed days,Workflow state,Required approval reference,Item count,Registered display name,Handling note
+RC-000000,00000100,Textile fragment,2026-01-01,true,A,2026-01-01,2026-01-01,0,pending,,2,luma,
+RC-000001,00000101,Clay vessel,04/01/2026,0,B,2026-01-04,2026-01-05,1,approved,AP-000001,3,LUMA," ""Check the attached card before moving Clay vessel; station 2 handles this record.""
+2 "
+RC-000005,00000105,Printed map,16/01/2026,0,B,2026-01-16,2026-01-16,0,approved,AP-000005,7,LUMA," ""Check the attached card before moving Printed map; station 6 handles this record.""
+6 "
+RC-000027,00000127,Textile fragment,23/03/2026,0,D,2026-03-23,2026-03-24,1,pending,,7,Luma Atelier,Check the attached card before moving Textile fragment; station 7 handles this record.
+RC-000034,00000134,Clay vessel,2026-04-13,true,C,2026-04-13,2026-04-21,8,approved,AP-000034,3,Luma 東京,Check the attached card before moving Clay vessel; station 7 handles this record.
+RC-000040,00000140,Clay vessel,2026-05-01,true,A,2026-05-01,2026-05-01,0,approved,AP-000040,9,luma,
+RC-000046,00000146,Clay vessel,2026-05-19,true,C,2026-05-19,2026-05-26,7,approved,AP-000046,4,Luma 東京,Check the attached card before moving Clay vessel; station 5 handles this record.
+RC-000047,00000147,Printed map,22/05/2026,0,D,2026-05-22,2026-05-30,8,approved,AP-000047,5,Luma Atelier,Check the attached card before moving Printed map; station 6 handles this record.
+RC-000048,00000148,Textile fragment,2026-05-25,true,A,2026-05-25,2026-06-03,9,pending,,6,luma,
+RC-000049,00000149,Clay vessel,28/05/2026,0,B,2026-05-28,2026-06-07,10,approved,AP-000049,7,LUMA," ""Check the attached card before moving Clay vessel; station 1 handles this record.""
+50 "
+RC-000050,00000150,Printed map,2026-05-31,true,C,2026-05-31,2026-05-31,0,approved,AP-000050,8,Luma 東京,Check the attached card before moving Printed map; station 2 handles this record.
diff --git a/evaluation/v2/cases/6eceda5dd8bccade58555a35ade25610195f33ba3b54df76c348edfd512c5ab7/output/audit.json b/evaluation/v2/cases/6eceda5dd8bccade58555a35ade25610195f33ba3b54df76c348edfd512c5ab7/output/audit.json
new file mode 100644
index 0000000000000000000000000000000000000000..ae60d32a27f3b0bc0b5f5b1bd78e4be7f6fb8733
--- /dev/null
+++ b/evaluation/v2/cases/6eceda5dd8bccade58555a35ade25610195f33ba3b54df76c348edfd512c5ab7/output/audit.json
@@ -0,0 +1,15 @@
+{
+ "metrics": {
+ "device": "cuda",
+ "rows": 11,
+ "cells": 154,
+ "threshold": 0.9,
+ "load_seconds": 0.0,
+ "inference_seconds": 0.47,
+ "cells_per_second": 326.04,
+ "peak_gpu_bytes": 1671016448,
+ "detected_spans": 0,
+ "changed_cells": 0
+ },
+ "proposals": []
+}
\ No newline at end of file
diff --git a/evaluation/v2/cases/6eceda5dd8bccade58555a35ade25610195f33ba3b54df76c348edfd512c5ab7/output/corrected.csv b/evaluation/v2/cases/6eceda5dd8bccade58555a35ade25610195f33ba3b54df76c348edfd512c5ab7/output/corrected.csv
new file mode 100644
index 0000000000000000000000000000000000000000..bf92c549aa431f7ba4c3b862aa9f83f0884c6a08
--- /dev/null
+++ b/evaluation/v2/cases/6eceda5dd8bccade58555a35ade25610195f33ba3b54df76c348edfd512c5ab7/output/corrected.csv
@@ -0,0 +1,15 @@
+Record code,External numeric code,Item,Request date,Receipt confirmed,Destination collection,Start date,End date,Elapsed days,Workflow state,Required approval reference,Item count,Registered display name,Handling note
+RC-000000,00000100,Textile fragment,2026-01-01,true,A,2026-01-01,2026-01-01,0,pending,,2,luma,
+RC-000001,00000101,Clay vessel,04/01/2026,0,B,2026-01-04,2026-01-05,1,approved,AP-000001,3,LUMA," ""Check the attached card before moving Clay vessel; station 2 handles this record.""
+2 "
+RC-000005,00000105,Printed map,16/01/2026,0,B,2026-01-16,2026-01-16,0,approved,AP-000005,7,LUMA," ""Check the attached card before moving Printed map; station 6 handles this record.""
+6 "
+RC-000027,00000127,Textile fragment,23/03/2026,0,D,2026-03-23,2026-03-24,1,pending,,7,Luma Atelier,Check the attached card before moving Textile fragment; station 7 handles this record.
+RC-000034,00000134,Clay vessel,2026-04-13,true,C,2026-04-13,2026-04-21,8,approved,AP-000034,3,Luma 東京,Check the attached card before moving Clay vessel; station 7 handles this record.
+RC-000040,00000140,Clay vessel,2026-05-01,true,A,2026-05-01,2026-05-01,0,approved,AP-000040,9,luma,
+RC-000046,00000146,Clay vessel,2026-05-19,true,C,2026-05-19,2026-05-26,7,approved,AP-000046,4,Luma 東京,Check the attached card before moving Clay vessel; station 5 handles this record.
+RC-000047,00000147,Printed map,22/05/2026,0,D,2026-05-22,2026-05-30,8,approved,AP-000047,5,Luma Atelier,Check the attached card before moving Printed map; station 6 handles this record.
+RC-000048,00000148,Textile fragment,2026-05-25,true,A,2026-05-25,2026-06-03,9,pending,,6,luma,
+RC-000049,00000149,Clay vessel,28/05/2026,0,B,2026-05-28,2026-06-07,10,approved,AP-000049,7,LUMA," ""Check the attached card before moving Clay vessel; station 1 handles this record.""
+50 "
+RC-000050,00000150,Printed map,2026-05-31,true,C,2026-05-31,2026-05-31,0,approved,AP-000050,8,Luma 東京,Check the attached card before moving Printed map; station 2 handles this record.
diff --git a/evaluation/v2/cases/6eceda5dd8bccade58555a35ade25610195f33ba3b54df76c348edfd512c5ab7/output/review.html b/evaluation/v2/cases/6eceda5dd8bccade58555a35ade25610195f33ba3b54df76c348edfd512c5ab7/output/review.html
new file mode 100644
index 0000000000000000000000000000000000000000..38dd7ee88ceefef4ceb88e75458087c36b1b5471
--- /dev/null
+++ b/evaluation/v2/cases/6eceda5dd8bccade58555a35ade25610195f33ba3b54df76c348edfd512c5ab7/output/review.html
@@ -0,0 +1,7 @@
+TabFix — end-to-end CSV review
+Does TabFix fix this CSV?
Actual CSV → schema and context → predicted error locations → generated replacements → corrected CSV. The clean reference is used only after inference. No gold error locations or replacement text are supplied to the model. Row numbers below count data rows, excluding the header.
+154Cells scanned
—Errors in input
—Errors repaired
—Valid cells changed
CSV inference review · Threshold 0.9 · CPU inference 0.47 seconds (model loading excluded).
Errors and proposed changes
Strings are quoted to make spaces and empty values visible. Yellow cells below were changed. All other cells are included so unwanted edits remain visible.
Complete model output
Every detection and application decision
[]
\ No newline at end of file
diff --git a/evaluation/v2/cases/6eceda5dd8bccade58555a35ade25610195f33ba3b54df76c348edfd512c5ab7/reference.csv b/evaluation/v2/cases/6eceda5dd8bccade58555a35ade25610195f33ba3b54df76c348edfd512c5ab7/reference.csv
new file mode 100644
index 0000000000000000000000000000000000000000..bf92c549aa431f7ba4c3b862aa9f83f0884c6a08
--- /dev/null
+++ b/evaluation/v2/cases/6eceda5dd8bccade58555a35ade25610195f33ba3b54df76c348edfd512c5ab7/reference.csv
@@ -0,0 +1,15 @@
+Record code,External numeric code,Item,Request date,Receipt confirmed,Destination collection,Start date,End date,Elapsed days,Workflow state,Required approval reference,Item count,Registered display name,Handling note
+RC-000000,00000100,Textile fragment,2026-01-01,true,A,2026-01-01,2026-01-01,0,pending,,2,luma,
+RC-000001,00000101,Clay vessel,04/01/2026,0,B,2026-01-04,2026-01-05,1,approved,AP-000001,3,LUMA," ""Check the attached card before moving Clay vessel; station 2 handles this record.""
+2 "
+RC-000005,00000105,Printed map,16/01/2026,0,B,2026-01-16,2026-01-16,0,approved,AP-000005,7,LUMA," ""Check the attached card before moving Printed map; station 6 handles this record.""
+6 "
+RC-000027,00000127,Textile fragment,23/03/2026,0,D,2026-03-23,2026-03-24,1,pending,,7,Luma Atelier,Check the attached card before moving Textile fragment; station 7 handles this record.
+RC-000034,00000134,Clay vessel,2026-04-13,true,C,2026-04-13,2026-04-21,8,approved,AP-000034,3,Luma 東京,Check the attached card before moving Clay vessel; station 7 handles this record.
+RC-000040,00000140,Clay vessel,2026-05-01,true,A,2026-05-01,2026-05-01,0,approved,AP-000040,9,luma,
+RC-000046,00000146,Clay vessel,2026-05-19,true,C,2026-05-19,2026-05-26,7,approved,AP-000046,4,Luma 東京,Check the attached card before moving Clay vessel; station 5 handles this record.
+RC-000047,00000147,Printed map,22/05/2026,0,D,2026-05-22,2026-05-30,8,approved,AP-000047,5,Luma Atelier,Check the attached card before moving Printed map; station 6 handles this record.
+RC-000048,00000148,Textile fragment,2026-05-25,true,A,2026-05-25,2026-06-03,9,pending,,6,luma,
+RC-000049,00000149,Clay vessel,28/05/2026,0,B,2026-05-28,2026-06-07,10,approved,AP-000049,7,LUMA," ""Check the attached card before moving Clay vessel; station 1 handles this record.""
+50 "
+RC-000050,00000150,Printed map,2026-05-31,true,C,2026-05-31,2026-05-31,0,approved,AP-000050,8,Luma 東京,Check the attached card before moving Printed map; station 2 handles this record.
diff --git a/evaluation/v2/cases/6eceda5dd8bccade58555a35ade25610195f33ba3b54df76c348edfd512c5ab7/result.json b/evaluation/v2/cases/6eceda5dd8bccade58555a35ade25610195f33ba3b54df76c348edfd512c5ab7/result.json
new file mode 100644
index 0000000000000000000000000000000000000000..c80d07a97b7d10715e3529389a5bcce55f186667
--- /dev/null
+++ b/evaluation/v2/cases/6eceda5dd8bccade58555a35ade25610195f33ba3b54df76c348edfd512c5ab7/result.json
@@ -0,0 +1,39 @@
+{
+ "id": "6eceda5dd8bccade58555a35ade25610195f33ba3b54df76c348edfd512c5ab7",
+ "language": "en",
+ "roles": [
+ "hard_negative:format.case"
+ ],
+ "counts": {
+ "cells": 154,
+ "valid_cells": 154,
+ "exactly_repaired_cells": 0,
+ "valid_cells_harmed": 0,
+ "detected_faulty_cells": 0,
+ "flagged_valid_cells": 0
+ },
+ "categories": {
+ "text.encoding": {},
+ "text.invisible": {},
+ "text.spelling": {},
+ "format.number": {},
+ "format.date": {},
+ "format.boolean": {},
+ "format.case": {},
+ "format.whitespace": {},
+ "format.unit": {},
+ "schema.type": {},
+ "schema.identifier": {},
+ "schema.category": {},
+ "consistency.unit": {},
+ "consistency.dependency": {},
+ "consistency.temporal": {},
+ "missing.required": {},
+ "missing.conditional": {},
+ "structure.shift": {}
+ },
+ "decisions": {},
+ "inference_seconds": 0.47,
+ "details": [],
+ "hard_negative": true
+}
diff --git a/evaluation/v2/cases/6eceda5dd8bccade58555a35ade25610195f33ba3b54df76c348edfd512c5ab7/review.html b/evaluation/v2/cases/6eceda5dd8bccade58555a35ade25610195f33ba3b54df76c348edfd512c5ab7/review.html
new file mode 100644
index 0000000000000000000000000000000000000000..38ad501ce54937206097589e867bb22845d9ac7a
--- /dev/null
+++ b/evaluation/v2/cases/6eceda5dd8bccade58555a35ade25610195f33ba3b54df76c348edfd512c5ab7/review.html
@@ -0,0 +1,7 @@
+TabFix — end-to-end CSV review
+Does TabFix fix this CSV?
Actual CSV → schema and context → predicted error locations → generated replacements → corrected CSV. The clean reference is used only after inference. No gold error locations or replacement text are supplied to the model. Row numbers below count data rows, excluding the header.
+154Cells scanned
0Errors in input
0Errors repaired
0Valid cells changed
CSV inference review · Threshold 0.9 · CPU inference 0.47 seconds (model loading excluded).
Errors and proposed changes
Strings are quoted to make spaces and empty values visible. Yellow cells below were changed. All other cells are included so unwanted edits remain visible.
Complete model output
Every detection and application decision
[]
\ No newline at end of file
diff --git a/evaluation/v2/cases/6eceda5dd8bccade58555a35ade25610195f33ba3b54df76c348edfd512c5ab7/schema.xml b/evaluation/v2/cases/6eceda5dd8bccade58555a35ade25610195f33ba3b54df76c348edfd512c5ab7/schema.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0f6752764b9cbe328a0942b3a735a2ce3dc1af9d
--- /dev/null
+++ b/evaluation/v2/cases/6eceda5dd8bccade58555a35ade25610195f33ba3b54df76c348edfd512c5ab7/schema.xml
@@ -0,0 +1,60 @@
+
+
+[]
+{"case":"upper","pattern":"[A-Z]{2}-\\d{6}","trimmed":true}
+
+
+[]
+{"pattern":"\\d{8}"}
+
+
+[]
+{"enum":["Textile fragment","Clay vessel","Printed map","Carved panel"],"lexicon":["Textile fragment","Clay vessel","Printed map","Carved panel"],"trimmed":true}
+
+
+["YYYY-MM-DD","DD/MM/YYYY"]
+{}
+
+
+[]
+{"enum":["true","false","1","0"]}
+
+
+[]
+{"enum":["A","B","C","D"]}
+
+
+["YYYY-MM-DD"]
+{}
+
+
+["YYYY-MM-DD"]
+{}
+
+
+[]
+{"minimum":0}
+
+
+[]
+{"enum":["pending","approved"]}
+
+
+[]
+{"case":"upper","pattern":"AP-\\d{6}","required_when":{"column":9,"equals":"approved"},"trimmed":true}
+
+
+[]
+{"minimum":0}
+
+
+[]
+{"case_sensitive":true,"enum":["luma","LUMA","Luma 東京","Luma Atelier"],"whitespace_policy":"preserve"}
+
+
+[]
+{"embedded_delimiters_allowed":true,"whitespace_policy":"preserve"}
+
+[["interval","start","end","days"],"Approval reference is required exactly when workflow state is approved; pending records may omit it."]
+{}
+
diff --git a/evaluation/v2/cases/7264aa617c2f6a9abb0463459973e38ba98b12a4589ff77da50876b5fd353be0/input.csv b/evaluation/v2/cases/7264aa617c2f6a9abb0463459973e38ba98b12a4589ff77da50876b5fd353be0/input.csv
new file mode 100644
index 0000000000000000000000000000000000000000..57744583cbba2bb27865ad1ef6ff762e9b3d8bb8
--- /dev/null
+++ b/evaluation/v2/cases/7264aa617c2f6a9abb0463459973e38ba98b12a4589ff77da50876b5fd353be0/input.csv
@@ -0,0 +1,15 @@
+Vorgangscode,Externer Zahlencode,Artikel,Antragsdatum,Eingang bestätigt,Zielsammlung,Anfangsdatum,Enddatum,Vergangene Tage,Bearbeitungsstatus,Erforderliche Freigabereferenz,Stückzahl,Registrierter Anzeigename,Bearbeitungshinweis
+RC-000000,00000100,Textilfragment,2026-01-01,true,A,2026-01-01,2026-01-01,0,ausstehend,,2,luma,
+RC-000001,00000101,Tongefäß,04/01/2026,0,B,2026-01-04,2026-01-05,1,genehmigt,AP-000001,3,LUMA," ""Vor dem Transport von Tongefäß die beigefügte Karte prüfen; Station 2 bearbeitet diesen Vorgang.""
+2 "
+RC-000004,00000104,Tongefäß,2026-01-13,true,A,2026-01-13,2026-01-17,4,genehmigt,AP-000004,6,luma,
+RC-000020,00000120,Gedruckte Karte,2026-03-02,true,A,2026-03-02,2026-03-02,0,genehmigt,AP-000020,11,luma,
+RC-000027,00000127,Textilfragment,23/03/2026,0,D,2026-03-23,2026-03-24,1,ausstehend,,7,Luma Atelier,Vor dem Transport von Textilfragment die beigefügte Karte prüfen; Station 7 bearbeitet diesen Vorgang.
+RC-000028,00000128,Tongefäß,2026-03-26,true,A,2026-03-26,2026-03-28,2,genehmigt,AP-000028,8,luma,
+RC-000049,00000149,Tongefäß,28/05/2026,0,B,2026-05-28,2026-06-07,10,genehmigt,AP-000049,7,LUMA," ""Vor dem Transport von Tongefäß die beigefügte Karte prüfen; Station 1 bearbeitet diesen Vorgang.""
+50 "
+RC-000050,00000150,Gedruckte Karte,2026-05-31,true,C,2026-05-31,2026-05-31,0,genehmigt,AP-000050,8,Luma 東京,Vor dem Transport von Gedruckte Karte die beigefügte Karte prüfen; Station 2 bearbeitet diesen Vorgang.
+RC-000051,00000151,Textilfragment,03/06/2026,0,D,2026-06-03,2026-06-15,12,ausstehend,,9,Luma Atelier,Vor dem Transport von Textilfragment die beigefügte Karte prüfen; Station 3 bearbeitet diesen Vorgang.
+RC-000052,00000152,Tongefäß,2026-06-06,true,A,2026-06-06,2026-06-06,0,genehmigt,AP-000052,10,luma,
+RC-000053,00000153,Gedruckte Karte,09/06/2026,0,B,2026-06-09,2026-06-10,1,genehmigt,AP-000053,11,LUMA," ""Vor dem Transport von Gedruckte Karte die beigefügte Karte prüfen; Station 5 bearbeitet diesen Vorgang.""
+54 "
diff --git a/evaluation/v2/cases/7264aa617c2f6a9abb0463459973e38ba98b12a4589ff77da50876b5fd353be0/output/audit.json b/evaluation/v2/cases/7264aa617c2f6a9abb0463459973e38ba98b12a4589ff77da50876b5fd353be0/output/audit.json
new file mode 100644
index 0000000000000000000000000000000000000000..1182e0b32922d338f362c19d8b5b79301cd06549
--- /dev/null
+++ b/evaluation/v2/cases/7264aa617c2f6a9abb0463459973e38ba98b12a4589ff77da50876b5fd353be0/output/audit.json
@@ -0,0 +1,15 @@
+{
+ "metrics": {
+ "device": "cuda",
+ "rows": 11,
+ "cells": 154,
+ "threshold": 0.9,
+ "load_seconds": 0.0,
+ "inference_seconds": 0.49,
+ "cells_per_second": 315.47,
+ "peak_gpu_bytes": 1690405376,
+ "detected_spans": 0,
+ "changed_cells": 0
+ },
+ "proposals": []
+}
\ No newline at end of file
diff --git a/evaluation/v2/cases/7264aa617c2f6a9abb0463459973e38ba98b12a4589ff77da50876b5fd353be0/output/corrected.csv b/evaluation/v2/cases/7264aa617c2f6a9abb0463459973e38ba98b12a4589ff77da50876b5fd353be0/output/corrected.csv
new file mode 100644
index 0000000000000000000000000000000000000000..57744583cbba2bb27865ad1ef6ff762e9b3d8bb8
--- /dev/null
+++ b/evaluation/v2/cases/7264aa617c2f6a9abb0463459973e38ba98b12a4589ff77da50876b5fd353be0/output/corrected.csv
@@ -0,0 +1,15 @@
+Vorgangscode,Externer Zahlencode,Artikel,Antragsdatum,Eingang bestätigt,Zielsammlung,Anfangsdatum,Enddatum,Vergangene Tage,Bearbeitungsstatus,Erforderliche Freigabereferenz,Stückzahl,Registrierter Anzeigename,Bearbeitungshinweis
+RC-000000,00000100,Textilfragment,2026-01-01,true,A,2026-01-01,2026-01-01,0,ausstehend,,2,luma,
+RC-000001,00000101,Tongefäß,04/01/2026,0,B,2026-01-04,2026-01-05,1,genehmigt,AP-000001,3,LUMA," ""Vor dem Transport von Tongefäß die beigefügte Karte prüfen; Station 2 bearbeitet diesen Vorgang.""
+2 "
+RC-000004,00000104,Tongefäß,2026-01-13,true,A,2026-01-13,2026-01-17,4,genehmigt,AP-000004,6,luma,
+RC-000020,00000120,Gedruckte Karte,2026-03-02,true,A,2026-03-02,2026-03-02,0,genehmigt,AP-000020,11,luma,
+RC-000027,00000127,Textilfragment,23/03/2026,0,D,2026-03-23,2026-03-24,1,ausstehend,,7,Luma Atelier,Vor dem Transport von Textilfragment die beigefügte Karte prüfen; Station 7 bearbeitet diesen Vorgang.
+RC-000028,00000128,Tongefäß,2026-03-26,true,A,2026-03-26,2026-03-28,2,genehmigt,AP-000028,8,luma,
+RC-000049,00000149,Tongefäß,28/05/2026,0,B,2026-05-28,2026-06-07,10,genehmigt,AP-000049,7,LUMA," ""Vor dem Transport von Tongefäß die beigefügte Karte prüfen; Station 1 bearbeitet diesen Vorgang.""
+50 "
+RC-000050,00000150,Gedruckte Karte,2026-05-31,true,C,2026-05-31,2026-05-31,0,genehmigt,AP-000050,8,Luma 東京,Vor dem Transport von Gedruckte Karte die beigefügte Karte prüfen; Station 2 bearbeitet diesen Vorgang.
+RC-000051,00000151,Textilfragment,03/06/2026,0,D,2026-06-03,2026-06-15,12,ausstehend,,9,Luma Atelier,Vor dem Transport von Textilfragment die beigefügte Karte prüfen; Station 3 bearbeitet diesen Vorgang.
+RC-000052,00000152,Tongefäß,2026-06-06,true,A,2026-06-06,2026-06-06,0,genehmigt,AP-000052,10,luma,
+RC-000053,00000153,Gedruckte Karte,09/06/2026,0,B,2026-06-09,2026-06-10,1,genehmigt,AP-000053,11,LUMA," ""Vor dem Transport von Gedruckte Karte die beigefügte Karte prüfen; Station 5 bearbeitet diesen Vorgang.""
+54 "
diff --git a/evaluation/v2/cases/7264aa617c2f6a9abb0463459973e38ba98b12a4589ff77da50876b5fd353be0/output/review.html b/evaluation/v2/cases/7264aa617c2f6a9abb0463459973e38ba98b12a4589ff77da50876b5fd353be0/output/review.html
new file mode 100644
index 0000000000000000000000000000000000000000..13cd5916b680a3a14d6c25d15c8871a6766fdb66
--- /dev/null
+++ b/evaluation/v2/cases/7264aa617c2f6a9abb0463459973e38ba98b12a4589ff77da50876b5fd353be0/output/review.html
@@ -0,0 +1,7 @@
+TabFix — end-to-end CSV review
+Does TabFix fix this CSV?
Actual CSV → schema and context → predicted error locations → generated replacements → corrected CSV. The clean reference is used only after inference. No gold error locations or replacement text are supplied to the model. Row numbers below count data rows, excluding the header.
+154Cells scanned
—Errors in input
—Errors repaired
—Valid cells changed
CSV inference review · Threshold 0.9 · CPU inference 0.49 seconds (model loading excluded).
Errors and proposed changes
Strings are quoted to make spaces and empty values visible. Yellow cells below were changed. All other cells are included so unwanted edits remain visible.
Complete model output
Every detection and application decision
[]
\ No newline at end of file
diff --git a/evaluation/v2/cases/7264aa617c2f6a9abb0463459973e38ba98b12a4589ff77da50876b5fd353be0/reference.csv b/evaluation/v2/cases/7264aa617c2f6a9abb0463459973e38ba98b12a4589ff77da50876b5fd353be0/reference.csv
new file mode 100644
index 0000000000000000000000000000000000000000..57744583cbba2bb27865ad1ef6ff762e9b3d8bb8
--- /dev/null
+++ b/evaluation/v2/cases/7264aa617c2f6a9abb0463459973e38ba98b12a4589ff77da50876b5fd353be0/reference.csv
@@ -0,0 +1,15 @@
+Vorgangscode,Externer Zahlencode,Artikel,Antragsdatum,Eingang bestätigt,Zielsammlung,Anfangsdatum,Enddatum,Vergangene Tage,Bearbeitungsstatus,Erforderliche Freigabereferenz,Stückzahl,Registrierter Anzeigename,Bearbeitungshinweis
+RC-000000,00000100,Textilfragment,2026-01-01,true,A,2026-01-01,2026-01-01,0,ausstehend,,2,luma,
+RC-000001,00000101,Tongefäß,04/01/2026,0,B,2026-01-04,2026-01-05,1,genehmigt,AP-000001,3,LUMA," ""Vor dem Transport von Tongefäß die beigefügte Karte prüfen; Station 2 bearbeitet diesen Vorgang.""
+2 "
+RC-000004,00000104,Tongefäß,2026-01-13,true,A,2026-01-13,2026-01-17,4,genehmigt,AP-000004,6,luma,
+RC-000020,00000120,Gedruckte Karte,2026-03-02,true,A,2026-03-02,2026-03-02,0,genehmigt,AP-000020,11,luma,
+RC-000027,00000127,Textilfragment,23/03/2026,0,D,2026-03-23,2026-03-24,1,ausstehend,,7,Luma Atelier,Vor dem Transport von Textilfragment die beigefügte Karte prüfen; Station 7 bearbeitet diesen Vorgang.
+RC-000028,00000128,Tongefäß,2026-03-26,true,A,2026-03-26,2026-03-28,2,genehmigt,AP-000028,8,luma,
+RC-000049,00000149,Tongefäß,28/05/2026,0,B,2026-05-28,2026-06-07,10,genehmigt,AP-000049,7,LUMA," ""Vor dem Transport von Tongefäß die beigefügte Karte prüfen; Station 1 bearbeitet diesen Vorgang.""
+50 "
+RC-000050,00000150,Gedruckte Karte,2026-05-31,true,C,2026-05-31,2026-05-31,0,genehmigt,AP-000050,8,Luma 東京,Vor dem Transport von Gedruckte Karte die beigefügte Karte prüfen; Station 2 bearbeitet diesen Vorgang.
+RC-000051,00000151,Textilfragment,03/06/2026,0,D,2026-06-03,2026-06-15,12,ausstehend,,9,Luma Atelier,Vor dem Transport von Textilfragment die beigefügte Karte prüfen; Station 3 bearbeitet diesen Vorgang.
+RC-000052,00000152,Tongefäß,2026-06-06,true,A,2026-06-06,2026-06-06,0,genehmigt,AP-000052,10,luma,
+RC-000053,00000153,Gedruckte Karte,09/06/2026,0,B,2026-06-09,2026-06-10,1,genehmigt,AP-000053,11,LUMA," ""Vor dem Transport von Gedruckte Karte die beigefügte Karte prüfen; Station 5 bearbeitet diesen Vorgang.""
+54 "
diff --git a/evaluation/v2/cases/7264aa617c2f6a9abb0463459973e38ba98b12a4589ff77da50876b5fd353be0/result.json b/evaluation/v2/cases/7264aa617c2f6a9abb0463459973e38ba98b12a4589ff77da50876b5fd353be0/result.json
new file mode 100644
index 0000000000000000000000000000000000000000..ce7e5736b1ef9ffad40f9053dd6c2ee3e36882c1
--- /dev/null
+++ b/evaluation/v2/cases/7264aa617c2f6a9abb0463459973e38ba98b12a4589ff77da50876b5fd353be0/result.json
@@ -0,0 +1,39 @@
+{
+ "id": "7264aa617c2f6a9abb0463459973e38ba98b12a4589ff77da50876b5fd353be0",
+ "language": "de",
+ "roles": [
+ "hard_negative:format.boolean"
+ ],
+ "counts": {
+ "cells": 154,
+ "valid_cells": 154,
+ "exactly_repaired_cells": 0,
+ "valid_cells_harmed": 0,
+ "detected_faulty_cells": 0,
+ "flagged_valid_cells": 0
+ },
+ "categories": {
+ "text.encoding": {},
+ "text.invisible": {},
+ "text.spelling": {},
+ "format.number": {},
+ "format.date": {},
+ "format.boolean": {},
+ "format.case": {},
+ "format.whitespace": {},
+ "format.unit": {},
+ "schema.type": {},
+ "schema.identifier": {},
+ "schema.category": {},
+ "consistency.unit": {},
+ "consistency.dependency": {},
+ "consistency.temporal": {},
+ "missing.required": {},
+ "missing.conditional": {},
+ "structure.shift": {}
+ },
+ "decisions": {},
+ "inference_seconds": 0.49,
+ "details": [],
+ "hard_negative": true
+}
diff --git a/evaluation/v2/cases/7264aa617c2f6a9abb0463459973e38ba98b12a4589ff77da50876b5fd353be0/review.html b/evaluation/v2/cases/7264aa617c2f6a9abb0463459973e38ba98b12a4589ff77da50876b5fd353be0/review.html
new file mode 100644
index 0000000000000000000000000000000000000000..b7b9ec14558c60673ca87a5c610a6e219d7b04fc
--- /dev/null
+++ b/evaluation/v2/cases/7264aa617c2f6a9abb0463459973e38ba98b12a4589ff77da50876b5fd353be0/review.html
@@ -0,0 +1,7 @@
+TabFix — end-to-end CSV review
+Does TabFix fix this CSV?
Actual CSV → schema and context → predicted error locations → generated replacements → corrected CSV. The clean reference is used only after inference. No gold error locations or replacement text are supplied to the model. Row numbers below count data rows, excluding the header.
+154Cells scanned
0Errors in input
0Errors repaired
0Valid cells changed
CSV inference review · Threshold 0.9 · CPU inference 0.49 seconds (model loading excluded).
Errors and proposed changes
Strings are quoted to make spaces and empty values visible. Yellow cells below were changed. All other cells are included so unwanted edits remain visible.
Complete model output
Every detection and application decision
[]
\ No newline at end of file
diff --git a/evaluation/v2/cases/7264aa617c2f6a9abb0463459973e38ba98b12a4589ff77da50876b5fd353be0/schema.xml b/evaluation/v2/cases/7264aa617c2f6a9abb0463459973e38ba98b12a4589ff77da50876b5fd353be0/schema.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f700cbe1cecfe7f9decc6cbff9cc849afb824c17
--- /dev/null
+++ b/evaluation/v2/cases/7264aa617c2f6a9abb0463459973e38ba98b12a4589ff77da50876b5fd353be0/schema.xml
@@ -0,0 +1,60 @@
+
+
+[]
+{"case":"upper","pattern":"[A-Z]{2}-\\d{6}","trimmed":true}
+
+
+[]
+{"pattern":"\\d{8}"}
+
+
+[]
+{"enum":["Textilfragment","Tongefäß","Gedruckte Karte","Geschnitzte Tafel"],"lexicon":["Textilfragment","Tongefäß","Gedruckte Karte","Geschnitzte Tafel"],"trimmed":true}
+
+
+["YYYY-MM-DD","DD/MM/YYYY"]
+{}
+
+
+[]
+{"enum":["true","false","1","0"]}
+
+
+[]
+{"enum":["A","B","C","D"]}
+
+
+["YYYY-MM-DD"]
+{}
+
+
+["YYYY-MM-DD"]
+{}
+
+
+[]
+{"minimum":0}
+
+
+[]
+{"enum":["ausstehend","genehmigt"]}
+
+
+[]
+{"case":"upper","pattern":"AP-\\d{6}","required_when":{"column":9,"equals":"genehmigt"},"trimmed":true}
+
+
+[]
+{"minimum":0}
+
+
+[]
+{"case_sensitive":true,"enum":["luma","LUMA","Luma 東京","Luma Atelier"],"whitespace_policy":"preserve"}
+
+
+[]
+{"embedded_delimiters_allowed":true,"whitespace_policy":"preserve"}
+
+[["interval","start","end","days"],"Approval reference is required exactly when workflow state is approved; pending records may omit it."]
+{}
+
diff --git a/evaluation/v2/cases/95e9fdf26fc178038d17705c13b1e33edcdd0074c14db6fb67518bfe22725cab/input.csv b/evaluation/v2/cases/95e9fdf26fc178038d17705c13b1e33edcdd0074c14db6fb67518bfe22725cab/input.csv
new file mode 100644
index 0000000000000000000000000000000000000000..c59cb4bbf8a8ed1105e403df2db51433d8e7a06a
--- /dev/null
+++ b/evaluation/v2/cases/95e9fdf26fc178038d17705c13b1e33edcdd0074c14db6fb67518bfe22725cab/input.csv
@@ -0,0 +1,14 @@
+Kod rekordu,Zewnętrzny kod cyfrowy,Pozycja,Data wniosku,Odbiór potwierdzony,Kolekcja docelowa,Data rozpoczęcia,Data zakończenia,Liczba dni,Stan procesu,Wymagany numer zatwierdzenia,Liczba sztuk,Zarejestrowana nazwa,Uwagi obsługi
+RC-000000,00000100,Fragment tkaniny,2026-01-01,true,A,2026-01-01,2026-01-01,0,oczekujące,,2,luma,
+RC-000001,00000101,Naczynie gliniane,04/01/2026,0,B,2026-01-04,2026-01-05,1,zatwierdzone,AP-000001,3,LUMA," ""Przed przeniesieniem Naczynie gliniane sprawdzić dołączoną kartę; stanowisko 2 obsługuje ten rekord.""
+2 "
+RC-000007,00000107,Naczynie gliniane,22/01/2026,0,D,2026-01-22,2026-01-29,7,zatwierdzone,AP-000007,9,Luma Atelier,Przed przeniesieniem Naczynie gliniane sprawdzić dołączoną kartę; stanowisko 1 obsługuje ten rekord.
+RC-000011,00000111,Mapa drukowana,03/02/2026,0,D,2026-02-03,2026-02-14,11,zatwierdzone,AP-000011,2,Luma Atelier,Przed przeniesieniem Mapa drukowana sprawdzić dołączoną kartę; stanowisko 5 obsługuje ten rekord.
+RC-000032,00000132,Mapa drukowana,2026-04-07,true,A,2026-04-07,2026-04-13,6,zatwierdzone,AP-000032,12,luma,
+RC-000035,00000135,Mapa drukowana,16/04/2026,0,D,2026-04-16,2026-04-16,0,zatwierdzone,AP-000035,4,Luma Atelier,Przed przeniesieniem Mapa drukowana sprawdzić dołączoną kartę; stanowisko 1 obsługuje ten rekord.
+RC-000043,00000143,Naczynie gliniane,10/05/2026,0,D,2026-05-10,2026-05-14,4,zatwierdzone,AP-000043,12,Luma Atelier,Przed przeniesieniem Naczynie gliniane sprawdzić dołączoną kartę; stanowisko 2 obsługuje ten rekord.
+RC-000044,00000144,Mapa drukowana,2026-05-13,true,A,2026-05-13,2026-05-18,5,zatwierdzone,AP-000044,2,luma,
+RC-000045,00000145,Fragment tkaniny,16/05/2026,0,B,2026-05-16,2026-05-16,0,oczekujące,,3,LUMA," ""Przed przeniesieniem Fragment tkaniny sprawdzić dołączoną kartę; stanowisko 4 obsługuje ten rekord.""
+46 "
+RC-000046,00000146,Naczynie gliniane,2026-05-19,true,C,2026-05-19,2026-05-26,7,zatwierdzone,AP-000046,4,Luma 東京,Przed przeniesieniem Naczynie gliniane sprawdzić dołączoną kartę; stanowisko 5 obsługuje ten rekord.
+RC-000047,00000147,Mapa drukowana,22/05/2026,0,D,2026-05-22,2026-05-30,8,zatwierdzone,AP-000047,5,Luma Atelier,Przed przeniesieniem Mapa drukowana sprawdzić dołączoną kartę; stanowisko 6 obsługuje ten rekord.
diff --git a/evaluation/v2/cases/95e9fdf26fc178038d17705c13b1e33edcdd0074c14db6fb67518bfe22725cab/output/audit.json b/evaluation/v2/cases/95e9fdf26fc178038d17705c13b1e33edcdd0074c14db6fb67518bfe22725cab/output/audit.json
new file mode 100644
index 0000000000000000000000000000000000000000..32492739fb2142187035d7e7a139cdc00397af70
--- /dev/null
+++ b/evaluation/v2/cases/95e9fdf26fc178038d17705c13b1e33edcdd0074c14db6fb67518bfe22725cab/output/audit.json
@@ -0,0 +1,15 @@
+{
+ "metrics": {
+ "device": "cuda",
+ "rows": 11,
+ "cells": 154,
+ "threshold": 0.9,
+ "load_seconds": 0.0,
+ "inference_seconds": 0.57,
+ "cells_per_second": 272.13,
+ "peak_gpu_bytes": 1715031040,
+ "detected_spans": 0,
+ "changed_cells": 0
+ },
+ "proposals": []
+}
\ No newline at end of file
diff --git a/evaluation/v2/cases/95e9fdf26fc178038d17705c13b1e33edcdd0074c14db6fb67518bfe22725cab/output/corrected.csv b/evaluation/v2/cases/95e9fdf26fc178038d17705c13b1e33edcdd0074c14db6fb67518bfe22725cab/output/corrected.csv
new file mode 100644
index 0000000000000000000000000000000000000000..c59cb4bbf8a8ed1105e403df2db51433d8e7a06a
--- /dev/null
+++ b/evaluation/v2/cases/95e9fdf26fc178038d17705c13b1e33edcdd0074c14db6fb67518bfe22725cab/output/corrected.csv
@@ -0,0 +1,14 @@
+Kod rekordu,Zewnętrzny kod cyfrowy,Pozycja,Data wniosku,Odbiór potwierdzony,Kolekcja docelowa,Data rozpoczęcia,Data zakończenia,Liczba dni,Stan procesu,Wymagany numer zatwierdzenia,Liczba sztuk,Zarejestrowana nazwa,Uwagi obsługi
+RC-000000,00000100,Fragment tkaniny,2026-01-01,true,A,2026-01-01,2026-01-01,0,oczekujące,,2,luma,
+RC-000001,00000101,Naczynie gliniane,04/01/2026,0,B,2026-01-04,2026-01-05,1,zatwierdzone,AP-000001,3,LUMA," ""Przed przeniesieniem Naczynie gliniane sprawdzić dołączoną kartę; stanowisko 2 obsługuje ten rekord.""
+2 "
+RC-000007,00000107,Naczynie gliniane,22/01/2026,0,D,2026-01-22,2026-01-29,7,zatwierdzone,AP-000007,9,Luma Atelier,Przed przeniesieniem Naczynie gliniane sprawdzić dołączoną kartę; stanowisko 1 obsługuje ten rekord.
+RC-000011,00000111,Mapa drukowana,03/02/2026,0,D,2026-02-03,2026-02-14,11,zatwierdzone,AP-000011,2,Luma Atelier,Przed przeniesieniem Mapa drukowana sprawdzić dołączoną kartę; stanowisko 5 obsługuje ten rekord.
+RC-000032,00000132,Mapa drukowana,2026-04-07,true,A,2026-04-07,2026-04-13,6,zatwierdzone,AP-000032,12,luma,
+RC-000035,00000135,Mapa drukowana,16/04/2026,0,D,2026-04-16,2026-04-16,0,zatwierdzone,AP-000035,4,Luma Atelier,Przed przeniesieniem Mapa drukowana sprawdzić dołączoną kartę; stanowisko 1 obsługuje ten rekord.
+RC-000043,00000143,Naczynie gliniane,10/05/2026,0,D,2026-05-10,2026-05-14,4,zatwierdzone,AP-000043,12,Luma Atelier,Przed przeniesieniem Naczynie gliniane sprawdzić dołączoną kartę; stanowisko 2 obsługuje ten rekord.
+RC-000044,00000144,Mapa drukowana,2026-05-13,true,A,2026-05-13,2026-05-18,5,zatwierdzone,AP-000044,2,luma,
+RC-000045,00000145,Fragment tkaniny,16/05/2026,0,B,2026-05-16,2026-05-16,0,oczekujące,,3,LUMA," ""Przed przeniesieniem Fragment tkaniny sprawdzić dołączoną kartę; stanowisko 4 obsługuje ten rekord.""
+46 "
+RC-000046,00000146,Naczynie gliniane,2026-05-19,true,C,2026-05-19,2026-05-26,7,zatwierdzone,AP-000046,4,Luma 東京,Przed przeniesieniem Naczynie gliniane sprawdzić dołączoną kartę; stanowisko 5 obsługuje ten rekord.
+RC-000047,00000147,Mapa drukowana,22/05/2026,0,D,2026-05-22,2026-05-30,8,zatwierdzone,AP-000047,5,Luma Atelier,Przed przeniesieniem Mapa drukowana sprawdzić dołączoną kartę; stanowisko 6 obsługuje ten rekord.
diff --git a/evaluation/v2/cases/95e9fdf26fc178038d17705c13b1e33edcdd0074c14db6fb67518bfe22725cab/output/review.html b/evaluation/v2/cases/95e9fdf26fc178038d17705c13b1e33edcdd0074c14db6fb67518bfe22725cab/output/review.html
new file mode 100644
index 0000000000000000000000000000000000000000..e51c10e157367181388c4a8a54df1d229cabc913
--- /dev/null
+++ b/evaluation/v2/cases/95e9fdf26fc178038d17705c13b1e33edcdd0074c14db6fb67518bfe22725cab/output/review.html
@@ -0,0 +1,6 @@
+TabFix — end-to-end CSV review
+Does TabFix fix this CSV?
Actual CSV → schema and context → predicted error locations → generated replacements → corrected CSV. The clean reference is used only after inference. No gold error locations or replacement text are supplied to the model. Row numbers below count data rows, excluding the header.
+154Cells scanned
—Errors in input
—Errors repaired
—Valid cells changed
CSV inference review · Threshold 0.9 · CPU inference 0.57 seconds (model loading excluded).
Errors and proposed changes
Strings are quoted to make spaces and empty values visible. Yellow cells below were changed. All other cells are included so unwanted edits remain visible.
Complete model output
Every detection and application decision
[]
\ No newline at end of file
diff --git a/evaluation/v2/cases/95e9fdf26fc178038d17705c13b1e33edcdd0074c14db6fb67518bfe22725cab/reference.csv b/evaluation/v2/cases/95e9fdf26fc178038d17705c13b1e33edcdd0074c14db6fb67518bfe22725cab/reference.csv
new file mode 100644
index 0000000000000000000000000000000000000000..c59cb4bbf8a8ed1105e403df2db51433d8e7a06a
--- /dev/null
+++ b/evaluation/v2/cases/95e9fdf26fc178038d17705c13b1e33edcdd0074c14db6fb67518bfe22725cab/reference.csv
@@ -0,0 +1,14 @@
+Kod rekordu,Zewnętrzny kod cyfrowy,Pozycja,Data wniosku,Odbiór potwierdzony,Kolekcja docelowa,Data rozpoczęcia,Data zakończenia,Liczba dni,Stan procesu,Wymagany numer zatwierdzenia,Liczba sztuk,Zarejestrowana nazwa,Uwagi obsługi
+RC-000000,00000100,Fragment tkaniny,2026-01-01,true,A,2026-01-01,2026-01-01,0,oczekujące,,2,luma,
+RC-000001,00000101,Naczynie gliniane,04/01/2026,0,B,2026-01-04,2026-01-05,1,zatwierdzone,AP-000001,3,LUMA," ""Przed przeniesieniem Naczynie gliniane sprawdzić dołączoną kartę; stanowisko 2 obsługuje ten rekord.""
+2 "
+RC-000007,00000107,Naczynie gliniane,22/01/2026,0,D,2026-01-22,2026-01-29,7,zatwierdzone,AP-000007,9,Luma Atelier,Przed przeniesieniem Naczynie gliniane sprawdzić dołączoną kartę; stanowisko 1 obsługuje ten rekord.
+RC-000011,00000111,Mapa drukowana,03/02/2026,0,D,2026-02-03,2026-02-14,11,zatwierdzone,AP-000011,2,Luma Atelier,Przed przeniesieniem Mapa drukowana sprawdzić dołączoną kartę; stanowisko 5 obsługuje ten rekord.
+RC-000032,00000132,Mapa drukowana,2026-04-07,true,A,2026-04-07,2026-04-13,6,zatwierdzone,AP-000032,12,luma,
+RC-000035,00000135,Mapa drukowana,16/04/2026,0,D,2026-04-16,2026-04-16,0,zatwierdzone,AP-000035,4,Luma Atelier,Przed przeniesieniem Mapa drukowana sprawdzić dołączoną kartę; stanowisko 1 obsługuje ten rekord.
+RC-000043,00000143,Naczynie gliniane,10/05/2026,0,D,2026-05-10,2026-05-14,4,zatwierdzone,AP-000043,12,Luma Atelier,Przed przeniesieniem Naczynie gliniane sprawdzić dołączoną kartę; stanowisko 2 obsługuje ten rekord.
+RC-000044,00000144,Mapa drukowana,2026-05-13,true,A,2026-05-13,2026-05-18,5,zatwierdzone,AP-000044,2,luma,
+RC-000045,00000145,Fragment tkaniny,16/05/2026,0,B,2026-05-16,2026-05-16,0,oczekujące,,3,LUMA," ""Przed przeniesieniem Fragment tkaniny sprawdzić dołączoną kartę; stanowisko 4 obsługuje ten rekord.""
+46 "
+RC-000046,00000146,Naczynie gliniane,2026-05-19,true,C,2026-05-19,2026-05-26,7,zatwierdzone,AP-000046,4,Luma 東京,Przed przeniesieniem Naczynie gliniane sprawdzić dołączoną kartę; stanowisko 5 obsługuje ten rekord.
+RC-000047,00000147,Mapa drukowana,22/05/2026,0,D,2026-05-22,2026-05-30,8,zatwierdzone,AP-000047,5,Luma Atelier,Przed przeniesieniem Mapa drukowana sprawdzić dołączoną kartę; stanowisko 6 obsługuje ten rekord.
diff --git a/evaluation/v2/cases/95e9fdf26fc178038d17705c13b1e33edcdd0074c14db6fb67518bfe22725cab/result.json b/evaluation/v2/cases/95e9fdf26fc178038d17705c13b1e33edcdd0074c14db6fb67518bfe22725cab/result.json
new file mode 100644
index 0000000000000000000000000000000000000000..6dbe3838496ab30a833bf266280357eb05079f3a
--- /dev/null
+++ b/evaluation/v2/cases/95e9fdf26fc178038d17705c13b1e33edcdd0074c14db6fb67518bfe22725cab/result.json
@@ -0,0 +1,39 @@
+{
+ "id": "95e9fdf26fc178038d17705c13b1e33edcdd0074c14db6fb67518bfe22725cab",
+ "language": "pl",
+ "roles": [
+ "hard_negative:format.date"
+ ],
+ "counts": {
+ "cells": 154,
+ "valid_cells": 154,
+ "exactly_repaired_cells": 0,
+ "valid_cells_harmed": 0,
+ "detected_faulty_cells": 0,
+ "flagged_valid_cells": 0
+ },
+ "categories": {
+ "text.encoding": {},
+ "text.invisible": {},
+ "text.spelling": {},
+ "format.number": {},
+ "format.date": {},
+ "format.boolean": {},
+ "format.case": {},
+ "format.whitespace": {},
+ "format.unit": {},
+ "schema.type": {},
+ "schema.identifier": {},
+ "schema.category": {},
+ "consistency.unit": {},
+ "consistency.dependency": {},
+ "consistency.temporal": {},
+ "missing.required": {},
+ "missing.conditional": {},
+ "structure.shift": {}
+ },
+ "decisions": {},
+ "inference_seconds": 0.57,
+ "details": [],
+ "hard_negative": true
+}
diff --git a/evaluation/v2/cases/95e9fdf26fc178038d17705c13b1e33edcdd0074c14db6fb67518bfe22725cab/review.html b/evaluation/v2/cases/95e9fdf26fc178038d17705c13b1e33edcdd0074c14db6fb67518bfe22725cab/review.html
new file mode 100644
index 0000000000000000000000000000000000000000..2ef485c41d3d2c8df67093c4f481eba522e77a9a
--- /dev/null
+++ b/evaluation/v2/cases/95e9fdf26fc178038d17705c13b1e33edcdd0074c14db6fb67518bfe22725cab/review.html
@@ -0,0 +1,6 @@
+TabFix — end-to-end CSV review
+Does TabFix fix this CSV?
Actual CSV → schema and context → predicted error locations → generated replacements → corrected CSV. The clean reference is used only after inference. No gold error locations or replacement text are supplied to the model. Row numbers below count data rows, excluding the header.
+154Cells scanned
0Errors in input
0Errors repaired
0Valid cells changed
CSV inference review · Threshold 0.9 · CPU inference 0.57 seconds (model loading excluded).
Errors and proposed changes
Strings are quoted to make spaces and empty values visible. Yellow cells below were changed. All other cells are included so unwanted edits remain visible.
Complete model output
Every detection and application decision
[]
\ No newline at end of file
diff --git a/evaluation/v2/cases/95e9fdf26fc178038d17705c13b1e33edcdd0074c14db6fb67518bfe22725cab/schema.xml b/evaluation/v2/cases/95e9fdf26fc178038d17705c13b1e33edcdd0074c14db6fb67518bfe22725cab/schema.xml
new file mode 100644
index 0000000000000000000000000000000000000000..164495bc62e0c1572dc3140e204bda34e9d149b9
--- /dev/null
+++ b/evaluation/v2/cases/95e9fdf26fc178038d17705c13b1e33edcdd0074c14db6fb67518bfe22725cab/schema.xml
@@ -0,0 +1,60 @@
+
+
+[]
+{"case":"upper","pattern":"[A-Z]{2}-\\d{6}","trimmed":true}
+
+
+[]
+{"pattern":"\\d{8}"}
+
+
+[]
+{"enum":["Fragment tkaniny","Naczynie gliniane","Mapa drukowana","Rzeźbiony panel"],"lexicon":["Fragment tkaniny","Naczynie gliniane","Mapa drukowana","Rzeźbiony panel"],"trimmed":true}
+
+
+["YYYY-MM-DD","DD/MM/YYYY"]
+{}
+
+
+[]
+{"enum":["true","false","1","0"]}
+
+
+[]
+{"enum":["A","B","C","D"]}
+
+
+["YYYY-MM-DD"]
+{}
+
+
+["YYYY-MM-DD"]
+{}
+
+
+[]
+{"minimum":0}
+
+
+[]
+{"enum":["oczekujące","zatwierdzone"]}
+
+
+[]
+{"case":"upper","pattern":"AP-\\d{6}","required_when":{"column":9,"equals":"zatwierdzone"},"trimmed":true}
+
+
+[]
+{"minimum":0}
+
+
+[]
+{"case_sensitive":true,"enum":["luma","LUMA","Luma 東京","Luma Atelier"],"whitespace_policy":"preserve"}
+
+
+[]
+{"embedded_delimiters_allowed":true,"whitespace_policy":"preserve"}
+
+[["interval","start","end","days"],"Approval reference is required exactly when workflow state is approved; pending records may omit it."]
+{}
+
diff --git a/evaluation/v2/cases/ec7e824cd5bf670371a04220237b3ceb64ce873cd260e06fc8e09549b10a5782/input.csv b/evaluation/v2/cases/ec7e824cd5bf670371a04220237b3ceb64ce873cd260e06fc8e09549b10a5782/input.csv
new file mode 100644
index 0000000000000000000000000000000000000000..66e16e57eda8f28c345f595ed30fd0ff3fc2513d
--- /dev/null
+++ b/evaluation/v2/cases/ec7e824cd5bf670371a04220237b3ceb64ce873cd260e06fc8e09549b10a5782/input.csv
@@ -0,0 +1,14 @@
+Identyfikator,Pozycja,Rozmiar (MiB),Kopie,Zapisany rozmiar (MiB),Adres IP,Powodzenie,Uwagi
+000001,Brama czujników,"29,52",2,"59,04",192.0.2.1,Tak,
+000002,Serwer testowy,"88,42",1,"88,42",192.0.2.2,Nie,
+000006,Serwer testowy,"73,31",5,"366,55",192.0.2.6,Nie,Oczekuje na ponowną kontrolę
+000010,Brama czujników,"0,00",2,"0,00",192.0.2.10,Nie,Sprawdzono przy odbiorze
+000012,Serwer testowy,"8,19",1,"8,19",192.0.2.12,Tak,"Etykieta „priorytet”, pozostawić widoczną"
+000015,Brama czujników,"87,92",4,"351,68",192.0.2.15,Nie,"Etykieta „priorytet”, pozostawić widoczną"
+000017,Brama czujników,"78,77",2,"157,54",192.0.2.17,Nie,
+000018,Węzeł archiwum,"45,47",2,"90,94",192.0.2.18,Nie,"Skorzystać z wejścia północnego
+Najpierw zgłosić się do recepcji"
+000019,Serwer testowy,"16,91",2,"34,82",192.0.2.19,nIE,Zachowano odniesienie: UTF-8 / v2.1
+000020,Węzeł archiwum,"16384,00",12,"196608,00",192.0.2.20,Tak,"Skorzystać z wejścia północnego
+Najpierw zgłosić się do recepcji"
+000021,Węzeł archiwum,"35,50",3,"106,50",192.0.2.21,Tak,"Etykieta „priorytet”, pozostawić widoczną"
diff --git a/evaluation/v2/cases/ec7e824cd5bf670371a04220237b3ceb64ce873cd260e06fc8e09549b10a5782/output/audit.json b/evaluation/v2/cases/ec7e824cd5bf670371a04220237b3ceb64ce873cd260e06fc8e09549b10a5782/output/audit.json
new file mode 100644
index 0000000000000000000000000000000000000000..b036a9f8e5bf8df5a8b11fbd387601f80e026d4f
--- /dev/null
+++ b/evaluation/v2/cases/ec7e824cd5bf670371a04220237b3ceb64ce873cd260e06fc8e09549b10a5782/output/audit.json
@@ -0,0 +1,32 @@
+{
+ "metrics": {
+ "device": "cuda",
+ "rows": 11,
+ "cells": 88,
+ "threshold": 0.9,
+ "load_seconds": 0.0,
+ "inference_seconds": 0.21,
+ "cells_per_second": 428.67,
+ "peak_gpu_bytes": 1582373376,
+ "detected_spans": 2,
+ "changed_cells": 1
+ },
+ "proposals": [
+ {
+ "row": 8,
+ "column": 4,
+ "category": "consistency.dependency",
+ "status": "relation contradiction: ambiguous faulty member; unchanged"
+ },
+ {
+ "row": 8,
+ "column": 6,
+ "start": 0,
+ "end": 3,
+ "replacement": "Nie",
+ "category": "format.boolean",
+ "status": "applied",
+ "route": "deterministic"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/evaluation/v2/cases/ec7e824cd5bf670371a04220237b3ceb64ce873cd260e06fc8e09549b10a5782/output/corrected.csv b/evaluation/v2/cases/ec7e824cd5bf670371a04220237b3ceb64ce873cd260e06fc8e09549b10a5782/output/corrected.csv
new file mode 100644
index 0000000000000000000000000000000000000000..1ba982a4400153cc16849d338da12e935cc4dd01
--- /dev/null
+++ b/evaluation/v2/cases/ec7e824cd5bf670371a04220237b3ceb64ce873cd260e06fc8e09549b10a5782/output/corrected.csv
@@ -0,0 +1,14 @@
+Identyfikator,Pozycja,Rozmiar (MiB),Kopie,Zapisany rozmiar (MiB),Adres IP,Powodzenie,Uwagi
+000001,Brama czujników,"29,52",2,"59,04",192.0.2.1,Tak,
+000002,Serwer testowy,"88,42",1,"88,42",192.0.2.2,Nie,
+000006,Serwer testowy,"73,31",5,"366,55",192.0.2.6,Nie,Oczekuje na ponowną kontrolę
+000010,Brama czujników,"0,00",2,"0,00",192.0.2.10,Nie,Sprawdzono przy odbiorze
+000012,Serwer testowy,"8,19",1,"8,19",192.0.2.12,Tak,"Etykieta „priorytet”, pozostawić widoczną"
+000015,Brama czujników,"87,92",4,"351,68",192.0.2.15,Nie,"Etykieta „priorytet”, pozostawić widoczną"
+000017,Brama czujników,"78,77",2,"157,54",192.0.2.17,Nie,
+000018,Węzeł archiwum,"45,47",2,"90,94",192.0.2.18,Nie,"Skorzystać z wejścia północnego
+Najpierw zgłosić się do recepcji"
+000019,Serwer testowy,"16,91",2,"34,82",192.0.2.19,Nie,Zachowano odniesienie: UTF-8 / v2.1
+000020,Węzeł archiwum,"16384,00",12,"196608,00",192.0.2.20,Tak,"Skorzystać z wejścia północnego
+Najpierw zgłosić się do recepcji"
+000021,Węzeł archiwum,"35,50",3,"106,50",192.0.2.21,Tak,"Etykieta „priorytet”, pozostawić widoczną"
diff --git a/evaluation/v2/cases/ec7e824cd5bf670371a04220237b3ceb64ce873cd260e06fc8e09549b10a5782/output/review.html b/evaluation/v2/cases/ec7e824cd5bf670371a04220237b3ceb64ce873cd260e06fc8e09549b10a5782/output/review.html
new file mode 100644
index 0000000000000000000000000000000000000000..9b1b280b9dee997c9448f1261e414960bee1481b
--- /dev/null
+++ b/evaluation/v2/cases/ec7e824cd5bf670371a04220237b3ceb64ce873cd260e06fc8e09549b10a5782/output/review.html
@@ -0,0 +1,23 @@
+TabFix — end-to-end CSV review
+Does TabFix fix this CSV?
Actual CSV → schema and context → predicted error locations → generated replacements → corrected CSV. The clean reference is used only after inference. No gold error locations or replacement text are supplied to the model. Row numbers below count data rows, excluding the header.
+88Cells scanned
—Errors in input
—Errors repaired
—Valid cells changed
CSV inference review · Threshold 0.9 · CPU inference 0.21 seconds (model loading excluded).
Errors and proposed changes
Strings are quoted to make spaces and empty values visible. Yellow cells below were changed. All other cells are included so unwanted edits remain visible.
Complete model output
Every detection and application decision
[
+ {
+ "row": 8,
+ "column": 4,
+ "category": "consistency.dependency",
+ "status": "relation contradiction: ambiguous faulty member; unchanged"
+ },
+ {
+ "row": 8,
+ "column": 6,
+ "start": 0,
+ "end": 3,
+ "replacement": "Nie",
+ "category": "format.boolean",
+ "status": "applied",
+ "route": "deterministic"
+ }
+]
\ No newline at end of file
diff --git a/evaluation/v2/cases/ec7e824cd5bf670371a04220237b3ceb64ce873cd260e06fc8e09549b10a5782/reference.csv b/evaluation/v2/cases/ec7e824cd5bf670371a04220237b3ceb64ce873cd260e06fc8e09549b10a5782/reference.csv
new file mode 100644
index 0000000000000000000000000000000000000000..494cb2a8a42608e7060a4905b4791e2a2238a704
--- /dev/null
+++ b/evaluation/v2/cases/ec7e824cd5bf670371a04220237b3ceb64ce873cd260e06fc8e09549b10a5782/reference.csv
@@ -0,0 +1,14 @@
+Identyfikator,Pozycja,Rozmiar (MiB),Kopie,Zapisany rozmiar (MiB),Adres IP,Powodzenie,Uwagi
+000001,Brama czujników,"29,52",2,"59,04",192.0.2.1,Tak,
+000002,Serwer testowy,"88,42",1,"88,42",192.0.2.2,Nie,
+000006,Serwer testowy,"73,31",5,"366,55",192.0.2.6,Nie,Oczekuje na ponowną kontrolę
+000010,Brama czujników,"0,00",2,"0,00",192.0.2.10,Nie,Sprawdzono przy odbiorze
+000012,Serwer testowy,"8,19",1,"8,19",192.0.2.12,Tak,"Etykieta „priorytet”, pozostawić widoczną"
+000015,Brama czujników,"87,92",4,"351,68",192.0.2.15,Nie,"Etykieta „priorytet”, pozostawić widoczną"
+000017,Brama czujników,"78,77",2,"157,54",192.0.2.17,Nie,
+000018,Węzeł archiwum,"45,47",2,"90,94",192.0.2.18,Nie,"Skorzystać z wejścia północnego
+Najpierw zgłosić się do recepcji"
+000019,Serwer testowy,"16,91",2,"33,82",192.0.2.19,Nie,Zachowano odniesienie: UTF-8 / v2.1
+000020,Węzeł archiwum,"16384,00",12,"196608,00",192.0.2.20,Tak,"Skorzystać z wejścia północnego
+Najpierw zgłosić się do recepcji"
+000021,Węzeł archiwum,"35,50",3,"106,50",192.0.2.21,Tak,"Etykieta „priorytet”, pozostawić widoczną"
diff --git a/evaluation/v2/cases/ec7e824cd5bf670371a04220237b3ceb64ce873cd260e06fc8e09549b10a5782/result.json b/evaluation/v2/cases/ec7e824cd5bf670371a04220237b3ceb64ce873cd260e06fc8e09549b10a5782/result.json
new file mode 100644
index 0000000000000000000000000000000000000000..dafd58a2176eb04818046a77054ae1bdc6cee479
--- /dev/null
+++ b/evaluation/v2/cases/ec7e824cd5bf670371a04220237b3ceb64ce873cd260e06fc8e09549b10a5782/result.json
@@ -0,0 +1,94 @@
+{
+ "id": "ec7e824cd5bf670371a04220237b3ceb64ce873cd260e06fc8e09549b10a5782",
+ "language": "pl",
+ "roles": [
+ "positive:format.boolean"
+ ],
+ "counts": {
+ "cells": 88,
+ "valid_cells": 86,
+ "exactly_repaired_cells": 1,
+ "valid_cells_harmed": 0,
+ "detected_faulty_cells": 1,
+ "flagged_valid_cells": 0,
+ "faulty_cells": 2
+ },
+ "categories": {
+ "text.encoding": {},
+ "text.invisible": {},
+ "text.spelling": {},
+ "format.number": {},
+ "format.date": {},
+ "format.boolean": {
+ "gold_cells": 1,
+ "detected_cells": 1,
+ "exactly_repaired_cells": 1
+ },
+ "format.case": {},
+ "format.whitespace": {},
+ "format.unit": {},
+ "schema.type": {},
+ "schema.identifier": {},
+ "schema.category": {},
+ "consistency.unit": {},
+ "consistency.dependency": {
+ "gold_cells": 1,
+ "detected_cells": 0,
+ "exactly_repaired_cells": 0
+ },
+ "consistency.temporal": {},
+ "missing.required": {},
+ "missing.conditional": {},
+ "structure.shift": {}
+ },
+ "decisions": {
+ "relation contradiction: ambiguous faulty member; unchanged": 1,
+ "applied": 1
+ },
+ "inference_seconds": 0.21,
+ "details": [
+ {
+ "row": 8,
+ "column": "Zapisany rozmiar (MiB)",
+ "original": "34,82",
+ "prediction": "34,82",
+ "reference": "33,82",
+ "categories": [
+ "consistency.dependency"
+ ],
+ "status": "remaining",
+ "decisions": [
+ {
+ "row": 8,
+ "column": 4,
+ "category": "consistency.dependency",
+ "status": "relation contradiction: ambiguous faulty member; unchanged"
+ }
+ ]
+ },
+ {
+ "row": 8,
+ "column": "Powodzenie",
+ "original": "nIE",
+ "prediction": "Nie",
+ "reference": "Nie",
+ "categories": [
+ "format.boolean"
+ ],
+ "status": "repaired",
+ "decisions": [
+ {
+ "row": 8,
+ "column": 6,
+ "start": 0,
+ "end": 3,
+ "replacement": "Nie",
+ "category": "format.boolean",
+ "status": "applied",
+ "route": "deterministic"
+ }
+ ]
+ }
+ ],
+ "hard_negative": false
+}
diff --git a/evaluation/v2/cases/ec7e824cd5bf670371a04220237b3ceb64ce873cd260e06fc8e09549b10a5782/review.html b/evaluation/v2/cases/ec7e824cd5bf670371a04220237b3ceb64ce873cd260e06fc8e09549b10a5782/review.html
new file mode 100644
index 0000000000000000000000000000000000000000..e0e9c04a5912a758f37698914f285567f1395b94
--- /dev/null
+++ b/evaluation/v2/cases/ec7e824cd5bf670371a04220237b3ceb64ce873cd260e06fc8e09549b10a5782/review.html
@@ -0,0 +1,23 @@
+TabFix — end-to-end CSV review
+Does TabFix fix this CSV?
Actual CSV → schema and context → predicted error locations → generated replacements → corrected CSV. The clean reference is used only after inference. No gold error locations or replacement text are supplied to the model. Row numbers below count data rows, excluding the header.
+88Cells scanned
2Errors in input
1Errors repaired
0Valid cells changed
CSV inference review · Threshold 0.9 · CPU inference 0.21 seconds (model loading excluded).
Errors and proposed changes
Strings are quoted to make spaces and empty values visible. Yellow cells below were changed. All other cells are included so unwanted edits remain visible.
Complete model output
Every detection and application decision
[
+ {
+ "row": 8,
+ "column": 4,
+ "category": "consistency.dependency",
+ "status": "relation contradiction: ambiguous faulty member; unchanged"
+ },
+ {
+ "row": 8,
+ "column": 6,
+ "start": 0,
+ "end": 3,
+ "replacement": "Nie",
+ "category": "format.boolean",
+ "status": "applied",
+ "route": "deterministic"
+ }
+]
\ No newline at end of file
diff --git a/evaluation/v2/cases/ec7e824cd5bf670371a04220237b3ceb64ce873cd260e06fc8e09549b10a5782/schema.xml b/evaluation/v2/cases/ec7e824cd5bf670371a04220237b3ceb64ce873cd260e06fc8e09549b10a5782/schema.xml
new file mode 100644
index 0000000000000000000000000000000000000000..77b51ddbecfc1a8c4dc1b0c9ed371787e45270e6
--- /dev/null
+++ b/evaluation/v2/cases/ec7e824cd5bf670371a04220237b3ceb64ce873cd260e06fc8e09549b10a5782/schema.xml
@@ -0,0 +1,47 @@
+
+[{"currency":null,"date_format":"YYYY-MM-DD","decimal_separator":",","language":"pl"}]
+
+["six_digits_leading_zeros"]
+{"pattern":"\\d{6}","unique":true}
+[]
+
+
+["unicode_text"]
+{"enum":["Serwer testowy","Węzeł archiwum","Brama czujników","Serwer kopii zapasowych"]}
+[]
+
+
+["decimal_comma_2dp"]
+{"maximum":100000000,"minimum":0}
+"MiB"
+[]
+
+
+["base10_integer"]
+{"maximum":12,"minimum":1}
+[]
+
+
+["decimal_comma_2dp"]
+{"maximum":100000000,"minimum":0}
+"MiB"
+[]
+
+
+["IPv4"]
+{}
+[]
+
+
+["unicode_text"]
+{"enum":["Nie","Tak"]}
+[]
+
+
+["unicode_text"]
+{}
+[]
+
+[["multiply","size","copies","stored"]]
+{}
+
diff --git a/evaluation/v2/review.html b/evaluation/v2/review.html
index c34cc0c8fd41d0ca8ded44bbf9c52989e8af835c..7911241b571084643f64145749a9d00603f6e220 100644
--- a/evaluation/v2/review.html
+++ b/evaluation/v2/review.html
@@ -1,4 +1,4 @@
-TabFix v2 — test de bout en boutTabFix v2 — test de bout en bout
10/76 tableaux. CSV → filtre déterministe/neural → correction → perplexité → validation des règles. Aucune position fautive fournie au modèle.
10/10Cellules fautives réparées
0/1209Cellules valides endommagées
10/10Cellules fautives localisées
Panel synthétique représentatif ; pas une précision globale sur tout le corpus. Les cellules de contexte sont incluses. Les résultats par catégorie peuvent se recouper pour les erreurs composées. Les contradictions de groupe sans localisation certaine restent signalées sans correction.
Par catégorie
| Catégorie réelle | Cellules fautives | Localisées | Réparées exactement |
|---|
| text.encoding | 2 | 2 | 2 |
| text.invisible | 2 | 2 | 2 |
| text.spelling | 2 | 2 | 2 |
| format.number | 1 | 1 | 1 |
| format.date | 1 | 1 | 1 |
| format.boolean | 0 | 0 | 0 |
| format.case | 0 | 0 | 0 |
| format.whitespace | 0 | 0 | 0 |
| format.unit | 0 | 0 | 0 |
| schema.type | 0 | 0 | 0 |
| schema.identifier | 0 | 0 | 0 |
| schema.category | 2 | 2 | 2 |
| consistency.unit | 0 | 0 | 0 |
| consistency.dependency | 0 | 0 | 0 |
| consistency.temporal | 0 | 0 | 0 |
| missing.required | 0 | 0 | 0 |
| missing.conditional | 0 | 0 | 0 |
| structure.shift | 0 | 0 | 0 |
Corrections et erreurs restantes
| Langue / tableau | Colonne | Entrée | Sortie | Référence | Résultat |
|---|
| ja | 品目 | "麻ã®ããã°" | "麻のバッグ" | "麻のバッグ" | repairedDécisions[
+TabFix v2 — test de bout en boutTabFix v2 — test de bout en bout20/76 tableaux. CSV → filtre déterministe/neural → correction → perplexité → validation des règles. Aucune position fautive fournie au modèle. 18/19Cellules fautives réparées 0/2509Cellules valides endommagées 18/19Cellules fautives localisées Panel synthétique représentatif ; pas une précision globale sur tout le corpus. Les cellules de contexte sont incluses. Les résultats par catégorie peuvent se recouper pour les erreurs composées. Les contradictions de groupe sans localisation certaine restent signalées sans correction. Par catégorie | Catégorie réelle | Cellules fautives | Localisées | Réparées exactement |
|---|
| text.encoding | 2 | 2 | 2 | | text.invisible | 2 | 2 | 2 | | text.spelling | 2 | 2 | 2 | | format.number | 2 | 2 | 2 | | format.date | 2 | 2 | 2 | | format.boolean | 2 | 2 | 2 | | format.case | 2 | 2 | 2 | | format.whitespace | 1 | 1 | 1 | | format.unit | 1 | 1 | 1 | | schema.type | 0 | 0 | 0 | | schema.identifier | 0 | 0 | 0 | | schema.category | 3 | 3 | 3 | | consistency.unit | 0 | 0 | 0 | | consistency.dependency | 1 | 0 | 0 | | consistency.temporal | 0 | 0 | 0 | | missing.required | 0 | 0 | 0 | | missing.conditional | 0 | 0 | 0 | | structure.shift | 0 | 0 | 0 |
Corrections et erreurs restantes| Langue / tableau | Colonne | Entrée | Sortie | Référence | Résultat |
|---|
| ja | 品目 | "麻ã®ããã°" | "麻のバッグ" | "麻のバッグ" | repairedDécisions[
{
"row": 7,
"column": 1,
@@ -118,4 +118,102 @@
"status": "applied",
"route": "model"
}
-] |
Tous les tableaux, y compris les contrôles valides
\ No newline at end of file
+] |
| pl | Deklarowana masa sztuki | "0,625 h" | "0.625" | "0.625" | repairedDécisions[
+ {
+ "row": 5,
+ "column": 3,
+ "start": 0,
+ "end": 7,
+ "replacement": "0.625",
+ "category": "format.number",
+ "perplexity": 1.0000343913533796,
+ "status": "applied",
+ "route": "model"
+ }
+] |
| pl | Data rozpoczęcia | "04/12/2024" | "2024-12-04" | "2024-12-04" | repairedDécisions[
+ {
+ "row": 7,
+ "column": 2,
+ "start": 0,
+ "end": 10,
+ "replacement": "2024-12-04",
+ "category": "format.date",
+ "perplexity": 1.0021802994372715,
+ "status": "applied",
+ "route": "model"
+ }
+] |
| pl | Zapisany rozmiar (MiB) | "34,82" | "34,82" | "33,82" | remainingDécisions[
+ {
+ "row": 8,
+ "column": 4,
+ "category": "consistency.dependency",
+ "status": "relation contradiction: ambiguous faulty member; unchanged"
+ }
+] |
| pl | Powodzenie | "nIE" | "Nie" | "Nie" | repairedDécisions[
+ {
+ "row": 8,
+ "column": 6,
+ "start": 0,
+ "end": 3,
+ "replacement": "Nie",
+ "category": "format.boolean",
+ "status": "applied",
+ "route": "deterministic"
+ }
+] |
| fr | Code dossier | " RC-000004" | "RC-000004" | "RC-000004" | repairedDécisions[
+ {
+ "row": 4,
+ "column": 0,
+ "start": 0,
+ "end": 10,
+ "replacement": "RC-000004",
+ "category": "format.whitespace",
+ "status": "applied",
+ "route": "deterministic"
+ }
+] |
| fr | Réception confirmée | "TRUE" | "true" | "true" | repairedDécisions[
+ {
+ "row": 4,
+ "column": 4,
+ "start": 0,
+ "end": 4,
+ "replacement": "true",
+ "category": "format.boolean",
+ "status": "applied",
+ "route": "deterministic"
+ }
+] |
| fr | Code trajet | "rt-000002" | "RT-000002" | "RT-000002" | repairedDécisions[
+ {
+ "row": 4,
+ "column": 2,
+ "start": 0,
+ "end": 9,
+ "replacement": "RT-000002",
+ "category": "format.case",
+ "status": "applied",
+ "route": "deterministic"
+ }
+] |
| fr | Unité de mesure | "kg?" | "kg" | "kg" | repairedDécisions[
+ {
+ "row": 4,
+ "column": 7,
+ "start": 0,
+ "end": 3,
+ "replacement": "kg",
+ "category": "schema.category",
+ "perplexity": 1.0000125169191336,
+ "status": "applied",
+ "route": "model"
+ }
+] |
| pl | Kod rekordu | "rc-000024" | "RC-000024" | "RC-000024" | repairedDécisions[
+ {
+ "row": 4,
+ "column": 0,
+ "start": 0,
+ "end": 9,
+ "replacement": "RC-000024",
+ "category": "format.case",
+ "status": "applied",
+ "route": "deterministic"
+ }
+] |
Tous les tableaux, y compris les contrôles valides
\ No newline at end of file
diff --git a/evaluation/v2/summary.json b/evaluation/v2/summary.json
index 36a20cfde262c11599bcd11ee409666d85d2d96b..4534fa963d62f2ffe945e65c868d0c919a8ed6b6 100644
--- a/evaluation/v2/summary.json
+++ b/evaluation/v2/summary.json
@@ -1,15 +1,15 @@
{
- "completed": 10,
+ "completed": 20,
"planned": 76,
"totals": {
- "cells": 1219,
- "valid_cells": 1209,
- "exactly_repaired_cells": 10,
+ "cells": 2528,
+ "valid_cells": 2509,
+ "exactly_repaired_cells": 18,
"valid_cells_harmed": 0,
- "detected_faulty_cells": 10,
+ "detected_faulty_cells": 18,
"flagged_valid_cells": 0,
- "faulty_cells": 10,
- "hard_negative_cases": 3,
+ "faulty_cells": 19,
+ "hard_negative_cases": 7,
"hard_negative_cases_harmed": 0
},
"categories": {
@@ -29,28 +29,48 @@
"exactly_repaired_cells": 2
},
"format.number": {
+ "gold_cells": 2,
+ "detected_cells": 2,
+ "exactly_repaired_cells": 2
+ },
+ "format.date": {
+ "gold_cells": 2,
+ "detected_cells": 2,
+ "exactly_repaired_cells": 2
+ },
+ "format.boolean": {
+ "gold_cells": 2,
+ "detected_cells": 2,
+ "exactly_repaired_cells": 2
+ },
+ "format.case": {
+ "gold_cells": 2,
+ "detected_cells": 2,
+ "exactly_repaired_cells": 2
+ },
+ "format.whitespace": {
"gold_cells": 1,
"detected_cells": 1,
"exactly_repaired_cells": 1
},
- "format.date": {
+ "format.unit": {
"gold_cells": 1,
"detected_cells": 1,
"exactly_repaired_cells": 1
},
- "format.boolean": {},
- "format.case": {},
- "format.whitespace": {},
- "format.unit": {},
"schema.type": {},
"schema.identifier": {},
"schema.category": {
- "gold_cells": 2,
- "detected_cells": 2,
- "exactly_repaired_cells": 2
+ "gold_cells": 3,
+ "detected_cells": 3,
+ "exactly_repaired_cells": 3
},
"consistency.unit": {},
- "consistency.dependency": {},
+ "consistency.dependency": {
+ "gold_cells": 1,
+ "detected_cells": 0,
+ "exactly_repaired_cells": 0
+ },
"consistency.temporal": {},
"missing.required": {},
"missing.conditional": {},
@@ -67,8 +87,8 @@
"faulty_cells": 1
},
"de": {
- "cells": 229,
- "valid_cells": 226,
+ "cells": 504,
+ "valid_cells": 501,
"exactly_repaired_cells": 3,
"valid_cells_harmed": 0,
"detected_faulty_cells": 3,
@@ -76,13 +96,13 @@
"faulty_cells": 3
},
"fr": {
- "cells": 308,
- "valid_cells": 306,
- "exactly_repaired_cells": 2,
+ "cells": 594,
+ "valid_cells": 588,
+ "exactly_repaired_cells": 6,
"valid_cells_harmed": 0,
- "detected_faulty_cells": 2,
+ "detected_faulty_cells": 6,
"flagged_valid_cells": 0,
- "faulty_cells": 2
+ "faulty_cells": 6
},
"nl": {
"cells": 352,
@@ -94,17 +114,26 @@
"faulty_cells": 3
},
"pl": {
- "cells": 242,
- "valid_cells": 241,
- "exactly_repaired_cells": 1,
+ "cells": 836,
+ "valid_cells": 830,
+ "exactly_repaired_cells": 5,
"valid_cells_harmed": 0,
- "detected_faulty_cells": 1,
+ "detected_faulty_cells": 5,
"flagged_valid_cells": 0,
- "faulty_cells": 1
+ "faulty_cells": 6
+ },
+ "en": {
+ "cells": 154,
+ "valid_cells": 154,
+ "exactly_repaired_cells": 0,
+ "valid_cells_harmed": 0,
+ "detected_faulty_cells": 0,
+ "flagged_valid_cells": 0
}
},
"decisions": {
- "applied": 10
+ "applied": 18,
+ "relation contradiction: ambiguous faulty member; unchanged": 1
},
"model_revision": "913f3efbf4f0557b1ad5ec1693730d8b7535ac58",
"dataset_revision": "602b8a454ca448713d8a5658650d4feaad8d579c",