Auto-Maintain

How Solid detects schema drift, benchmark failures, and production usage gaps, and proposes one-click fixes to keep semantic models current.

Auto-Maintain is the third of Solid's three loops — keeping semantic models current as data and usage evolve.

Trigger Type A: Benchmark Run Failures

When: A benchmark run returns failed questions.

What Solid does:

  • Identifies the root cause per failure (ambiguous question, wrong join, missing metric, etc.)
  • Proposes the exact fix for each failure: edit a specific part of the model, or add a specific instruction
  • Presents each proposal as a one-click "Apply Fix"

Human gate: The modeler reviews each proposal and applies or rejects it individually.

Trigger Type B: Data Layer Changes

When: Tables, columns, metrics, or SQLs evolve in the warehouse — DDL changes, new columns, renamed fields, deprecated tables.

What Solid does:

  • Automatically detects the change by re-pulling schema/metadata on a configurable schedule (daily/weekly)
  • Maps the impact to all affected semantic models
  • Surfaces a targeted update recommendation per model — e.g., "Column X was renamed to Y — update these 3 references"

Human gate: The modeler reviews each recommendation and applies or rejects it.

Trigger Type C: Production Usage Gaps

When: Real MCP agent usage reveals a metric or concept with no model coverage — agents are asking about things no semantic model currently addresses.

What Solid does:

  • Flags the gap with full context (what was asked, how often, which model was closest)
  • Suggests recommendations based on usage patterns

Human gate: The modeler reviews and decides whether to extend an existing model or create a new one.

Schema Drift Detection Mechanics

Solid pulls schema/metadata on a configurable cadence (daily or weekly). It processes DDL deltas — not full re-ingestion — to identify what changed. The diff is presented to modelers with impact mapping: which models are affected, and which specific entities need updating.


Did this page help you?