State Files

Reference for generated distribution state such as individuals.json and remotes.json.

Divekit writes distribution state into the distribution directory. These files are generated and updated by commands such as distribute, fetch, patch, overview, and passcheck.

Default location:

.divekit/distributions/<distribution>/

individuals.json

individuals.json stores the concrete per-UUID variation selection that was actually used during distribution.

{
  "version": "2.0",
  "individuals": [
    {
      "uuid": "team-01",
      "selection": {
        "objects": {
          "Vehicle": "car"
        },
        "relations": {
          "ownership": "one-to-many"
        },
        "logic": {
          "algorithm": "simple"
        }
      }
    }
  ]
}

Use this file to inspect what was assigned. Do not treat it as the source of possible options; that belongs in variation.json.

remotes.json

remotes.json stores the mapping from UUIDs to created remote repositories, organized by target.

{
  "targets": {
    "work": {
      "remotes": [
        {
          "uuid": "team-01",
          "index": 1,
          "project_id": 101,
          "individualization": {
            "variation": {
              "repoId": "team-01",
              "selections": {
                "objectSelections": {
                  "Vehicle": "car"
                },
                "relationSelections": {
                  "ownership": "one-to-many"
                },
                "logicSelections": {
                  "algorithm": "simple"
                }
              }
            }
          }
        }
      ]
    }
  }
}

Notes

  • remotes.json is the operational mapping used by follow-up commands such as fetch, patch, passcheck, and overview.
  • index is written when a repository name template uses {{index}} or the legacy {{autoincrement}} token. It is keyed by UUID, shared across targets, and reused by later distribution runs so generated repository names stay stable when member order changes. Do not edit it manually.
  • divekit patch name refreshes remotes.json after successful GitLab URL path changes so follow-up commands keep using the current project path, web URL, and Pages URL.
  • Manual feedback authored with divekit feedback is stored next to these files under feedback/; it is source data, not generated distribution state.
  • divekit distribute --fresh rebuilds individuals.json and the remote mappings in remotes.json. Previously assigned repository indexes are carried forward so the same UUID keeps its stable number.
  • For new UUIDs, divekit distribute --add extends the existing state instead of replacing it.

Related pages: