Metric Catalog

August 21, 2026 · View on GitHub

Metric Catalog

HUMAN SPECIFICATION — NOT A MACHINE SCHEMA. This frozen document defines the human semantics of the published 14-metric MVP Evaluation Catalog. Its published machine companion is maintained under system-contracts/evaluation/. Its semantic links to the Observation Catalog are human correspondences, while its dependency on the published Observation Contract 1.0.0 is an exact machine revision binding.

1. Metadata and Authority

FieldValue
Document identityevaluation.identity.001
Contract revisionagentops.evaluation.metric-catalog@1.0.0
StatusFROZEN
Normative languageEnglish
Machine companionpublished system-contracts/evaluation/ 1.0.0 schema, example, fixtures, validator, version policy and publication record; VALIDATOR_ONLY conformance claim
Semantic companionObservation Catalog
Representation companionpublished OTel Observation Profile 1.0.0; exact semantic revision sha256:1a3fea6d202bf08a36aaf76abc3c6601fa71dc6c581715f9c74d11456f2ae735, machine revision sha256:cf5b6c54af452085f66cf3c28b7ffb14e58451b926a97fa317b9a92a18c8d774
Ownerevidence-governance-owner
Translation parity obligationEnglish/Chinese anchors, headings, tables, IDs, fields, enums and links are paired, per Concept concept.acceptance.017

This document is the semantic authority for what each field and metric means and how it may be read. The published machine companion must encode these semantics; a mismatch is a representation defect and cannot silently redefine this document.

Metric Catalog 0.1.0 is NON_RESOLVING_LEGACY_HISTORY_ONLY; it remains provenance in Git history and is not a selectable compatibility target.

2. Purpose and Authority Boundary

The metric catalog declares the measurements an evidence-governance owner computes and publishes. Metrics are computed from accepted Observation facts plus evaluation-level inputs; they are presentation and governance artifacts, not Observation facts themselves.

This document:

  • defines each target schema field and each of the 14 declared metrics;
  • states, per metric, which Observation Catalog fact classes and fields it draws on, as human semantic links;
  • owns metric formulas, reading rules, minimum-sample semantics, always-published coverage and evaluation-level cohort/task readings; and
  • records the hard boundaries the catalog itself imposes (no scores, no backfill, no causal claims, no cross-context comparison).

This document does not:

  • implement or certify Projection, BI rendering, production Runtime or physical conformance beyond the published VALIDATOR_ONLY claim;
  • redefine Observation facts, wire fields, Admission or Projection compatibility keys;
  • implement Projection-owned fact eligibility or BI rendering; or
  • publish a Question Catalog, BI/Evolution preset, composite score, rank, Pareto set or hidden weighting policy.

The published machine companion encodes this 14-metric catalog, including the exact Observation dependency, per-metric input references and semantic digest, catalog-wide metric_id uniqueness, coverage policy and the value_semantics.missing never-zero rule. Passing its validator proves schema and bounded semantic consistency only; publication makes a VALIDATOR_ONLY claim and does not establish Projection, BI, Runtime or production implementation conformance.

3. Schema Field Semantics

Catalog envelope fields:

FieldTarget machine shapeHuman meaning
catalog_idfixed identifieridentifies this artifact as agentops.evaluation.metric-catalog
versionx.y.z stringversion of the catalog envelope and validation surface
statusPUBLISHEDmachine Contract lifecycle state; never a production implementation or physical-conformance claim
semantic_authorityfixed non-empty referencebinds the representation to this document identity
dependenciesone exact closed Observation bindingbinds observation-contract@1.0.0 to its published semantic revision, machine revision, publication digest and gitlink commit; no SemVer inference
minimum_sample_policyone fixed rulebelow minimum_sample the metric value is not published, while the complete coverage result remains published
coverage_policyone closed policy objectfixes result fields, states, threshold domain, exact comparison and the rule that coverage never gates publication
input_definitionsclosed array of {input_id, source_layer, semantic_ref, binding}declares resolvable semantic inputs and their owning layer; binding is always human-semantic-reference, never a wire binding or authority grant
metricsexactly 14 metric recordsthe MVP metric set declared in §5

Metric record fields:

