Honest numbers

What actually got tested, what broke, and what got fixed. No rounding up.

29
historical bugs fixed
598
current unit tests passing
1M
rows in one measured local run
1GB
largest verified browser ZIP run

Current verified checks

  • 598 unit tests across 129 files passed, and the local production build completed.
  • The desktop browser and CLI produced matching score, acceptance, profile, and contract output for the same 100-row CSV.
  • A local Windows run processed 1,000,000 CSV records. Parsing took 790 ms and analysis took 910 ms. This is one local measurement, not a general performance claim.
  • Generated 500 MiB and 1 GiB ZIP files are rejected in the browser before archive bytes are decoded. Browser ZIP input is capped at 64 MB.
  • The benchmark corpus contains synthetic clean, corrupt, repaired, false-positive, false-negative, vendor-acceptance, and performance controls. It does not represent customer data or independent validation.
Every fixed bug, in order
#1Duplicate detection scored every normal dataset as broken
Flagged repeated correct labels as duplicates. A perfectly clean 217-row dataset scored 0/100. Fixed: only flags actual spelling inconsistency.
#2Bounding box detection missed the most common real-world format
Only recognized x/y/width/height. Most real exports use xmin/ymin/xmax/ymax. Fixed: corner format detected first.
#3Label column detection missed unconventional column names
A real dataset's "cell_type" column fell back to "filename," turning 4,888 rows into fake per-image classes. Fixed: broader detection with a lowest-cardinality fallback.
#4Taxonomy suggestions had no output cap
The bug 3 failure alone produced 65,967 near-meaningless matches in one run. Fixed: capped and explained instead of dumped.
#5Exact duplicate annotation rows were invisible
Same image, same label, same box, submitted twice, a real data-entry error, went undetected once bug 1 stopped flagging spelling matches.
#6Duplicate-row check produced false positives without an image column
A clean 12,000-row synthetic file scored 0/100 because different rows shared coordinates with no filename to distinguish them.
#7x1/y1/x2/y2 corner format wasn't recognized
A common naming convention alongside xmin/ymin/xmax/ymax. Bbox checks silently didn't run at all on files using it.
#8Spreadsheet formula injection passed through unescaped
A label like =SUM(1+1) survived into the exported CSV untouched. Opened in Excel, it could execute as a formula. Fixed: flagged and sanitized on export.
#9Mixed line endings silently dropped rows
A file mixing \r\n and \n lost more than half its rows with no error shown. Fixed: line endings normalized before parsing.
#10Taxonomy clustering was 4x+ slower than benchmarked in a real worst case
Same-length labels defeat the length-based pruning. Cap tightened from 500 to 300 with a confirmed safety margin.
#11Cleaned exports dropped valid repeated annotations
The exporter kept only the first row for each class. A dataset with 5,000 valid car annotations could export one row. Fixed: only empty-label and exact duplicate annotations are removed.
#12Duplicate keys could collide on separator characters
Filenames and labels containing a pipe character could produce the same internal key. Fixed: annotation identity now uses structured values instead of joined text.
#13Nested YOLO files could overwrite each other's identity
Train and validation annotations with the same basename both became one image ID. Fixed: subset paths are preserved through analysis and cleanup.
#14An entirely unlabeled dataset scored Good
Checks with nothing to evaluate still contributed perfect points. Fixed: a dataset with no valid labels now scores 0 and Poor.
#15YOLO segmentation rows were silently read as boxes
Polygon coordinates were truncated to the first five values. Fixed: polygons are detected separately and their point structure and normalized bounds are validated.
#16ZIP limits only measured compressed size
A small archive could expand far beyond the upload limit. Fixed: file count and expanded bytes are checked. The current expanded-byte limit follows the active plan.
#17Valid one-column CSV files were rejected
A parser delimiter warning was treated like malformed structure. Fixed: harmless delimiter warnings no longer reject label-only files.
#18Compare could select a constant metadata column
A review-status field could beat the real label field during inference. Fixed: semantic hints improved and both comparison inputs now expose a label-column selector.
#19Cleanup could promote an outlier spelling
Equal-length variants were resolved by input order. Fixed: the most frequent spelling becomes canonical and class balance groups spelling variants correctly.
#20Sparse YOLO class maps produced blank labels
Missing numeric class entries became empty strings. Fixed: undefined entries receive readable class_N labels.
#21BOM-prefixed JSON failed to parse
A valid UTF-8 marker at the beginning of a JSON file caused a syntax failure. Fixed: the marker is removed before parsing.
#22Headerless CSV lost its first record
The parser assumed every first row was a header. Fixed: clear headerless data is preserved, and ambiguous files require confirmation before scoring.
#23Documentation text became YOLO annotations
README and license text could be read as labels. Fixed: YOLO discovery is restricted to labels directories or strictly validated numeric files backed by metadata.
#24Pose and oriented boxes became polygons
Every YOLO row longer than five values was called segmentation. Fixed: metadata and archive structure distinguish pose, OBB, segmentation, and detection.
#25TIFF images disappeared from high-scoring reports
TIFF files were excluded from media inventory. Fixed: they are counted, disclosed as not pixel-decoded, and force limited coverage.
#26Labels-only archives could score 100
Missing media was ignored when an archive contained zero images. Fixed: every orphan annotation is an integrity error and partial reports are capped at 60.
#27Empty COCO segmentation arrays became polygons
An empty array was treated as a real mask. Fixed: only valid non-empty polygons or RLE objects are segmentation.
#28Pose archives without metadata were rejected
A valid YOLO pose export omitted data.yaml, so its 21 annotations were rejected. Fixed: pose rows are inferred conservatively from keypoint visibility triplets.
#29Streaming CSV preflight showed only its initial sample
A 32,561-record CSV displayed 20 records even though parsing continued. Fixed: preflight now updates to the full parsed count, and income outcomes outrank work-class descriptors.
Known, disclosed, not hidden

Windows Chrome completed the full local ZIP workflow at 500 MiB on Free and 1 GiB on Pro using generated fixtures. Interactive browser review retains at most 250,000 tabular records. Larger CSV, TXT, JSONL, and NDJSON inputs can run bounded local streaming regression checks, with a 5,000,000-record safety cap. ZIP entry, decompression, and image-decoding limits still protect the browser tab.