mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-06 19:01:54 +00:00
enabled and shared were hand-maintained in 24 roles and wrong in both directions. Both now resolve from the mcp_consumer edges already declared in meta/services.yml: a server takes the consumers it admits, a client takes the servers that admit it, and the pair renders as "'peer' in group_names or ...", or False when no peer is admitted at all. setdefault keeps meta/mcp.yml and meta/variants.yml as the override channel, so pinning either key still wins. The resolved block replaces the mapping instead of being written into it. _build_role_base_config parks the YAML cache's own object under mcp, so an in-place setdefault injected the derived keys into every later raw read and made test_mcp_schema pass alone but fail in a directory run. The derivation keys on peer presence, never on a peer's own value: a re-entrant read under _RENDER_GUARD returns the unrendered dict. Four lints now ask the resolver instead of reading meta/mcp.yml, which they could not do while the key was hand-written. That is what exposed the eleven missing hostile-path specs the previous commit closed. Carries one change that belongs to the WordPress probe but shares a file with this one: the tool allowlist moves to the hyphenated names the adapter actually serves. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>