The eval you actually need syllabus
One record per probe
The harness stays maintainable when a new probe is a new record, not a new branch. The runner should know how to iterate, call a provider, time it, and save a result. It should not know what any individual case means.
Use one boring record shape
A useful minimum is id, input, expected, and skill. Add fields only when the scorer or provider can interpret them generically. Differences that live in if probe.id == ... branches are missing data.
Build an offline probe runner
Complete the probe set and the generic runner. Passing means a sixth probe can flow through the same function without adding an id-specific branch. The stub is deliberately local: this exercise does not need a model, network, or API key.
Save the probe set
Link the repository, gist, or shared document containing the probe records. In the reflection, note which field you were most tempted to encode as a runner branch.
Time the offline run
Run the full probe set against the stub provider and record wall-clock time. This baseline tells you how much overhead the harness itself contributes.
Audit the probe shape
Inspect the records while the set is still small enough to change cheaply.