FieldTarget machine shapeHuman meaning
metric_ididentifierstable metric identifier, unique within the catalog
versionx.y.z stringthe metric definition's own version
namenon-empty stringhuman-readable metric name
statusimplemented or planneddescriptive legacy readiness only; neither value proves current implementation or conformance
evaluation_unitnon-empty stringthe unit of analysis the metric is computed over (task, packet, trajectory, call, fact, event)
value_semantics.kindrate, count, duration, quantity, or moneythe kind of value the metric publishes; the deleted profile does not leave a state escape hatch
value_semantics.unitnon-empty stringthe value's unit
value_semantics.missingnon-empty stringhow the metric expresses unavailability; always "N/A when …", never a zero
dimensionsunique string arraythe grouping axes a consumer may slice by
filtersunique string arraythe conditions that constrain which records enter the metric
time_windownon-empty stringthe time frame and event-time/as-of semantics over which the metric is computed
calculationnon-empty stringthe exact computation, including what is published as separate measures
input_refsone or more unique input identifiersper-metric references into the catalog's closed input_definitions registry; every reference must resolve
eligibilityone or more stringsthe positive conditions a record must meet to enter the numerator or denominator
exclusionsstring arraythe conditions that remove a record from the metric
minimum_sampleinteger ≥ 1the minimum eligible-unit count below which the metric value is not published; the coverage result is still published
coverage.denominatornon-empty stringexact candidate population for coverage: identity, time window, cohort and base scope
coverage.numeratornon-empty stringthe denominator subset with all required direct inputs available
uncertaintyone or more stringsthe stated limitations and intervals
forbidden_inferenceone or more stringsthe conclusions the metric must not be used to draw
ownernon-empty stringthe party responsible for the metric

A later schema revision may add bounded representation metadata, but it may not weaken the required meaning of kind, unit or missing or admit arbitrary semantic extensions.

4. Metric Value Kinds

KindMeaningTypical unitMissing rule
ratea ratio of eligible units meeting a conditionratioN/A when no eligible units exist
countan exact integer count of changed or observed itemse.g. changed componentsN/A when identity is unavailable
durationan elapsed time measurementmillisecondsN/A when start or end is unavailable; unavailable is never zero
quantitya sum of reported quantitiestokensN/A when unavailable; unavailable is never zero
moneya same-currency sum of reported costsource currencyN/A when no attributable same-currency cost

Rates report numerator and denominator. money and quantity metrics never convert currencies or units implicitly. The Contract publishes no composite/profile kind and never collapses independent metrics into one score.

5. Declared Metrics

The MVP catalog declares exactly 14 metrics. Definition class records why each metric survives the issue #43 scope decision as amended by issue #79: DIRECT uses already-declared facts, B_TASK_READING uses the task reading in §6.2, and A_PROFILE_1.0 uses the published Observation Profile 1.0.0. It is a documentation audit column, not implementation status or a target machine-schema field.

metric_idvdefinition classkind / unitevaluation unitcalculationminimum sample
role-template-rework-rate1.0.0B_TASK_READINGrate / ratioeligible terminal task in one event-time role-template cohortterminal tasks with at least one linked attributable repair / eligible terminal tasks; no-repair tasks contribute 020
role-template-trajectory-partial-cost1.0.0B_TASK_READINGmoney / source currencyeligible terminal task trajectory in one event-time role-template cohortsum linked provider/host-reported cost for covered task trajectories, separately by exact currency/source/cost basis20
role-model-task-outcome-rate1.0.0DIRECTrate / ratioeligible terminal task with complete canonical model-role attributiontasks in each unique task-outcome category / eligible attributed terminal tasks; one numerator per category20
packet-rework-rate1.0.0DIRECTrate / ratiogovernance 0.2 implementation packetpackets with at least one valid attributable repair edge / all eligible packets; eligible no-repair packets contribute 01
operational-latency-ms1.0.0A_PROFILE_1.0duration / millisecondsattributed operational model call with native host-reported Span durationsum eligible call durations / contributing calls; also publish contributing-call count1
trajectory-partial-cost1.0.0DIRECTmoney / source currencyDelivery trajectory with linked host/provider-reported costsum linked costs separately by exact source, unit/currency and cost basis over covered trajectories20
task-cohort-comparison-eligibility1.0.0B_TASK_READINGrate / ratiotask in the declared defined-task snapshotcomparable eligible terminal tasks / defined tasks; publish every exclusion reason separately20
delivery-stage-reach1.0.0A_PROFILE_1.0rate / ratioDelivery trajectoryDeliveries with direct C56 reached-stage fact / linked terminal Deliveries; publish exact stage identities separately1
delivery-terminal-outcome-rate1.0.0DIRECTrate / ratioexplicitly terminated Delivery trajectoryDeliveries in each recorded terminal outcome / explicitly terminated Deliveries; one numerator per outcome1
delivery-cycle-time-ms1.0.0A_PROFILE_1.0duration / millisecondsexplicitly terminated Delivery with direct C55 elapsed timesum eligible C55 milliseconds / contributing terminal Deliveries; also publish contributing-Delivery count1
operational-token-usage1.0.0DIRECTquantity / tokensattributed operational model call with reported standard token usagesum reported input/output token measures separately within identical model-role cohorts; never synthesize total tokens1
operational-attributable-cost1.0.0DIRECTmoney / source currencyattributed operational call with linked provider/host-reported project-attributable costsum only exact same-model-role, source, unit/currency and cost-basis values1
operational-usage-availability1.0.0DIRECTrate / ratioattributed operational model callcalls with explicit applicable usage source / eligible model calls1
direct-evidence-basis-rate1.0.0DIRECTrate / ratioaccepted operational or Delivery fact with readable provenancedirect host/provider basis / all accepted facts with readable provenance; accepted nondirect facts contribute 01

