Feature state (splent.manifest.json)


Table of contents

  1. Introduction
  2. What it holds
  3. What updates it
  4. Who reads it
  5. See also

Introduction

<product>/splent.manifest.json records where each feature of your product stands. pyproject.toml says which features you have, the UVL says the combination is valid, and the manifest says whether each one is installed, migrated and active.

splent feature:status

The CLI and the app keep the file for you. You read it, you never edit it.


What it holds

{
  "product": "sample_splent_app",
  "schema_version": "1",
  "updated_at": "2026-03-23T12:00:00Z",
  "features": {
    "splent_io/splent_feature_notes@v1.2.7": {
      "namespace": "splent_io",
      "name": "splent_feature_notes",
      "version": "v1.2.7",
      "mode": "pinned",
      "state": "declared",
      "declared_at": "2026-03-23T12:00:00Z",
      "installed_at": null,
      "migrated_at": null,
      "updated_at": "2026-03-23T12:00:00Z"
    }
  }
}

version is null for an editable feature, and mode follows the entry in pyproject.toml. state is declared, installed, migrated, active or disabled. States explains each one.


What updates it

Operation Change
feature:add, feature:attach Creates the entry as declared
feature:remove, feature:detach Removes the entry
product:resolve Removes entries pyproject.toml does not list, and adds a declared one for each missing feature
00_install_features.sh Advances to installed, after checking with pip show
db:upgrade, db:reset Advance to migrated
The app’s start Advances to active each feature at migrated or later, and each feature without migrations, once all have loaded. A failed start writes nothing

The app updates the manifest only when the CLI is installed next to it.


Who reads it

feature:status shows each feature’s progress, and --json prints the raw manifest. doctor cross-checks it against pyproject.toml. The framework reads each state only to advance it.

The manifest never decides what loads. Every feature declared in pyproject.toml loads, whatever its recorded state.

Manifest shows the output of feature:status and how product:resolve cleans stale entries.


See also


Back to top

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