mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-08 19:56:53 +00:00
The replay used to be decided by the matrix: utils.roles.guide picked a variant, instructions.mark wrote a flag, and the workflow appended web-app-docs to the row's apps. Now each invokable role declares the guide host in meta/services.yml with bond 0.5 behind the group gate and switches it on in exactly one variant, and the deploy pulls it in through that edge. The matrix only reads the declaration back. web-app-docs was no provider at all: the registry requires shared, provides or an alias on the role's own entity entry and it had none, so the 188 declarations would have been decorative. Registering it brings a structural contract with it -- a dynamically loaded service role must set its run_once flag as its very first task or load/app.yml includes it again -- so the role body moves into tasks/00_core.yml and main.yml becomes the guard. smallest_variant no longer counts the guide. It picks the variant that then switches the guide on, which on the next read would make that variant one service larger and no longer the smallest; without the exclusion 30 of 188 roles disagreed with the file. The job title loses the marker. The row is an ordinary deploy of its variant, so nothing distinguishes it any more -- which is why the unit test now asserts the label is left alone. Measured against the previous tree, the sweep marks 68 rows where it marked 88. Twenty roles declare the guide on a variant this sweep does not run in the guide's mode, and by decision the declaration is absolute: the file is the truth and those roles carry no replay in such a run. The old code instead searched the deployed variants, which hid the mismatch behind a fallback. The same measurement found that the predicate first read the group gate as a declaration -- the gate renders to a non-empty string, so every variant looked like the declaring one. It now tests for a literal true. Neither defect showed up in the unit tests, which check the new logic rather than its difference to the old. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>