Skip to content

docs: update the VeraBench section for the v0.0.18 sweep - #1169

Merged
aallan merged 7 commits into
mainfrom
docs/verabench-v0-0-18
Jul 28, 2026
Merged

docs: update the VeraBench section for the v0.0.18 sweep#1169
aallan merged 7 commits into
mainfrom
docs/verabench-v0-0-18

Conversation

@aallan

@aallan aallan commented Jul 28, 2026

Copy link
Copy Markdown
Owner

Updates the VeraBench section for the v0.0.18 sweep, the first to output-grade all 60 problems in all five languages. Numbers were read out of the result rows rather than transcribed, and I verified the rendered table against them cell by cell.

What moved

was now
headline stat seven of nine at 100% six of nine
one problem is worth just under 3 points (36 graded) 1.7 points (60 graded)
provenance VeraBench v0.0.16 / Vera v0.1.7 v0.0.18 / v0.1.8

The delta chart is the v0.0.18 render, same dimensions, so the width/height attributes are unchanged.

The summary line changes shape, not just its numbers

"Vera wins outright for four of the nine models, draws with three and loses two" no longer describes the result. TypeScript now reaches 100% for six of the nine, so there is very little room left at the top and claiming a win there would be reading noise. It now says Vera is the highest score or level with it for six of nine, and names the ceiling as the reason the margins are small.

Two new paragraphs, below the chart

The Python and TypeScript columns now differ in a way worth explaining to a reader looking at the chart, and the difference is the same axis Vera sits on:

Python is dynamically typed, so a type error surfaces when the code runs; TypeScript is statically typed and rejects the same error before anything runs. Vera sits on the TypeScript side of that line and goes further, making requires, ensures and effects mandatory on every function and replacing variable names with typed slot references. Sort the three by how much they constrain the model rather than by how much of them it has read, and the ordering stops looking accidental.

The second paragraph carries that to the point the section was already gesturing at with "enough structure to compensate for zero training data", now with the evidence attached: TypeScript earns its score with an enormous amount of the language in every training set, Vera earns very nearly the same score with none of it, and among the three zero-training-data languages the most constrained one scores highest.

Stated as compensation rather than superiority, deliberately. Vera is a point behind TypeScript on average and the chart shows it; the claim is that the constraints are worth roughly what a training corpus is worth, which is both defensible and the more interesting result.

Related

Companion PR in the benchmark repo: aallan/vera-bench#120

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Documentation
    • Updated VeraBench benchmark information to v0.0.18 across README, FAQ, and the full documentation.
    • Revised headline results and model performance figures, including updated Vera-vs-Aver comparisons.
    • Expanded grading to all 60 problems and updated the scoring/caveats accordingly.
    • Removed the prior Vera-vs-Python comparison narrative.
    • Regenerated the VeraBench section for the website landing content to reflect the updated results.

The first sweep to grade all 60 problems in every language, so every number
in the section moves and the denominator halves in significance: one problem
is now worth 1.7 percentage points rather than just under three.

Six of nine models write Vera perfectly, down from seven, and the headline
stat says so. The table carries the new scores with the same win/loss
marking, and the delta chart is the v0.0.18 render.

The summary line under the table changes shape rather than just its numbers.
"Vera wins outright for four" no longer describes the result: TypeScript now
reaches 100% for six of the nine models, so there is very little room at the
top for anything to win by, and claiming a win there would be reading noise.
What the data does support is that Vera is the highest score or level with it
for six of nine.

Two paragraphs are new, below the chart, because the Python and TypeScript
columns now differ in a way worth explaining. Python is dynamically typed and
finds a type error when the code runs; TypeScript rejects it first; Vera sits
on the TypeScript side and goes further with mandatory contracts and typed
slot references. Sorted by how much each constrains the model rather than by
how much of it the model has read, the ordering stops looking accidental.

That leads to the point the section was already gesturing at. TypeScript earns
its score with an enormous amount of the language in every training set; Vera
earns very nearly the same score with none of it. Among the three languages
here that no model has been trained on, the most constrained scores highest.

Numbers verified against the VeraBench v0.0.18 result rows rather than
transcribed.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jul 28, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 44700238-4ca0-4602-8a8f-e39f89ed9f40

📥 Commits

Reviewing files that changed from the base of the PR and between b8b147c and db782cc.

