1. Blueprint updates - Added NO_GROUPS escalation docs to all 12 agent blueprints

2. Multi-image Docker architecture - Created role-specific Dockerfiles:
  - agent-base.Dockerfile (shared foundation)
  - agent-pm.Dockerfile, agent-dev-be.Dockerfile, agent-dev-fe.Dockerfile
  - agent-qa-be.Dockerfile, agent-qa-fe.Dockerfile, agent-doc.Dockerfile, agent-ux.Dockerfile
3. Orchestrator updates - roboco/runtime/orchestrator.py:
  - Added AGENT_IMAGES mapping and get_agent_image() function
  - Updated _ensure_agent_image() to build base + specialized images
  - Updated _spawn_container() to use role-specific image
  - Made _generate_mcp_config() role-aware (though kept notify for all since they need to receive)
This commit is contained in:
Renn F
2025-12-23 21:23:50 +01:00
parent 31c776b84a
commit 204b959733
36 changed files with 956 additions and 140 deletions
+7
View File
@@ -212,6 +212,13 @@ Return to SCAN: `roboco_task_scan()` or `roboco_agent_idle()`
## Communication Rules
### Handling NO_GROUPS Error
If you get a NO_GROUPS error when sending a message:
1. This means the channel hasn't been set up for this work yet
2. Escalate to your Cell PM (be-pm) using `roboco_task_escalate`
3. Include the channel and task context in your escalation
4. If you have a task_id, always include it in message calls (routes to task session)
### Channels You Access
- **#backend-cell** (read/write) - Your primary workspace
- **#dev-all** (read/write) - Cross-cell dev discussion
@@ -125,6 +125,13 @@ and verify all subtasks are done before calling `roboco_task_complete()`.
## Communication Rules
### Handling NO_GROUPS Error
If you get a NO_GROUPS error when sending a message:
1. This means the channel hasn't been set up for this work yet
2. Escalate to your Cell PM (be-pm) using `roboco_task_escalate`
3. Include the channel and task context in your escalation
4. If you have a task_id, always include it in message calls (routes to task session)
### When to Post in Session (DO)
- **Questions about implementation** - Need dev/QA clarification
- **Missing context** - Dev notes don't explain something critical
+15
View File
@@ -187,6 +187,21 @@ roboco_session_create_for_tasks({
- Subtasks auto-inherit parent task's primary session
- Full audit trail preserved
**Handling NO_GROUPS Error:**
If you get a NO_GROUPS error when creating a session, it means the channel
doesn't have a group for this initiative yet. Groups are created by Main PM.
Escalate to Main PM:
```python
roboco_task_escalate({
"task_id": "{task_id}",
"reason": "Channel #backend-cell has no group for this work. Need group created.",
"escalate_to": "main-pm"
})
```
Main PM will create the group, then you can proceed with session creation.
### 7b. ACTIVATE TASK (REQUIRED)
**Tool:** `roboco_task_activate(task_id)`
+7
View File
@@ -226,6 +226,13 @@ After verdict:
## Communication Rules
### Handling NO_GROUPS Error
If you get a NO_GROUPS error when sending a message:
1. This means the channel hasn't been set up for this work yet
2. Escalate to your Cell PM (be-pm) using `roboco_task_escalate`
3. Include the channel and task context in your escalation
4. If you have a task_id, always include it in message calls (routes to task session)
### Channels You Access
- **#backend-cell** (read/write) - Your primary workspace
- **#qa-all** (read/write) - Cross-cell QA discussion
+20 -3
View File
@@ -51,6 +51,9 @@ You interact with RoboCo systems through MCP tools:
- `roboco_task_create(...)` - Create new tasks for cells (pass `status: "backlog"` for setup phase)
- `roboco_task_activate(task_id)` - Activate task from BACKLOG to PENDING (after session created)
**Group Management (Feature/Initiative Scopes):**
- `roboco_group_create(data)` - Create a group for a feature/initiative in a channel
**Session Management (Cross-Cell Work Sessions):**
- `roboco_session_create_for_tasks(data)` - Create work session for cross-cell initiatives
- `roboco_session_link_task(data)` - Link additional task to existing session
@@ -146,7 +149,21 @@ roboco_task_create({
})
```
**2. CREATE WORK SESSION (REQUIRED)**
**2. CREATE GROUP (if needed)**
Before creating sessions, ensure the channel has a group for this initiative:
```python
roboco_group_create({
"channel_slug": "dev-all", # Or "backend-cell" for cell-specific work
"name": "User Preferences Feature",
"hierarchy_level": 4 # 0=CEO, 1=Board, 2=Main PM, 3=Cell PM, 4=Members
})
```
Groups organize work into feature/initiative scopes. Cell PMs then create
sessions within groups for actual work items. If a Cell PM escalates to you
with a NO_GROUPS error, create the group and notify them.
**3. CREATE WORK SESSION (REQUIRED)**
Every initiative needs a work session for coordination:
```python
roboco_session_create_for_tasks({
@@ -165,7 +182,7 @@ roboco_session_create_for_tasks({
This creates a shared discussion context where all Cell PMs and developers
can coordinate on the initiative. Full history is preserved for handoffs.
**3. ACTIVATE TASKS (REQUIRED)**
**4. ACTIVATE TASKS (REQUIRED)**
After sessions are created, activate tasks so Cell PMs can see them:
```python
roboco_task_activate("backend-task-id")
@@ -175,7 +192,7 @@ roboco_task_activate("ux-task-id")
**Task flow:**
```
CREATE (backlog) → SESSION → ACTIVATE (pending) → Cell PM receives task
CREATE (backlog) → GROUP (if needed) → SESSION → ACTIVATE (pending) → Cell PM receives
```
**4. NOTIFY CELL PMs**
+7
View File
@@ -191,6 +191,13 @@ Return to SCAN: `roboco_task_scan()` or `roboco_agent_idle()`
## Communication Rules
### Handling NO_GROUPS Error
If you get a NO_GROUPS error when sending a message:
1. This means the channel hasn't been set up for this work yet
2. Escalate to your Cell PM (fe-pm) using `roboco_task_escalate`
3. Include the channel and task context in your escalation
4. If you have a task_id, always include it in message calls (routes to task session)
### Channels You Access
- **#frontend-cell** (read/write) - Your primary workspace
- **#dev-all** (read/write) - Cross-cell dev discussion
@@ -123,6 +123,13 @@ and verify all subtasks are done before calling `roboco_task_complete()`.
## Communication Rules
### Handling NO_GROUPS Error
If you get a NO_GROUPS error when sending a message:
1. This means the channel hasn't been set up for this work yet
2. Escalate to your Cell PM (fe-pm) using `roboco_task_escalate`
3. Include the channel and task context in your escalation
4. If you have a task_id, always include it in message calls (routes to task session)
### When to Post in Session (DO)
- **Questions about implementation** - Need dev/QA clarification
- **Missing context** - Dev notes don't explain component behavior
+15
View File
@@ -183,6 +183,21 @@ roboco_session_create_for_tasks({
- QA and documenter see full context when reviewing
- Subtasks auto-inherit parent task's primary session
**Handling NO_GROUPS Error:**
If you get a NO_GROUPS error when creating a session, it means the channel
doesn't have a group for this initiative yet. Groups are created by Main PM.
Escalate to Main PM:
```python
roboco_task_escalate({
"task_id": "{task_id}",
"reason": "Channel #frontend-cell has no group for this work. Need group created.",
"escalate_to": "main-pm"
})
```
Main PM will create the group, then you can proceed with session creation.
### 7b. ACTIVATE TASK (REQUIRED)
**Tool:** `roboco_task_activate(task_id)`
+7
View File
@@ -130,6 +130,13 @@ Update progress: `roboco_task_progress(task_id, "Completed visual testing...", 5
## Communication Rules
### Handling NO_GROUPS Error
If you get a NO_GROUPS error when sending a message:
1. This means the channel hasn't been set up for this work yet
2. Escalate to your Cell PM (fe-pm) using `roboco_task_escalate`
3. Include the channel and task context in your escalation
4. If you have a task_id, always include it in message calls (routes to task session)
### When to Post in Session (DO)
- **Questions about implementation** - Need dev clarification on behavior
- **Critical bugs** - Security issues, accessibility failures, blockers
+7
View File
@@ -190,6 +190,13 @@ Return to SCAN: `roboco_task_scan()` or `roboco_agent_idle()`
## Communication Rules
### Handling NO_GROUPS Error
If you get a NO_GROUPS error when sending a message:
1. This means the channel hasn't been set up for this work yet
2. Escalate to your Cell PM (ux-pm) using `roboco_task_escalate`
3. Include the channel and task context in your escalation
4. If you have a task_id, always include it in message calls (routes to task session)
### Channels You Access
- **#uxui-cell** (read/write) - Your primary workspace
- **#dev-all** (read) - See what frontend is building
+7
View File
@@ -123,6 +123,13 @@ and verify all subtasks are done before calling `roboco_task_complete()`.
## Communication Rules
### Handling NO_GROUPS Error
If you get a NO_GROUPS error when sending a message:
1. This means the channel hasn't been set up for this work yet
2. Escalate to your Cell PM (ux-pm) using `roboco_task_escalate`
3. Include the channel and task context in your escalation
4. If you have a task_id, always include it in message calls (routes to task session)
### When to Post in Session (DO)
- **Questions about design decisions** - Need designer/QA clarification
- **Missing context** - Design notes don't explain rationale
+15
View File
@@ -183,6 +183,21 @@ roboco_session_create_for_tasks({
- QA and documenter see design context
- Frontend can review design discussion history
**Handling NO_GROUPS Error:**
If you get a NO_GROUPS error when creating a session, it means the channel
doesn't have a group for this initiative yet. Groups are created by Main PM.
Escalate to Main PM:
```python
roboco_task_escalate({
"task_id": "{task_id}",
"reason": "Channel #uxui-cell has no group for this work. Need group created.",
"escalate_to": "main-pm"
})
```
Main PM will create the group, then you can proceed with session creation.
### 7b. ACTIVATE TASK (REQUIRED)
**Tool:** `roboco_task_activate(task_id)`
+7
View File
@@ -129,6 +129,13 @@ If dev_notes is empty or no Figma link provided, that's a valid FAIL reason.
## Communication Rules
### Handling NO_GROUPS Error
If you get a NO_GROUPS error when sending a message:
1. This means the channel hasn't been set up for this work yet
2. Escalate to your Cell PM (ux-pm) using `roboco_task_escalate`
3. Include the channel and task context in your escalation
4. If you have a task_id, always include it in message calls (routes to task session)
### When to Post in Session (DO)
- **Questions about design intent** - Need designer clarification
- **Critical issues** - Accessibility failures, missing states