Skip to content
CorePart 1 · Foundations — how SpanForge works

Chapter 1.4

The event type registry — 74 canonical types across 17 namespaces

~12 min read

A Controlled Vocabulary of Events

Without constraints, observability data becomes inconsistent and difficult to query. SpanForge avoids this by defining a centralized event type registry.

Each event type has a fixed schema and meaning. Examples include:

  • llm.completion.started
  • llm.completion.succeeded
  • retrieval.vector.queried
  • guardrail.check.failed

This shared vocabulary ensures that data remains coherent across services and teams.

The impact is immediate in practice. Without a registry, one system might emit llm_response, another model_output, and a third completion_result. Queries fail silently, analytics fragment, and meaning is lost.

The registry eliminates this ambiguity. It replaces convention with contract.

New event types can be introduced, but only through a controlled process. This preserves flexibility without sacrificing long-term coherence.