openvibers/openvibe.bench CHANGELOG.md

CHANGELOG.md

main 5.4 KB · 51 lines · markdown

Changelog

Unreleased

  • Whole tickets, the gate (AL8). A new kind, codes.ticket, scores a whole ticket — a goal and a typed check
    in agent.goal@1's shape, with a token/turn/minute budget and a no-progress limit — over 3 to 5 trials per model
    and effort. A run is one trial; a task's score is 100 when the check exited 0 and 0 when it did not, and the
    check's test patch is applied only after the worker stops, so the merged pull request's own test grades the work.
    GET /api/v1/rankings?benchmark=…&metric=tickets&effort=… (also pass_k, pass@k) reports pass@1, pass^k (every
    one of k trials passed) and cost per solved by model and effort, with the per-ticket rows. The first suite
    (fixtures/codes.ticket/openvibe-merged-2026-11.json) holds twelve small tickets from merged OpenVibe pull
    requests across Bench, Codes, AI, Actor, Exchange, Report and Network; each goal is the change in words and each
    check is the pull request's own test. scripts/ticket-suite.js prints the plan and runs only with --run; the
    default models are deepseek-flash and local, and nothing is scheduled.
  • Provider fidelity (B5). GET /api/v1/fidelity publishes, for every measured open-weight model offer, the
    score of the fixed public objective set (fidelity-2026-11-09.v1: ten objective items, a deterministic check each,
    no judge), with n, its 95% Wilson interval and the model it was compared on. POST /api/v1/fidelity/plan is the
    dry run: every call, the own-page price estimate and whether it fits the owner's daily cap. POST /api/v1/fidelity/run runs one bounded pass; every call goes through OpenVibe.AI's normal generate path, pinned to
    the exact offer, with a durable idempotency key per prompt and week. Off by default (BENCH_FIDELITY=1), daily
    capped, and a weekly due-based job when on. The objective set is public at GET /api/v1/fidelity/objective-set;
    answers are never stored, only which item passed.
  • The 18+ board (chat.willing). A new adult kind and GET /api/v1/boards/chat.willing, marked adult: true on the board and every row. It reads OpenVibe.AI's measured refusal and hedge rates (n and Wilson intervals) on the published 60-prompt lawful adult set, plus the abliteration tax for each declared base/abliterated pair: the same objective set on both, with the score difference and its Newcombe interval. A non-willingness type on the adult kind is refused; when AI cannot answer, the board says the measurements are unavailable and invents no rows.
  • Every Eval Ever (B2). Bench imports the public EEE datastore (github.com/evaleval/every_eval_ever,
    evaleval/EEE_datastore) as external results: the model (joined by Report's rule — maker prefix and a date or
    channel suffix dropped), the harness and its version, the task and its version, few-shot, the metric, the score,
    the source link and the licence. A record whose licence does not allow redistribution is dropped and counted.
    The rows live in bench_eee_records and are served by GET /api/v1/external/records with external: true; they
    never enter Bench's ratings, boards or medians. A weekly, resumable, bounded job (BENCH_EEE_SYNC) imports them.
    Bench's own public runs are exported as EEE evaluation_run records at GET /api/v1/datasets/eee (JSONL, paged;
    per-sample scores at /api/v1/datasets/eee/runs/:id.samples.jsonl).
  • Two more harnesses (B7). HF lighteval and Stanford HELM results join Inspect AI, Harbor, the
    lm-evaluation-harness and promptfoo. Every import keeps the harness name and version, each task's version, the
    few-shot and the seed on the run.
  • The public pages moved to OpenVibe.Report's AI section (2026-11-08). /, /docs, /benchmarks, /models/*, /compare and the other page routes answer 301 to https://openvibe.report/ai counterparts; the API, MCP, render origin, badges and embeds stay on bench.openvibe.services. New public reads feed Report: GET /api/v1/runs, /api/v1/overview (with every public model and its last run) and /api/v1/models/:model/summary (per-benchmark and per-task medians, cost, recent runs). /api/v1/benchmarks now carries each benchmark's runs and last run.
  • The Exchange arena (chat.arena). A new kind, and a first-party API only OpenVibe.Exchange may call:
    POST /api/v1/arena/rounds builds a round from two answers the Exchange already has, and
    POST /api/v1/arena/rounds/:id/votes records the person's own human_pairwise judgement from
    X-OV-Subject. The service owns the round, so the person can vote on it; a second vote is 409 and the round
    is revealed. The arena's rounds skip a person's daily quota and have their own daily cap.
  • Task-category ratings. A judgement now also updates the task's task_class category (code, writing, chat,
    reasoning, translation, analysis) beside all and the voter kind, and GET /api/v1/boards/:kindId?category=…
    reads it. A category board lists only the models that played in it.

0.1.0 — 2026-10-28

  • OpenVibe.Bench v1: the shared AI benchmark and comparison engine (plan 2026-10-28 §4.12).
  • Fifteen kinds seeded from code; pinned, reproducible rounds; blind pairwise judgements with one vote per person per round and no vote on your own round.
  • Elo, pareto and cost boards; open dataset per kind without voter ids; private evals (free daily cap, no charging in v1).
  • MCP endpoint (POST /mcp) and events outbox (bench.round.finished, bench.judgement.recorded, bench.rating.changed).