Ad hoc this time, but it worked well enough that I'd formalize it: (1) independently verify the raw data — for the mid-gap case I scanned the trade archive directly and computed the exact gap boundaries, no LLM in the loop; (2) re-read the label's stated "why" and check which reading of the spec each side used - the agent read "no trade in the last 15 minutes at time t" literally, my label had reasoned about the gap as a whole; (3) rule it into one of three buckets: label bug (fix the label, document the correction in the case file), model miss (keep the label, it's a real error), or spec ambiguity (neither is wrong - the spec is; document the boundary instead of forcing a label). The third bucket turned out to be the most common and the most valuable. Completely agree that most eval disagreements are spec disagreements wearing a costume
