Skip to content

judgment

Rust crate and jud CLI where a decision is a .jud rubric file answered by a System One model, type-checked and testable without a key.

Pluginbeta

Overview

judgment provides typed, calibrated judgments from TypeSafe System One models and any server that speaks the same wire format, as a Rust crate and the jud command line. A decision is written as a .jud rubric file or as Rust types: the questions to ask about a JSON state and the policy that turns answers into verdicts. You pipe a state in and get one verdict per question out, such as actionable yes with probability 0.97, desk billing with confidence 0.87, and tone at level angry.

The crate makes four things properties of the types: an answer can only be read as what was asked, a probability is a probability, a transient failure does not fail the decision, and the decision is testable without a key through recorded answers. A record and tune loop lets thresholds be tested against labelled cases and tuned from recorded answers. TYPESAFE_BASE_URL points it at other compatible servers. It installs via mise, Homebrew, cargo or Docker, and ships a Claude Code plugin. It is not affiliated with TypeSafe.

What the decision model decides

TypeQuestionAnswers
Yes / noIs this event actionable?—
ChoiceWhich desk should handle this event?—
ScoreWhat is the tone of this message?—

How it works

  1. Write a .jud rubric with questions and thresholds
  2. Pipe a JSON state into jud
  3. Model answers; types verify each answer before it is read
  4. Policy turns answers into verdicts
  5. Record answers and tune thresholds against labelled cases

Strengths

  • Type system prevents misreading answers
  • Testable offline with recorded answers
  • Works with any compatible server
  • Multiple install routes with checksums and attestations

Caveats

  • Example recordings are scripted, not model output
  • Rust-centric
  • Unofficial

Getting started

brew install chussenot/tap/jud, then cat event.json | jud triage.jud (set TYPESAFE_API_KEY for live answers).

At a glance

Type
Plugin
Status
beta
Language
Rust
Runtime
crate, CLI, Docker, Claude Code plugin
Has code
yes
Has tests
yes

Use cases and integrations

How curated lists describe it

  • Typed, calibrated judgments from System One models: a decision written as a…

    wh000wh000/awesome-jev-live
  • Typed, calibrated judgments from System One models: a decision written as a .jud file or as Rust types, answered by a model, verified before it is read, testable with no key. Rust crate, jud CLI (cat event.json | jud triage.jud), Claude Code plugin. Not affiliated with TypeSafe AI.

    hellogumbo/awesome-jev

Frequently asked questions

What is a .jud file?

A rubric: the questions to ask about a JSON state and the policy that turns answers into verdicts.

Can I test without a key?

Yes, recorded answers replay with no key or network.

Does it only work with TypeSafe?

No, any server speaking the same wire format works via TYPESAFE_BASE_URL.

Related projects

  • Python dialect that adds a '~' operator and jev/case blocks so a branch can ask Jev a yes/no, scale or choice question.

    ProjectprototypePython
  • Rust CLI and library that asks Jev typed questions via OpenRouter and combines the probabilities with fuzzy-logic rules into decisions.

    CLIbetaRust
  • Unofficial standard-library Go client for Jev with generic typed Choice values and local confidence thresholds.

    ProjectbetaGo
  • Rust CLI for Jev: ask yes/no, choice and rubric questions about text and branch on exit codes, JSON or MCP tools.

    MCP serverbetaRust
  • Local service to define, test and publish versioned Jev judgment functions, callable over HTTP by backends and over MCP by agents.

    MCP serverbetaTypeScript
  • Ruby gem that stores Jev Noul, Choice and Score answers about a record's text as ordinary ActiveRecord columns you can query.

    LibrarybetaRuby