Skip to content

feat: add evaluation system — datasets, evaluators, experiments, comparison#25

Merged
risjai merged 4 commits into
masterfrom
feat/eval-system
Apr 10, 2026
Merged

feat: add evaluation system — datasets, evaluators, experiments, comparison#25
risjai merged 4 commits into
masterfrom
feat/eval-system

Conversation

@risjai

@risjai risjai commented Apr 10, 2026

Copy link
Copy Markdown
Collaborator

Summary

Enterprise-grade evaluation system for measuring agent output quality. Closes the #1 feature gap vs LangSmith.

  • New rewind-eval crate — DatasetManager (versioned test cases, JSONL import/export, session extraction), EvaluatorRegistry (5 built-in deterministic scorers), ExperimentRunner (subprocess protocol with timeout/error handling), ExperimentComparison (side-by-side deltas)
  • CLI — Full rewind eval subcommand tree: dataset CRUD, evaluator CRUD, run with --json/--fail-below for CI, compare, experiments, show
  • Storage — 6 new SQLite tables with dataset versioning and content-addressed blob storage
  • Web API — 7 read-only GET routes under /api/eval/*
  • MCP — 5 read-only tools (list/show datasets, list/show/compare experiments)
  • Python SDKDataset, evaluate(), @evaluator decorator, compare(), 4 built-in scorers
  • Web UI — EvalDashboard (Datasets/Experiments/Compare tabs), DatasetBrowser, ExperimentList, ExperimentDetail with expandable scores, ExperimentComparison with color-coded deltas, ScoreBadge

Test plan

  • 14 scoring unit tests pass (cargo test -p rewind-eval)
  • 21 existing web API tests pass
  • Full workspace builds clean (cargo build --release)
  • TypeScript compiles clean (npx tsc --noEmit)
  • CLI golden path verified: create dataset → import JSONL → create evaluator → run experiment → show results → compare experiments
  • --fail-below exits with code 1 when avg_score < threshold (CI gate works)
  • --json outputs machine-parseable JSON with schema_version: 1

Phase 2 (follow-up)

  • llm_judge evaluator (experimental, with base_url for internal LLM gateways)
  • MCP write tools, Python native store, score trends, dataset GC

🤖 Generated with Claude Code

risjai and others added 4 commits April 10, 2026 22:16
…arison

Enterprise-grade evaluation system for measuring agent output quality, not just
structural regressions. Closes the #1 feature gap vs LangSmith.

New crate: rewind-eval
- DatasetManager: versioned test-case collections with JSONL import/export
- 5 built-in deterministic scorers: exact_match, contains, regex, json_schema, tool_use_match
- ExperimentRunner: subprocess protocol (stdin JSON → stdout JSON), timeout, error handling
- ExperimentComparison: side-by-side delta computation with regression/improvement detection

CLI (rewind eval):
- dataset create/import/export/show/list/delete/add-from-session
- evaluator create/list/delete
- run: execute target command against dataset, score, aggregate
- compare: diff two experiments with color-coded output
- --json output for CI pipelines, --fail-below threshold with exit code 1

Storage: 6 new SQLite tables (datasets, dataset_examples, evaluators,
experiments, experiment_results, experiment_scores) with versioning and
content-addressed blob storage.

Web API: 7 read-only GET routes under /api/eval/*
MCP: 5 read-only tools (list/show datasets, list/show/compare experiments)
Python SDK: Dataset, evaluate(), @evaluator decorator, compare(), 4 built-in scorers
Web UI: EvalDashboard with tabs (Datasets/Experiments/Compare), DatasetBrowser,
ExperimentList, ExperimentDetail with expandable scores, ExperimentComparison
with color-coded deltas, ScoreBadge component

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Remove extraneous f-string prefix (F541)
- Rename ambiguous variable `l` to `left_result` (E741)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Replace redundant closures with function references (clippy::redundant_closure)
- Collapse nested if-let statements (clippy::collapsible_if)
- Fix format! in println! args (clippy::format_in_format_args)
- Allow too_many_arguments on update_experiment_aggregates

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add eval to tagline and capability table
- New section: Evaluation — datasets, evaluators, experiments, comparison
- Document CLI workflow: create dataset → import → evaluate → compare
- Document CI integration with --fail-below and --json
- Document Python SDK evaluate() with custom evaluators
- Add eval commands to Commands table (8 new entries)
- Add rewind-eval to Architecture crate list
- Add 5 eval MCP tools to MCP tools table
- Update roadmap: v0.4 shipped (eval system)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@risjai
risjai merged commit 41197dd into master Apr 10, 2026
4 checks passed
@risjai
risjai deleted the feat/eval-system branch April 10, 2026 17:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant