Goal
Decide and implement a clearer MLX product stance: make MLX the expected quality runtime for model-backed Morphēa workflows, while keeping any non-MLX fallback explicitly scoped to portability tests, debugging, or minimal non-model usage.
Why this matters
The code currently treats MLX as optional in packaging and README language, but the high-quality model paths already fail by default when MLX is unavailable. Fallback artifacts only appear when allow_unavailable is explicitly set.
That split creates product ambiguity:
- users may think MLX is optional for equivalent quality;
- platform differences may produce different model artifacts or reports;
- docs understate that the own-model story is strongest when MLX is present;
- a Mac-first audience may prefer one recommended runtime over broad-but-variable behavior.
Current state
morphea train-mlx fails by default without MLX; allow_unavailable writes a centroid fallback artifact only when explicitly requested.
morphea train-raster-targets also fails by default without MLX unless allow_unavailable is set.
morphea retrain --backend mlx and self-learn --backend mlx already route through the MLX primitive classifier.
- README and docs still describe MLX as optional.
self-learn and retrain default to centroid unless configured otherwise.
- MLX/SAM segmentation is a separate concern because it also depends on model weights and the
mlx-sam runtime.
Proposed direction
Adopt this product stance:
Morphēa can run basic deterministic geometry without MLX, but model-backed quality workflows require MLX. Non-MLX fallbacks are diagnostic, not equivalent quality paths.
Work items
- Update README and setup docs to present MLX as the recommended/default runtime for serious Morphēa development on Apple Silicon Macs.
- Decide whether to move
mlx>=0.31 from the optional mlx extra into core dependencies, or introduce an explicit quality/dev install profile that all model-backed docs use.
- Change self-learning/retraining docs and checked-in configs to default to
backend: mlx where quality evidence is expected.
- Consider changing CLI defaults for
retrain and self-learn from centroid to mlx, with a clearly named --backend centroid escape hatch.
- Rename or de-emphasize
allow_unavailable so it reads as a diagnostic/testing escape hatch rather than a supported quality mode.
- Keep MLX/SAM documented separately as an experimental candidate-region source, not a required default, until checkpoint/runtime setup is simpler and promotion evidence proves a consistent quality gain.
- Add a status/doc section explaining platform expectations: Apple Silicon macOS is the primary target; other platforms may run non-model or reduced workflows unless MLX support is confirmed.
Acceptance criteria
- A new reader can tell from the README which install path gives the intended model-backed quality behavior.
- Model-backed smoke configs do not silently pass through non-MLX fallback artifacts.
- CI/test docs distinguish required quality tests from portability/fallback tests.
morphea status or docs clearly reports when the environment is below the intended quality runtime.
- MLX/SAM remains opt-in until it has the same repeatability and quality evidence as the classifier paths.
References
- MLX official docs describe MLX as an Apple Silicon-focused machine learning array framework and list macOS / Apple Silicon installation requirements.
- Current Morphēa MLX training paths already fail by default without MLX unless
allow_unavailable is explicitly enabled.
Goal
Decide and implement a clearer MLX product stance: make MLX the expected quality runtime for model-backed Morphēa workflows, while keeping any non-MLX fallback explicitly scoped to portability tests, debugging, or minimal non-model usage.
Why this matters
The code currently treats MLX as optional in packaging and README language, but the high-quality model paths already fail by default when MLX is unavailable. Fallback artifacts only appear when
allow_unavailableis explicitly set.That split creates product ambiguity:
Current state
morphea train-mlxfails by default without MLX;allow_unavailablewrites a centroid fallback artifact only when explicitly requested.morphea train-raster-targetsalso fails by default without MLX unlessallow_unavailableis set.morphea retrain --backend mlxandself-learn --backend mlxalready route through the MLX primitive classifier.self-learnandretraindefault tocentroidunless configured otherwise.mlx-samruntime.Proposed direction
Adopt this product stance:
Work items
mlx>=0.31from the optionalmlxextra into core dependencies, or introduce an explicitquality/devinstall profile that all model-backed docs use.backend: mlxwhere quality evidence is expected.retrainandself-learnfromcentroidtomlx, with a clearly named--backend centroidescape hatch.allow_unavailableso it reads as a diagnostic/testing escape hatch rather than a supported quality mode.Acceptance criteria
morphea statusor docs clearly reports when the environment is below the intended quality runtime.References
allow_unavailableis explicitly enabled.