State guards

The lifecycle module enforces valid transitions, blocking destructive operations on features that have applied migrations or are active.

Table of contents

Blocked operations

Command Blocked in state Guidance
feature:remove migrated, active Run db:rollback <feature> first
feature:detach migrated, active Run db:rollback <feature> first
feature:unlock migrated, active Run db:rollback <feature> first
feature:upgrade migrated, active Run db:rollback <feature> first

All blocked commands accept --force to bypass the check.


Automatic transitions

These happen without manual intervention:

Trigger Transition Where
pip install -e succeeds declared → installed 00_install_features.sh
splent db:upgrade succeeds installed → migrated db:upgrade, db:migrate, db:reset
Flask loads feature migrated → active FeatureManager.register_features()
splent db:rollback (full) migrated → installed db:rollback
splent product:resolve (new entries) → declared product:resolve

See also

  • States — what each state means
  • Manifest — where state is persisted

Back to top

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