SPB Git

spb/llmindex Public

The discriminative, contamination-resistant, fully transparent LLM ranking — updated live.

TypeScript 77.9% TeX 15.2% Python 3.7% SQL 1.4% JavaScript 1.1% Shell 0.5%
3.5 KB

# Methodology Changelog

All notable methodology changes. Every entry corresponds to an INDEX_VERSION bump in packages/scoring/src/weights.ts.

# [0.2.0] — 2026-08-05

Major discrimination & robustness overhaul (research-driven; see the References section of the methodology page).

# New domains (12 total, equal weights = maximum-entropy prior)

  • agentic — simulated tool-calling with distractor tools and deterministic simulators (support-desk triage under policy, treasury ledger with overdraft pre-funding, DAG-ordered deployments) plus a dedicated context-load family (120-300-row ledgers dense with near-miss decoys). Graded by canonical-JSON call-sequence equality — binary, judge-free.
  • terminal — home-made shell simulation on a closed unambiguous POSIX subset: pipeline stdout prediction, file-tree state tracking through mv/cp/rm/cd, && / || execution-trace + exit-code prediction. Locale/GNU-vs-BSD/float-format constructs excluded by design.
  • svg_design — reproduce a real-world logo in raw SVG from memory; 3-judge cross-provider panel, position swaps, Bradley-Terry aggregation (now wired end-to-end into the refit).
  • vision_ocr — generated SVG scenes rasterized to PNG: code transcription under clutter and table reading + grounded arithmetic; ambiguous glyphs excluded; text-only models skip.

# Hardened existing domains

  • math: 6-8-step dependent chains, 2-variable systems with derived queries, 3-stage percentage chains with provably-inert distractor clauses, counterfactual base-k arithmetic, R-Horizon-style chained sub-problems.
  • reasoning: 7-entity orderings, non-adjacent transitive clues, decoy entity, interior-rank query.
  • code: nested loops with break/continue tracing.
  • knowledge: switched to free-response (removes the multiple-choice guessing floor; c≈0).
  • multilingual: full 0-999 number-word space (incl. French 70-99 irregular zone) both directions.
  • instruction_following: constraint stacking (5 simultaneous mechanically-verified constraints).

# Grading & harness robustness

  • Extraction cascade: markdown-wrapped ANSWER tags, FINAL ANSWER variants, LaTeX \boxed{}, fenced-block extraction for JSON/multi-line answers; thousands separators/currency/unit normalization; hyphen/space orthography unification.
  • Truncated completions (finish_reason=length) are unscored, never wrong; completion budget raised to 16384 tokens.
  • New grading modes: json (canonical AST equality), lines (exact multi-line), constraints (mechanical checker stack).
  • Refits only consume batches of the current INDEX_VERSION.

# Weights

  • Sub-metrics: accuracy_irt 0.60, consistency 0.15, contamination_resistance 0.15, calibration 0.10 (rationale documented on the methodology page). Domain weights remain equal.

# [0.1.0] — 2026-08-05

Initial public methodology.

  • 2PL IRT scoring (custom numpy MAP fit; priors θ~N(0,1), b~N(0,1.5), log a~N(0,0.5)).
  • Dynamic item generation with seeded perturbation; anchor stream capped at 20%; contamination_delta published with floor 0.2 for the resistance mapping.
  • Sub-metric weights: accuracy_irt 0.55, consistency 0.15, calibration 0.15, contamination_resistance 0.15. Latency/cost excluded by design (Pareto frontier).
  • Equal domain weights across the 8 v1 domains.
  • θ → index rescale: 500 + 150·θ (display); domain scores as 1000 × composite; 95% CIs everywhere.
  • Bradley-Terry layer for writing / safety_refusal_quality with 2-judge cross-provider protocol.
  • Degraded-batch rule: >2% failed calls excludes a batch from fits until re-run.