JEVALUATE.TXT
jev-mode / jevaluate

Jevaluate System

Jevaluate rates whether open-source projects use TypeSafe's Jev model well. The ratings are public, so every LLM rater has to read the rubric the same way. Code checks every rule a script can check. The rater reports only what it observes, and code derives the rest. An eval with blinded labels tests the rubric before any version is frozen.

805 automated tests 19 golden projects keyed quiz: 33 of 33 negative control: 73% 12 of 13 labels provable
DESIGN_RULES

Five design rules

  • Code enforces, text explainsEvery rubric rule has a row in enforcement.md naming the function that refuses a wrong answer, or why the rule stays judgment. A lint fails on a rule with no row or a function that doesn't exist.
  • Ask for what is observedThe rater records type, the call line, each decision with its stakes as read, and the verdict. Code derives kind and every n.a. People and models both miss exception lists. Code doesn't.
  • Evidence over claims"Calls Jev: yes" must cite the file and line of the call, and check confirms it is a call. A README, a docs page or a project name never counts.
  • Stakes change the rowsRules whose test depends on stakes (confidence gating, option order, templated data, untrusted text) get one row per stakes level. The rater sees only the rows its project's decisions need.
  • Refuse, don't warnScripts stop the workflow: a rating over 200k tokens without approval, a missing step log, routing changed after the facts were served, an eval run on uncommitted rubric changes.
1 / HOW THE PIECES FIT

Components and workflows

The harness runs three workflows. A rubric change passes the eval before a git tag freezes it. A rating round sends each project to one rater per model and takes their verdict-changing disagreements to the owner. Publishing exports reviewed ratings in one pull request.

jevaluate

Rates one project

Does this project use Jev well?

The rater follows SKILL.md and read.md. A rating costs about 100-300k tokens, by repo size. Run as /jevaluate-private, the same rating stays in a private library that export refuses, so it is never published.

jevaluate-eval

Tests the rubric

Do graders apply the rubric correctly?

Materials check, quiz, judgment eval, and rater agreement for a second rater. Proposes wording fixes. Never edits the rubric or a rating.

jevaluate-harness

Runs the process

How do I run a round, change the rubric or publish?

harness_status.py reruns the materials lint and the release check and names the next step.

overlay (private)

The owner's own rules

Which extra gates apply here?

A private note of extra gates and presentation rules. $JEVALUATE_OVERLAY points to it; the harness and the eval read it first, and its rules override their defaults. The public skills stay generic.

Change the rubricrubric-change.md
  1. rules written
  2. jevaluate-eval
    1. materials check
    2. quiz
    3. judgment eval
  3. owner approves
  4. frozen by git tag
Rate projectsrating-round.md
  1. picked
  2. sized
  3. costs approved
  4. jevaluate, one rater per model
    1. rater reads the code
    2. step.py
    3. library.py check
  5. scan_transcripts.py
  6. library.py add
  7. adjudicated
  8. dispute_packet.py
  9. owner rules on verdict-changing splits
  10. library.py review
  11. final gate
Publishpublish.md
  1. reviewed ratings
  2. library.py export
  3. page review
  4. check_release.py
  5. one pull request
script step, logged in the workflow's ledger run by jevaluate-eval run by jevaluate
2 / ROUTING

Routing and code enforcement

Routing decides which facts apply and how a failure counts, so code checks it hardest. Each script window on the chart refuses a wrong answer or fills in a value the rater never enters. The rubric doesn't rate guides or jev-replacements yet: they get verdict 1, not yet rated, and their facts, scores and stakes are n.a.

question the rater answers type verdict-1 code derived by code, never entered script

Scroll sideways to see the whole chart.

3 / EVALUATION

The eval that gates every rubric version