⛔ Files ignored due to path filters (2)
  • docs/index.html is excluded by !docs/**
  • docs/index.md is excluded by !docs/**
📒 Files selected for processing (1)
  • scripts/build_site.py
🔗 Linked repositories identified

CodeRabbit considers these linked repositories for cross-repo context during reviews:


📝 Walkthrough

Walkthrough

The VeraBench documentation is updated from v0.0.16 to v0.0.18, with revised benchmark results, full 60-problem grading details, updated scoring impact, and refreshed generated site content.

Changes

VeraBench documentation refresh

Layer / File(s) Summary
Update generated benchmark content
scripts/build_site.py
Refreshes the VeraBench narrative, model percentage table, result interpretation, and VeraBench/Vera version references generated by build_index_md().
Propagate benchmark documentation
CHANGELOG.md, FAQ.md, README.md
Updates published benchmark versions, headline results, grading scope, scoring details, and regeneration notes.

Estimated code review effort: 2 (Simple) | ~10 minutes

Possibly related PRs

  • aallan/vera#1153: Updates the same VeraBench documentation sections and benchmark result details.
  • aallan/vera#526: Modifies VeraBench content generated by build_index_md().
  • aallan/vera#327: Relates to the site-generation flow producing updated documentation outputs.

Suggested labels: ci, docs

🚥 Pre-merge checks | ✅ 8
✅ Passed checks (8 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarises the main change: updating the VeraBench documentation for the v0.0.18 sweep.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Changelog Covers Public-Surface Changes ✅ Passed No public-surface files changed; the PR only touches docs and the site generator, so there is nothing for CHANGELOG.md to cover.
Spec And Implementation Move Together ✅ Passed No files under vera/ or spec/ changed; the PR only updates docs and site-generation text, so there is no spec/implementation mismatch.
Diagnostics Carry An Error Code ✅ Passed The PR only changes docs/site wording; no diagnostic definitions were added or edited, so no new code-less diagnostic is present.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch docs/verabench-v0-0-18

Comment @coderabbitai help to get the list of available commands.

@codecov

codecov Bot commented Jul 28, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 93.81%. Comparing base (79826b9) to head (db782cc).

Additional details and impacted files
@@           Coverage Diff           @@
##             main    #1169   +/-   ##
=======================================
  Coverage   93.81%   93.81%           
=======================================
  Files          99       99           
  Lines       33457    33457           
  Branches      458      458           
=======================================
  Hits        31389    31389           
  Misses       2055     2055           
  Partials       13       13           
Flag Coverage Δ
javascript 78.61% <ø> (ø)
python 95.54% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

aallan and others added 5 commits July 28, 2026 03:37
'The Python and TypeScript columns are worth reading against each other,
because they differ in exactly the way that matters here' and 'Which is the
whole argument in one column' both told the reader what to think before
saying anything. The paragraphs now open on the claim itself: Python and
TypeScript differ in exactly the way that matters, and TypeScript earns its
score with the language in every training set.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The section said 'four modes each' above a table with three columns, so a
reader counts and comes up short. The missing one is the spec-from-NL run,
where the model infers the types and writes its own contracts before writing
any code, and it is the mode with by far the widest spread across models.

Named all four and said the table shows three of them.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
One instance against seven correct ones elsewhere on the page.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The HTML edit reaches one of five surfaces that carry these numbers.

`docs/index.md` is not derived from the HTML -- it is generated by
`build_index_md()` in `scripts/build_site.py`, which holds the benchmark
prose as its own copy.  Editing the page therefore leaves the Markdown
companion agents fetch showing the previous sweep, and
`check_site_assets.py` cannot see it: the check regenerates from the same
function it compares against, so both sides move together and a stale
generator validates as up to date.  That is #1154.  The generator now
carries the v0.0.18 prose and table, and index.md and llms-full.txt are
regenerated from it.

`README.md` and `FAQ.md` each state the figures independently and were
still on v0.0.16 -- seven of nine at 100%, "wins outright for four",
36 output-gradeable problems at 2.8 points each.

Every number was cross-checked against vera-bench#120, the pending
results rewrite in the benchmark repo, before being copied anywhere: all
27 published cells agree, "six of nine at 100%" agrees, and "highest or
level for six of nine" agrees.  The two headline claims were also
recomputed from the table itself rather than taken on trust.

Also restores one space of indentation on the VeraBench section comment,
which the HTML edit dropped.

Co-Authored-By: Claude <noreply@anthropic.invalid>
@aallan

aallan commented Jul 28, 2026

Copy link
Copy Markdown
Owner Author

Completed the surfaces the HTML edit doesn't reach. Pushed at b8b147c4.

The data is sound — verified, not assumed

Recomputed both headline claims from the table itself before touching anything else: six models at 100% Vera, and Vera highest-or-level for six of nine. Both match the prose exactly.

Then cross-checked every figure against vera-bench#120, the pending results rewrite in the benchmark repo. All 27 published cells agree, as do both headline counts. The website's numbers and the benchmark's are the same measurement, not two transcriptions of it.

What was missing

docs/index.html is one of five surfaces carrying these figures.

scripts/build_site.py is the important one. docs/index.md — the Markdown companion agents fetch via rel="alternate" — is not derived from the HTML; it is generated by build_index_md(), which holds the benchmark prose and table as its own copy. Editing the page leaves that copy on the previous sweep, and check_site_assets.py cannot catch it: the check regenerates from the same function it compares against, so both sides move together and a stale generator validates as up to date. That is #1154 exactly. The generator now carries the v0.0.18 prose and table; docs/index.md and docs/llms-full.txt are regenerated from it.

README.md and FAQ.md each state the figures independently and were both still on v0.0.16 — seven of nine at 100%, "wins outright for four of the nine, draws with three and loses two", 36 output-gradeable problems at 2.8 points each.

Left alone deliberately: DE_BRUIJN.md's benchmark references are scoped to the Vera-against-Aver comparison and the v0.0.7-era slot-ordering snapshot. Neither is a Python/TypeScript figure and this sweep gives no new Aver data, so neither moves.

Also restored one space of indentation on the VeraBench section comment, which the HTML edit dropped.

One sequencing note

vera-bench#120 should land first, or together with this. v0.0.18 is tagged, but the benchmark README on main still publishes the v0.0.16 results — its table shows Fable 5 at 97/94/92 where this sweep has 97/97, and its narrative still reads "wins outright for four of the nine models, draws with three and loses two".

This PR points veralang.dev at vera-bench#results while stating v0.0.18 figures. Merged alone, a reader who follows that link lands on numbers that contradict the page they came from. Nothing here is wrong; the two just need to go live in the right order.

Gates: check_site_assets, check_doc_counts, check_version_sync, check_html_examples, check_readme_examples, check_faq_examples all pass, plus the full suite through pre-commit. CHANGELOG entry added under [Unreleased].

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@scripts/build_site.py`:
- Line 562: Update the benchmark commentary sentence in the generated-site
source to state that each problem is worth 1.7 percentage points instead of
“just under two percentage points,” then regenerate the derived documentation so
all published surfaces use the precise figure consistently.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 6acf99b1-de82-453d-8050-76954ca5f62e

📥 Commits

Reviewing files that changed from the base of the PR and between 79826b9 and b8b147c.

⛔ Files ignored due to path filters (4)
  • docs/index.html is excluded by !docs/**
  • docs/index.md is excluded by !docs/**
  • docs/llms-full.txt is excluded by !docs/**
  • docs/verabench-delta-chart.png is excluded by !**/*.png, !docs/**
📒 Files selected for processing (4)
  • CHANGELOG.md
  • FAQ.md
  • README.md
  • scripts/build_site.py
🔗 Linked repositories identified

CodeRabbit considers these linked repositories for cross-repo context during reviews:

Comment thread scripts/build_site.py
"is not random" asserts a statistical result the sweep cannot support: a
single run per model, no pass@k, and gaps that are mostly one or two
problems wide.  "probably not random" is what the data carries.

Also aligns the wording across the two copies.  The HTML read "The
difference we see between..." and the generator "The difference
between..." -- a drift introduced when the paragraph was transcribed into
`build_index_md()`.  Both now read the same sentence.

Co-Authored-By: Claude <noreply@anthropic.invalid>
@aallan
aallan merged commit 8eb399b into main Jul 28, 2026
28 checks passed
@aallan
aallan deleted the docs/verabench-v0-0-18 branch July 28, 2026 11:32
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