# BRIEF — mde-manifest-detection **Parent:** model-divergence-enforcement **Subtask:** 1 of 3 (foundational, no deps) **Spec ref:** `tasks/model-divergence-enforcement/SPEC.md` §Subtask 1 **Design ref:** `design/framework/technical.md` §§2-3 ## Objective Create the model manifest system (`models.json` schema + loader) and model detection script (`scripts/detect_models.py`). This is the foundation for all model-divergence enforcement — subtasks 2 and 3 depend on it. ## Deliverables 1. `scripts/detect_models.py` — probes opencode.json providers + localhost endpoints (8080/11434/1234/8000), emits candidate manifest as JSON to stdout 2. `scripts/status.py` — add `_load_models_manifest()` and `_get_mode()` helpers 3. `scripts/install.sh`, `update.sh`, `upgrade.sh` — call detect_models after vram_detect 4. `config.md` — `## Available Models` section template 5. `prompts/onboarding.md` — Step 2d model config check 6. `tests/test_model_divergence.py` — manifest loading, single vs multi mode, missing file ## Acceptance - `models.json` missing → `_get_mode()` returns `"single"`, all model commands are no-ops - `models.json` with 0-1 models → `"single"` mode - `models.json` with 2+ models → `"multi"` mode - `detect_models.py` probes localhost and prints candidate JSON - `pytest tests/ -q` green