The six removed metrics are model-role-utility-profile, configuration-utility-profile, configuration-component-comparison, configuration-reference-coverage, packet-escalation-rate, and role-template-qualified-outcome-rate. The first is a consumer-side bundle without one independent measurement meaning; the other five depend on undefined C/D-class configuration, routing/escalation or qualified-outcome semantics. Consumers must not preserve any of them as hidden measures or aliases.

Common exclusions across the catalog: infrastructure abort/failure attributed to adjusted model or template quality; requirement or upstream dependency change; declared cohort exclusion; estimated or unattributed cost; mixed currency/unit/cost basis; unavailable or not-applicable values; unsupported contract records; incomplete attribution tuples; mixed task outcomes; and open/non-terminal Deliveries. Common eligibility: stable identity, exact event-time assignment where required, complete Projection-owned compatibility/eligibility attributes, comparable cohort, direct accepted host/provider evidence, and exact currency/source/cost basis for money.

These are human semantic correspondences between metric inputs and the fact classes / semantic fields of the Observation Catalog. Exact representation is owned by the published OTel Observation Profile 1.0.0; the machine catalog separately binds its exact published Observation revision, while evaluation-level task/cohort readings remain owned here.

Metric input conceptObservation Catalog fact class / semantic fieldBinding note
terminal task outcomeDelivery Summary → Task identity, Delivery identity, Delivery outcometask outcome is the fail-closed evaluation reading in §6.2, never a new Observation fact
delivery trajectory / terminal stateDelivery Summary → Delivery identity, Delivery outcomeexplicit termination is a Delivery outcome fact; open deliveries are excluded
task cohort / task identityDelivery Summary → Task identitytask is an exact grouping identity, never causality or ordering authority
task cohort / defined-task eligibilityTask identity plus an immutable evaluation-level defined-task/membership/cohort snapshotthe snapshot is not an Observation field; without it, a defined-task denominator or open-Delivery exclusion cannot be claimed
role / responsibilityRole identity; writer/reviewer/recheck role identitiesa version-local Role identity; display name is not identity
model call / provider / runtimerecorded model-call activity plus canonical model identity and model-to-Role attributionuse the complete provider+C57+C30+C06+Span tuple; no free-form/list summary or alias inference
token usagerecorded causal activity token measurementreported token measurement; absent is unavailable, never zero
native usage / costUsage → Usage kind, Usage unit, Usage valuemoney only in minor units with an ISO currency; no conversion or price inference
operational latencyrecorded model-call activity native Span durationdirect host-reported call duration; distinct from Delivery elapsed time
Delivery cycle timeDelivery Summary → Delivery elapsed timedirect C55 milliseconds; absence is unavailable, never zero
Delivery stage reachDelivery Summary → Delivery stage reacheddirect C56 exact Workflow stage identity; no name parsing or inferred ordering
rework / repairReview Finding → Fix-to-Finding edge; Finding status contributionsa repair records observed re-entry, never defect severity or causal fault
structural coverageImplementation Summary → Coverage dimension / covered / total / scope / tool / formatone dimension per fact; pairs never combine into a score
Fresh Reader resultSystem Design Summary → Fresh Reader result, Fresh Reader finding countclosed result category
deterministic verificationSystem Design Summary → Verification result, Verification passed/failed checksclosed result category
evidence basis (direct host/provider)Usage → Usage source; recorded causal activity provenancedirect observation proves occurrence, not semantic correctness

