agentleFS
guerrilla2799guerrilla2799/ops-and-scale-os/skills/eval-calibration/SKILL.md

eval-calibration

Skill1 starsChanged 3 months agoMITView on GitHub

Use after editing any eval spec, or when the user says "our scores keep going up", "is the rubric still right", "calibrate the spec", "rubric drift", "the eval passes everything now", "recalibrate". Regrades the frozen anchor set, measures drift, and distinguishes a generator that improved from a ruler that stretched. Writes workspace/evals/calibration/<type>-<date>.md. Tests the ruler, not the work. To judge an artifact use `eval-loop`, and to write or rewrite the rubric itself use `eval-spec-authoring`.

The file

Files
SKILL.md

Eval Calibration

Regrade the anchors. A rising pass rate is ambiguous until you have done this, and softening rubrics are invisible from the inside.

When to use

  • Any time a spec is edited, including a wording change
  • Pass rates have moved and nobody knows why
  • The banned-vocabulary or voice reference changed, which changes every spec importing it
  • Quarterly, as a standing check

Inputs

  • Reads: workspace/evals/specs/<type>.md, the frozen calibration set, prior calibration runs
  • Needs from user: nothing, if the frozen set exists. If it does not, go back to eval-spec-authoring

Workflow

1. Understand the failure this catches

A spec is edited a few times over some months. Each edit is small and reasonable, usually softening language that felt too harsh. Pass rates climb from about half to nearly nine in ten.

Everybody reads that as the generator improving. It is not necessarily. The ruler may have stretched, and the only way to tell is to regrade artifacts whose correct scores you already know.

2. Regrade the frozen set

Each anchor was assigned an expected band when the spec was written. Re-judge every one with the current spec, in a fresh context, and compare.

example-01   expected 85-95   scored 91   ✓ in band
example-02   expected 70-79   scored 84   ✗ +5 above band
example-03   expected 40-55   scored 62   ✗ +7 above band
...
Mean drift: +4.8 points
Direction:  softening

3. Read the drift

Mean driftReadingAction
Under 5 pointsNormal judge varianceNo action. Note it
5 to 10 pointsMeaningful driftIdentify which dimension moved and decide deliberately
Over 10 pointsThe spec changed meaningRevert, or accept the new meaning explicitly and re-freeze
Anchors out of band in both directionsAnchors are inconsistent, not the specRe-anchor. The original bands were guesses

Direction matters as much as magnitude. Softening drift passes bad work. Hardening drift fails good work and burns revision cycles. Softening is far more common, because edits are usually made in response to something being failed that somebody wanted to pass.

4. Find the dimension responsible

Drift is rarely spread evenly. Compare per-dimension scores against the original grading and find the one or two that moved.

The usual culprits are a dimension whose anchors were softened, and a gate that was downgraded to a dimension. The second is the more damaging, because a non-negotiable became something a good average can absorb.

5. Decide explicitly, and re-freeze if you accept

Two legitimate outcomes.

Revert. The drift was accidental. Restore the prior anchor language, bump the version, and re-run to confirm.

Accept and re-freeze. The quality bar genuinely moved, on purpose. Re-assign the expected bands, note the reason and the date in the spec, and bump the version.

The unacceptable outcome is doing nothing and letting the drift stand undocumented, because then no future run has a reference point.

6. Separate the two explanations for a rising pass rate

Now you can answer the original question.

Anchor resultPass rateReading
StableRoseThe generator improved. Real progress
Drifted upRoseThe ruler stretched. Not progress
StableFellThe generator degraded, or the inputs changed
Drifted downFellThe spec hardened. Confirm that was intentional

Output

  • Writes: workspace/evals/calibration/<type>-<date>.md
  • Prints: the per-anchor table with expected against actual, mean drift and direction, the dimension responsible, and the decision with its reason

Rules & quality bar

  • Every spec edit triggers a calibration run. Including wording-only edits
  • A change to a shared reference recalibrates every spec that imports it
  • The frozen set stays frozen. Changing anchors to fit the spec defeats the entire exercise
  • Report direction, not just magnitude
  • Name the dimension responsible. "The spec drifted" is not actionable
  • Revert or re-freeze deliberately. Undocumented drift is the failure mode
  • Never read a rising pass rate as improvement without a calibration run

Related skills

  • Requires: eval-spec-authoring for the frozen set
  • Pairs with: eval-loop
  • See also: docs/field-notes.md story 8

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.