# Explanation

Background and design rationale behind `scinexus`.

- Why composable apps? – the problem `scinexus` solves and how it compares to alternatives
- The app lifecycle – base classes and `define_app`
- Type system – how composition-time type checking works
- Execution flow – step-by-step data flow through a composed pipeline
- NotCompleted design – why a sentinel pattern instead of exceptions
- Source tracking – how `source_proxy` tracks data provenance through pipelines
- Customisation hooks – `set_summary_display` and `set_id_from_source` registry functions
- Data store model – unique IDs, checkpointing, and backend choices