Problem
PromoteModelFlow and the dashboard use Metaflow run tags (run.add_tag("champion")) for champion tracking. ob-project-utils now supports Asset API aliases via promote_assets(with_aliases=True) and CI-driven promotion.
These are two incompatible systems for the same purpose. The dashboard queries run tags; the CI promote module writes asset aliases. Using both results in split champion state.
What needs to change
- Replace
src/registry.py champion functions (get_champion_run_id, set_champion_run) with Asset API alias operations
- Simplify or remove PromoteModelFlow — make promotion a CI module (promote.yml) triggered on PR merge, not a manual flow
- Update dashboard to query asset aliases instead of run tags
- Add
[promotion] aliases = ["champion", "production"] to obproject.toml
- Add teardown + promote CI modules to deploy.yml
Context
- ob-project-asset-promotion repo shows the correct CI-driven pattern
- model-promotion-example repo shows the correct flow-level pattern
- This repo predates both and uses the legacy run-tag approach
- Dashboard currently shows "No Champion Model" because nobody ran PromoteModelFlow, even though 20 model versions exist
Related
- EvaluateDetectorFlow
None/v_None bug fixed on feat/uplift (merge to main)
- Dashboard Jinja2 crash fixed on feat/uplift
- SnapshotStore branch scoping fixed on feat/uplift
Problem
PromoteModelFlow and the dashboard use Metaflow run tags (
run.add_tag("champion")) for champion tracking. ob-project-utils now supports Asset API aliases viapromote_assets(with_aliases=True)and CI-driven promotion.These are two incompatible systems for the same purpose. The dashboard queries run tags; the CI promote module writes asset aliases. Using both results in split champion state.
What needs to change
src/registry.pychampion functions (get_champion_run_id,set_champion_run) with Asset API alias operations[promotion] aliases = ["champion", "production"]to obproject.tomlContext
Related
None/v_Nonebug fixed on feat/uplift (merge to main)