Tagging difficulty is what makes the set useful
An aggregate score hides the thing you need to know. A prompt change that improves easy cases and breaks hard ones can look like an improvement, and a difficulty tag makes that visible immediately.
Aim for a deliberate mix. A set of only easy cases reports success you do not have; a set of only hard ones reports failure you cannot act on.
Stable identifiers
Case ids let you track a specific failure across runs and across model versions. Without them, comparing two evaluation runs means matching on input text, which breaks the moment anyone edits a case.
They also make regressions reportable: "case_047 broke" is actionable in a way that "the score dropped two points" is not.