Skip to main content

Model cards

Every evaluated model has a model card that brings its lineage, training history, evaluation evidence, and promotion decision into one verifiable JSON document. Open Card on model detail in the console, or request GET /models/{model_id}/card. The console can download the same JSON payload it displays.

The card you read is assembled at read time. This lets historical evaluated models have cards, but it also means the response describes the model's current state: promoting the model later adds bundle and acknowledgement provenance to subsequent reads. Treat the fingerprints in the card as the immutable evidence, not the card response itself. When you promote a model, Tessera also pins the card as it stood at that moment next to the bundle, and the pinned card is what governance exports and dossiers render.

What the card contains​

SectionEvidence
IdentityModel and run ids, checkpoint and configuration fingerprints, the six pinned lineage values, seed, world size, compute class, and the reproducibility tuple.
DataDataset split, row counts, label support, training window, encoders, tokenizer, contract, and leakage-policy versions.
TrainingResolved trainer settings, completed steps against the run's maximum budget, wall time, best step, and adaptive-stop outcome when available.
EvaluationPer-label estimates and entity-level confidence intervals, plus G1–G6 status, diagnostics, catalog name, and server-resolved severity.
PromotionThe latest bundle identity and, when applicable, the exact advisory-gate acknowledgement, reason, actor, and policy mode.
Loss curveA bounded rendering summary of train and validation loss that preserves the first, last, and best-step points.
LimitationsFacts derived from non-gating labels, acknowledged advisory failures, calibration failures, and count-invariance caveats, including equal-count samples.
SourcesRetrievable artifact references as exact kind, uri, and fingerprint triples.

In the console, model detail has five tabs: Overview, Evaluation, Card, Bundles and Files. Overview opens with the promotion verdict and the next step, then a summary of what the model predicts, the data it used, its held-out quality and where it serves. Card sections show their key facts with units, meaning and bounded display precision. Open Exact values in any section for the served values, or download the JSON, which is unchanged. The Lineage and Artifacts links at the top of the Card tab open the identity and source sections directly. The tab is part of the page address, so a link ending in #lineage, #artifacts, #card, #gate-G1 to #gate-G6, #bundles or #files opens the tab that holds that section.

The optional baselines and signals sections are in the JSON only when evaluation produced those blocks. The baselines section holds the comparison with the internal quality safeguards; the console does not show it, and Exact values leave it out. Older runs can omit adaptive-stop fields, and unpromoted models omit promotion provenance. The console renders these cases as Not available; absence is not an error. See the complete ModelCard schema for the field-level contract.

Reading the evidence​

Evaluation values are copied from the fingerprint-verified evaluation report; the card does not calculate new metrics. They are measured on the dataset's held-out test split. In the Test environment that data can be example data, so treat the numbers as a check of the workflow rather than evidence of real-world performance. Gate names come from the platform catalog, while severity comes from the project's current promotion policy. This distinction is useful when a report contains an unchanged failed gate fact but a bundle records that an advisory failure was explicitly accepted. Read Promotion gates for the policy and audit model.

The limitations list is deterministic rather than generated prose. Each item names its source facts, so it can be traced back to a label, gate metric, or recorded acknowledgement. An empty list means none of those defined caveats was present; it is not a general claim that the model has no limitations.

When G3 records degenerate_single_count: true, the card explains that every sampled entity had the same event count. Even when G3 passes, this diagnostic cannot establish invariance across different counts. The evaluator compares neighbor share with the count-shuffled baseline for that sample; the card preserves its decision, metrics, and diagnostics and adds a count_invariance_caveat to make this limitation explicit in the JSON download.

Verification and errors​

Before returning a card, Tessera verifies the fingerprinted artifacts used to assemble it. If stored bytes no longer match a recorded fingerprint, the read fails closed with failed_precondition and identifies the artifact kind, uri, expected, and actual values. Tessera never serves a partial card.

A missing model, a model from another project, and a model that has not been evaluated all return the same not_found response. This prevents model ids from revealing data across project boundaries.

Verified artifact reads are cached briefly by URI and fingerprint. A changed fingerprint always causes a fresh verification, so the cache cannot turn a new evaluation into stale card evidence.