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_deltapublished 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.