Sources of truth
SPLENT does not scatter configuration across dozens of files. Four artefacts define the full state of a product — what it is made of, how those pieces relate, where each piece stands in the lifecycle, and how they connect at runtime.
| Source | File | What it governs |
|---|---|---|
| pyproject.toml | <product>/pyproject.toml |
Identity, versions, feature list, contracts, UVL pointer |
| UVL feature model | splent_catalog/<spl>/<spl>.uvl |
Variability structure, mandatory/optional features, cross-tree constraints (shared across products) |
| Feature state | <product>/splent.manifest.json |
Lifecycle state of every feature (declared → installed → migrated → active) |
| Environment files | docker/.env* |
Runtime configuration: hostnames, ports, credentials, service URLs |
The first three define what a product is. Environment files define how it runs. Every CLI command and framework subsystem reads from one or more of these files. Understanding them is essential to understanding how SPLENT works.