Files
roboco/docs/workflows/PERMISSIONS.md
T
2025-12-28 03:04:41 +01:00

207 lines
7.2 KiB
Markdown

# Permissions Matrix
## Tool Permissions by Role
### Task Management Tools
| Tool | Main PM | Cell PM | Developer | QA | Documenter |
|------|:-------:|:-------:|:---------:|:--:|:----------:|
| `roboco_task_scan` | ✅ | ✅ | ✅ | ✅ | ✅ |
| `roboco_task_get` | ✅ | ✅ | ✅ | ✅ | ✅ |
| `roboco_task_claim` | ✅ | ✅ | ✅ | ✅ | ✅ |
| `roboco_task_start` | ✅ | ✅ | ✅ | ✅ | ✅ |
| `roboco_task_plan` | ✅ | ✅ | ✅ | ❌ | ❌ |
| `roboco_task_progress` | ✅ | ✅ | ✅ | ✅ | ✅ |
| `roboco_task_create` | ✅ | ✅ | ❌ | ❌ | ❌ |
| `roboco_task_assign` | ✅ | ✅ | ❌ | ❌ | ❌ |
| `roboco_task_activate` | ✅ | ✅ | ❌ | ❌ | ❌ |
| `roboco_task_complete` | ✅ | ✅ | ❌ | ❌ | ❌ |
| `roboco_task_cancel` | ✅ | ✅ | ❌ | ❌ | ❌ |
| `roboco_task_pause` | ✅ | ✅ | ✅ | ❌ | ❌ |
| `roboco_task_block` | ✅ | ✅ | ✅ | ❌ | ❌ |
| `roboco_task_unblock` | ✅ | ✅ | ❌ | ❌ | ❌ |
| `roboco_task_escalate` | ✅ | ✅ | ✅ | ✅ | ✅ |
| `roboco_task_submit_verification` | ❌ | ❌ | ✅ | ❌ | ❌ |
| `roboco_task_submit_qa` | ❌ | ❌ | ✅ | ❌ | ❌ |
| `roboco_task_qa_pass` | ❌ | ❌ | ❌ | ✅ | ❌ |
| `roboco_task_qa_fail` | ❌ | ❌ | ❌ | ✅ | ❌ |
| `roboco_task_docs_complete` | ❌ | ❌ | ❌ | ❌ | ✅ |
| `roboco_task_substitute` | ✅ | ✅ | ✅ | ✅ | ✅ |
### Session Tools
| Tool | Main PM | Cell PM | Developer | QA | Documenter |
|------|:-------:|:-------:|:---------:|:--:|:----------:|
| `roboco_session_create_for_tasks` | ✅ | ✅ | ❌ | ❌ | ❌ |
| `roboco_session_link_task` | ✅ | ✅ | ❌ | ❌ | ❌ |
| `roboco_session_get_for_task` | ✅ | ✅ | ✅ | ✅ | ✅ |
| `roboco_group_create` | ✅ | ✅ | ❌ | ❌ | ❌ |
### Communication Tools
| Tool | Main PM | Cell PM | Developer | QA | Documenter |
|------|:-------:|:-------:|:---------:|:--:|:----------:|
| `roboco_message_send` | ✅ | ✅ | ✅ | ✅ | ✅ |
| `roboco_channel_history` | ✅ | ✅ | ✅ | ✅ | ✅ |
| `roboco_channel_list` | ✅ | ✅ | ✅ | ✅ | ✅ |
### Notification Tools
| Tool | Main PM | Cell PM | Developer | QA | Documenter |
|------|:-------:|:-------:|:---------:|:--:|:----------:|
| `roboco_notify_send` | ✅ | ✅ | ❌ | ❌ | ❌ |
| `roboco_notify_list` | ✅ | ✅ | ✅ | ✅ | ✅ |
| `roboco_notify_ack` | ✅ | ✅ | ✅ | ✅ | ✅ |
### Journal Tools
| Tool | Main PM | Cell PM | Developer | QA | Documenter |
|------|:-------:|:-------:|:---------:|:--:|:----------:|
| `roboco_journal_entry` | ✅ | ✅ | ✅ | ✅ | ✅ |
| `roboco_journal_reflect` | ✅ | ✅ | ✅ | ✅ | ✅ |
| `roboco_journal_decision` | ✅ | ✅ | ✅ | ✅ | ✅ |
| `roboco_journal_learning` | ✅ | ✅ | ✅ | ✅ | ✅ |
| `roboco_journal_struggle` | ✅ | ✅ | ✅ | ✅ | ✅ |
| `roboco_journal_search` | ✅ | ✅ | ✅ | ✅ | ✅ |
| `roboco_journal_recent` | ✅ | ✅ | ✅ | ✅ | ✅ |
| `roboco_journal_read_team` | ✅ | ✅ | ❌ | ❌ | ✅ |
### Knowledge Base Tools
| Tool | Main PM | Cell PM | Developer | QA | Documenter |
|------|:-------:|:-------:|:---------:|:--:|:----------:|
| `roboco_kb_search` | ✅ | ✅ | ✅ | ✅ | ✅ |
| `roboco_rag_query` | ✅ | ✅ | ✅ | ✅ | ✅ |
| `roboco_kb_stats` | ✅ | ✅ | ✅ | ✅ | ✅ |
| `roboco_kb_index_code` | ✅ | ✅ | ✅ | ❌ | ❌ |
| `roboco_kb_index_docs` | ✅ | ✅ | ❌ | ❌ | ✅ |
| `roboco_tokens_estimate` | ✅ | ✅ | ✅ | ✅ | ✅ |
---
## Channel Access Permissions
### Cell Channels
| Channel | Read | Write | Silent |
|---------|------|-------|--------|
| `#backend-cell` | be-dev-1, be-dev-2, be-qa, be-pm, be-doc, main-pm | be-dev-1, be-dev-2, be-qa, be-pm, be-doc | auditor |
| `#frontend-cell` | fe-dev-1, fe-dev-2, fe-qa, fe-pm, fe-doc, main-pm | fe-dev-1, fe-dev-2, fe-qa, fe-pm, fe-doc | auditor |
| `#uxui-cell` | ux-dev-1, ux-dev-2, ux-qa, ux-pm, ux-doc, main-pm | ux-dev-1, ux-dev-2, ux-qa, ux-pm, ux-doc | auditor |
### Cross-Cell Channels
| Channel | Read | Write | Silent |
|---------|------|-------|--------|
| `#dev-all` | all devs, all PMs | all devs, all PMs | auditor |
| `#qa-all` | all QA, all PMs | all QA, all PMs | auditor |
| `#pm-all` | all PMs, main-pm | all PMs, main-pm | auditor |
| `#doc-all` | all docs, all PMs | all docs, all PMs | auditor |
### Management Channels
| Channel | Read | Write | Silent |
|---------|------|-------|--------|
| `#main-pm-board` | main-pm, product-owner, head-marketing | main-pm, product-owner, head-marketing | auditor |
| `#board-private` | product-owner, head-marketing, ceo | product-owner, head-marketing, ceo | auditor |
### Special Channels
| Channel | Read | Write | Silent |
|---------|------|-------|--------|
| `#announcements` | everyone | main-pm, board only | auditor |
| `#all-hands` | everyone | everyone | auditor |
---
## Notification Permissions
### Who Can Send Notifications
| Role | Can Send | Scope |
|------|:--------:|-------|
| CEO | ✅ | Anyone |
| Auditor | ✅ | Anyone |
| Product Owner | ✅ | main-pm, head-marketing, auditor, ceo |
| Head Marketing | ✅ | main-pm, product-owner, auditor, ceo |
| Main PM | ✅ | Anyone |
| Cell PM | ✅ | Own cell + other PMs |
| Developer | ❌ | - |
| QA | ❌ | - |
| Documenter | ❌ | - |
### Notification Types
| Type | Sent By | To |
|------|---------|-----|
| `task_assignment` | PM | Specific agent |
| `priority_change` | PM/Board | Affected agents |
| `blocker_escalation` | PM | Main PM or other PM |
| `review_request` | PM | QA or Auditor |
| `documentation_request` | PM | Documenter |
| `alert` | Board/Auditor | Anyone |
| `broadcast` | Board/Main PM | Groups |
---
## Task Action Permissions
### Who Can Perform What Action
| Action | Owner | Same-Cell PM | Main PM | Board |
|--------|:-----:|:------------:|:-------:|:-----:|
| Claim | ✅ | ✅ | ✅ | ✅ |
| Start | ✅ | ❌ | ❌ | ❌ |
| Plan | ✅ | ❌ | ❌ | ❌ |
| Progress | ✅ | ❌ | ❌ | ❌ |
| Block | ✅ | ✅ | ✅ | ❌ |
| Unblock | ✅ | ✅ | ✅ | ❌ |
| Pause | ✅ | ✅ | ✅ | ❌ |
| Resume | ✅ | ❌ | ❌ | ❌ |
| Complete | ❌ | ✅ | ✅ | ✅ |
| Cancel | ❌ | ✅ | ✅ | ✅ |
### Claim Restrictions by Role
| Role | Can Claim From Status |
|------|----------------------|
| Developer | `pending`, `needs_revision` |
| QA | `awaiting_qa` |
| Documenter | `pending`, `awaiting_documentation` |
| Cell PM | `pending`, `backlog` |
| Main PM | `pending`, `backlog` |
---
## Self-Review Prevention
| Action | Prevention Rule |
|--------|-----------------|
| QA Pass/Fail | Cannot review task where you were the original developer |
| Docs Complete | Cannot document task where you were the original developer |
The system stores `original_developer` in `quick_context` when:
- Developer submits for QA → QA claims → `original_developer` preserved
- QA passes → Documenter claims → `original_developer` still preserved
---
## Team-Based Restrictions
| Agent | Can Only Work On Tasks With Team |
|-------|----------------------------------|
| be-dev-1, be-dev-2 | `backend` |
| be-qa | `backend` |
| be-pm | `backend` |
| be-doc | `backend` |
| fe-dev-1, fe-dev-2 | `frontend` |
| fe-qa | `frontend` |
| fe-pm | `frontend` |
| fe-doc | `frontend` |
| ux-dev-1, ux-dev-2 | `ux_ui` |
| ux-qa | `ux_ui` |
| ux-pm | `ux_ui` |
| ux-doc | `ux_ui` |
| main-pm | Any |
| Board | Any |