Command Resolution¶
When executing mver pull or mver push, MVER determines the command to run for each model version using the following priority order.
Resolution Order¶
1. pull_command / push_command on the model version entry
│
│ (if absent)
▼
2. pull_command / push_command in mver.config.yml
│
│ (if absent)
▼
3. Error — fail before executing anything
This means:
- Per-version overrides always win. If a model version declares its own command, the global config is ignored for that version.
- The global config is the fallback. Most versions will inherit from
mver.config.yml, keeping the registry clean. - Neither present → hard failure. MVER will not silently skip a model. It reports exactly which version has no command configured and stops before running anything.
Validation Happens Upfront¶
For both pull and push, MVER resolves all model versions' commands before executing any of them. If any version has no resolvable command, the entire operation fails immediately with a list of affected versions.
This prevents partial pulls/pushes caused by misconfiguration discovered mid-run.
Example¶
Registry entry for fraud-detector@2.0.0:
Global config:
| Model version | Pull command used | Source |
|---|---|---|
fraud-detector@2.0.0 |
aws s3 sync s3://legacy/{path} ./{path} |
Version override |
fraud-detector@2.1.0 |
dvc pull {path} |
Global config |
embedder@0.9.4 |
dvc pull {path} |
Global config |
Changing the Global Config Retroactively¶
Because commands are resolved at execution time, updating mver.config.yml automatically affects all model versions that don't have their own override — including versions registered in the past. No registry rewrite is needed.