dotpro progress callback — tag prediction
The progress output mode ships a custom stdout callback (plugins/callback/dotpro_progress.py) that pins a per-role region — one line per role with a changed count and a task/ETA bar — and predicts the role list up front from hand-rolled tag rules. That prediction is correct for the common case and wrong at the edges; this collects the remaining work.
Tag prediction
The up-front role prediction uses hand-rolled never/always rules that miss the all/tagged/untagged selectors — a --tags untagged run predicts no roles — and will drift when ansible-core changes tag precedence.
- Align the prediction with Ansible's real tag evaluation.
Taggable.evaluate_tagsis the reference implementation, but it wantsall_varsand mutates task tags, so it needs care when called from a play-start callback.