Evidence

Benchmark methods, results, and raw artifacts

The examples on this site show the tools working; they do not show how useful the tools are. Does an AI reviewer find more planted defects with computed program facts than by reading source? Can a reader answer questions about a program from its report? We ran benchmarks to find out. Read each result with its method and limits before drawing a conclusion about the approach.

There are five benchmark families: AI review with fact tooling, program-report reading, distributed-systems counterexamples, writing verified programs, and UI update performance. Each section below states the corpus or program, the comparison method, the recorded result, and a route to the files that support that result. The UI comparison runs locally in your browser; its results are not a committed scoreboard.

Read all of it as a self-run benchmark: the same project builds the tools, generates the challenges, and adjudicates the scoring. Most cells are single runs rather than averages. Failed rounds remain in the record with their reasons, and the benchmark scoreboards render from committed artifacts.

1. Fact-tooling review from computed facts and source

This benchmark measures whether machine-checked program facts beat source reading for AI code review. Each round generates a Bosatsu codebase with planted defects, then fresh AI reviewers hunt them. The programs use Bosatsu and Yichus’s declared IO operations. One works from the fact tools, whose page explains each compiled fact and reviewer query; the other reads source. Both are scored against a hidden key. Eleven rounds are recorded (000–008 and 010; round 5 ran twice), over codebases from 2,028 to 46,922 lines. The project builds the tools, generates the challenges, and scores the runs. Each cell is one run. Model labels are harness tiers, not exact model IDs. Nominal token caps in round 008 failed to bind.

Round 008, the largest recorded codebase, used 46,922 lines with 26 planted defects. At matched ~100k-token budgets, the fact-using reviewer found 25 of 26 and the source-reading reviewer 23 of 26. The record also keeps the losses, including rounds where the facts were slower and a weak-model round with false positives the claim gate cannot cover.

2. Program-report and source arms on the same quiz

This benchmark measures whether the committed program report page and examples explain enough typed-IR facts to answer review questions. One fresh agent answers a 30-question closed-option quiz about nine corpus programs from the committed reports alone; another answers the same quiz from the Bosatsu sources alone. Every answer-key label is re-derived from the engine's own output in CI, and the recorded verdict is re-checked byte-for-byte. The gate requires equal or better accuracy and tokenLift above 1 (source-arm tokens divided by report-arm tokens, so above 1 means the report arm was cheaper). This is a self-run, single recorded probe, rerun after table-status and cap-accounting changes.

In the recorded run (2026-08-19), both arms scored 29/30. The report arm spent 87,074 tokens against the source arm's 114,291. The measured tokenLift is 1.31, with the same accuracy on about 24% fewer tokens. The gate verdict is pass.

3. Reflection-auth review with and without a counterexample

This benchmark measures whether the distributed-systems checker page, which explains schedule exploration and counterexample traces, changes what a weaker model certifies. The system under test is benchmark task 010's mutual-authentication server with a reflection flaw. The bug exists only across two interleaved sessions. A haiku-tier model judged it three ways: from source alone, with the checker's counterexample schedule, and a control cell on the secure variant.

From source alone it returned SECURE, a false certification whose written argument even noticed the shared direction tag and then reasoned it away. With the counterexample in front of it, the same model returned VULNERABLE and reconstructed the attack. The control cell cleared the secure server. The probe has three cells and runs one trial in each, at about 19.9k tokens per cell. That records one observed case, and the sample is too small to estimate a rate.

4. A verified program in Bosatsu with the tools, or in TypeScript from scratch

This benchmark measures whether an agent writing Bosatsu with the yichus tools reaches a program a hidden property harness establishes with fewer tokens than an agent writing TypeScript from scratch with its own tests. Four forum features, seventeen properties, three fresh sonnet agents per arm per task, and a gate of equal-or-better accuracy with tokenLift above 1 on each of three run pairs.

In the recorded iteration (2026-09-05) the gate fails on all three pairs: the Bosatsu arm established 16 of 17 properties on every run against the TypeScript arm's 16, 17, and 17, and spent roughly twice the tokens (tokenLift 0.54, 0.50, 0.44). The unestablished property is on the concurrent-reply task: the record attributes the Bosatsu misses to a documentation gap in the dist DSL and the TypeScript miss to the harness budget. These explanations do not establish correctness beyond the checks that completed. The rounds the tools lost are published like the rounds they won.

5. UI update throughput against React

The performance experiment asks whether compile-time knowledge of state-to-DOM dependencies can reduce runtime work. The browser harness compares compiled Yichus programs with real React implementations for a counter, a list update, and a targeted state update. Both sides use their actual runtimes.

After warmup, the harness samples each implementation’s update API in bounded batches, yielding between batches and waiting for React to commit before queuing more work. It sums only the time spent issuing calls; the waits are excluded. It does not wait for a committed render after each call. The result is update-enqueue throughput, not frame rate or interaction latency. The implementations also do different work per call: the React list scenarios copy their state collection, while Yichus writes a named state path.

Results depend on your browser, machine, and batching settings. Each row records the controls and browser used; results disappear on reload. No cross-machine speedup is claimed here.

Where this fits