Trust Model
Authority
When a metric can gate.
Authority is the typed answer to one question: may this metric enforce a gate?
Host-owned inputs resolve to one of three outcomes — informational,
blocked, or
can_gate. A metric’s
value and validity say nothing about its authority; the three are separate.
A high score is not permission to fail a build. EvalGlass keeps three ideas apart: the value (what was measured), its validity (whether the number is sound), and its authority (whether it is allowed to gate). Authority is resolved from typed records you own — dataset status, threshold approval, judge calibration, data policy — never from report prose.
TYPED INPUTS
host-owned
metric_status
threshold_approval
dataset_status
judge_calibration
data_policy
baseline_state*
STAGE 1
authorized to gate?
metric is gating
threshold approved
dataset not proposed
judge calibrated
yes
STAGE 2
evidence sound?
policy permitted / redacted
judge not drifted / retired
dataset not retired
baseline comparable*
yes
CAN_GATE
threshold enforced
no
INFORMATIONAL
evidence, no active gate
no
BLOCKED
cannot claim honestly
- informational
- blocked
- can_gate
can_gate only by clearing both gates. Anything short of authorization stays informational; an authorized gate whose evidence is unsound becomes blocked, never a quiet pass. (* baseline only when the metric requires one.)The three outcomes
| Outcome | Meaning | Effect on the run |
|---|---|---|
| informational | Not authorized to gate yet — proposed data, unapproved threshold, uncalibrated judge, or a non-gating metric. | Reported as evidence; cannot fail CI. |
| blocked | Configured to gate, but the evidence cannot support an honest claim. | An active gate that fails CI as blocked — “we cannot say”. |
can_gate | Fully authorized: the threshold is enforced this run. | The metric’s value is compared to its approved threshold. |
What feeds the decision
Authority is resolved from these host-owned, typed inputs — not from any score:
| Input | Keeps a metric informational | Blocks an authorized gate |
|---|---|---|
| Metric status | Anything other than gating. | — |
| Threshold approval | proposed (not approved). | — |
| Dataset status | proposed. | retired. |
| Judge calibration | uncalibrated / calibrating. | drifted / retired. |
| Data policy | — | Anything but permitted / redacted. |
| Baseline (if required) | — | Not comparable. |
Reports render authority; they never invent it
The resolved authority is typed data on the Scorecard. A Markdown or terminal report displays
it, but no report, CLI, adapter, or sink can grant a metric authority it did not earn from these
inputs. To make a gate real, you change the host-owned records — see
Promote a Gate.
No verb grants authority
The model above is unchanged by the plugin: the plugin ships no command that gates,
approves, or certifies. The agent can populate host-owned files at your direction, but
it never fills in the authority itself. Activating a gate is a host YAML edit you own —
metric_status: gating, threshold_approval: approved, dataset
status: validated — guided by the promoting-a-gate skill, never a
command. The skill can type the edit; only you grant the authority.