Summary
5 out of 8 .echoreplay files tested fail to parse completely. Every line is rejected. The failing files are from March and April 2026. Files recorded in May 2026 parse correctly.
Reproduction
Run nevr-anticheat against any of the failing replays:
.\nevr-ac.exe --config configs\default.toml analyze rec_2026-03-27_19-06-56.echoreplay
Error reading echoreplay: no valid frames found in replay (450 lines read, 450 rejected)
Affected files
| File |
Size |
Lines |
Result |
rec_2026-03-27_19-06-56.echoreplay |
2.7 MB (ZIP) |
450 |
450 rejected |
rec_2026-03-27_21-26-06.echoreplay |
1.5 MB (ZIP) |
804 |
804 rejected |
rec_2026-04-30_23-27-36.echoreplay |
46.4 MB (ZIP) |
6476 |
6476 rejected |
rec_2026-04-30_23-35-23.echoreplay |
~0 MB (ZIP) |
1 |
1 rejected |
rec_2026-04-30_23-44-05.echoreplay |
17.9 MB (not ZIP) |
696 |
696 rejected |
Working files (for comparison)
| File |
Size |
Result |
rec_2026-05-01_14-27-52.echoreplay |
29.8 MB (ZIP) |
153,257 frames parsed OK |
rec_2026-05-01_14-58-25.echoreplay |
12.6 MB (ZIP) |
66,726 frames parsed OK |
rec_2026-05-01_15-10-00.echoreplay |
13.9 MB (ZIP) |
74,242 frames parsed OK |
Root cause (diagnosed)
March files (ZIP-compressed): The inner NDJSON content produces invalid character '{' after top-level value when passed to json.Unmarshal. This indicates the old format had multiple JSON objects concatenated on a single line (e.g. TIMESTAMP\t{disc_json}{teams_json}) rather than one unified session payload per line.
April raw file (rec_2026-04-30_23-44-05): Not ZIP-compressed — the parser falls through to raw NDJSON mode but still rejects all 696 lines. Unknown format difference; not investigated further.
May files (working): ZIP-compressed NDJSON, one JSON object per line with format YYYY/MM/DD HH:MM:SS.mmm\t{...}. Top-level keys include teams, disc, sessionid, game_status, etc.
Impact
All replay data collected before approximately May 2026 is unanalyzable. This includes historical abuse clips and full match recordings that may contain evidence of the players under active review.
Summary
5 out of 8
.echoreplayfiles tested fail to parse completely. Every line is rejected. The failing files are from March and April 2026. Files recorded in May 2026 parse correctly.Reproduction
Run nevr-anticheat against any of the failing replays:
Affected files
rec_2026-03-27_19-06-56.echoreplayrec_2026-03-27_21-26-06.echoreplayrec_2026-04-30_23-27-36.echoreplayrec_2026-04-30_23-35-23.echoreplayrec_2026-04-30_23-44-05.echoreplayWorking files (for comparison)
rec_2026-05-01_14-27-52.echoreplayrec_2026-05-01_14-58-25.echoreplayrec_2026-05-01_15-10-00.echoreplayRoot cause (diagnosed)
March files (ZIP-compressed): The inner NDJSON content produces
invalid character '{' after top-level valuewhen passed tojson.Unmarshal. This indicates the old format had multiple JSON objects concatenated on a single line (e.g.TIMESTAMP\t{disc_json}{teams_json}) rather than one unified session payload per line.April raw file (
rec_2026-04-30_23-44-05): Not ZIP-compressed — the parser falls through to raw NDJSON mode but still rejects all 696 lines. Unknown format difference; not investigated further.May files (working): ZIP-compressed NDJSON, one JSON object per line with format
YYYY/MM/DD HH:MM:SS.mmm\t{...}. Top-level keys includeteams,disc,sessionid,game_status, etc.Impact
All replay data collected before approximately May 2026 is unanalyzable. This includes historical abuse clips and full match recordings that may contain evidence of the players under active review.