6.1 A-class Profile 1.0.0 inputs

The three A-class metrics are definition-ready only under these exact inputs:

MetricRequired direct inputFail-closed missing rule
operational-latency-msnative model-call Span durationabsent/invalid duration excludes the call; never substitute C55 or zero
delivery-cycle-time-msDelivery Summary C55 elapsed millisecondsabsent C55 excludes the Delivery from the duration numerator and contributing count; never derive from arrival time
delivery-stage-reachDelivery Summary C56 exact reached-stage identityabsent C56 excludes the Delivery from the reached-stage numerator; never infer a stage from workflow order or text

The five independent model-role metrics—role-model-task-outcome-rate, operational-latency-ms, operational-token-usage, operational-attributable-cost, and operational-usage-availability—all slice only by the exact provider+C57 canonical model+C30 Role+C06 Runtime tuple. Any missing coordinate makes the contributing unit unavailable for that slice; display names, aliases, ancestry or summary text cannot complete it.

6.2 B-class terminal-task and cohort reading

Task terminal state is an evaluation reading, not an Observation fact. It is computed at one declared as-of cutoff as follows:

  1. The evaluation owner supplies an immutable defined-task snapshot containing exact Task identities, explicit Delivery membership, event-time cohort coordinates and the cutoff. The snapshot is an evaluation-level input; it is never backfilled from later facts.
  2. Each declared Delivery member is joined only by exact Delivery and Task identities. A member without an accepted terminal Delivery Summary at the cutoff is open/non-terminal; the whole task is ineligible for terminal-task metrics and receives exclusion reason OPEN_DELIVERY.
  3. For a task whose declared members all have terminal summaries, collect the exact recorded outcomes. If every outcome is identical, that value is the unique terminal task outcome. If values differ, no chronology or winner is inferred; the task receives MIXED_DELIVERY_OUTCOMES and is excluded from outcome numerators and eligible-terminal denominators.
  4. A task missing its exact membership, Task identity or required cohort coordinate receives UNDEFINED_TASK_MEMBERSHIP, MISSING_TASK_IDENTITY or INCOMPLETE_COHORT_COORDINATES; absence is never reconstructed.
  5. Comparable cohorts require exact equality on every dimension/filter declared by the metric, including event-time role-template assignment and provider/Runtime/currency/cost-basis coordinates where applicable. Cross-context values remain separate.

task-cohort-comparison-eligibility uses all tasks in the immutable defined-task snapshot as its denominator and tasks passing rules 2–5 as its numerator; it publishes each exclusion reason separately. Other terminal-task metrics use only the passing set as their eligible denominator. This distinction prevents excluded/open tasks from disappearing from eligibility coverage while keeping them out of outcome, cost and rework formulas.

6.3 Formula and Projection eligibility ownership

This Catalog owns metric formulas: evaluation unit, numerator/denominator, required projected attributes, exclusions, existing minimum-sample rule, coverage population/input basis and forbidden inferences. evidence.projection owns fact-level compatibility keys and eligibility attributes derived from accepted facts. Evaluation consumes those attributes but cannot repair or override them; Projection cannot define a Metric formula; BI cannot change either layer.

6.4 Coverage result and alert policy

Every metric result always publishes numerator, denominator, raw_ratio, state and alert. Coverage uses candidate units satisfying identity, time window, cohort and base scope as its denominator; its numerator is the subset with all direct inputs required by that metric. Ordinary negative examples remain covered; only unavailable required inputs are missing.

  • denominator = 0 → NO_POPULATION, with ratio and metric value N/A;
  • denominator > 0 and numerator = 0 → NO_COVERAGE, ratio 0 and metric value N/A;
  • 0 < numerator < denominator → PARTIAL;
  • numerator = denominator → FULL.

