Skip to content

Concepts Overview

Tessera is built around a few core concepts that work together to coordinate data contracts.

Core Entities

Assets

An Asset represents a data object in your warehouse - a table, view, or model. Each asset has:

  • FQN (Fully Qualified Name): Unique identifier like warehouse.schema.table
  • Owner Team: The team responsible for the asset
  • Metadata: Tags, descriptions, dbt info
{
  "fqn": "analytics.marts.dim_customers",
  "owner_team_id": "team-uuid",
  "metadata": {
    "resource_type": "model",
    "tags": ["pii", "core"]
  }
}

Contracts

A Contract defines the schema guarantee for an asset. It specifies:

  • Schema: JSON Schema definition of columns and types
  • Compatibility Mode: How changes are evaluated (backward, forward, full, none)
  • Version: Semantic version (auto-incremented)
  • Guarantees: SLAs like freshness and volume requirements
{
  "schema": {
    "type": "object",
    "properties": {
      "customer_id": {"type": "integer"},
      "email": {"type": "string"}
    },
    "required": ["customer_id"]
  },
  "compatibility_mode": "backward",
  "version": "1.0.0"
}

Teams

Teams are groups of users who own assets and consume data. Teams:

  • Own assets (producers)
  • Register as consumers of other assets
  • Acknowledge breaking changes

Registrations

A Registration records that a consumer team depends on a contract. When breaking changes are proposed, registered consumers must acknowledge.

Proposals

A Proposal is created when a breaking change is detected. It:

  • Lists all breaking changes
  • Tracks acknowledgments from consumers
  • Can be force-published by admins

Workflow

graph TD
    A[Publish Contract] --> B{Breaking Change?}
    B -->|No| C[Auto-publish new version]
    B -->|Yes| D[Create Proposal]
    D --> E[Notify Consumers]
    E --> F{All Acknowledged?}
    F -->|Yes| G[Publish new version]
    F -->|No| H[Wait for acknowledgments]
    H --> F

Compatibility Modes

Mode Breaking Changes
backward Remove field, add required, narrow type
forward Add field, widen type
full Any schema change
none Nothing (notify only)

Next Steps