Rulvar API reference / @rulvar/rulvar / RejectedFinishCandidate
Interface: RejectedFinishCandidate
Defined in: packages/core/dist/index.d.ts
One finish candidate the declared contract did NOT accept (RV2507). The 1.226.0 comparison run rejected three syntheses; nothing on its terminal said so, nothing said whether the three differed from each other, and the only way to read them was an external script that re-parsed the whole agent transcript. The row is the artifact that dig produced, made first class.
hash is the sha256 over the canonical candidate: two rows with the same hash are the model serving the same document twice, which is a different failure from three genuine attempts and used to be invisible. ref is present exactly under finishValidation.retainRejectedCandidates, and points at a transcript blob holding the candidate verbatim; without it the row still identifies and sizes what was rejected, and names the validators that did it.