A rubric change runs the first three instruments in order, each passing before the next. The fourth checks a second rater. Pass bars are set before the run. Each rule is scored on its own, never just an average of all scores.

  1. 1

    Materials check

    Is what the grader reads consistent?

    1. lint_materials.pyAllowed values agree across files. No eval-case names in rubric examples. Every rule has an enforcement row.
    2. Fresh reviewerBriefed as a grader, reads the materials cold.
    3. Grader viewThe owner reviews exactly what a grader receives, step by step, after any change that moves instructions into code.
  2. 2

    Comprehension quiz

    Does a grader understand the rules on invented projects?

    1. blind writerInvented projects11 from a model that never saw the rubric, and 5 lookalikes a Claude session wrote for a rubric change. Some mislead on the surface. Any overlap with rubric wording is rewritten.
    2. Owner's key, 16 projectsAnswered first, observable fields only. A script derives the rest and refuses contradictory answers.
    3. 8 tuning, 8 held outThree drawn at random (seed 29) after the key was final, plus the five lookalikes. Two of those no longer count as held out on stakes: their key changed after a run.

    FULL RUN, 2026-09-30, ONE SCALE

    Negative control: vocabulary only
    8 of 11 scenarios, 73%
    Real instructions, 3 runs each
    33 of 33 answers
    050%100%

    80% give-away line: the negative control must score under it

    Negative control: A grader given only the allowed values must score under 80%, or the scenarios give their answers away. Its three misses are the three rules the vocabulary can't supply.

    Pass bar: Every tuning case right in 3 of 3 runs, held-out in 2 of 3.

    Result, 2026-09-30: Every rule tag passed, held-out 3 of 3, and no wording fix was needed.

  3. 3

    Judgment eval

    Does a grader route real projects the way the owner does?

    1. Golden dataset19 real open-source projects, keyed. 6 of them cover the gaps: one claims Jev and never calls it, one is an honest stub named after Jev, two are high stakes, two very high.
    2. pick_files.pyFixed file ruleRoot README, every file with a hosted call, then Jev or decision hits up to 4 files. Code before docs and tests, data last. 3,000 characters each.
    3. Provable labelsEvery gold answer must be backed by the packet the grader sees. 13 checked: 12 provable, 1 weak, 0 changed.
    4. blind labelersLabel provenanceNew cases: labels sealed until the owner answers from evidence cards. check_labels.py refuses a label that cites a doc as a call; build_cards.py refuses any verdict word on a card.

    Graders under test: Claude Sonnet and GPT-6 Sol in Codex, on identical inputs.

    The call detector is tested too: every miss or false call found on real repos is now a regression test.

  4. 4

    Rater agreement

    Do two raters agree, and which is accurate?

    1. Tuning sample named firstProjects whose disagreements fed wording are reported apart, and second.
    2. rater_agreement.pyRaw agreement and Cohen's kappa per field, held-out projects first.
    3. blind ownerAnswer keyA seeded draw of agreed and split facts. The owner answers before seeing either rater.
    4. Reliability and accuracyAgreement and kappa measure inter-rater reliability. Accuracy needs the key: two raters can agree and both be wrong. Wording is tuned for both, never for agreement over accuracy.
  5. FOR STAGES 2-3

    Reproducibility

    Can a score be traced to the exact rubric and key?

    1. run_eval.pyPre-flight refuses uncommitted rubric changes or a branch behind main.
    2. StampEvery quiz and eval run records the commit. Eval runs also fingerprint the answer key.
    3. score.pyJudgment eval only: refuses to score if the key changed after the run.
  6. FOR STAGES 2-3

    Report

    What does the rubric get wrong?

    1. Per ruleEach rule tag scored alone. An average hides the rule that fails.
    2. One fix per missed ruleWording fixes come only from tuning misses and never name a held-out case.
    3. StopThe owner sees each fix as a before-and-after. The eval never edits the rubric.
4 / BLINDING

Who is blind to what

Each blind guards against one risk: leakage, contamination, anchoring or skimming ahead. Two roles can't be blind, so rules fence in what each can touch.

WhoBlind toWhyGuards against
Scenario writer, 11 of 16 quiz projectsThe rubric and the answer keysScenarios that echo rubric wording test string matching, not understanding.leakage
The owner, setting the keyEvery model answer and the controller's reading, until the key is setGolden labels can't anchor on a model.anchoring
The owner, ruling on a disagreementWhich rater gave which answer: two answers, A and B, in seeded order, with the rule and the codeA ruling can't lean toward one model.anchoring
Blind labelersThe rubric's accept lists and each other's labels. Labels stay sealed until the owner answers.An independent second opinion that can't touch the key.leakageanchoring
Graders under testThe answer key, eval-case names (a lint keeps them out of rubric examples), the held-out set during tuningA grader that has seen the answers is scored on memory.contaminationoverfitting
Raters in a roundThe rubric past the current phase, and the project's previous rating until its facts and scores are writtenStops skimming ahead and keeps facts and scores from leaning toward an old rating. The verdict comes after, so it can still lean.skimming ahead
Reviewer of a big verdict moveThe scores and verdicts: it gets only the factsIt judges the move from the evidence, not from either number.anchoring
Final gate reviewerAny summary of the workJudges the artifact, not the story told about it.anchoring
Eval controllerNothing: it knows the keyIt runs the eval. It may fix wording only from tuning misses, draws the held-out set after wording is final, and names any held-out item that fed wording (q09).not blind
The ownerNothing: knows the rubric and rules on itThe domain expert the graders are tuned to match. The quiz measures agreement with that reading.not blind