Skip to main content
A stored verdict says what happened. It did not say what that means, so every consumer walked compositeAttempts, compared disposition strings, and decided for itself which status was a rejection. One measured consequence: in a single evaluation corpus, 20 of 39 runs had a jury that errored or abstained, and every one was recorded as a subject that did not pass. The rules for reading a verdict belong to the library that wrote it, so 0.17 adds them as one shape and two entry points.

The two entry points

interpret reads; it does not rewrite. The original verdict stays beside the interpretation, unchanged — a re-exported file parses equal to the original in every respect except the added interpretation keys.

What an Interpretation says

Interpretation is the same shape whether the verdict was written by 0.17 or by 0.13. What differs between a complete record and an incomplete one is only its defects. A stage that entered and never produced a verdict has a null status and its failure code. An absent status is never read as a failure.

Every stored shape reads

An unknown token is carried as recorded with a defect rather than refused, and a map of the wrong shape degrades into a list of missing facts rather than an exception.

A consumer example

This reads the explanation’s fields only. It never traverses the stored verdict.
This example is executed, not illustrative. It runs against the generated cascade example committed with the implementation review, and prints a full reading including every recorded check.

When a pass rate is absent

pass_rate returns absent rather than 0 when the denominator is empty. Describe that as no items eligible for the denominator — never as “no item was judged”, which is a different claim and is usually false in exactly this case. Two absences leave the denominator for different reasons, and they stay distinct:
  • An item with no verdict at all never enters the tally. Nothing ran.
  • NOT_ASSESSED means a jury did run and could not assess. That is an instrument failure, and it is counted as one.
An item can also be NOT_APPLICABLE — excluded and counted separately. So a denominator can be empty while every item was judged.

What this deliberately does not say

Whether any reading counts against the subject, enters a denominator, or affects a rate. That policy belongs to the consumer that owns the denominator, which is why the counting above is Experiment’s and none of it is in the file.

The Java surface

All of it lives in io.github.markpollack.judge.jury.interpretation. Evidence is the nullable view of the keys AggregationEvidence writes, so an older record binds leniently with the counts it lacks left null; ScoreScale reports the scale a normalised score was recorded on.
  • Migrating to 0.17 — containment, the fifth status, and the seven-component verdict
  • Jury system — the policies that produce what is being read