Concepts #

Why Litmus is built the way it is. Concepts are grouped by what you're trying to understand. Each group has its own index; jump to the page you care about, or read top-to-bottom for the full mental model.

Overview #

Overview index →. The framework's mental model from above — what Litmus is, what it isn't, and why pytest sits underneath.

  • Architecture — system-level view of products, stations, fixtures, and runs
  • Platform vs framework — what the platform owns vs what the runner owns
  • pytest — why a hardware-test platform rides on pytest instead of its own runner
  • AI integration — what the MCP surface buys you and where it draws the line

Configuration #

Configuration index →. The DUT-to-instrument model — the YAML entities you author once and re-use across runs.

  • Products — what you're testing
  • Stations — where you test
  • Capabilities — what instruments can do, how matching pairs them with product characteristics
  • Fixtures — pin-to-instrument mapping

Execution #

Execution index →. How a test run unfolds — the step model, the outcome ladder, what each step records.

  • Step hierarchy — how test classes, methods, and vectors nest
  • Step manifest — what each step records
  • Outcomes — passed / failed / errored / skipped / done / terminated / aborted severity ladder

Data #

Data index →. Where the run data lives and how the platform stays consistent across processes.

  • Event log — the durable record of every run
  • Event sourcing — append-only event log as the source of truth
  • Sessions — connect-to-disconnect observation windows for instrument use
  • Three stores — EventStore, ChannelStore, ParquetBackend; on-disk layout, data_dir resolution, schema-evolution contract
  • Flight streaming — cross-process data access via Arrow Flight