This page defines the Schema.ai knowledge-graph model: what the records are, what every controlled vocabulary value means, and how the design maps onto standard knowledge-graph practice. It is kept in lockstep with the schema by an automated check — if a value exists in the graph, it is defined here.
The model in one paragraph
Schema.ai is a property graph with reified assertions. Entities are the nodes — metrics, settings, behaviors, components. Edges are typed, directed links between entities that make relationships traversable. Claims are the truth-bearing records: each one is a reified assertion about a subject entity, carrying its own evidence, applicability scope, epistemic status, and time metadata. Edges never assert anything on their own authority — every edge cites the claims that ground it (claim_refs). The corpus is an append-only event log (assert / retract / supersede), so the graph at any moment is a projection of its history, and nothing is ever silently deleted.
In knowledge-graph terms: claims are n-ary relations in the style of Wikidata statements or RDF-star — a core subject–predicate–object triple promoted to a first-class node so that qualifiers (our guards), references (our evidence), and temporal validity (our knowledge time and version applicability) can attach to the assertion itself. The graph is open-world by default — absence of a record implies nothing — except where an inventory is declared complete, which enables closed-world absence answers ("this metric does not exist in this version").
The product principle shaping all of it: Schema returns knowledge building blocks plus how to interpret them, not finished answers. Every structure below exists to keep those blocks precise, attributable, and honestly scoped.
Nodes: entities
An Entity is a stable, linkable handle for something operators name: it has an id, an entity_type, a title, alternate names (the alias surface lexical retrieval matches against), and a description. Entities carry no truth about behavior — that lives in claims about them.
EntityType
| software_project | A product or project the graph covers — e.g. vLLM itself. The root node other entities belong to. |
| release | A tagged upstream release of a project. Version applicability is expressed against releases, not wall-clock time. |
| setting | A named configuration knob as operators think of it (e.g. max_num_seqs), independent of where it is exposed. |
| config_class | A code-level configuration object (e.g. SchedulerConfig) that groups settings in the implementation. |
| configuration_surface | One concrete place a setting is exposed: a constructor parameter, CLI flag, or environment variable. A setting can have several surfaces. |
| metric | An observability time series (e.g. vllm:prefix_cache_queries). Metric entities carry an instrument_type from which exposition aliases are derived mechanically. |
| runtime_component | An internal subsystem of the product (e.g. the scheduler) that behaviors and metrics attach to. |
| log_message | A recognizable log line or log-message family operators encounter and search for. |
| failure_mode | A named way the system degrades or breaks, as a linkable concept rather than prose. |
| tuning_action | A named operator intervention (e.g. lowering a batch limit) that claims and guidance can reference. |
| source_artifact | A cataloged source document or file treated as a graph node so provenance is traversable. |
| behavior | A named runtime behavior or condition (e.g. prefix cache reuse, KV-cache preemption pressure) — the subject of guidance that is about dynamics rather than any single metric or setting. |
InstrumentType
On metric entities only; drives mechanical derivation of Prometheus exposition aliases (counter _total, histogram _bucket/_count/_sum).
| counter | Monotonically increasing value, reset on restart. Prometheus exposes counter samples with a _total suffix — the graph derives that alias from this field. |
| gauge | Point-in-time value that can go up or down. |
| histogram | Bucketed distribution; exposed as _bucket/_count/_sum series, also derived as aliases. |
Edges: typed entity relationships
An EntityEdge is a directed, typed link between two entities with a human-readable description and — critically — claim_refs: the claims that establish the relationship. Edges are for traversal ("what observes this behavior?", "what bounds this parameter?"); claims are for truth. An edge without a grounding claim is a modeling error.
EntityEdgeType
| has_configuration_surface | Setting → surface: where the setting is exposed. |
| sets_lower_bound_for | Parameter → parameter: validated ordering constraint between two knobs. |
| uses_as_token_budget | Behavior → parameter: the behavior consumes the parameter as its budget. |
| affects_resource_pressure | Parameter → behavior: tuning the parameter changes a pressure condition. |
| shares_scheduler_capacity_tradeoff_with | Parameter ↔ parameter: adjacent capacity knobs whose tuning trades off. |
| observes_runtime_state | Metric → behavior: the metric measures a runtime state. |
| observes_resource_pressure | Metric → behavior: the metric measures a pressure condition. |
The edge-type vocabulary grows as new relationship shapes are promoted; each addition must define its direction and semantics here.
Claims: reified assertions
A Claim is the unit of knowledge. Its core is a subject–predicate–object triple: the subject is an entity reference, the predicate is drawn from a controlled vocabulary, and the object is structured data (not prose) — a metric type, a default value, a formula. Around that core:
statement — the canonical human-readable sentence. Statement fidelity is a hard rule: exact tokens, source specifics preserved, no attribution scaffolding (metadata carries attribution exactly once).evidence — pinned citations into snapshotted sources, each with a role, strength, kind, and extraction method, plus a locator (path and line range). Claims cite spans, not documents.applies_to — product, version range (tags, introduced_in/removed_in, channel), and conditions. Version applicability is deliberately distinct from freshness: a claim pinned to v0.23.0 does not decay because time passes; it stops applying when the version scope no longer matches.guards — structured applicability dimensions that make scope queryable rather than buried in prose.knowledge_time — when the fact was recorded and last verified, with explicit precision.freshness_policy — review and staleness windows driving the freshness state machine.does_not_establish — explicit negative scope: adjacent conclusions the claim must not be stretched to support. This is the anti-overreach field, and it is served, not internal.establishment_class, status, confidence — the epistemic triple: how the fact is established, how far verification has gotten, and how strong the evidence is.
ClaimPredicate
Grows by promotion: candidate claims may propose new predicates (e.g. has_lifecycle_policy from the deprecation-policy candidate); a predicate enters this vocabulary when its first claim is promoted.
| has_documented_default | The subject's default value as stated by documentation. |
| has_code_default | The subject's default value as read from the implementation. |
| has_configuration_surface | The subject is exposed at a specific configuration surface. |
| has_tuning_guidance | Sourced guidance about adjusting the subject. |
| has_interpretation_guidance | Sourced guidance about how to read or combine observed values of the subject. |
| constrains | The subject imposes a validated bound or constraint on another quantity. |
| affects_behavior | The subject influences a named behavior (resource pressure, scheduling, etc.). |
| observes_behavior | The subject (a metric) measures a named behavior. |
| has_metric_type | The subject metric's instrument type, unit, and exposition surface. |
EstablishmentClass
| enforced | The fact is enforced by code — validation raises or behavior is structurally guaranteed. Requires code evidence; documentation alone never justifies it. |
| advisory | Maintainer intent, guidance, policy, or acknowledged caveat. True as a statement about the project's stated position, not a behavioral guarantee. |
| derived | Behavior a source states as fact. Trustworthy as sourced description, but the code remains authoritative. |
| benchmark | Established by measurement under stated conditions rather than by source text or code reading. |
ClaimStatus
| verified-code | Verified against a pinned source-code snapshot at the applicable version. |
| verified-docs | Verified against pinned official documentation. |
| verified-release-note | Verified against a release note. |
| operator-evidence | Grounded in operator-reported observation rather than upstream sources. |
| sound-synthesis | A composition of verified facts whose joining step is Schema's own reasoning, labeled as such. |
| needs-verification | Extracted but not yet verified — the status every candidate starts with. Never served as settled. |
| rejected | Reviewed and found unsupported; retained for audit, never served. |
| contested | Sources disagree or review found a live conflict; served only with the conflict visible. |
ConfidenceLevel
| high | Direct, unambiguous evidence at the pinned version. |
| medium | Solid evidence with an interpretive step or partial coverage. |
| low | Weak or indirect evidence; served with visible hedging. |
GuardDimension
| vllm_version | Upstream product version the claim is scoped to. |
| engine_version | Engine generation (e.g. V1) when it differs from the release tag. |
| attention_backend | Attention backend in effect. |
| hardware_class | Hardware family the claim depends on. |
| model_type | Served-model family the claim depends on. |
| feature_flag | Feature flag that must be on or off. |
| metric_name | The specific metric the claim is about. |
| config_surface | The specific configuration surface the claim is about. |
| runtime_component | The subsystem the claim is scoped to. |
| source_scope | Scope the source itself declared for the statement. |
GuardSourceScope
Every guard records whether its scope came from the source or from us — provenance for the applicability itself.
| explicit | The source states this applicability dimension outright. |
| inferred_from_section | Scope inferred from the section or context the statement appears in — weaker, and marked as such. |
| unspecified | The source does not scope the statement; the guard records our chosen scope. |
EvidenceRole
| defines | The cited span is where the fact is established (e.g. the metric registration). |
| documents | The cited span states the fact in prose. |
| supports | The cited span corroborates without being the defining location. |
EvidenceStrength
| primary | The load-bearing citation for the claim. |
| secondary | Additional grounding; the claim does not rest on it alone. |
EvidenceSourceKind
| source_code | A pinned source-code snapshot. |
| documentation | A pinned documentation snapshot. |
ExtractionMethod
| code_introspection | Read from the implementation. |
| docs_extraction | Extracted from documentation text. |
TimestampPrecision
| instant | Exact moment known. |
| date | Known to the day. |
| unknown | Recorded without reliable precision. |
FreshnessStatus
Caveat: the current review/stale windows are authoring-time placeholders and the re-verification process that should progress these states is still being designed. Treat review_due and stale as advisory display states, not operational commitments.
| fresh | Inside the claim's review window. |
| review_due | Past review_after_days without re-verification. Current windows are authoring-time placeholders — see the freshness caveat below. |
| stale | Past stale_after_days; served with a strong warning. |
| retracted | Withdrawn via a retract event; never served as current. |
Events: the append-only corpus log
Records enter the corpus wrapped in events. Nothing is edited in place from a consumer's point of view: corrections arrive as supersede events, withdrawals as retract events, and the serving stores are projections of the event log at a pinned corpus snapshot id.
CorpusEventType
| assert | Introduces a record (claim, entity, edge…) into the corpus. |
| retract | Withdraws a record without deleting its history. |
| supersede | Replaces a record with a successor, preserving the lineage. |
Coverage: topics, availability, gaps
Topics are the slice objects: named groupings of entities and claims that carry coverage meaning ("prefix cache effectiveness"). Topics declare gaps — known missing knowledge is a first-class record, not silence. Availability records inventory what exists on a surface at a version, independent of which members have promoted claims.
ComprehensivenessLevel
Topic-level coverage honesty.
| seed_slice | A deliberately small starting slice of a topic. |
| partial | Real coverage with known gaps. |
| broad | Most of the topic covered; gaps enumerated. |
| comprehensive | The topic is covered to its declared boundary. |
InventoryCompleteness
| partial_promoted_slice | Only promoted members are inventoried; absence of a name means nothing. |
| complete_inventory | The inventory enumerates every member at the pinned version — the only state in which Schema answers “X does not exist” (closed-world absence). |
Sources and snapshots
Every citation resolves to a pinned snapshot: a content-hashed copy of a source at a specific tag, commit, or retrieval date. Claims never cite live URLs. Source records carry type, authority, and relationship so consumers can weigh provenance.
ArtifactSourceType
| source_code | Implementation files at a pinned tag or commit. |
| official_docs | Documentation maintained by the project. |
| release_note | Release announcements and changelogs. |
| issue | Issue-tracker discussions. |
| postmortem | Incident writeups. |
| runbook | Operational procedures. |
| benchmark | Measurement reports. |
SourceAuthority
| official | Published by the project itself. |
| maintainer | Written by maintainers outside official channels. |
| operator | First-hand operator experience. |
| vendor | Published by a vendor with a stake. |
| community | Community-produced material. |
| generated | Machine-generated; lowest default trust. |
SourceRelationship
| first_party | The source belongs to the project the claim is about. |
| third_party | External to the project. |
RefreshStatus
| unchanged | The latest scheduled re-fetch of the live upstream matched the pinned evidence snapshot; claims citing this source were auto-verified at that instant. |
| changed-no-claim-impact | The upstream drifted from the pinned snapshot, but no promoted claim cites the drifted material. |
| changed-needs-claim-review | The upstream drifted from the pinned snapshot and claims cite it; those claims stay on their freshness clocks until a human reviews the drift. |
| candidate_missing | The scheduled re-fetch could not retrieve the upstream (error or gone); treated as unconfirmed, never as absence. |
SourceType
| docs_page | A documentation page snapshot. |
| source_file | A code file snapshot. |
| api_docs_page | A generated API-reference page snapshot. |
The extraction and review pipeline
Claims are not written directly. A pinned snapshot goes through an isolated extraction run producing candidate claims — review substrate that never serves canonically. Candidates carry the same core anatomy plus a catalog_context: the extractor's categorization of what kind of claim this is and how consumers would reach it. Review decisions are recorded per candidate; accepted candidates are promoted into assertion events with full evidence locators.
claim_kind
Coarse kind label on candidates (catalog_context). Open vocabulary: a new kind is a review flag, not an error. Current kinds:
| policy | Project or maintainer process norms — e.g. the metric deprecation policy. Subject is the surface or project the policy governs, never a single metric. Read in reverse, policy is often operator guidance about where signals will surface. |
| measurement-semantics | What a metric actually measures: units, boundaries, encoding, reset behavior. |
| interpretation-guidance | How to read or combine values — ratios to compute, charts to join, priorities. Must be reachable from every ingredient it interprets. |
| lifecycle-fact | A concrete status event in something's life: deprecated, duplicated, legacy, never-implemented, pending reintroduction. |
| availability-condition | When something exists or is absent: gates, flags, deployment modes. |
| design-intent | Why the system is built a certain way, including rejected alternatives — the contrast facts. |
| design-caveat | A maintainer-acknowledged limitation or unsettled area (e.g. histogram buckets not final). |
| collection-architecture | How the numbers are produced: where collection happens, which libraries, which process boundaries. |
| exposition-convention | Naming and labeling rules on the wire: prefixes, suffix transforms, universal labels. |
| publisher-behavior | What a metrics publisher emits and when (log cadence, endpoint behavior). |
| runtime-behavior | What the system does at runtime (e.g. preemption restarts prefill), independent of any metric. |
subject_scope
How wide the candidate's subject is — the axis reviewers navigate a run by.
| single-metric | About one specific metric. |
| metric-family | About a group that shares semantics (the kv_block_* histograms, the spec_decode_* set). |
| surface-wide | Applies to everything on a surface (every counter, every metric name). |
| behavior | About a named runtime behavior rather than any metric. |
| project-process | About how the project itself operates. |
source_register
The register of the source passage. Register explains establishment class and sets the verification pathway: descriptions are leads pending code confirmation; opinion and intent never harden into enforced facts.
| description | States current behavior as fact. Strong lead, but describes the implementation rather than specifying it — code confirmation is the hardening path. |
| rationale | Why it is built this way; rejected alternatives. Highest-value, lowest-visibility content — rarely stated anywhere else. |
| editorial-opinion | Maintainer self-criticism (“seems misguided”, “seems duplicative”). Never hardens into enforced fact; valuable as forward-change signal. |
| history | Archaeology: how things came to be, PR sagas, removed features. |
| future-intent | Aspirations and open questions. Describes what should exist, not what does. |
relation kinds
PROVISIONAL. Typed relations between claims (relation_hints on candidates). These are hints accumulating as review substrate; the canonical claim-reference mechanism is under active design. Semantics as currently used:
| governs | A policy claim sets the process context for a concrete fact. Inverse: governed_by. |
| governed_by | A concrete lifecycle fact points to the policy that explains how such changes are signaled — e.g. a deprecated metric's claim reaches the deprecation policy. |
| interprets | A guidance claim tells consumers how to read one or more ingredient claims. Inverse: interpreted_via. |
| interpreted_via | An ingredient claim (e.g. a raw counter) points forward to the guidance that makes it useful (e.g. compute the ratio). |
| contrasts_with | Two claims form a contrast set — the rejected alternative and the chosen design, or the metric to watch versus the raw ingredients. |
| grounds | A factual claim provides the basis for a guidance or availability statement elsewhere in the graph. |
ExtractionRunStatus
| running | In progress. |
| completed | Finished; candidates are review-ready. |
| failed | Aborted; candidates unusable. |
| superseded | Replaced by a later run over the same source. |
ReviewTargetType
What a review item is about.
| candidate_claim | A pre-promotion extracted candidate. |
| claim | A promoted, serving claim. |
| entity | A graph node. |
| entity_edge | A typed edge. |
| entity_availability | An availability/inventory record. |
| source_artifact | A cataloged source. |
ReviewDecision
| pending | Not yet decided. |
| accepted | Approved as-is for promotion. |
| accepted_with_edits | Approved contingent on recorded edits. |
| rejected | Not promoted; reason recorded. |
| deferred | Decision postponed with a reason. |
Scenarios: documented question shapes
Query scenarios are product records documenting an operator question shape end to end — verbatim phrasings, the nuance targeted, what Schema does with it, and refs into the claims, topics, and eval fixtures that ground it.
ScenarioStatus
| works_today | The documented behavior is what the product does now. |
| known_failing | The scenario currently fails and says so — failures are first-class records, not hidden. |
| aspirational | Describes intended future behavior. |
CapabilityFacet
| scope | Knowing what is and is not covered. |
| retrieval | Serving the right building blocks for a question shape. |
| honesty | Declining, hedging, and exposing absence rather than synthesizing. |
Relation to standard knowledge-graph theory
For readers arriving from RDF/OWL or property-graph practice: entities and typed edges are the ordinary property-graph layer. Claims are where the model diverges from a plain triple store — a triple like prefix_cache_queries has_metric_type counter is never asserted bare; it is reified so the assertion itself can carry qualifiers (guards ≈ Wikidata qualifiers), references (evidence ≈ Wikidata references), modality (establishment class — enforced/advisory/derived is a modality distinction logic would express as necessity vs. normativity vs. reported fact), and temporal scope (version applicability, distinct from wall-clock freshness). The predicate vocabulary is deliberately small and closed at promotion time, in the spirit of a curated ontology rather than open information extraction; the extraction layer's kind/scope/register labels are a folksonomy stage that feeds ontology growth under review. Provenance follows W3C-PROV instincts (every assertion traces to a pinned snapshot span) without adopting the full vocabulary.