Daily goal metrics
hd is built for programs written by coding agents, so we judge it with the Agentic Programming Language Arena: three pillars that ask what agent-driven development actually costs and produces. Each pillar is kept on its own and compared on a Pareto frontier rather than folded into one score, because a faster compiler that makes agents retry more is not a win. Compiler correctness is a gate in front of all three. Every metric is a script with a fixed target; no AI or agent run is involved, and the same scripts run against any hd binary. They run twice a day, at 00:00 and 12:00 UTC.
First: correctness
- Correctness gate2 of 3 met
- Is the compiler right? Conformance and incremental soundness. A faster wrong result is not better, so this is a prerequisite rather than a pillar.
The three pillars
- Single-agent development cost43 of 56 met
- How cheaply does one agent get a correct program? Compile and test latency is agent wait time; clear, short, well-placed diagnostics and fix-its that resolve mistakes are fewer retries and fewer tokens.
- Agent scalability30 of 39 met
- How much useful work do N agents do on one machine? CPU, memory and disk per check, startup, behaviour under concurrency, and caches that are shared, bounded and safe to write at once.
- Artifact quality24 of 35 met
- How good is the program the agents produced? The user's program, not the compiler: test speed, runtime against Node, allocations, binary size, host-call and serde cost, memory over time.
Trend
The share of each pillar's targets that the run met. A line going up is progress; a drop after a commit is a regression worth reading. Hover a point for its run.
Single-agent development cost
How cheaply does one agent get a correct program? Each bar is one metric, drawn at its worst target's distance from the goal: left of the dashed line meets it, right of it misses by that multiple. Metrics without a numeric goal show only met or missed. The full list of targets is in the table below.
Agent scalability
How much useful work do N agents do on one machine? Each bar is one metric, drawn at its worst target's distance from the goal: left of the dashed line meets it, right of it misses by that multiple. Metrics without a numeric goal show only met or missed. The full list of targets is in the table below.
Artifact quality
How good is the program the agents produced? Each bar is one metric, drawn at its worst target's distance from the goal: left of the dashed line meets it, right of it misses by that multiple. Metrics without a numeric goal show only met or missed. The full list of targets is in the table below.
Correctness gate
Is the compiler right? Each bar is one metric, drawn at its worst target's distance from the goal: left of the dashed line meets it, right of it misses by that multiple. Metrics without a numeric goal show only met or missed. The full list of targets is in the table below.
All targets
Latest run: 2026-10-27 02:55 UTC. History and raw data: the metrics-data branch.
Every target, latest run
| Pillar | Metric | Target | Value | Goal | Status |
|---|---|---|---|---|---|
| Single-agent development cost | edit-latency | p50 check after an edit | 35 ms | ≤ 50 ms | ✓ met |
| Single-agent development cost | edit-latency | p95 check after an edit | 37 ms | ≤ 200 ms | ✓ met |
| Single-agent development cost | cold-check | median cold check, 10k lines | 138 ms | ≤ 1000 ms | ✓ met |
| Single-agent development cost | test-latency | median edit-then-test | 165 ms | ≤ 300 ms | ✓ met |
| Single-agent development cost | mistakes | programs with exactly one diagnostic | 95.7% | ≥ 95.0% | ✓ met |
| Single-agent development cost | mistakes | one diagnostic with the expected code | 95.7% | ≥ 95.0% | ✓ met |
| Single-agent development cost | mistakes | fix-it makes hd check pass | 34.3% | ≥ 80.0% | ✗ missed |
| Single-agent development cost | mistakes | largest diagnostic text (bytes / 4) | 93 tokens | ≤ 60 tokens | ✗ missed |
| Single-agent development cost | answer-size | hd doc of a data type | 153 B | ≤ 1000 B | ✓ met |
| Single-agent development cost | answer-size | one failing hd test, text | 318 B | ≤ 800 B | ✓ met |
| Single-agent development cost | answer-size | one failing test, JSON object | 139 B | ≤ 400 B | ✓ met |
| Single-agent development cost | answer-size | one diagnostic, JSON object | 170 B | ≤ 600 B | ✓ met |
| Single-agent development cost | determinism | inputs with byte-identical output | 8 of 8 | all identical | ✓ met |
| Single-agent development cost | pathological | overlapping-from: time at 4x | 42 ms | ≤ 2000 ms | ✓ met |
| Single-agent development cost | pathological | overlapping-from: peak RSS at 4x | 21.3 MB | ≤ 200.0 MB | ✓ met |
| Single-agent development cost | pathological | overlapping-from: growth exponent | noise | ≤ 1.3 | ✓ met |
| Single-agent development cost | pathological | deep-blocks: time at 4x | 16 ms | ≤ 2000 ms | ✓ met |
| Single-agent development cost | pathological | deep-blocks: peak RSS at 4x | 16.3 MB | ≤ 200.0 MB | ✓ met |
| Single-agent development cost | pathological | deep-blocks: growth exponent | noise | ≤ 1.3 | ✓ met |
| Single-agent development cost | pathological | deep-parens: time at 4x | 15 ms | ≤ 2000 ms | ✓ met |
| Single-agent development cost | pathological | deep-parens: peak RSS at 4x | 15.9 MB | ≤ 200.0 MB | ✓ met |
| Single-agent development cost | pathological | deep-parens: growth exponent | noise | ≤ 1.3 | ✓ met |
| Single-agent development cost | pathological | method-chain: time at 4x | - | ≤ 2000 ms | ✗ missed |
| Single-agent development cost | pathological | method-chain: peak RSS at 4x | - | ≤ 200.0 MB | ✗ missed |
| Single-agent development cost | pathological | method-chain: growth exponent | noise | ≤ 1.3 | ✓ met |
| Single-agent development cost | pathological | iterator-chain: time at 4x | - | ≤ 2000 ms | ✗ missed |
| Single-agent development cost | pathological | iterator-chain: peak RSS at 4x | - | ≤ 200.0 MB | ✗ missed |
| Single-agent development cost | pathological | iterator-chain: growth exponent | - | ≤ 1.3 | ✗ missed |
| Single-agent development cost | pathological | wide-list-literal: time at 4x | 39 ms | ≤ 2000 ms | ✓ met |
| Single-agent development cost | pathological | wide-list-literal: peak RSS at 4x | 19.6 MB | ≤ 200.0 MB | ✓ met |
| Single-agent development cost | pathological | wide-list-literal: growth exponent | noise | ≤ 1.3 | ✓ met |
| Single-agent development cost | pathological | large-enum-match: time at 4x | 366 ms | ≤ 2000 ms | ✓ met |
| Single-agent development cost | pathological | large-enum-match: peak RSS at 4x | 19.2 MB | ≤ 200.0 MB | ✓ met |
| Single-agent development cost | pathological | large-enum-match: growth exponent | 2.31 | ≤ 1.30 | ✗ missed |
| Single-agent development cost | pathological | deep-generic: time at 4x | 18 ms | ≤ 2000 ms | ✓ met |
| Single-agent development cost | pathological | deep-generic: peak RSS at 4x | 16.3 MB | ≤ 200.0 MB | ✓ met |
| Single-agent development cost | pathological | deep-generic: growth exponent | noise | ≤ 1.3 | ✓ met |
| Single-agent development cost | pathological | question-chain: time at 4x | 22 ms | ≤ 2000 ms | ✓ met |
| Single-agent development cost | pathological | question-chain: peak RSS at 4x | 18.9 MB | ≤ 200.0 MB | ✓ met |
| Single-agent development cost | pathological | question-chain: growth exponent | noise | ≤ 1.3 | ✓ met |
| Single-agent development cost | pathological | big-file: time at 4x | 135 ms | ≤ 2000 ms | ✓ met |
| Single-agent development cost | pathological | big-file: peak RSS at 4x | 51.7 MB | ≤ 200.0 MB | ✓ met |
| Single-agent development cost | pathological | big-file: growth exponent | 1.05 | ≤ 1.30 | ✓ met |
| Single-agent development cost | recheck-precision | modules rechecked, private body edit | 1 | ≤ 1 | ✓ met |
| Single-agent development cost | recheck-precision | modules rechecked, public signature edit | 9 | ≤ 3 | ✗ missed |
| Single-agent development cost | errors-per-run | semantic: 10 mistakes reported once | 10 of 10 | all, once | ✓ met |
| Single-agent development cost | errors-per-run | mixed: 10 mistakes reported once | 2 of 10 | all, once | ✗ missed |
| Single-agent development cost | diag-location | diagnostics on the mistake's line | 98.6% | ≥ 95.0% | ✓ met |
| Single-agent development cost | fixit-safety | fix-its that add no error | 100.0% | ≥ 100.0% | ✓ met |
| Single-agent development cost | lookup-latency | p95 hd callers | - | ≤ 100 ms | – n/a |
| Single-agent development cost | lookup-latency | p95 hd needs | - | ≤ 100 ms | – n/a |
| Single-agent development cost | fmt | hd fmt, 10k lines | 18 ms | ≤ 200 ms | ✓ met |
| Single-agent development cost | fmt | second hd fmt changes nothing | no change | idempotent | ✓ met |
| Single-agent development cost | check-cost | checked run time / unchecked run time | 2.84x | ≤ 1.30x | ✗ missed |
| Single-agent development cost | dev-speed | geomean dev / optimized | 0.99x | ≤ 4.00x | ✓ met |
| Single-agent development cost | dev-speed | worst case dev / optimized | 1.01x | ≤ 10.00x | ✓ met |
| Agent scalability | resources | warm check, 10k lines: CPU time | 30 ms | ≤ 200 ms | ✓ met |
| Agent scalability | resources | warm check, 10k lines: peak RSS | 24.0 MB | ≤ 50.0 MB | ✓ met |
| Agent scalability | resources | check, small, cold | 0.10 CPU-s, 27.0 MB | completes ≤ 30 s | ✓ met |
| Agent scalability | resources | check, small, warm | 0.00 CPU-s, 14.7 MB | completes ≤ 30 s | ✓ met |
| Agent scalability | resources | test, small, cold | 1.03 CPU-s, 82.3 MB | completes ≤ 30 s | ✓ met |
| Agent scalability | resources | test, small, warm | 0.58 CPU-s, 74.2 MB | completes ≤ 30 s | ✓ met |
| Agent scalability | resources | build, small, cold | 0.42 CPU-s, 81.7 MB | completes ≤ 30 s | ✓ met |
| Agent scalability | resources | build, small, warm | 0.02 CPU-s, 24.7 MB | completes ≤ 30 s | ✓ met |
| Agent scalability | resources | check, 10k, cold | 0.31 CPU-s, 49.1 MB | completes ≤ 30 s | ✓ met |
| Agent scalability | resources | check, 10k, warm | 0.03 CPU-s, 24.0 MB | completes ≤ 30 s | ✓ met |
| Agent scalability | resources | test, 10k, cold | 1.81 CPU-s, 101.8 MB | completes ≤ 30 s | ✓ met |
| Agent scalability | resources | test, 10k, warm | 1.08 CPU-s, 82.9 MB | completes ≤ 30 s | ✓ met |
| Agent scalability | resources | build, 10k, cold | 0.64 CPU-s, 100.0 MB | completes ≤ 30 s | ✓ met |
| Agent scalability | resources | build, 10k, warm | 0.04 CPU-s, 31.5 MB | completes ≤ 30 s | ✓ met |
| Agent scalability | resources | check, 50k, cold | 1.28 CPU-s, 146.4 MB | completes ≤ 150 s | ✓ met |
| Agent scalability | resources | check, 50k, warm | 0.17 CPU-s, 62.8 MB | completes ≤ 150 s | ✓ met |
| Agent scalability | resources | test, 50k, cold | 11.43 CPU-s, 263.3 MB | completes ≤ 150 s | ✓ met |
| Agent scalability | resources | test, 50k, warm | 9.27 CPU-s, 117.3 MB | completes ≤ 150 s | ✓ met |
| Agent scalability | resources | build, 50k, cold | 1.64 CPU-s, 243.9 MB | completes ≤ 150 s | ✓ met |
| Agent scalability | resources | build, 50k, warm | 0.16 CPU-s, 69.2 MB | completes ≤ 150 s | ✓ met |
| Agent scalability | long-session | RSS growth, REPL inputs 100 to 1000 | 88.6 MB | ≤ 22.0 MB | ✗ missed |
| Agent scalability | startup | hd help (no version command): wall time | 2.9 ms | ≤ 20 ms | ✓ met |
| Agent scalability | startup | hd help (no version command): CPU time | 0.0 ms | ≤ 20 ms | ✓ met |
| Agent scalability | startup | hd help (no version command): peak RSS | 3.5 MB | ≤ 10.0 MB | ✓ met |
| Agent scalability | startup | hd check empty.hd: wall time | 11 ms | ≤ 20 ms | ✓ met |
| Agent scalability | startup | hd check empty.hd: CPU time | 0.0 ms | ≤ 20 ms | ✓ met |
| Agent scalability | startup | hd check empty.hd: peak RSS | 13.2 MB | ≤ 10.0 MB | ✗ missed |
| Agent scalability | concurrency | p95 latency at N = 4 vs N = 1 | 2.14x | ≤ 1.50x | ✗ missed |
| Agent scalability | concurrency | p95 latency at N = 16 vs N = 1 | 8.63x | ≤ 6.00x | ✗ missed |
| Agent scalability | concurrency | total CPU growth exponent, N = 1 to 16 | 1.11 | < 1.00 (sublinear) | ✗ missed |
| Agent scalability | disk | artifacts plus toolchain per worktree | 15.3 MB | ≤ 10.0 MB | ✗ missed |
| Agent scalability | parallel-speedup | speedup, 50k lines, 4 threads vs 1 | 1.91x | ≥ 2.40x | ✗ missed |
| Agent scalability | cache-contention | dependency cache, 8 concurrent fetches: no corruption | intact | no corruption | ✓ met |
| Agent scalability | cache-contention | dependency cache, 8 concurrent fetches: fetched once | 16 | ≤ 2, one check's connections | ✗ missed |
| Agent scalability | cache-contention | compilation cache, 8 concurrent checks: no corruption | intact | no corruption | ✓ met |
| Agent scalability | cache-contention | compilation cache, 8 concurrent checks: written once | 3 files | the files of one check's cache | ✓ met |
| Agent scalability | cache-growth | cache size after 100 edits, cap 5 MB | 4.4 MB | ≤ 5.0 MB | ✓ met |
| Agent scalability | io-per-check | source files read, warm check after one edit | 79 | ≤ 1 | ✗ missed |
| Agent scalability | fetch-dedup | connections to the remote, 4 worktrees | 2 | = the first worktree's | ✓ met |
| Artifact quality | proptest-perf | property cases per second | 34k/s | ≥ 100k/s | ✗ missed |
| Artifact quality | proptest-perf | time to shrink a known failure | 107 ms | ≤ 1000 ms | ✓ met |
| Artifact quality | unit-test-perf | 1,000 unit tests, warm | 854 ms | ≤ 1000 ms | ✓ met |
| Artifact quality | unit-test-perf | overhead per unit test | 0.7 ms | ≤ 1.0 ms | ✓ met |
| Artifact quality | integration-test-perf | setup per integration test program | 104 ms | ≤ 20 ms | ✗ missed |
| Artifact quality | integration-test-perf | total time growth in programs | 0.994 | exponent < 1 (sublinear) | ✓ met |
| Artifact quality | integration-test-perf | cost per doc test | 90 ms | ≤ 20 ms | ✗ missed |
| Artifact quality | runtime | geomean hd / Node | 1.18x | ≤ 1.50x | ✓ met |
| Artifact quality | runtime | fib: hd / Node | 0.59x | ≤ 3.00x | ✓ met |
| Artifact quality | runtime | sum: hd / Node | 1.47x | ≤ 3.00x | ✓ met |
| Artifact quality | runtime | string-build: hd / Node | 1.27x | ≤ 3.00x | ✓ met |
| Artifact quality | runtime | map: hd / Node | 1.88x | ≤ 3.00x | ✓ met |
| Artifact quality | runtime | sort: hd / Node | 1.11x | ≤ 3.00x | ✓ met |
| Artifact quality | allocations | counted loop, bytes per iteration | 0.00 B/iter | 0 allocations (< 1 B/iter) | ✓ met |
| Artifact quality | allocations | list loop, bytes per iteration | 0.00 B/iter | 0 allocations (< 1 B/iter) | ✓ met |
| Artifact quality | allocations | map loop, bytes per iteration | 0.00 B/iter | 0 allocations (< 1 B/iter) | ✓ met |
| Artifact quality | allocations | iterator chain, bytes per iteration | 0.00 B/iter | ≤ 1 allocation (≤ 32 B/iter) | ✓ met |
| Artifact quality | size-startup-heap | tiny program, release Wasm size | 4452 B | ≤ 2048 B | ✗ missed |
| Artifact quality | host-call-overhead | Console println, per call | 7.5 µs | ≤ 1.0 µs | ✗ missed |
| Artifact quality | host-call-overhead | Fs read_text!, per call | 19 µs | ≤ 10 µs | ✗ missed |
| Artifact quality | host-call-overhead | serde boundary (list_dir!), per call | 34 µs | ≤ 5.0 µs | ✗ missed |
| Artifact quality | suspension-overhead | await of a ready value, per await | 14 ns | ≤ 100 ns | ✓ met |
| Artifact quality | suspension-overhead | all! of two ready tasks, throughput | 9.6M/s | ≥ 1.0M/s | ✓ met |
| Artifact quality | suspension-overhead | race! of two ready tasks, throughput | 8.4M/s | ≥ 1.0M/s | ✓ met |
| Artifact quality | serde-throughput | JSON encode, hd / Node MB/s | 0.06x | ≥ 0.50x | ✗ missed |
| Artifact quality | serde-throughput | JSON decode, hd / Node MB/s | 0.10x | ≥ 0.50x | ✗ missed |
| Artifact quality | text-throughput | string build, hd / Node MB/s | 1.45x | ≥ 0.50x | ✓ met |
| Artifact quality | text-throughput | split, hd / Node MB/s | 2.25x | ≥ 0.50x | ✓ met |
| Artifact quality | text-throughput | regex find_all, hd / Node MB/s | 0.11x | ≥ 0.50x | ✗ missed |
| Artifact quality | dead-code | Wasm bytes per 1,000 lines | 6412 B | ≤ 10240 B | ✓ met |
| Artifact quality | dead-code | no unused std in the program | none | none | ✓ met |
| Artifact quality | long-run-memory | RSS growth after warm-up, 1 min | 0.0 MB | ≤ 10.0 MB | ✓ met |
| Correctness gate | conformance | pass rate, known failures excluded | 100.0% | ≥ 100.0% | ✓ met |
| Correctness gate | conformance | listed known failures | 5 | ≤ 0 | ✗ missed |
| Correctness gate | incremental-soundness | incremental equals clean, after each edit | 100.0% | ≥ 100.0% | ✓ met |
| Artifact quality | size-startup-heap | tiny program, start to first output | 40 ms | ≤ 5.0 ms | ✗ missed |
| Artifact quality | size-startup-heap | peak heap, map: hd / Node | 0.96x | ≤ 2.00x | ✓ met |
| Artifact quality | size-startup-heap | peak heap, string-build: hd / Node | 0.37x | ≤ 2.00x | ✓ met |