2025-12-25 23:06:41 +01:00
|
|
|
# Developer Workflow
|
|
|
|
|
|
|
|
|
|
## Overview
|
|
|
|
|
|
|
|
|
|
Developers (be-dev-1, be-dev-2, fe-dev-1, fe-dev-2, ux-dev) execute implementation tasks.
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
┌─────────────────────────────────────────────────────────────────────────┐
|
|
|
|
|
│ DEVELOPER WORKFLOW │
|
|
|
|
|
└─────────────────────────────────────────────────────────────────────────┘
|
|
|
|
|
|
|
|
|
|
1. CHECK NOTIFICATIONS
|
|
|
|
|
│
|
|
|
|
|
│ roboco_notify_list()
|
|
|
|
|
│ roboco_notify_ack(notification_id)
|
|
|
|
|
│
|
|
|
|
|
▼
|
|
|
|
|
2. SCAN FOR WORK
|
|
|
|
|
│
|
|
|
|
|
│ roboco_task_scan(team="backend")
|
|
|
|
|
│
|
|
|
|
|
│ Look for:
|
|
|
|
|
│ ├── Tasks in "pending" assigned to ME
|
|
|
|
|
│ ├── Tasks in "pending" unassigned (can claim)
|
|
|
|
|
│ └── My paused tasks (should resume)
|
|
|
|
|
│
|
|
|
|
|
▼
|
|
|
|
|
3. CLAIM TASK
|
|
|
|
|
│
|
|
|
|
|
│ roboco_task_claim(task_id)
|
|
|
|
|
│
|
|
|
|
|
│ ┌─────────────────────────────────────────────────────────────────┐
|
|
|
|
|
│ │ BEFORE: │
|
|
|
|
|
│ │ status: pending │
|
|
|
|
|
│ │ assigned_to: null OR my_id (if PM pre-assigned) │
|
|
|
|
|
│ │ │
|
|
|
|
|
│ │ AFTER: │
|
|
|
|
|
│ │ status: claimed │
|
|
|
|
|
│ │ assigned_to: my_id │
|
|
|
|
|
│ │ claimed_at: now │
|
|
|
|
|
│ └─────────────────────────────────────────────────────────────────┘
|
|
|
|
|
│
|
|
|
|
|
▼
|
2025-12-26 18:01:53 +01:00
|
|
|
4. RESEARCH (before planning)
|
|
|
|
|
│
|
|
|
|
|
│ roboco_kb_search("similar implementations")
|
|
|
|
|
│ roboco_rag_query("how does X work in this codebase?")
|
|
|
|
|
│ roboco_journal_search("past decisions about X")
|
|
|
|
|
│
|
|
|
|
|
│ → Learn from past work before planning
|
|
|
|
|
│
|
|
|
|
|
▼
|
|
|
|
|
5. PLAN
|
2025-12-25 23:06:41 +01:00
|
|
|
│
|
|
|
|
|
│ roboco_task_plan(
|
|
|
|
|
│ task_id,
|
|
|
|
|
│ approach: "How I'll solve this",
|
|
|
|
|
│ steps: [
|
|
|
|
|
│ {title: "Step 1", description: "..."},
|
|
|
|
|
│ {title: "Step 2", description: "..."}
|
|
|
|
|
│ ],
|
|
|
|
|
│ risks: ["Potential issue X"],
|
|
|
|
|
│ open_questions: ["Need to clarify Y"]
|
|
|
|
|
│ )
|
|
|
|
|
│
|
|
|
|
|
│ If questions → roboco_message_send() to PM
|
|
|
|
|
│
|
|
|
|
|
▼
|
2025-12-26 18:01:53 +01:00
|
|
|
6. START WORK
|
2025-12-25 23:06:41 +01:00
|
|
|
│
|
|
|
|
|
│ roboco_task_start(task_id)
|
|
|
|
|
│
|
2025-12-26 18:01:53 +01:00
|
|
|
│ # REQUIRED: Announce to cell
|
|
|
|
|
│ roboco_message_send({
|
|
|
|
|
│ channel: "backend-cell",
|
|
|
|
|
│ content: "Starting work on [task title]",
|
|
|
|
|
│ task_id: task_id
|
|
|
|
|
│ })
|
|
|
|
|
│
|
2025-12-25 23:06:41 +01:00
|
|
|
│ STATUS: claimed → in_progress
|
|
|
|
|
│
|
|
|
|
|
▼
|
2025-12-26 18:01:53 +01:00
|
|
|
7. EXECUTE (loop)
|
2025-12-25 23:06:41 +01:00
|
|
|
│
|
|
|
|
|
│ ┌─────────────────────────────────────────────────────────────────┐
|
2025-12-26 18:01:53 +01:00
|
|
|
│ │ REQUIRED - Progress updates: │
|
2025-12-25 23:06:41 +01:00
|
|
|
│ │ roboco_task_progress(task_id, "Completed X", 25) │
|
|
|
|
|
│ │ roboco_task_progress(task_id, "Working on Y", 50) │
|
|
|
|
|
│ │ │
|
2025-12-26 18:01:53 +01:00
|
|
|
│ │ REQUIRED - Journal as you go: │
|
|
|
|
|
│ │ roboco_journal_entry(type="work_log", ...) # General notes │
|
|
|
|
|
│ │ roboco_journal_decision(...) # When choosing approaches │
|
|
|
|
|
│ │ roboco_journal_learning(...) # When learning something │
|
|
|
|
|
│ │ roboco_journal_struggle(...) # When hitting issues │
|
2025-12-25 23:06:41 +01:00
|
|
|
│ │ │
|
|
|
|
|
│ │ If BLOCKED: │
|
2025-12-26 18:01:53 +01:00
|
|
|
│ │ roboco_task_block(task_id, blocker_task_id) │
|
|
|
|
|
│ │ roboco_journal_struggle(what="...", resolution="pending") │
|
|
|
|
|
│ │ roboco_task_escalate(task_id, reason) # Notify PM │
|
2025-12-25 23:06:41 +01:00
|
|
|
│ │ │
|
|
|
|
|
│ │ If need to PAUSE: │
|
|
|
|
|
│ │ roboco_task_pause(task_id, reason, checkpoint, remaining) │
|
|
|
|
|
│ └─────────────────────────────────────────────────────────────────┘
|
|
|
|
|
│
|
|
|
|
|
▼
|
2025-12-26 18:01:53 +01:00
|
|
|
8. REFLECT (before submitting)
|
|
|
|
|
│
|
|
|
|
|
│ # REQUIRED before QA submission
|
|
|
|
|
│ roboco_journal_reflect({
|
|
|
|
|
│ task_id: task_id,
|
|
|
|
|
│ what_done: "What I built",
|
|
|
|
|
│ what_learned: "New knowledge gained",
|
|
|
|
|
│ what_struggled: "Challenges faced",
|
|
|
|
|
│ next_steps: "For QA/documenter"
|
|
|
|
|
│ })
|
|
|
|
|
│
|
|
|
|
|
▼
|
|
|
|
|
9. SELF-VERIFY
|
2025-12-25 23:06:41 +01:00
|
|
|
│
|
|
|
|
|
│ roboco_task_submit_verification(task_id)
|
|
|
|
|
│
|
|
|
|
|
│ STATUS: in_progress → verifying
|
|
|
|
|
│
|
|
|
|
|
│ ┌─────────────────────────────────────────────────────────────────┐
|
|
|
|
|
│ │ Self-check: │
|
|
|
|
|
│ │ ├── Does it meet acceptance criteria? │
|
|
|
|
|
│ │ ├── Did I run tests? │
|
|
|
|
|
│ │ ├── Is the code clean? │
|
|
|
|
|
│ │ └── Are my notes complete? │
|
|
|
|
|
│ └─────────────────────────────────────────────────────────────────┘
|
|
|
|
|
│
|
|
|
|
|
▼
|
2025-12-26 18:01:53 +01:00
|
|
|
10. SUBMIT FOR QA
|
2025-12-25 23:06:41 +01:00
|
|
|
│
|
|
|
|
|
│ roboco_task_submit_qa(task_id, {
|
|
|
|
|
│ notes: "What I built and how to test it",
|
|
|
|
|
│ test_instructions: "Steps to verify"
|
|
|
|
|
│ })
|
|
|
|
|
│
|
|
|
|
|
│ STATUS: verifying → awaiting_qa
|
|
|
|
|
│
|
|
|
|
|
▼
|
|
|
|
|
DONE (for developer) → QA takes over
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## If QA Fails
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
QA FAILS:
|
|
|
|
|
awaiting_qa ──qa_fail──► needs_revision
|
|
|
|
|
|
|
|
|
|
DEVELOPER SEES IT:
|
|
|
|
|
roboco_task_scan() shows "needs_revision" task
|
|
|
|
|
|
|
|
|
|
DEVELOPER CLAIMS AGAIN:
|
|
|
|
|
roboco_task_claim(task_id)
|
|
|
|
|
STATUS: needs_revision → claimed
|
|
|
|
|
|
|
|
|
|
DEVELOPER FIXES:
|
|
|
|
|
roboco_task_start(task_id)
|
|
|
|
|
... fix issues ...
|
|
|
|
|
roboco_task_submit_verification(task_id)
|
|
|
|
|
roboco_task_submit_qa(task_id, notes)
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## Status Transitions (Developer perspective)
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
CAN CLAIM:
|
|
|
|
|
pending ──────────► claimed
|
|
|
|
|
needs_revision ───► claimed
|
|
|
|
|
|
|
|
|
|
AFTER CLAIM:
|
|
|
|
|
claimed ──start──► in_progress
|
|
|
|
|
|
|
|
|
|
WHILE WORKING:
|
|
|
|
|
in_progress ──block──► blocked
|
|
|
|
|
in_progress ──pause──► paused
|
|
|
|
|
blocked ─────unblock─► in_progress
|
|
|
|
|
paused ──────resume──► in_progress
|
|
|
|
|
|
|
|
|
|
SUBMIT:
|
|
|
|
|
in_progress ──verify──► verifying
|
|
|
|
|
verifying ───submit_qa──► awaiting_qa
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## Key Rules
|
|
|
|
|
|
|
|
|
|
1. **CLAIM before anything** - Must claim to own the task
|
2025-12-26 18:01:53 +01:00
|
|
|
2. **RESEARCH before PLAN** - Search KB and journals for past work
|
|
|
|
|
3. **PLAN before START** - roboco_task_plan() required before start()
|
|
|
|
|
4. **MESSAGE when starting** - Announce to cell channel
|
|
|
|
|
5. **PROGRESS updates** - Keep PM informed with percentage
|
|
|
|
|
6. **JOURNAL as you go** - Decisions, learnings, struggles (REQUIRED)
|
|
|
|
|
7. **REFLECT before submit** - roboco_journal_reflect() REQUIRED
|
|
|
|
|
8. **SELF-VERIFY first** - Check your own work before QA
|
|
|
|
|
9. **Cannot COMPLETE** - Only PM completes tasks after full workflow
|
|
|
|
|
10. **One task at a time** - Can't claim new task while one is in_progress
|
|
|
|
|
|
|
|
|
|
## Substitution (Graceful Exit)
|
|
|
|
|
|
|
|
|
|
If you can't continue a task, use substitution instead of getting stuck:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
roboco_task_substitute(task_id, reason, details)
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
**Reasons:**
|
|
|
|
|
- `low_context` - Not enough context to continue safely
|
|
|
|
|
- `out_of_scope_team` - Task belongs to a different team
|
|
|
|
|
- `out_of_scope_role` - Task requires QA or documenter, not dev
|
|
|
|
|
- `task_complete` - Done with your part, releasing for next stage
|
|
|
|
|
- `max_retries` - Tried multiple times, need fresh perspective
|
|
|
|
|
- `blocked_external` - Need skills outside your capabilities
|
|
|
|
|
|
|
|
|
|
After substitution, you are **FREE to claim new work** immediately.
|
|
|
|
|
|
|
|
|
|
## Non-Dev Tasks (Alternate Path)
|
|
|
|
|
|
|
|
|
|
If you receive a non-code task (validation, research, audit):
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
roboco_task_submit_pm_review(task_id, notes)
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
This skips the QA/docs workflow and goes directly to PM review.
|