50009af7d9
The bullpen_worker family (dispatcher/callboy/researcher/librarian/coder) + the triage supervisor were in cfg.TRUST but absent from the room's PRIVILEGED tables, so their replies stamped verified=None and an orchestrator's lurker (R4) refused them — @foreman could consult @dispatcher but never consume the routing (a silent dead-end that stranded it into a spin). They also addressed replies to a bare nick (no @). Fixed and verified end-to-end (a @dispatcher reply now lands to=@markus, verified=true): - lib/bullpen_worker.py: address replies as @<invoker>; read POST_SECRET and attach secret= to every room_say (the strict :8080 gate REJECTS a privileged post lacking the secret, not merely leaving it unverified). Workers run as root -> secret readable. - lmcp-tools/bullpen.lua (:8080) + bullpen-room.lua (:8081): add dispatcher/callboy/ researcher/librarian/coder/triage to PRIVILEGED. Keep the two tables in sync. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EWpfhDgYNA21tETDP9ueBE