Ship

Promote a gate

Make a metric enforce CI — deliberately.

A metric gates only when four host-owned conditions all hold: a validated dataset, an approved threshold, the metric set to gating, and — for a judge metric — a calibrated judge. Promotion is an explicit act, never a default — and it is a host YAML edit, not a command.
There is no promote / gate / approve / certify verb Nothing under /evalglass can turn a metric into a gate. Promoting a gate is a host-owned YAML edit you make — setting metric_status: gating, threshold_approval: approved, and the dataset to validated — done after the host-owned preconditions are met. The promoting-a-gate skill only guides this. An agent may type the edit at the host’s explicit direction, but no verb and no agent can grant the authority — only the host can.

After First Run, every metric is informational. To make one enforce CI, you clear each reason that keeps it informational. Do them deliberately — each step is you, the host, taking responsibility for a claim.

The four conditions

StepClears the reasonOwned in
1 · Validate the datasetdataset_proposedThe dataset’s host-owned status (proposed → validated).
2 · Approve a thresholdthreshold_proposedA host ApprovedThreshold record.
3 · Set the metric to gatingmetric_status=informationalThe metric’s status in evalglass.yaml / authority records.
4 · Calibrate the judge (judge metrics only)judge_uncalibratedA host calibration record.

The host YAML edit

Promotion is this edit, made by the host. The metric declares its intent, but the configuration cannot approve itself — an under-specified metric is forced back to proposed / informational. The approval lives in host-owned records the config references:

yaml

metrics:
  - name: exact_match
    evaluator_ref: exact_match@1
    lens: reference
    score_type: binary
    dataset: datasets/arithmetic.jsonl   # must be a validated dataset
    metric_status: gating                # intent — honored only with the records below
    threshold: 0.95
    threshold_approval: approved          # backed by a host ApprovedThreshold record
    direction: higher_is_better

Re-run, and the metric’s authority resolves to can_gate:

  • value meets the approved threshold → pass (exit 0).
  • value below it → fail (exit 1).
  • could not be measured, or coverage incomplete → blocked (exit 1).
Promote one gate at a time Each promoted gate is a promise that the dataset, threshold, and (if applicable) judge are sound. Promote deliberately and review each record — a gate you cannot defend is exactly the false confidence EvalGlass exists to prevent.

Next steps