361 lines
9.0 KiB
Markdown
361 lines
9.0 KiB
Markdown
# Poimen Routing Workflow - Complete Implementation Guide
|
|||
|
|
|
||
|
|
## 📚 DOCUMENTATION STRUCTURE
|
||
|
|
|
||
|
|
You now have **4 complete documents** that form a complete specification:
|
||
|
|
|
||
|
|
### 1. `ROUTING_WORKFLOW_SPEC.md` (30+ KB)
|
||
|
|
**The Technical Specification** - Everything about the system design
|
||
|
|
|
||
|
|
Contains:
|
||
|
|
- ActivityKnowledgeBase.json format
|
||
|
|
- llm-router Activity (intelligent workflow generator)
|
||
|
|
- RoutingWorkflow (generic executor)
|
||
|
|
- Go type definitions (copy-paste ready)
|
||
|
|
- Implementation architecture
|
||
|
|
- State types (Task, Pass, Fail)
|
||
|
|
- CronWorkflowSpec (scheduled workflows)
|
||
|
|
- Execution flow examples
|
||
|
|
- Cron syntax reference
|
||
|
|
|
||
|
|
**When to use**: Building the system, understanding architecture
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### 2. `CRON_JOBS_QUICK_REFERENCE.md` (4 KB)
|
||
|
|
**Quick Reference for Cron Jobs**
|
||
|
|
|
||
|
|
Contains:
|
||
|
|
- Cron syntax examples
|
||
|
|
- How llm-router detects scheduled jobs
|
||
|
|
- Execution tracking
|
||
|
|
- API endpoints for cron
|
||
|
|
- One-time vs Cron comparison
|
||
|
|
|
||
|
|
**When to use**: Testing cron features, quick lookup
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### 3. `IMPLEMENTATION_TASKS.md` (30+ KB)
|
||
|
|
**The Complete Task Breakdown** - What to build, in what order
|
||
|
|
|
||
|
|
Contains:
|
||
|
|
- 27 specific, actionable tasks
|
||
|
|
- Effort estimates per task (2-5 hours each)
|
||
|
|
- Acceptance criteria for each task
|
||
|
|
- Dependencies between tasks
|
||
|
|
- Timeline (3 weeks, 1-2 engineers)
|
||
|
|
- Resource allocation
|
||
|
|
- Blockers to watch
|
||
|
|
- Success criteria
|
||
|
|
|
||
|
|
**Structure**:
|
||
|
|
```
|
||
|
|
Phase 1: Foundation (8-10 hours)
|
||
|
|
├─ Task 1.1: Types
|
||
|
|
├─ Task 1.2: Knowledge Base
|
||
|
|
├─ Task 1.3: KB Loader
|
||
|
|
└─ Task 1.4: Validator
|
||
|
|
|
||
|
|
Phase 2: LLM-Router (12-15 hours)
|
||
|
|
├─ Task 2.1: JSONPath Resolver
|
||
|
|
├─ Task 2.2: Activity Skeleton
|
||
|
|
├─ Task 2.3: Intent Analysis
|
||
|
|
├─ Task 2.4: Spec Builder
|
||
|
|
└─ Task 2.5: Cron Builder
|
||
|
|
|
||
|
|
Phase 3: RoutingWorkflow (15-18 hours)
|
||
|
|
├─ Task 3.1-3.6: Executors & State Machine
|
||
|
|
|
||
|
|
Phase 4: API/CLI (12-15 hours)
|
||
|
|
├─ Task 4.1-4.4: Handlers, Commands, Validation
|
||
|
|
|
||
|
|
Phase 5: Testing (8-12 hours)
|
||
|
|
├─ Task 5.1-5.4: Unit, Integration, E2E, Load tests
|
||
|
|
|
||
|
|
Phase 6: Docs & Deployment (5-8 hours)
|
||
|
|
├─ Task 6.1-6.4: API.md, CLI.md, Deployment.md, User Guide
|
||
|
|
```
|
||
|
|
|
||
|
|
**When to use**: Planning sprints, assigning work, tracking progress
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### 4. `DESIGN_MASTER_REVIEW.md` (25+ KB)
|
||
|
|
**Executive Summary for Stakeholders**
|
||
|
|
|
||
|
|
Contains:
|
||
|
|
- Problem/solution
|
||
|
|
- 3 patterns (Sequential, Await-Task-Complete, Retry)
|
||
|
|
- 3 entry points (CLI, API, Legacy)
|
||
|
|
- Phases 1-5 (52-58 hours)
|
||
|
|
- KMSvc questions (Q1-Q6)
|
||
|
|
- Risks & mitigations
|
||
|
|
- Success criteria
|
||
|
|
- Approval checklist
|
||
|
|
|
||
|
|
**When to use**: Stakeholder review, getting buy-in, architecture approval
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🎯 THE ARCHITECTURE AT A GLANCE
|
||
|
|
|
||
|
|
```
|
||
|
|
User Message: "Analyze repo for security and quality every day at 2 AM"
|
||
|
|
↓
|
||
|
|
[llm-router Activity]
|
||
|
|
Reads: ActivityKnowledgeBase.json
|
||
|
|
Uses LLM to understand intent
|
||
|
|
Decides: Clone → AnalyzeCode → SecurityScan → Combine → Notify
|
||
|
|
Decides timeouts, retries from knowledge base
|
||
|
|
Detects schedule: "0 2 * * *"
|
||
|
|
Generates: CronWorkflowSpec
|
||
|
|
↓
|
||
|
|
[RoutingWorkflow] (Generic Executor)
|
||
|
|
Registers with Temporal cron: "0 2 * * *"
|
||
|
|
Every day at 2 AM:
|
||
|
|
1. Clone repo
|
||
|
|
2. Analyze code (timeout 10m, retry 3x if flaky)
|
||
|
|
3. Security scan (timeout 15m, retry 2x)
|
||
|
|
4. Combine results
|
||
|
|
5. Send notification
|
||
|
|
Tracks each execution
|
||
|
|
↓
|
||
|
|
[Results]
|
||
|
|
Full execution history
|
||
|
|
Can check status anytime
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## ✨ KEY FEATURES
|
||
|
|
|
||
|
|
| Feature | Status | Docs | Tasks |
|
||
|
|
|---------|--------|------|-------|
|
||
|
|
| One-time workflows | ✅ | ROUTING_WORKFLOW_SPEC.md | 2.1-2.4, 3.x, 4.x |
|
||
|
|
| Scheduled workflows (cron) | ✅ | CRON_JOBS_QUICK_REFERENCE.md | 2.5, 3.4, 5.x |
|
||
|
|
| Intelligent routing (LLM) | ✅ | ROUTING_WORKFLOW_SPEC.md Part 2 | 2.x |
|
||
|
|
| Smart timeouts | ✅ | ROUTING_WORKFLOW_SPEC.md | 1.2, 2.4 |
|
||
|
|
| Smart retries | ✅ | ROUTING_WORKFLOW_SPEC.md | 1.2, 2.4 |
|
||
|
|
| Error handling | ✅ | ROUTING_WORKFLOW_SPEC.md | 3.4 |
|
||
|
|
| Parameter chaining | ✅ | ROUTING_WORKFLOW_SPEC.md | 2.1 |
|
||
|
|
| Temporal durability | ✅ | ROUTING_WORKFLOW_SPEC.md | 3.4 |
|
||
|
|
| HTTP API | ✅ | ROUTING_WORKFLOW_SPEC.md | 4.1-4.4 |
|
||
|
|
| CLI | ✅ | CRON_JOBS_QUICK_REFERENCE.md | 4.2 |
|
||
|
|
| Execution tracking | ✅ | CRON_JOBS_QUICK_REFERENCE.md | 5.x |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 📋 QUICK START FOR IMPLEMENTATION
|
||
|
|
|
||
|
|
### Week 1: Foundation + LLM-Router
|
||
|
|
|
||
|
|
```
|
||
|
|
Day 1-2 (Mon-Tue):
|
||
|
|
Task 1.1: Go types (2h)
|
||
|
|
Task 1.2: Knowledge base JSON (3h)
|
||
|
|
Task 1.3: KB loader (2h)
|
||
|
|
Task 1.4: Validator (3h)
|
||
|
|
→ Deliverable: Core data structures working
|
||
|
|
|
||
|
|
Day 3-5 (Wed-Fri):
|
||
|
|
Task 2.1: JSONPath resolver (3h)
|
||
|
|
Task 2.2: Activity skeleton (2h)
|
||
|
|
Task 2.3: LLM intent analysis (5h)
|
||
|
|
Task 2.4: Spec builder (4h)
|
||
|
|
Task 2.5: Cron builder (2h)
|
||
|
|
→ Deliverable: llm-router generates valid specs
|
||
|
|
```
|
||
|
|
|
||
|
|
### Week 2: RoutingWorkflow + API/CLI
|
||
|
|
|
||
|
|
```
|
||
|
|
Day 1-3 (Mon-Wed):
|
||
|
|
Task 3.1-3.6: RoutingWorkflow & executors (15-18h)
|
||
|
|
Task 3.5: Register in worker
|
||
|
|
→ Deliverable: Workflows execute, can submit via API
|
||
|
|
|
||
|
|
Day 4-5 (Thu-Fri):
|
||
|
|
Task 4.1: API handlers (4h)
|
||
|
|
Task 4.2: CLI commands (5h)
|
||
|
|
Task 4.3: Server bootstrap (2h)
|
||
|
|
Task 4.4: Validation (2h)
|
||
|
|
→ Deliverable: Full HTTP API + CLI working
|
||
|
|
```
|
||
|
|
|
||
|
|
### Week 3: Testing + Documentation
|
||
|
|
|
||
|
|
```
|
||
|
|
Day 1-3 (Mon-Wed):
|
||
|
|
Task 5.1-5.4: All tests (8-12h)
|
||
|
|
→ Deliverable: >90% coverage, all tests pass
|
||
|
|
|
||
|
|
Day 4-5 (Thu-Fri):
|
||
|
|
Task 6.1-6.4: Documentation (5-8h)
|
||
|
|
→ Deliverable: Complete docs, ready to ship
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🚀 HOW TO START TODAY
|
||
|
|
|
||
|
|
### Step 1: Read & Understand (1-2 hours)
|
||
|
|
1. Read `ROUTING_WORKFLOW_SPEC.md` (main spec)
|
||
|
|
2. Read `IMPLEMENTATION_TASKS.md` (what to build)
|
||
|
|
3. Scan `CRON_JOBS_QUICK_REFERENCE.md` (understand cron)
|
||
|
|
|
||
|
|
### Step 2: Assign Tasks
|
||
|
|
1. Engineer 1: Tasks 1.1-1.4, 2.1-2.5, 3.1-3.6
|
||
|
|
2. Engineer 2: Tasks 4.1-4.4, 5.1-5.4, 6.1-6.4
|
||
|
|
|
||
|
|
### Step 3: Start Building
|
||
|
|
1. Begin with Task 1.1 (types.go)
|
||
|
|
2. Follow dependency order
|
||
|
|
3. Daily sync on blockers
|
||
|
|
|
||
|
|
### Step 4: Gate Each Phase
|
||
|
|
- Phase 1 done? → Start Phase 2
|
||
|
|
- Phase 2 done? → Start Phase 3
|
||
|
|
- etc.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 📊 EFFORT SUMMARY
|
||
|
|
|
||
|
|
| Phase | Hours | Duration | Parallel |
|
||
|
|
|-------|-------|----------|----------|
|
||
|
|
| Phase 1: Foundation | 8-10 | Mon-Tue | No |
|
||
|
|
| Phase 2: LLM-Router | 12-15 | Wed-Fri + Mon | No |
|
||
|
|
| Phase 3: RoutingWorkflow | 15-18 | Tue-Thu | Can overlap w/ Phase 4 |
|
||
|
|
| Phase 4: API/CLI | 12-15 | Fri-Tue | Can overlap w/ Phase 3 |
|
||
|
|
| Phase 5: Testing | 8-12 | Wed-Fri | Sequential |
|
||
|
|
| Phase 6: Docs | 5-8 | Fri-Mon | Parallel w/ Phase 5 |
|
||
|
|
| **TOTAL** | **60-70** | **3-4 weeks** | **2 engineers** |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## ✅ SUCCESS CRITERIA
|
||
|
|
|
||
|
|
**Phase 1 Complete**:
|
||
|
|
- All types compile
|
||
|
|
- Knowledge base loads
|
||
|
|
- Validator catches errors
|
||
|
|
- All unit tests pass
|
||
|
|
|
||
|
|
**Phase 2 Complete**:
|
||
|
|
- llm-router generates valid specs
|
||
|
|
- JSONPath resolution works
|
||
|
|
- Cron detection works
|
||
|
|
- Integration tests pass
|
||
|
|
|
||
|
|
**Phase 3 Complete**:
|
||
|
|
- RoutingWorkflow executes any spec
|
||
|
|
- Error handling works
|
||
|
|
- State machine flow correct
|
||
|
|
- Registered in worker
|
||
|
|
|
||
|
|
**Phase 4 Complete**:
|
||
|
|
- HTTP API working (all endpoints)
|
||
|
|
- CLI working (all commands)
|
||
|
|
- Input validation
|
||
|
|
- Can submit and check status
|
||
|
|
|
||
|
|
**Phase 5 Complete**:
|
||
|
|
- >90% code coverage
|
||
|
|
- All scenarios pass
|
||
|
|
- Performance targets met
|
||
|
|
- No flaky tests
|
||
|
|
|
||
|
|
**Phase 6 Complete**:
|
||
|
|
- API documentation complete
|
||
|
|
- CLI documentation complete
|
||
|
|
- Deployment guide complete
|
||
|
|
- User guide with examples
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🔗 FILE LOCATIONS
|
||
|
|
|
||
|
|
```
|
||
|
|
Core Specification:
|
||
|
|
~/workplace/Poimen/workflows/ROUTING_WORKFLOW_SPEC.md
|
||
|
|
|
||
|
|
Task Breakdown:
|
||
|
|
~/workplace/Poimen/workflows/IMPLEMENTATION_TASKS.md
|
||
|
|
|
||
|
|
Cron Reference:
|
||
|
|
~/workplace/Poimen/workflows/CRON_JOBS_QUICK_REFERENCE.md
|
||
|
|
|
||
|
|
Stakeholder Review:
|
||
|
|
~/workplace/Poimen/workflows/DESIGN_MASTER_REVIEW.md
|
||
|
|
|
||
|
|
This README:
|
||
|
|
~/workplace/Poimen/workflows/README_IMPLEMENTATION.md
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 💡 TIPS FOR SUCCESS
|
||
|
|
|
||
|
|
1. **Start with types** (Task 1.1)
|
||
|
|
- Everything depends on these
|
||
|
|
- Make them flexible
|
||
|
|
- Good JSON schema helps
|
||
|
|
|
||
|
|
2. **Knowledge base is critical** (Task 1.2)
|
||
|
|
- LLM decisions are based on this
|
||
|
|
- Make it comprehensive
|
||
|
|
- Document each activity well
|
||
|
|
|
||
|
|
3. **Test llm-router early** (Task 2.3)
|
||
|
|
- This is highest risk
|
||
|
|
- Test with real LLM calls
|
||
|
|
- Validate output quality
|
||
|
|
|
||
|
|
4. **RoutingWorkflow is the heart** (Task 3.4)
|
||
|
|
- Make sure state machine is solid
|
||
|
|
- Test error paths thoroughly
|
||
|
|
- Performance matters
|
||
|
|
|
||
|
|
5. **API/CLI can be simple** (Tasks 4.x)
|
||
|
|
- Just thin wrappers
|
||
|
|
- Focus on DX (developer experience)
|
||
|
|
- Good error messages
|
||
|
|
|
||
|
|
6. **Test everything** (Phase 5)
|
||
|
|
- Unit tests catch bugs early
|
||
|
|
- Integration tests find edge cases
|
||
|
|
- E2E tests validate full flow
|
||
|
|
- Load tests validate performance
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🎓 LEARNING RESOURCES
|
||
|
|
|
||
|
|
- **Temporal**: https://docs.temporal.io/
|
||
|
|
- **Cron syntax**: https://crontab.guru/
|
||
|
|
- **JSONPath**: https://goessner.net/articles/JsonPath/
|
||
|
|
- **Go workflow patterns**: https://golang.org/pkg/workflow
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 📞 DECISION MAKER'S CHECKLIST
|
||
|
|
|
||
|
|
Before starting implementation:
|
||
|
|
|
||
|
|
- [ ] Do we have LLM access? (for llm-router)
|
||
|
|
- [ ] Is Temporal deployed? (task queue "poimen-taskqueue")
|
||
|
|
- [ ] Are activities registered? (CloneRepoActivity, etc)
|
||
|
|
- [ ] Do we have memory service? (for LLM calls)
|
||
|
|
- [ ] Team aligned on architecture?
|
||
|
|
- [ ] Timeline acceptable? (3-4 weeks)
|
||
|
|
- [ ] Resources allocated? (2 engineers)
|
||
|
|
|
||
|
|
All yes? → Ready to build! 🚀
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
**This is a complete, implementable specification.**
|
||
|
|
Start with Phase 1, Task 1.1 today!
|
||
|
|
|