# Wizard-to-Wizard Shared Context — v1.0 # Issue: timmy-config#441 | Wizard Communication Protocol # # This file is the single source of truth for fleet-wide summons and status. # All wizards read this on each turn; Alexander edits via wizard-summon.py. # DO NOT manually edit except through the canonical tooling. version: "1.0" updated_at: 2026-04-26T00:00:00Z # ── Active Summon ── # When Alexander needs all wizards' attention, a summon occupies this slot. # Wizards must acknowledge by setting their own status to 'acked_summon' and # optionally adding notes to their acknowledgement payload. active_summon: summon_id: null # e.g., SUM-20260426-001 priority: null # P0 (critical) | P1 (high) | P2 (routine) topic: null # short imperative topic string summoner: null # Alexander summoned_at: null # ISO8601 deadline: null # optional ISO8601 or null status: null # open | acknowledged | completed | cancelled acknowledgements: # per-wizard ack state (ISO8601 when acked) timmy: null allegro: null bezalel: null ezra: null # ── Wizard Heartbeat/Status ── # Each wizard updates their own entry on a regular cadence (ideally every turn). # status: idle | busy | acked_summon | error | unreachable # last_seen: ISO8601 timestamp of last update # current_task: short description of what the wizard is doing (or null) # notes: free-text state-change explanation (only on change) wizard_status: timmy: status: idle last_seen: null current_task: null notes: null allegro: status: idle last_seen: null current_task: null notes: null bezalel: status: idle last_seen: null current_task: null notes: null ezra: status: idle last_seen: null current_task: null notes: null # ── Message Log (append-only history) ── # The tooling appends significant state-change events here. # Consumers: Emacs desk view, Telegram digest bots, audit trails. message_log: [] # Example: # - timestamp: 2026-04-26T01:45:00Z # source: timmy # type: status_update # priority: P2 # content: "Switched to idle — waiting for summons"