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