feature:status

Table of contents

  1. Introduction
  2. Reading the states
  3. Checking the state against reality
  4. Fixing what the check finds
  5. Seeing the history
  6. Reference
  7. Requirements
  8. See also

Introduction

feature:status shows where each feature of the selected product is in its lifecycle, from declared to active. It reads splent.manifest.json, and it can check that state against what is really on disk and in the container. Run it when a feature does not show up in the app.

splent feature:status
  Feature status — my_first_app
  ──────────────────────────────────────────────────────────────────
  Feature                                    Mode      Progress   State
  ─────────────────────────────────────────────────────────────────────────
  splent_io/splent_feature_auth@v1.2.0       pinned    ●─●─●─●  active
  splent_io/splent_feature_mailer@v1.3.2     pinned    ●─●─○─○  installed
  splent_io/splent_feature_notes             editable  ●─●─●─●  active

  ─────────────────────────────────────────────────────────────────────────
  Progress: declared → installed → migrated → active
  Modes:    pinned = versioned release   editable = local development

  Last updated: 2026-10-31T09:50:45+00:00

Mode is pinned, a release from the cache, or editable, a copy at the workspace root. Progress has one dot per state reached, and a feature without migrations leaves the third one empty.


Reading the states

State Means What moves it on
declared In pyproject.toml and linked The product’s start installs it
installed Installed and importable db:upgrade applies its migrations
migrated Its tables exist The app registers it at start
active Running in the app  
disabled Installed and turned off at runtime  

A fully rolled back feature goes back to installed. Only the features your pyproject.toml declares are listed, and product:resolve drops the rest from the manifest. The whole state machine is in Feature lifecycle.


Checking the state against reality

splent feature:status --integrity
  splent_feature_mailer
    [✔] Symlink: OK
    [✖] pip: not pip-installed

  4 passed, 1 failed.

Each feature gets up to three checks. Symlink checks its link under features/ resolves. pip checks the package is installed in the web container, at the pinned version, from installed on. Migrations checks a migrated or active feature has migration files, without reading the database.

A declared feature still at an older version passes, as right after feature:upgrade, with the hint to run splent product:restart. With the web container stopped, every pip line reads not verified.


Fixing what the check finds

splent feature:status --fix
    Fixing pip → installing splent_feature_mailer...
    ✔ pip install fixed (restart the app or let the reloader pick it up).

--fix runs the check, restores a missing symlink with product:resolve and installs a missing package with pip install -e in the web container. In production nothing is installed, since the image carries its features. Rebuild it with splent product:derive --prod.


Seeing the history

splent feature:status --timeline
  09:00:12  ┬─○ notes  declared
            └─○ mailer  declared
            │
  09:00:30  ──◐ notes  installed
            │
  NOW     ──● 2 feature(s) notes, mailer

Every transition is drawn, oldest first, and transitions in the same second share a timestamp. --json prints the raw manifest instead, described in Feature state.


Reference

Option Description
--integrity Check the manifest against the links, the packages and the migrations
--fix Repair a missing link or package. Implies --integrity
--timeline Draw the lifecycle transitions
--json Print the raw manifest
Message What to do
splent.manifest.json not found Every feature shows as declared. Start the product
<n> stale entries hidden Run splent product:resolve
pip: installed <x>, product pins <y> Run splent product:restart
pip: not verified, ... is not running Start the product with splent product:up --dev
Pinned snapshot <name>@<version> not found Run splent product:resolve to fetch it

Requirements

  • A selected product (SPLENT_APP).
  • For the pip check and its fix, the product running.

See also


Back to top

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