Schema.ai keeps operational knowledge in a small, inspectable model: things operators recognize, claims about those things, the evidence behind each claim, and the conditions under which it applies. That is the product model. The detailed vocabulary used to operate and audit the corpus remains available below as a secondary technical reference.
The model
1. EntitiesMetrics, settings, releases, components, and behaviors that people name.
2. ClaimsSmall factual assertions about an entity, expressed with a controlled predicate.
3. EvidenceThe exact, pinned source span supporting each claim.
4. ApplicabilityThe versions and operating conditions in which the claim holds.
5. RelationshipsEvidence-backed links that make related entities and claims traversable.
In short: an entity has claims; every claim shows its evidence and scope; relationships connect the resulting knowledge. Schema returns these trustworthy building blocks so a person or agent can inspect where an answer came from and where it stops applying.
Why the supporting machinery exists
Provenance, version scope, and explicit coverage gaps are not extra domain concepts. They are assurance machinery that prevents an extracted statement from being presented as universally true. Review states, source-refresh states, and corpus history serve the same purpose internally; most users do not need to learn them to understand the product.
The reference below is exhaustive because the implementation is checked against it automatically. Its size should not be read as the number of concepts a customer must understand.
Technical reference
Expand a section when implementing against the corpus, reviewing a candidate extraction, or auditing a served result. These definitions are normative for their respective records.
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.
Entity and metric vocabularies
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. |
| metric_family | A stable identity for a related metric family across versions, used when names or semantics change and no single version-specific time series is the right subject. |
| runtime_component | An internal subsystem of the product (e.g. the scheduler) that behaviors and metrics attach to. |
| 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. |
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.
Relationship vocabulary
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 only when a promoted relationship shape earns a canonical definition; each addition must define its direction and semantics here.
Claims, evidence, and applicability
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. It is bounded by the claim's own statement — conclusions a reader could draw from this claim and the evidence does not support — so it never asserts a fact and never negates one. Guards influence which claims rank first, but a question only a guard addresses is never treated as answered.establishment_class, status, confidence — the epistemic triple: how the fact is established, how far verification has gotten, and how strong the evidence is.consumer_context — optional customer-facing "Why this matters" copy preserved from the candidate's catalog context at promotion. It is product-side interpretation (relevance, audience, safe use), never source-attributed fact, and it renders separately from the statement and evidence.
Claim, evidence, applicability, and freshness vocabularies
ClaimPredicate
A predicate enters this deliberately small vocabulary only when a concrete promoted claim requires it.
| 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_prometheus_metric_type | The subject metric's Prometheus instrument kind — counter, gauge, or histogram — as registered in code. Names the kind only: not the unit, not the semantic category, not the value datatype. Renamed from has_metric_type, which conflated all three. |
| has_label | The label names the subject metric's registration exposes, as one claim per metric. Recorded only where the label set is statically resolvable from the registration call; runtime-resolved label sets are declared as coverage gaps instead. |
| has_buckets | The literal histogram bucket boundaries declared in the subject metric's registration. Never used where boundaries are computed at runtime from configuration (e.g. from max_model_len) — asserting fixed values for those would be false. |
MetricSemanticLayer
Metric coverage grows vertically through these six independently evidenced layers.
| availability_name | Whether the metric exists at a version and the canonical, historical, or exposition names used there. |
| structural_identity | Prometheus instrument type, labels, and histogram bucket structure. |
| measurement_semantics | Unit, observation population, update event, aggregation scope, lifecycle owner, and reset behavior. |
| causal_runtime_semantics | The runtime state, mechanism, or transition that produces the observation, including explicit non-equivalences. |
| interpretation_composition | Valid formulas, companion metrics, comparison preconditions, and limitations. |
| guarded_guidance | Operational use or an explicit no-universal-threshold boundary, supported by source or controlled empirical evidence. |
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.
Corpus history vocabulary
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.
Topic identity is stable across versions. entity_refs declare its semantic members, scope_refs attribute knowledge produced by declared scope predicates, and surface_refs contribute availability only for those explicit members. The selected-version projection reports covered, partial,known_absent, or not_evaluated; legacy version tags describe evidence provenance rather than whether the topic exists. One claim or history record may support multiple topics.
Coverage and inventory vocabularies
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.
Source and refresh vocabularies
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.
Extraction and review vocabularies
claim_kind
Candidate-review classification only; it is not a promoted Claim field. Open vocabulary: a new kind is a review flag, not an error.
| 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
Candidate-review classification describing how wide the proposed subject is.
| 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
Candidate-review classification of the source passage. It helps choose a verification path; it is not domain truth.
| 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 candidate-review hints, not canonical graph edges. Promotion decides whether a hint becomes a supported relationship.
| 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. |
Use cases: documented question shapes
Use cases (internally: 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. Their canonical public URLs live under /use-cases.
Use-case lifecycle vocabularies
ScenarioStatus
| works_today | The documented behavior is what the product does now. Only this state is served on public surfaces. |
| known_failing | The use case does not work yet. Recorded as first-class internal data and reviewed internally; never served publicly. |
| aspirational | Describes intended future behavior. Internal only, like known_failing — not served publicly. |
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. |
Knowledge-graph mapping
Relation to RDF, property graphs, and Wikidata-style statements
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_prometheus_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, and temporal scope. The predicate vocabulary is deliberately small and closed at promotion time. Provenance follows W3C-PROV instincts without adopting its full vocabulary.