CI / build (push) Has been cancelled
Replaced parent+subtask structure with 3 standalone tasks:
- mde-manifest-detection (foundational: models.json schema, detect_models.py)
- mde-interactive-enforcement (conflict matrix, --model args, audit, badges)
- mde-loop-enforcement (loop.json per-role model, {model} substitution, check-gate)
Parent archived to tasks/complete/ for history. Each task has its own
SPEC.md and is at research:awaiting_approval.
Rationale: subtasks are independently actionable with their own lifecycle.
Parent container added complexity without benefit.
2.0 KiB
2.0 KiB
SPEC — mde-manifest-detection
Problem
The framework has no model manifest system. Model-divergence enforcement (conflict matrix, per-role model binding, loop enforcement) requires knowing which models are available and whether the system is in single-LLM or multi-LLM mode.
Design
Full design in design/framework/functional.md §4 and design/framework/technical.md §§2-3.
Key decisions
- Manifest:
models.jsonwith{default, advised, models:[{name, provider, context_window, location}]}. - Mode detection: 0-1 models → single-LLM (advisory once, then silent). 2+ → multi-LLM (hard block). Missing file → single-LLM (backward compatible).
- Detection:
scripts/detect_models.pyprobes opencode.json providers + localhost endpoints (8080/11434/1234/8000).
Scope
scripts/detect_models.py— probe opencode.json providers + localhost endpoints, emit candidate manifest as JSON to stdoutscripts/status.py— add_load_models_manifest()and_get_mode()helpersscripts/install.sh,update.sh,upgrade.sh— call detect_models after vram_detectconfig.md—## Available Modelssection templateprompts/onboarding.md— Step 2d model config checktests/test_model_divergence.py— manifest loading, single vs multi mode, missing file
Out of scope
- Conflict matrix enforcement (subtask
mde-interactive-enforcement) - Loop model binding (subtask
mde-loop-enforcement) - Rule agents (FW-2, FW-3) — separate backlog items
- Agent tab redesign (FW-1)
Success criteria
models.jsonmissing →_get_mode()returns"single", all model commands are no-opsmodels.jsonwith 0-1 models →"single"modemodels.jsonwith 2+ models →"multi"modedetect_models.pyprobes localhost and prints candidate JSONpytest tests/ -qgreen
References
design/framework/functional.md§4 (Model-Divergence Enforcement)design/framework/technical.md§§2-3 (manifest schema, state schemas)design/framework/README.md(locked decisions F4, F5)