feature:status

Show the lifecycle state of every feature attached to the active product.


Table of contents

  1. Usage
  2. Options
  3. Example output
    1. Reading the table
  4. Description
  5. Lifecycle states
  6. When states are updated
  7. State guards
  8. JSON output
  9. Integrity check
  10. Auto-fix
  11. Timeline
    1. Reading the timeline
  12. Requirements
  13. See also

Usage

splent feature:status [--json] [--integrity] [--fix] [--timeline]

Options

Option Description
--json Output the raw splent.manifest.json content as JSON.
--integrity Verify manifest state against actual system (symlinks, pip, migrations).
--fix Auto-correct detected integrity issues (reinstall pip, recreate symlinks, etc.). Implies --integrity.
--timeline Show a vertical graph of feature lifecycle transitions in GitKraken style.

Example output

  Feature status — sample_splent_app
  ─────────────────────────────────────────────────────────────────────────────
  Feature                                        Mode      Progress   State
  ─────────────────────────────────────────────────────────────────────────────
  splent_io/splent_feature_auth@v1.2.7           pinned    ●─●─●─●   active
  splent_io/splent_feature_confirmemail@v1.2.7   pinned    ●─●─●─●   active
  splent_io/splent_feature_mail@v1.2.7           pinned    ●─●─○─○   installed
  splent_io/splent_feature_profile@v1.2.7        pinned    ●─●─●─●   active
  splent_io/splent_feature_public@v1.2.7         pinned    ●─●─●─●   active
  splent_io/splent_feature_redis@v1.2.7          pinned    ●─●─○─○   installed
  splent_io/splent_feature_reset@v1.2.7          pinned    ●─●─●─●   active

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

  Last updated: 2026-03-26T09:50:45+00:00

Reading the table

  • Feature: namespace/name@version as declared in pyproject.toml
  • Mode: pinned (versioned release, cyan) or editable (local development, magenta)
  • Progress: visual dots mapping to the four core states
  • State: current lifecycle state with color coding

Description

Reads splent.manifest.json at the product root and renders a summary table with the current lifecycle state of each feature.

Only features declared in the current pyproject.toml are shown. Stale entries from previous versions are hidden — run splent product:resolve to clean them up.

If splent.manifest.json does not exist yet, the command falls back to reading pyproject.toml and reports all features as declared.


Lifecycle states

State Color Meaning Progress
declared yellow Registered in pyproject.toml and symlinked. Not yet pip-installed. ●─○─○─○
installed bright cyan Pip-installed and importable in the Python environment. ●─●─○─○
migrated blue Database migrations applied. Tables exist. ●─●─●─○
active green Flask is running with blueprints registered. End-user visible. ●─●─●─●
disabled grey Installed but explicitly disabled at runtime. (shown in grey)

When states are updated

Operation State change Who triggers it
splent feature:add / feature:attach declared Developer (CLI)
splent product:resolve ensures declared for new entries, cleans stale Developer (CLI)
00_install_features.sh (pip install) declared → installed Startup script
splent db:upgrade / db:migrate installed → migrated Developer or startup script
splent db:reset re-applies → migrated Developer (CLI)
Flask startup (FeatureManager.register_features) migrated → active Application factory
splent db:rollback migrated → installed (if fully rolled back) Developer (CLI)
splent feature:remove / feature:detach entry removed Developer (CLI)

State guards

Commands that modify feature structure are blocked if the feature is in migrated or active state:

Blocked command Required action first
feature:remove splent db:rollback <feature>
feature:detach splent db:rollback <feature>
feature:unlock splent db:rollback <feature>
feature:rename splent db:rollback <feature>

Use --force to bypass these guards when you know what you’re doing.


JSON output

splent feature:status --json

Returns the full splent.manifest.json:

{
  "product": "sample_splent_app",
  "schema_version": "1",
  "updated_at": "2026-03-26T09:50:45+00:00",
  "features": {
    "splent_io/splent_feature_auth@v1.2.7": {
      "namespace": "splent_io",
      "name": "splent_feature_auth",
      "version": "v1.2.7",
      "mode": "pinned",
      "state": "active",
      "declared_at": "2026-03-26T09:47:00+00:00",
      "installed_at": "2026-03-26T09:47:30+00:00",
      "migrated_at": "2026-03-26T09:47:45+00:00",
      "updated_at": "2026-03-26T09:48:00+00:00"
    }
  }
}

Integrity check

Use --integrity to verify that the manifest reflects the actual state of the system. Each feature is checked against three criteria: symlink resolution, pip installation, and migration status.

splent feature:status --integrity
  Integrity check — sample_splent_app
  ─────────────────────────────────────────────────────────────────────────────
  splent_feature_auth@v1.2.7
    [✔] symlink resolves to .splent_cache/features/splent_io/splent_feature_auth@v1.2.7
    [✔] pip package installed (splent_feature_auth 1.2.7)
    [✔] migrations applied (3/3 revisions)

  splent_feature_mail@v1.2.7
    [✔] symlink resolves to .splent_cache/features/splent_io/splent_feature_mail@v1.2.7
    [✖] pip package not installed
    [✖] migrations pending (0/2 revisions)

  ─────────────────────────────────────────────────────────────────────────────
  Result: 1 feature has integrity issues

Auto-fix

Use --fix to automatically correct detected integrity issues. This implies --integrity and will attempt to reinstall pip packages, recreate broken symlinks, and report any issues that require manual intervention.

splent feature:status --fix
  Integrity fix — sample_splent_app
  ─────────────────────────────────────────────────────────────────────────────
  splent_feature_mail@v1.2.7
    [✖] pip package not installed
        → reinstalling via pip install -e ... done
    [✖] migrations pending (0/2 revisions)
        → run `splent db:upgrade` to apply migrations

  ─────────────────────────────────────────────────────────────────────────────
  Fixed: 1 issue    Remaining: 1 issue (manual action required)

Timeline

Use --timeline to display a vertical graph of lifecycle transitions for each feature, showing when each state change occurred.

splent feature:status --timeline
  Feature timeline — sample_splent_app
  ─────────────────────────────────────────────────────────────────────────────

  splent_feature_auth@v1.2.7
  ┬─ ○ declared       2026-03-20 09:00:12
  ├─ ◐ installed      2026-03-20 09:00:30
  ├─ ◑ migrated       2026-03-20 09:00:45
  └─ ● active         2026-03-20 09:01:02

  splent_feature_mail@v1.2.7
  ┬─ ○ declared       2026-03-22 14:10:00
  ├─ ◐ installed      2026-03-22 14:10:18
  │
  │  ─── NOW ───
  │
  └─ (migrated)       pending

Reading the timeline

  • State symbols: declared, installed, migrated, active
  • Tree connectors: ┬─ first transition, ├─ intermediate, └─ final reached state
  • NOW line: inserted between the last completed transition and the next pending state

Requirements

  • A product must be selected (splent product:select).
  • SPLENT_APP must be set.

See also


Back to top

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