Conversation
…mark Adds a benchmark that runs a fixed Probably decision program over redacted Sentinel ban-candidate dossiers, with the model under test acting as the semantic judge. Judgment mode scores branch agreement, Brier calibration, final-action accuracy and enactment agreement. Research mode first runs a read-only evidence tool loop and additionally scores evidence coverage and gold-fact recall. The bundled fixture is 102 redacted, human-reviewed records (all denied and reverted cases plus a stratified sample of approved ones) and is internal-only. Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
🤖 Devin AI EngineerI'll be helping with this pull request! Here's what you should know: ✅ I will automatically:
Note: I can only respond to comments from users who have write access to this repository. ⚙️ Control Options:
Original prompt from John
|
… for Jev Route typesafe/* models (e.g. ~typesafe/jev-latest) to POST /api/alpha/decisions with one choice question per Probably judgment instead of the chat prompt, so Jev can be the model under test in judgment mode and the judgeModel in research mode. Chat models keep the existing JSON-distribution prompt. Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
TL;DR
Adds
probably_decisions, a benchmark that runs a fixed Probably decision program over redacted Sentinel ban-candidate dossiers with the model under test as the semantic judge, so judgment quality and research quality can be scored separately.What changed?
probably-decisions/probably/: a self-contained Probably interpreter (lexer, parser, runtime) with aProviderseam (judge,write) and a recorded effect trace per run.programs.ts:sentinel_case_v1, the SCANNER_SPEC decision path encoded in Probably (compromised-key gate, static-lead-only rejection, load-vs-abuse, materiality, remedy choice,holdwhen uncertain). Also derives per-action branch expectations for scoring.judge.ts: twoJudgeFnimplementations.chatJudgeprompts a chat model for a JSON label distribution.decisionsJudgesends one Decisionschoicequestion whose criteria are the labels and maps the returnedprobabilitiesback to labels.providers/decisions-client.ts: a small client forPOST /api/alpha/decisions(origin derived frombaseUrl, bearer auth, session and trace headers, provider preferences, zod-validated response, generation id recording, rate-limit retry and timeout).isDecisionsModelroutestypesafe/*ids (e.g.~typesafe/jev-latest) to it.solver.ts: two modes.judgmentfeeds the dossier plus evidence straight intoinput().researchfirst runs a bounded tool loop (list_evidence_sections,read_evidence_section,submit_dossier) and then judges the submitted dossier. Chat judges go through the harnessModelService, so caching, session IDs and generation IDs work unchanged. In research mode a Decisions model asmodelfails at startup with an explanatory error, since the tool loop needs a chat model; put Jev injudgeModelinstead.scorer.ts: action accuracy, enactment agreement, branch agreement, Brier score on judge probabilities, evidence coverage and gold-fact recall (research mode), per-action recall, hold precision, run failure rate.dataset.ts+schema.ts: JSONL record schema, streaming loader with range paging, stablerecordToSample.__fixtures__/sentinel-sample.jsonl: 102 redacted, human-reviewed records used by default (all denied and reverted cases, plus a seeded stratified sample of approved ones across the five enacted actions andhold).Why?
Sentinel scanners and other agents make a chain of semantic judgments before enacting a remedy. Probably makes each judgment an explicit
feels/matcheffect with a probability, andinput()is a hard seam between evidence gathering and judgment. Holding the program fixed means a wrong final action attributes cleanly to either research or judgment.How to test
Expected: sample metadata carries
predicted,gold,judgeCount,branchAgreement,brier, and in research modeevidenceCoverageandfactRecall. Run-level metrics includeaction_accuracy,enactment_agreement,branch_agreement,brier,run_failure_rate.Benchmark impact
New benchmark, no existing scores change. Smoke on
openai/gpt-5-mini(reasoning low): judgment mode 2/6 correct on the first six fixture records withrun_failure_rate0; research mode 2/2 on the first two records withfact_recall1 andevidence_coverage0.9. Judgment mode makes 2 to 4 judge calls per sample and cost about $0.014 for six samples.The dataset is derived from Sentinel ban-candidate cases and their human review outcomes (approved, denied, reverted). Gold action is the enacted remedy for approved cases and
holdfor denied or reverted ones. Records are redacted (no emails, names, account IDs, IPs, keys, links, Slack refs, raw UUIDs) anddataset.test.tsasserts that over every fixture record. The fixture is internal-only and must not leave the organization. Slack scanner summaries were used only as informational context, not as labels.Temperature is fixed at 0 and
maxTokensis never set.Jev smoke, judgment mode (
--model ~typesafe/jev-latest --limit 6): 2/6 correct,run_failure_rate0,branch_agreement0.79,brier1.03, total cost $0.0017 for six samples (about 8x cheaper than gpt-5-mini on the same records).Reviewer focus
programs.tssentinel_case_v1: does the encoded decision path match SCANNER_SPEC (two independent signals, static leads are not proof, compromised key is a hard stop, uncertainty meanshold)?scorer.tsBrier and branch-agreement derivation from the effect trace.decisions-client.tsrequest shape against the Decisions alpha schema, and whethertypesafe/prefix routing is the right capability signal.holdrecords.Checklist
Link to Devin session: https://openrouter.devinenterprise.com/sessions/4d197bca9d774b71a2ddc6b7188f0ea0
Open in Devin Desktop: https://openrouter.devinenterprise.com/desktop/session/4d197bca9d774b71a2ddc6b7188f0ea0?variant=devin
Requested by: @talos