Coverage never gates publication and never hides, zeroes or rewrites an otherwise computable metric value. minimum_sample keeps its separate established behavior: below the declared eligible-unit count, the metric value is not published, while coverage numerator, denominator, raw ratio, state and alert are still published. The default LOW_COVERAGE alert threshold is 0.10; legal thresholds are {0.00,0.01,...,0.99}. Threshold 0 disables the alert. Otherwise, for denominator > 0, alert exactly when raw coverage is below threshold. No rounded value participates: for threshold hundredths T ∈ [0,99], compare 100×numerator<T×denominator100 \times \text{numerator} < \text{T} \times \text{denominator}; equality does not alert. Threshold changes recalculate only the alert, never historical facts, value or coverage.

6.5 Per-metric input and eligibility map

MetricRequired projected/evaluation inputMetric-level eligibility and exclusions
role-template-rework-ratedefined-task snapshot; exact event-time role template; unique terminal task outcome; linked repairexclude open/mixed/undefined tasks and backfilled/missing template assignment
role-template-trajectory-partial-costsame task/template inputs plus linked direct costexclude mixed currency/source/cost basis and estimated/unattributed cost; partial coverage remains visible and does not exclude an otherwise computable value
role-model-task-outcome-rateunique terminal task outcome plus complete model-role tupleexclude open/mixed tasks and incomplete attribution; publish one numerator per outcome over one eligible denominator
packet-rework-rateexact packet identity, supported governance revision and repair-attribution inputdenominator is all in-scope eligible packets; a known no-repair packet remains covered and contributes 0; unavailable repair attribution affects coverage, not ordinary-negative classification
operational-latency-msnative model-call Span duration plus complete provider/model/role/runtime tupleexclude absent/invalid duration or incomplete attribution; keep model-role cohorts exact
trajectory-partial-costexact Delivery linkage and direct reported costexclude estimated/unattributed or incompatible currency/source/cost basis; publish coverage
task-cohort-comparison-eligibilityimmutable defined-task snapshot and §6.2 classificationdenominator includes every defined task; numerator includes only comparable eligible terminal tasks; publish exclusions
delivery-stage-reachterminal Delivery identity and C56denominator is linked terminal Deliveries; absent/invalid C56 is not a reached stage
delivery-terminal-outcome-rateterminal Delivery identity and exact outcomeone numerator per outcome over terminal Deliveries; no task-level inference
delivery-cycle-time-msterminal Delivery identity and C55exclude absent/invalid C55; publish contributing count
operational-token-usagestandard reported input/output token measurements plus complete provider/model/role/runtime tuplekeep input/output separate; exclude absent/incompatible measurements or incomplete attribution; never synthesize missing total
operational-attributable-costdirect linked project-attributable cost plus complete provider/model/role/runtime tupleexact model-role/source/unit/currency/cost basis only; no estimate or conversion
operational-usage-availabilityexact model-call identity, usage-source classification and complete provider/model/role/runtime tuplenumerator requires explicit applicable source; unavailable source classification affects coverage, not a false zero-usage claim
direct-evidence-basis-rateaccepted fact identity and readable provenance classificationdenominator retains accepted nondirect facts, which contribute 0; missing/unreadable provenance affects coverage and is never treated as nondirect

7. Reading Rules and Forbidden Claims

  • Never collapse independent metrics into a score. BI/Evolution may explicitly select coordinates, but the Metric Catalog publishes no profile, composite, rank, Pareto set or hidden weight.
  • Never backfill. Event-time configuration/template assignments are never applied to historical facts.
  • No causal claims. Outcome, cost, and latency deltas are descriptive; single-component changes permit association language only; multi-component changes are bundle-level only.
  • No cross-context comparison. Metrics are not comparable across roles, task cohorts, event-time configurations, provider/runtime boundaries, cost bases, or currencies.
  • Partial is not total. money and quantity metrics are partial attributable values; they are never labeled total cost or total usage.
  • Missing is never zero. Every metric's value_semantics.missing states an N/A condition; unavailability is not a zero and not a claim of completeness.
  • Coverage is visible, not a gate. Coverage result and alert always publish; low coverage alone never hides a computable value or changes minimum_sample semantics.
  • Consumer questions are not Metric fields. The Catalog has no Question Catalog, question_refs, BI preset or Evolution input bundle; consumers reference exact metric coordinates and revisions.