Skip to content

Older replays (pre-May 2026) fail to parse — 100% frame rejection #31

Description

@reflectionsa

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions