What to build
Refactor SlotConfig.backend (overloaded enum mixing providers + backends — vulkan|rocm|flm|moonshine|kokoro|cpu) to SlotConfig.device (hardware-preference only — gpu-rocm | gpu-vulkan | cpu | npu). Default gpu-rocm for new installs.
Auto-migration on hal0-api boot when capabilities.toml schema_version=1 detected:
- Backup current config to
capabilities.toml.v1.bak
- Rewrite
backend → device per slot (mapping: vulkan→gpu-vulkan, rocm→gpu-rocm, flm→npu, moonshine/kokoro→cpu, cpu→cpu)
- Bump schema_version=2
- Validate result against Pydantic schema
Also expose hal0 capabilities migrate-to-lemonade CLI for manual rerun / diagnostic.
Downgrade preservation: when v0.1.x reads schema_version=2, it falls back to reading capabilities.toml.v1.bak if present.
Acceptance criteria
Blocked by
What to build
Refactor
SlotConfig.backend(overloaded enum mixing providers + backends —vulkan|rocm|flm|moonshine|kokoro|cpu) toSlotConfig.device(hardware-preference only —gpu-rocm | gpu-vulkan | cpu | npu). Defaultgpu-rocmfor new installs.Auto-migration on hal0-api boot when
capabilities.tomlschema_version=1 detected:capabilities.toml.v1.bakbackend→deviceper slot (mapping: vulkan→gpu-vulkan, rocm→gpu-rocm, flm→npu, moonshine/kokoro→cpu, cpu→cpu)Also expose
hal0 capabilities migrate-to-lemonadeCLI for manual rerun / diagnostic.Downgrade preservation: when v0.1.x reads schema_version=2, it falls back to reading
capabilities.toml.v1.bakif present.Acceptance criteria
SlotConfigPydantic schema hasdevicefield;backendremovedLemonadeProvidermapsdevice→ Lemonaderecipe:backendcorrectly per modalitycapabilities.toml.v1.bakpreserved on upgradehal0 capabilities migrate-to-lemonadeworks + reports diff.v1.bak) validateddocs/reference/configuration.md(or equivalent) reflects new fieldBlocked by