mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-06 10:59:59 +00:00
The per-app mapper loop included three tasks that resolve the groups.path root group id: a container exec, an assert and a set_fact. Their environment is KC_CONTAINER, KC_REALM and KC_RBAC_ROOT_PATH, none of which mentions kc_app_id, so every iteration re-fetched the same id. Move them above the loop, right after the purge that clears orphan groups under the root. The purge works below the root and leaves it standing, so the id resolves against the same state the first iteration sees today. per_app_root_id was read only by the assert and the set_fact, and both moved with it. What the loop still reads is kc_root_group_id, now a host fact set four lines before the include, and it feeds the same ROOT_GROUP_ID env as before. One include site, one reader, both checked across the repo. The assert stays and now runs once. It checks a loop-invariant value, so repeating it per item proved nothing the single evaluation does not. Worth 168 seconds per CI job. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>