mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-08 11:46:35 +00:00
bb78ab3fb8moved the handler loader in front of the settings render so the play stopped dying on "handler 'compose-up' was not found". Registering them was necessary and not sufficient: the notification now survives, and the next task kills the play a different way. render_replicated_templates.yml hangs notify: compose-up on the render (_render_one_template.yml:23, default from role_templates_expanded.py:17). 00_core.yml then enters utils/network/routine.yml, whose step 1 pulls in sys-svc-container, and that role ends on an unconditional meta: flush_handlers at 00_core.yml:52. Job 107238119066 of run 35875571687 shows the whole chain: NOTIFIED HANDLER ... Validate Docker Compose configuration at log line 13787, META: triggered running handlers at 13801, and the handler at 13923 with rc 127, "compose: command not found". /usr/bin/compose is installed by sys-svc-compose/tasks/00_core.yml:30, which is step 3 of that same routine and is never reached, because a failed handler aborts the play (ok=228 failed=1). A guarded bootstrap ahead of the render absorbs that flush against an empty queue and installs the wrapper first, the shape252b3e58b2applies in sys-svc-rdbms and7f1025e4a7in svc-db-qdrant. Routine step 1 then falls through on run_once_sys_svc_container, and step 3 renders compose.yml and flushes under searxng's own application_id. The when: guard is load-bearing: without it 01_reset.yml tears down DIR_COMPOSITIONS again under MODE_RESET. litellm carries the same shape and survives only because it loads sys-svc-rdbms first, which bootstraps compose as a side effect; searxng is a leaf with no database and is therefore the first compose consumer in its own CI row. The existing bootstrap case in test_handler_registration_order.py finds the first notify through task.get("notify"), a literal key in the same file, so it cannot see a role that notifies two include levels down. The new case anchors on the render include itself and compares indices instead. The sweeping case checks topic ownership, not order, which is why searxng was green here while it failed in CI. Same class, pre-existing, not fixed here: svc-ai-agent-broker renders at :39 and enters the routine at :61, latent because it depends on litellm and is never the first compose consumer.252b3e58b2names web-app-magento, web-app-seaweedfs and svc-runner. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>