mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-08 11:46:35 +00:00
07_compose_minimal.sh claimed to disable 'all variable (group-conditional) services' and then named seven by hand. tor was not among them, so a deploy meant to be minimal pulled svc-net-tor, which hard-depends on web-svc-mirror, whose group-conditional prometheus flag the closure resolver treats as true — dragging the whole web stack in. Steps 12 and 13 passed no disable at all, which is why a mariadb swarm test deployed keycloak, mailu, matomo, prometheus and dashboard. The set is now derived from the contract the repo already enforces (tests/integration/roles/meta/services/test_dynamic_flags.py): a key is group-conditional when enabled OR shared is a Jinja expression. Checking only enabled would miss mariadb, postgres, redis, memcached, typesense. Exclusions are load-bearing, not cosmetic: dashboard because disabling the primary app aborts init; javascript because it aliases cdn, which web-app-dashboard declares a hard dependency with no runtime fallback; mariadb and postgres because steps 12 and 13 test them. variable_services assigns to a local first — disable="$(cmd)" does not set the exit status of a simple command, so a failing CLI would have yielded an empty disable set and steps 12/13 would have run the full deploy and reported green. roundtrip could not take disable at all; it now reaches both the compose and the swarm leg. Not verified by a deploy: 33 of the keys are new to step 07, and the variant axis of svc-db-mariadb/svc-db-postgres collapses because tor is its only dimension. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>