Feature lifecycle

A feature is not just a Python module. It has an explicit lifecycle that spans configuration, installation, database evolution, and runtime activation.

(absent) → [cached] → [declared] → [installed] → [migrated] → [active] ⇄ [disabled]
  • States — what each state means and how to reach it
  • State guards — blocked operations and automatic transitions
  • Signals — signal-based decoupling between features
  • Manifestsplent.manifest.json tracking and cleanup

State transitions are triggered by CLI commands, startup scripts, and the Flask application factory. The current state is persisted in splent.manifest.json.

Lifecycle layers

Layer States System Who updates manifest
Configuration declared pyproject.toml + symlinks feature:add, feature:attach, product:resolve
Environment installed Python environment, pip 00_install_features.sh
Persistence migrated Database schema (Alembic) db:upgrade, db:migrate
Runtime active, disabled Flask app, blueprints FeatureManager.register_features()

Table of contents


Back to top

splent. Distributed by an LGPL license v3. Contact us: drorganvidez@us.es