github.com/rig-c/exam

rig-c/exam — Does Your AI Model Pass?

An open-book exam for AI agents: build a rig from one painting with the published rig-c tools, and write down what you expected before each step.

The rig-c tools are written for agents that cannot see what they build. rig-c/exam measures whether that holds for a fresh agent session that has never seen the tools before: the only help is what ships inside the installed packages (README.md, docs/, --help). Before every command that changes a file, the examinee must record what it read and what it expects in JOURNAL.md. Where expectation and reality differ — where the agent says WTF? — a tool message or guide was missing something.

Basic Exam Leaderboard (Tasks 01-build, 02-move, 03-correct)

5 independent sittings graded from submitted input files via python3 grade.py:

ModelSittings01-build02-move03-correctTotal Lines PassedMinutesTokens (Fresh In + Out)
Claude Haiku (2026-10-12-haiku)14 / 47 / 75 / 516 / 1621.0531k
Gemini 3.8 Flash (2026-10-13-gemini-3.8-flash)14 / 47 / 75 / 516 / 1620.01.4M
gpt-6-sol (2026-10-13-gpt-6-sol)14 / 47 / 75 / 516 / 1614.1258k
Sol 6.1 (gpt-6.1-sol) (2 sittings)24 / 47 / 75 / 532 / 32 (16/16 each)14.2 – 15.3195k – 270k

Advanced Exam Leaderboard (Walk · Run · Dance Pose Retargeting)

Starts from a built rig: the agent retargets recorded walk (R1), run (R2), and dance (R3) pose sequences with @rig-c/pose, one round per fresh session, fixing what the diagnostic numbers report without ever seeing the footage:

ModelR1 WalkR2 RunR3 Dance0.21 Shin-Scale Row (What-If)Minutes (R1 · R2 · R3)
claude-haiku-5-59 / 98 / 14 (FAIL)13 / 13passes all 33.1 · 2.4 · 7.4
claude-opus-5-59 / 914 / 1413 / 13fails R2 (0.106)8.2 · 8.7 · 8.4
claude-sonnet-5-59 / 914 / 1413 / 13passes all 37.3 · 10.3 · 18.7
gemini-3.8-flash-medium9 / 914 / 1413 / 13fails R2 (0.106)8.1 · 14.3 · 11.4
gemini-4-argon-high9 / 914 / 1413 / 13passes all 316.8 · 20.3 · 32.5

Rules of the Exam

  1. Open book, closed neighbours. Examinees may read anything inside the pinned npm packages and public tool repos, but may not read another examinee's run under results/ or ask a human.
  2. Pinned versions. npm ci installs the exact round versions declared in package.json.
  3. Journal before you act. Every step in JOURNAL.md must record expectations before running the command.
  4. Submit the transcript. Raw session logs are submitted alongside JOURNAL.md.
  5. The grader rebuilds from inputs. grade.py trusts only the handed-in config/spec files and rebuilds from scratch.