DOCS / CONFIGURATION

Migrate to lumis.dev/v1

Upgrade released v1alpha1 documents to the stable v1 envelopes with a validated, deterministic, idempotent migration.

PHASE 1 · PRE-1.0PYTHON 3.11+EDIT ON GITHUB ↗

What changed

The stable v1 envelopes preserve the released alpha field shapes and change the version marker. Migration validates the complete document before producing output—unknown fields and invalid values fail closed. Released v1alpha1 project and rule documents keep loading with a LumisV1Alpha1DeprecationWarning through the 1.x line and are planned for removal in 2.0, so treat the warning as scheduled upgrade work, not a failure.

Supported kinds: Project, DiagnosisRuleSet, DiagnosisRule, DiagnosisReport, PluginManifest, Playbook, and RecoveryPolicy.

Migrate with the CLI

shell
# preview stable YAML on standard output
lumis config migrate lumis.yml

# write to a new path (existing output is never replaced without --force)
lumis config migrate lumis.yml --output lumis.v1.yml

JSON input is accepted and the canonical migration output is YAML. Running migration on an already-v1 file validates it and is idempotent.

Migrate a project collection

shell
lumis config migrate lumis.yml -o lumis.v1.yml
lumis config migrate rules.yml -o rules.v1.yml
lumis doctor --config lumis.v1.yml
lumis rules validate --config lumis.v1.yml

Update spec.rules.files if output filenames change. The loader rejects a v1 project that references v1alpha1 rules, preventing a partially migrated collection from appearing valid.

Python API

python
from pathlib import Path

from lumis_sdk.config import migrate_config_file, render_migrated_yaml

result = migrate_config_file(Path("lumis.yml"))
print(result.kind, result.changed, result.target_api_version)
print(render_migrated_yaml(result))

migrate_config_document accepts an in-memory mapping. Both APIs return a frozen ConfigMigrationResult and never write files themselves.