Candor.

Can models write Candor?

Candor exists for code that models write. So the measure that matters is whether a model that has never seen it writes correct Candor from the reference alone. This page reports round 1, including what it doesn't show.

Method

Round 1 results

ModelCompiled first timeHidden tests passed
Claude, large (same family as Candor's designer)9 / 99 / 9
Claude Haiku, small9 / 99 / 9

Neither model hit a single compile error, and the example clauses they wrote for themselves all pass.

Read this carefully. 100% from both models means these tasks are too easy to show where models struggle, and the repair phase had nothing to repair. Both participants are Claude models, the same family that designed Candor. Nine tasks is a small sample. Round 2 fixes all three.

The useful signal: an uncertainty tax

Each participant listed everything in the spec that was unclear. Working independently, the two models raised the same questions:

The answer to all of them is yes. The gaps caused no bugs, but both models paid for them with defensive code: nested ifs instead of short-circuit tests, different names in every case arm, typed temporaries instead of return [], and avoided nested writes. That code is longer and harder to review than it needs to be.

What changed: llms.txt gained a "Precise semantics" section that answers each question directly, with every answer checked against both backends. A new test, tests/spec.sh, type-checks every complete program in the spec. On its first run it caught a broken example in the Records section that showed statements at the top level of a file, a pattern a model could easily copy.

Round 1b: a model from another family, running locally

Qwen2.5-Coder (7B and 1.5B) was trained outside Anthropic and played no part in Candor's design. It ran on a laptop through Ollama, with the repair loop on: when an attempt fails, the model gets back only what the compiler said. Each run was repeated after compiler changes, so each change's effect is visible.

RunWhat changed7B compiled first try7B hidden tests1.5B hidden tests
v1baseline7 / 96 / 91 / 9
v2structural == on arrays and records; three new hints8 / 96 / 90 / 9
v3repair loop also runs the model's own example clauses8 / 97 / 90 / 9

Round 2 (planned)

  1. Harder tasks: multiple files with use, 150+ line programs, distinct-type ids, holes, and traps hidden in the obvious solution.
  2. More model families and sizes: a 14B–32B open model, then Llama, Gemma and DeepSeek. Qwen 7B and 1.5B are done.
  3. The repair loop: each failing attempt gets only the compiler's --json diagnostics, and we count the rounds until it passes. This tests whether Candor's error messages work for models, which is the point of having them.

Everything is reproducible: eval/score.sh eval/attempts/<model>. The attempts are in the repo exactly as the models wrote them.