Skip to content
This repository was archived by the owner on Mar 26, 2026. It is now read-only.

spec(collab): second revision pass on CollaborationProtocol#297

Open
jsell-rh wants to merge 5 commits intomainfrom
spec/collab-protocol-boss-feedback-v2
Open

spec(collab): second revision pass on CollaborationProtocol#297
jsell-rh wants to merge 5 commits intomainfrom
spec/collab-protocol-boss-feedback-v2

Conversation

@jsell-rh
Copy link
Copy Markdown
Owner

Summary

Second revision of CollaborationProtocol spec docs addressing boss feedback on TASK-061. This supersedes CLOSED PR #134.

docs/AGENT_PROTOCOL.md

  • Remove [?BOSS] tag syntax from questions field example and description
  • Replace wall-clock status cadence ("every ~10 minutes") with milestone-based language in Pattern A work loop and non-tmux checklist

.spec/CollaborationProtocol/messaging-protocol.md

  • Section 4: Remove "a manager can explicitly forbid a specific interaction" — peer messaging is always allowed, no authorization needed
  • Section 5 (Escalation): Reframe to walk up the chain rather than hardcoding a boss message target with wall-time rule

.spec/CollaborationProtocol/organizational-model.md

.spec/CollaborationProtocol/ignition-prompts.md

  • Hierarchy section: remove "message the boss agent channel for boss-level decisions"; add blocked task status to blocker flow
  • Org chart note: soften to "your position is set by whoever spawned you" rather than warning about instability

.spec/CollaborationProtocol/team-formation.md

  • Remove time-based (~30 min) threshold; replace with action-based criteria (multiple focused actions = non-trivial)
  • Strengthen the default-to-team recommendation with explicit cost comparison

Boss feedback addressed

  • [?BOSS]/[?MANAGER] tag antipattern removed from all agent-facing spec docs
  • Wall-time status cadence replaced with event/milestone-driven language
  • Peer messaging is always allowed (no pre-authorization, no manager restriction)
  • Escalation follows the chain rather than targeting a named 'boss' channel
  • Non-trivial task threshold is now action-based, not time-based — lower and clearer
  • blocked task status explicitly mentioned in the blocker flow

Test plan

  • Verify no [?BOSS] or [?MANAGER] tags remain in any spec or protocol doc
  • Confirm peer messaging section has no "manager can restrict" language
  • Confirm status cadence guidance is milestone-based, not wall-clock

🤖 Generated with Claude Code

jsell-rh and others added 5 commits March 23, 2026 15:26
…-setup.sh

Aligns scripts with CLAUDE.md docs (PR #290). MCP server name changed from
boss-dev to odis-dev in the generated JSON config, allowed tools list, and
output messages. BOSS_API_TOKEN/BOSS_MCP_URL env vars kept as fallbacks for
backward compatibility (prefer ODIS_API_TOKEN/ODIS_MCP_URL going forward).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…our Conversations

Root cause: both 'boss' (legacy) and 'operator' agents have agent_type='human' in the
DB. operatorName computed returned whichever was found first via Object.entries, which
is insertion-order. In spaces where 'boss' was created first, operatorName='boss'.

Consequences when operatorName='boss' but messages use 'operator':
- Conversations with 'operator' participant went to Agent Conversations section
- composeRecipient was null for those conversations (no compose box shown)
- Unread acks used wrong agent name

Fix: collect ALL human agents into humanAgentNames Set. Use it for:
- isOperatorConversation: any participant that is a human agent
- composeRecipient: any participant that is NOT a human agent
- unreadCount / ackOperatorMessages: any human-agent recipient
- operatorName: prefer 'operator' (canonical) over legacy 'boss'

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…tion threads

When agents use different capitalizations (e.g. "CEO" vs "ceo"), messages were stored
with the raw sender name, creating separate conversation threads in the UI for what
should be a single conversation.

Both handleAgentMessage (HTTP) and send_message (MCP tool) now call resolveAgentName
on the sender after the space is loaded, mapping to the canonical stored name if the
sender is a known agent. Unknown senders keep their original name unchanged.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Address remaining boss feedback after PR #134 (CLOSED):

- Remove [?BOSS] tag syntax from docs/AGENT_PROTOCOL.md questions field
  example and description; replace with plain language
- Replace wall-clock status cadence with milestone-based language in
  AGENT_PROTOCOL.md (Pattern A work loop + non-tmux checklist)
- messaging-protocol.md: remove 'manager can explicitly forbid' qualifier
  from peer-to-peer section; peer messaging is always allowed, no
  authorization needed
- messaging-protocol.md: reframe escalation to walk up the chain rather
  than hardcoding a 'boss' message target with 30-minute wall-time rule
- organizational-model.md: remove 'manager can restrict' qualifier from
  information-flow principle; direct messaging is always allowed
- ignition-prompts.md: remove 'boss agent channel for boss-level decisions'
  from hierarchy section; add blocked task status to blocker flow
- ignition-prompts.md: soften org chart note — position set by spawning
  agent, not a warning about org instability
- team-formation.md: remove time-based threshold (~30 min); replace with
  action-based criteria (multiple focused actions = non-trivial); strengthen
  the default-to-team recommendation

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant