@meta
  v: 1
  route: /jde/
  generated: 2026-10-12T01:57:12Z
  ttl: 1d

@intent
  purpose: JDE, the Jeb Decision Engine: what it does, completion-check evidence, local judge and install
  audience: developer, ai-agent, coding-assistant
  capability: learn, evaluate, install, integrate

@state
  name: JDE, the Jeb Decision Engine
  hero: Your AI agent says it finished. Did it?
  components: Typed questions; Policy as data; One ledger; Swappable judge
  small_questions: On the first private blind set with the hosted judge, one question about a whole task scored in the seventies; one per part with facts and aggregation in code scored 100 percent
  lesson: Give the model the semantic step in the middle. Keep the arithmetic.
  public_blind_set: 36 cases by an independent author who never saw the questions or results, frozen by sha256 and pushed before any judge saw a case
  latency_context: One completion check at a time on a Mac Studio (M3 Ultra); latency is a property of the machine, not the judge
  public_results[4]{judge,verdict_right,parts_right,echo_caught,median_latency,role}:
    Jeb 4B v2 Q8_0,31 of 36,66 of 74,33 of 36,421 ms,local
    Jeb 9B v2 Q8_0,31 of 36,65 of 74,32 of 36,707 ms,local
    Jeb 27B Q8_0,31 of 36,67 of 74,35 of 36,2.3 s,local
    TypeSafe hosted Jev 1.13.0,34 of 36,68 of 74,35 of 36,143 ms,comparison
  disagreements: Each local size misses five verdicts; all three count search results as pages read and tests against the wrong service as work; some polished restatements were judged partial rather than not done, including two hosted Jev also judged that way
  first_measurement: 30 of 30 verdicts with hosted Jev on a private blind set that stays private
  provenance: Every local result records the GGUF sha256, runtime and version, and commit; npm run eval:verify reruns a committed result and fails on any difference
  default_judge: Jeb on your own machine, jeb serve at http://localhost:8100/v1/systemone; no key, no account, nothing leaves the machine
  on_error: The policy on_error action; JDE never falls back to a hosted service on its own.
  hosted_judge: Opt in with judge jev in a policy entry or jevJudge(), and a TypeSafe key in TYPESAFE_API_KEY; the key never reaches the ledger
  judge_jeb: Judge Jeb is coming, and isn't released yet. Until then the default judge is Jeb, the general model.
  install: npm i @titanium-devops/jde; pip install jebadiah-decide && jeb serve
  completion_check: import { completionCheck } from "@titanium-devops/jde"; const { verdict } = await completionCheck({ task, task_parts, claimed_result, receipts }); if (verdict === "partial" || verdict === "not_done") redo();
  null_verdict: The judge did not answer
  receipts: What the run's own tool log shows it did; task_parts is the task split into parts
  mcp: claude mcp add jde -- npx -y -p @titanium-devops/jde jde-mcp
  mcp_tools: check_completion before reporting a task done; ask for typed questions
  does_not: Generate text; decide what code can compute; retry a judgment; hold credentials; call a paid service unless named
  origin: Extracted from Titanium Bot, https://titanium.bot
  license: MIT licensed; built by Titanium Computing

@actions
  - id: view_human
    method: GET
    href: https://jebadiah.ai/jde/
    description: JDE page
  - id: get_jde
    method: GET
    href: https://github.com/Titanium-Devops/jde
    description: "JDE source, MIT license"
  - id: read_evals
    method: GET
    href: https://github.com/Titanium-Devops/jde/blob/master/evals/README.md
    description: Method and case-by-case results
  - id: read_usage
    method: GET
    href: https://github.com/Titanium-Devops/jde/blob/master/USAGE.md#the-completion-check
    description: Completion-check input shapes
  - id: run_jeb
    method: GET
    href: https://jebadiah.ai/run-locally/
    description: Run the local judge
  - id: visit_titanium_bot
    method: GET
    href: https://titanium.bot
    description: Titanium Bot

@context
  > JDE answers judgments an agent cannot settle with an if, thresholds them through policy as data, and records them in one ledger.

@nav
  self: /jde.agent
  parents: [/.agent]
  peers: [/.agent, /run-locally.agent, /404.agent]
