Skip to content

RFC 0013: the first evaluator error and precedence cases (closes #45) - #64

Merged
kikashy merged 1 commit into
mainfrom
rfc-evaluator-error-cases
Aug 15, 2026
Merged

RFC 0013: the first evaluator error and precedence cases (closes #45)#64
kikashy merged 1 commit into
mainfrom
rfc-evaluator-error-cases

Conversation

@kikashy

@kikashy kikashy commented Aug 15, 2026

Copy link
Copy Markdown
Contributor

Closes #45.

The 0.2.0-draft evaluation suite carries an expectedErrorClass result shape and no case that uses it — 20 rows, all expecting a disposition. §8.4's four classes and the fixed order between them are specified, schema-supported, and entirely unexercised. The suite is frozen, so this proposes rows for the next version rather than rewriting published history.

Five cases; two of them are the point

Three are single-condition and would be caught by almost any implementation. The other two present inputs where more than one class genuinely applies, and the row fixes which one is reported.

That is the whole argument. §8.4 says the order exists so "two conforming implementations report the same class for the same inputs" — and an order that is never exercised is one two implementations can disagree about while both passing the suite.

Case 5 is why this is worth doing now. The normative order is not the order the classes are introduced in prose: unsupported-required-extension sits third, after malformed-input. So an implementation that checks extension support while reading the pack — before it ever looks at the evidence document — reports the wrong class. That is a plausible implementation, not a contrived one, and nothing in the current suite catches it.

Case 4 is §8.4's own worked example turned into a row.

What it declines to sketch

Rather than sketching them loosely: resource-exhaustion (needs a documented §10 limit reached while evaluating an admitted input); implementation-defined classes (a corpus row cannot require one without naming an implementation); error messages (§8.4 fixes the class identifier and explicitly leaves transport and wire format undefined, with §13 keeping the diagnostic contract open); and whether expectedErrorPhase belongs in the first batch, left as an open question rather than quietly decided.

Four open questions are listed for the reviewer, including whether five is the right size — a batch of just cases 4 and 5 would be defensible if the single-condition rows are judged obvious.

Verified, not recalled

  • the quoted precedence order is the specification's own text, character for character;
  • both quoted rationales likewise;
  • the premise — 20 rows, 0 using expectedErrorClass — checked against the manifest;
  • the sketched row shape checked against the case schema's oneOf (expectedDisposition or expectedErrorClass) and dependentRequired (expectedErrorPhase needs a class).

Registered in rfcs/README.md and web/build.py. Suite: 64 passed, 532 subtests. No normative or corpus change — this is a proposal.

🤖 Generated with Claude Code

@kikashy
kikashy force-pushed the rfc-evaluator-error-cases branch 2 times, most recently from 4d0cb9b to f13fcc0 Compare August 15, 2026 01:02
The 0.2.0-draft evaluation suite carries an expectedErrorClass result shape and
no case that uses it: 20 rows, all expecting a disposition. So section 8.4's
four classes and the fixed order between them are specified, schema-supported
and entirely unexercised. The current suite is frozen, so this is a proposal for
the next version rather than a rewrite of published history.

Five rows. Three are single-condition and would be caught by almost any
implementation. Two are the point: inputs where more than one class genuinely
applies, and the row fixes which one gets reported. An order that is never
exercised is an order two implementations can disagree about while both passing
the suite, which is exactly what 8.4 says the order exists to prevent.

Case 5 is the most valuable and the reason to write this now. The order is NOT
the order the classes are introduced in prose — unsupported-required-extension
sits third, after malformed-input — so an implementation that checks extension
support while reading the pack, before it looks at the evidence document,
reports the wrong class. That is a plausible implementation, not a contrived
one, and nothing in the current suite would catch it.

Four things the RFC declines to sketch rather than sketching loosely:
resource-exhaustion, which needs a documented section 10 limit reached while
evaluating an admitted input; implementation-defined classes, which a corpus row
cannot require without naming an implementation; error messages, since 8.4 fixes
the class identifier and leaves transport and wire format undefined; and whether
expectedErrorPhase belongs in the first batch at all, which is left as an open
question rather than decided.

Verified rather than recalled: the quoted precedence order and both quoted
rationales are the specification's own text, the premise that no row uses
expectedErrorClass is checked against the manifest, and the sketched row shape
matches the case schema's oneOf and dependentRequired.

Signed-off-by: kikashy <kikashy@hotmail.com>
@kikashy
kikashy force-pushed the rfc-evaluator-error-cases branch from f13fcc0 to 71f5b63 Compare August 15, 2026 01:06
@kikashy
kikashy merged commit 8ce0b08 into main Aug 15, 2026
5 checks passed
@kikashy
kikashy deleted the rfc-evaluator-error-cases branch August 15, 2026 01:07
@github-actions

Copy link
Copy Markdown

🎉 Thank you for your contribution to Judgment Pack!

If you’d like another task, choose a path that interests you:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Design the first evaluator error and precedence cases for the next suite version

1 participant