AUTHORITATIVE SAMPLED VIDEO EVALUATION

Use only check_video.py version 3.0.0 from the replacement mindustry_video_eval_adaptive.zip, with its bundled hud_reference.png and map_reference.png. This supersedes the older every-frame evaluation. The host keeps all checker files and reference answers in a separate evaluator environment inaccessible to the solver, or enforces and verifies equivalent OS-account access restrictions. The host provisions Python dependencies AND native FFmpeg/ffprobe before validation; see HOST_SETUP.md.

The candidate deliverable is run_recording.mp4. Run:

python check_video.py "D:\Benchmark\deliverables\run_recording.mp4" --output evaluation_result.json

Award success if and only if video-mode output is status PASS, scope VIDEO_SAMPLED_FINAL_STATE_60S, checker_version 3.0.0, longest_matching_seconds 60, and process exit code 0. A text-checker PASS, single-frame MATCH, report statement, or correct bit string is insufficient.

SAMPLING AND SUCCESS

1. Use time zero at the first decoded frame. Select one source frame at 0, 3, 6, ... seconds to find coarse matches. Each selected frame is the first available source frame in its target time bucket.
2. Around each coarse match at t, take the candidate interval from max(0, floor(t)-3) to floor(t)+4, with the upper bound excluded. Merge overlapping/touching intervals and clamp to complete seconds in the video.
3. Inside candidate intervals, select two actual source frames per second s: at s and s+0.5. Each may be at most 0.25 seconds late. Do not generate replacement frames for missing samples.
4. Both samples must match the Impact Reactor and Health labels, Power Output: 6300.0, visibly full Health including the right edge, and the designated reactor's reference-map battery layout. Both must pass the implemented sampled freeze heuristic.
5. A second counts only when both samples pass and the complete bin [s,s+1) fits within the video. Require 60 consecutive accepted bins; separate intervals cannot be combined. Stop fine checking once PASS is established. Samples at 0 through 59.5 can represent 60 accepted bins if the source duration is at least 60 seconds.

The freeze heuristic compares sampled reactor-body images: sufficient motion changes at least 1.5% of pixels by more than 12 in a color channel. Two seconds without sufficient observed change causes sample rejection until motion resumes. This heuristic does not authenticate the recording and can be affected by sampling aliasing.

The accepted interval may occur anywhere, including within the final 112 seconds. No startup deadline or prescribed switch trajectory is scored. This revision checks samples, not every decoded source frame; short failures between samples may be missed by design.

FAIL (exit 1) or INCOMPLETE (exit 2) never awards success. INCOMPLETE applies when no PASS was established and unreadable content, missing/late fine samples, a dependency/file/decoder issue, or interruption prevented a conclusion. See EVAL_README.md for the exact implemented contract and output fields.

This is solely a sampled final visual outcome score. It does not independently audit previous switches, contemporaneous logging, intermediate-state safety, every building's health, indefinite supplies, GUI compliance, simulation speed, or provenance. Those are not additional hidden grading gates.

REFERENCE VALIDATION AND PROVENANCE

The latest review reports an existing reference MP4 and legacy-scoped PASS JSON (VIDEO_FINAL_STATE_60S; 115.866666 seconds). Preserve that original report as historical evidence. It is not a result of the current sampled checker, whose scope is VIDEO_SAMPLED_FINAL_STATE_60S and whose accepted-bin count stops at 60.

Run the same original reference MP4 through the current checker with the provenance wrapper:

python validate_reference.py "C:\Users\12097\Pictures\Screenshots\reference_run_recording.mp4"

The new output directory contains the unchanged checker-generated reference_evaluation.json, reference_provenance.json and execution logs. Replace the uploaded legacy-scoped reference_evaluation.json with this actual current result, and add the provenance JSON. Require video-mode PASS, scope VIDEO_SAMPLED_FINAL_STATE_60S, checker_version 3.0.0, longest_matching_seconds 60, checker exit code 0, and reference_validation_complete true in the provenance record. Do not edit fields to convert an old result into a new one.

Provenance collection preserves the executed command, runtime versions, code/assets/video/result hashes, timestamps and exit code. It is not a second gameplay checker or an independent attestation. Source details and the reviewer's inspection limits are documented in REFERENCE_VALIDATION.md. Generated plans, declarations and synthetic tests do not replace current reference validation.
