Files
wifi-densepose/npm/packages/ruvbot/docs/IMPLEMENTATION_PLAN.yaml
ruv d803bfe2b1 Squashed 'vendor/ruvector/' content from commit b64c2172
git-subtree-dir: vendor/ruvector
git-subtree-split: b64c21726f2bb37286d9ee36a7869fef60cc6900
2026-02-28 14:39:40 -05:00

917 lines
29 KiB
YAML

# RuvBot Implementation Plan
# High-performance AI assistant bot with WASM embeddings, vector memory, and multi-platform integration
plan:
objective: "Build RuvBot npm package - a self-learning AI assistant with WASM embeddings, vector memory, and Slack/webhook integrations"
version: "0.1.0"
estimated_duration: "6-8 weeks"
success_criteria:
- "Package installable via npx @ruvector/ruvbot"
- "CLI supports local and remote deployment modes"
- "WASM embeddings working in Node.js and browser"
- "Vector memory with HNSW search < 10ms"
- "Slack integration with real-time message handling"
- "Background workers processing async tasks"
- "Extensible skill system with hot-reload"
- "Session persistence across restarts"
- "85%+ test coverage on core modules"
phases:
# ============================================================================
# PHASE 1: Core Foundation (Week 1-2)
# ============================================================================
- name: "Phase 1: Core Foundation"
duration: "2 weeks"
description: "Establish package structure and core domain entities"
tasks:
- id: "p1-t1"
description: "Initialize package with tsup, TypeScript, and ESM/CJS dual build"
agent: "coder"
dependencies: []
estimated_time: "2h"
priority: "critical"
files:
- "package.json"
- "tsconfig.json"
- "tsup.config.ts"
- ".npmignore"
- id: "p1-t2"
description: "Create core domain entities (Agent, Session, Message, Skill)"
agent: "coder"
dependencies: ["p1-t1"]
estimated_time: "4h"
priority: "high"
files:
- "src/core/entities/Agent.ts"
- "src/core/entities/Session.ts"
- "src/core/entities/Message.ts"
- "src/core/entities/Skill.ts"
- "src/core/entities/index.ts"
- "src/core/types.ts"
- id: "p1-t3"
description: "Implement RuvBot main class with lifecycle management"
agent: "coder"
dependencies: ["p1-t2"]
estimated_time: "4h"
priority: "high"
files:
- "src/RuvBot.ts"
- "src/core/BotConfig.ts"
- "src/core/BotState.ts"
- id: "p1-t4"
description: "Create error types and result monads"
agent: "coder"
dependencies: ["p1-t1"]
estimated_time: "2h"
priority: "medium"
files:
- "src/core/errors.ts"
- "src/core/Result.ts"
- id: "p1-t5"
description: "Set up unit testing with vitest"
agent: "tester"
dependencies: ["p1-t3"]
estimated_time: "3h"
priority: "high"
files:
- "vitest.config.ts"
- "tests/unit/core/RuvBot.test.ts"
- "tests/unit/core/entities/*.test.ts"
# ============================================================================
# PHASE 2: Infrastructure Layer (Week 2-3)
# ============================================================================
- name: "Phase 2: Infrastructure Layer"
duration: "1.5 weeks"
description: "Database, messaging, and worker infrastructure"
tasks:
- id: "p2-t1"
description: "Implement SessionStore with SQLite and PostgreSQL adapters"
agent: "coder"
dependencies: ["p1-t2"]
estimated_time: "6h"
priority: "high"
files:
- "src/infrastructure/storage/SessionStore.ts"
- "src/infrastructure/storage/adapters/SQLiteAdapter.ts"
- "src/infrastructure/storage/adapters/PostgresAdapter.ts"
- "src/infrastructure/storage/adapters/BaseAdapter.ts"
- id: "p2-t2"
description: "Create MessageQueue with in-memory and Redis backends"
agent: "coder"
dependencies: ["p1-t2"]
estimated_time: "5h"
priority: "high"
files:
- "src/infrastructure/messaging/MessageQueue.ts"
- "src/infrastructure/messaging/InMemoryQueue.ts"
- "src/infrastructure/messaging/RedisQueue.ts"
- id: "p2-t3"
description: "Implement WorkerPool using agentic-flow patterns"
agent: "coder"
dependencies: ["p2-t2"]
estimated_time: "6h"
priority: "high"
files:
- "src/infrastructure/workers/WorkerPool.ts"
- "src/infrastructure/workers/Worker.ts"
- "src/infrastructure/workers/TaskScheduler.ts"
- "src/infrastructure/workers/tasks/index.ts"
- id: "p2-t4"
description: "Create EventBus for internal pub/sub communication"
agent: "coder"
dependencies: ["p1-t1"]
estimated_time: "3h"
priority: "medium"
files:
- "src/infrastructure/events/EventBus.ts"
- "src/infrastructure/events/types.ts"
- id: "p2-t5"
description: "Add connection pooling and health checks"
agent: "coder"
dependencies: ["p2-t1", "p2-t2"]
estimated_time: "4h"
priority: "medium"
files:
- "src/infrastructure/health/HealthChecker.ts"
- "src/infrastructure/pool/ConnectionPool.ts"
# ============================================================================
# PHASE 3: Learning Layer - WASM & ruvllm (Week 3-4)
# ============================================================================
- name: "Phase 3: Learning Layer"
duration: "1.5 weeks"
description: "WASM embeddings and ruvllm integration for self-learning"
tasks:
- id: "p3-t1"
description: "Create MemoryManager with HNSW vector search"
agent: "coder"
dependencies: ["p2-t1"]
estimated_time: "8h"
priority: "critical"
files:
- "src/learning/memory/MemoryManager.ts"
- "src/learning/memory/VectorIndex.ts"
- "src/learning/memory/types.ts"
dependencies_pkg:
- "@ruvector/wasm-unified"
- id: "p3-t2"
description: "Integrate @ruvector/wasm-unified for WASM embeddings"
agent: "coder"
dependencies: ["p3-t1"]
estimated_time: "6h"
priority: "critical"
files:
- "src/learning/embeddings/WasmEmbedder.ts"
- "src/learning/embeddings/EmbeddingCache.ts"
- "src/learning/embeddings/index.ts"
- id: "p3-t3"
description: "Integrate @ruvector/ruvllm for LLM orchestration"
agent: "coder"
dependencies: ["p3-t2"]
estimated_time: "6h"
priority: "high"
files:
- "src/learning/llm/LLMOrchestrator.ts"
- "src/learning/llm/ModelRouter.ts"
- "src/learning/llm/SessionContext.ts"
dependencies_pkg:
- "@ruvector/ruvllm"
- id: "p3-t4"
description: "Implement trajectory learning and pattern extraction"
agent: "coder"
dependencies: ["p3-t3"]
estimated_time: "5h"
priority: "medium"
files:
- "src/learning/trajectory/TrajectoryRecorder.ts"
- "src/learning/trajectory/PatternExtractor.ts"
- "src/learning/trajectory/types.ts"
- id: "p3-t5"
description: "Add semantic search and retrieval pipeline"
agent: "coder"
dependencies: ["p3-t1", "p3-t2"]
estimated_time: "4h"
priority: "high"
files:
- "src/learning/retrieval/SemanticSearch.ts"
- "src/learning/retrieval/RetrievalPipeline.ts"
# ============================================================================
# PHASE 4: Skill System (Week 4-5)
# ============================================================================
- name: "Phase 4: Skill System"
duration: "1 week"
description: "Extensible skill registry with hot-reload support"
tasks:
- id: "p4-t1"
description: "Create SkillRegistry with plugin architecture"
agent: "coder"
dependencies: ["p1-t2", "p3-t3"]
estimated_time: "6h"
priority: "high"
files:
- "src/skills/SkillRegistry.ts"
- "src/skills/SkillLoader.ts"
- "src/skills/SkillContext.ts"
- "src/skills/types.ts"
- id: "p4-t2"
description: "Implement built-in skills (search, summarize, code)"
agent: "coder"
dependencies: ["p4-t1"]
estimated_time: "8h"
priority: "high"
files:
- "src/skills/builtin/SearchSkill.ts"
- "src/skills/builtin/SummarizeSkill.ts"
- "src/skills/builtin/CodeSkill.ts"
- "src/skills/builtin/MemorySkill.ts"
- "src/skills/builtin/index.ts"
- id: "p4-t3"
description: "Add skill hot-reload with file watching"
agent: "coder"
dependencies: ["p4-t1"]
estimated_time: "4h"
priority: "medium"
files:
- "src/skills/HotReloader.ts"
- "src/skills/SkillValidator.ts"
- id: "p4-t4"
description: "Create skill template generator"
agent: "coder"
dependencies: ["p4-t1"]
estimated_time: "3h"
priority: "low"
files:
- "src/skills/templates/skill-template.ts"
- "src/skills/generator.ts"
# ============================================================================
# PHASE 5: Integrations (Week 5-6)
# ============================================================================
- name: "Phase 5: Integrations"
duration: "1.5 weeks"
description: "Slack, webhooks, and external service integrations"
tasks:
- id: "p5-t1"
description: "Implement SlackAdapter with Socket Mode"
agent: "coder"
dependencies: ["p1-t3", "p4-t1"]
estimated_time: "8h"
priority: "high"
files:
- "src/integrations/slack/SlackAdapter.ts"
- "src/integrations/slack/SlackEventHandler.ts"
- "src/integrations/slack/SlackMessageFormatter.ts"
- "src/integrations/slack/types.ts"
dependencies_pkg:
- "@slack/bolt"
- "@slack/web-api"
- id: "p5-t2"
description: "Create WebhookServer for HTTP callbacks"
agent: "coder"
dependencies: ["p1-t3"]
estimated_time: "5h"
priority: "high"
files:
- "src/integrations/webhooks/WebhookServer.ts"
- "src/integrations/webhooks/WebhookValidator.ts"
- "src/integrations/webhooks/routes.ts"
- id: "p5-t3"
description: "Add Discord adapter"
agent: "coder"
dependencies: ["p5-t1"]
estimated_time: "6h"
priority: "medium"
files:
- "src/integrations/discord/DiscordAdapter.ts"
- "src/integrations/discord/DiscordEventHandler.ts"
dependencies_pkg:
- "discord.js"
- id: "p5-t4"
description: "Create generic ChatAdapter interface"
agent: "coder"
dependencies: ["p5-t1", "p5-t3"]
estimated_time: "3h"
priority: "medium"
files:
- "src/integrations/ChatAdapter.ts"
- "src/integrations/AdapterFactory.ts"
- "src/integrations/types.ts"
# ============================================================================
# PHASE 6: API Layer (Week 6)
# ============================================================================
- name: "Phase 6: API Layer"
duration: "1 week"
description: "REST and GraphQL endpoints for external access"
tasks:
- id: "p6-t1"
description: "Create REST API server with Express/Fastify"
agent: "coder"
dependencies: ["p1-t3", "p4-t1"]
estimated_time: "6h"
priority: "high"
files:
- "src/api/rest/server.ts"
- "src/api/rest/routes/chat.ts"
- "src/api/rest/routes/sessions.ts"
- "src/api/rest/routes/skills.ts"
- "src/api/rest/routes/health.ts"
- "src/api/rest/middleware/auth.ts"
- "src/api/rest/middleware/rateLimit.ts"
dependencies_pkg:
- "fastify"
- "@fastify/cors"
- "@fastify/rate-limit"
- id: "p6-t2"
description: "Add GraphQL API with subscriptions"
agent: "coder"
dependencies: ["p6-t1"]
estimated_time: "6h"
priority: "medium"
files:
- "src/api/graphql/schema.ts"
- "src/api/graphql/resolvers/chat.ts"
- "src/api/graphql/resolvers/sessions.ts"
- "src/api/graphql/subscriptions.ts"
dependencies_pkg:
- "mercurius"
- "graphql"
- id: "p6-t3"
description: "Implement OpenAPI spec generation"
agent: "coder"
dependencies: ["p6-t1"]
estimated_time: "3h"
priority: "low"
files:
- "src/api/openapi/generator.ts"
- "src/api/openapi/decorators.ts"
# ============================================================================
# PHASE 7: CLI & Distribution (Week 6-7)
# ============================================================================
- name: "Phase 7: CLI & Distribution"
duration: "1 week"
description: "CLI interface and npx distribution setup"
tasks:
- id: "p7-t1"
description: "Create CLI entry point with commander"
agent: "coder"
dependencies: ["p1-t3", "p5-t1", "p6-t1"]
estimated_time: "6h"
priority: "critical"
files:
- "bin/cli.js"
- "src/cli/index.ts"
- "src/cli/commands/start.ts"
- "src/cli/commands/config.ts"
- "src/cli/commands/skills.ts"
- "src/cli/commands/status.ts"
dependencies_pkg:
- "commander"
- "chalk"
- "ora"
- "inquirer"
- id: "p7-t2"
description: "Add local vs remote deployment modes"
agent: "coder"
dependencies: ["p7-t1"]
estimated_time: "4h"
priority: "high"
files:
- "src/cli/modes/local.ts"
- "src/cli/modes/remote.ts"
- "src/cli/modes/docker.ts"
- id: "p7-t3"
description: "Create configuration wizard"
agent: "coder"
dependencies: ["p7-t1"]
estimated_time: "4h"
priority: "medium"
files:
- "src/cli/wizard/ConfigWizard.ts"
- "src/cli/wizard/prompts.ts"
- id: "p7-t4"
description: "Build install script for curl | bash deployment"
agent: "coder"
dependencies: ["p7-t1"]
estimated_time: "3h"
priority: "medium"
files:
- "scripts/install.sh"
- "scripts/uninstall.sh"
- id: "p7-t5"
description: "Create Docker configuration"
agent: "coder"
dependencies: ["p7-t2"]
estimated_time: "3h"
priority: "medium"
files:
- "Dockerfile"
- "docker-compose.yml"
- ".dockerignore"
# ============================================================================
# PHASE 8: Testing & Documentation (Week 7-8)
# ============================================================================
- name: "Phase 8: Testing & Documentation"
duration: "1 week"
description: "Comprehensive testing and documentation"
tasks:
- id: "p8-t1"
description: "Integration tests for all modules"
agent: "tester"
dependencies: ["p7-t1"]
estimated_time: "8h"
priority: "high"
files:
- "tests/integration/bot.test.ts"
- "tests/integration/memory.test.ts"
- "tests/integration/skills.test.ts"
- "tests/integration/slack.test.ts"
- "tests/integration/api.test.ts"
- id: "p8-t2"
description: "E2E tests with real services"
agent: "tester"
dependencies: ["p8-t1"]
estimated_time: "6h"
priority: "medium"
files:
- "tests/e2e/full-flow.test.ts"
- "tests/e2e/slack-flow.test.ts"
- "tests/fixtures/"
- id: "p8-t3"
description: "Performance benchmarks"
agent: "tester"
dependencies: ["p8-t1"]
estimated_time: "4h"
priority: "medium"
files:
- "benchmarks/memory.bench.ts"
- "benchmarks/embeddings.bench.ts"
- "benchmarks/throughput.bench.ts"
# ============================================================================
# CRITICAL PATH
# ============================================================================
critical_path:
- "p1-t1" # Package init
- "p1-t2" # Core entities
- "p1-t3" # RuvBot class
- "p3-t1" # MemoryManager
- "p3-t2" # WASM embeddings
- "p4-t1" # SkillRegistry
- "p5-t1" # SlackAdapter
- "p7-t1" # CLI
# ============================================================================
# RISK ASSESSMENT
# ============================================================================
risks:
- id: "risk-1"
description: "WASM module compatibility issues across Node versions"
likelihood: "medium"
impact: "high"
mitigation: "Test on Node 18, 20, 22. Provide pure JS fallback for critical paths"
- id: "risk-2"
description: "Slack API rate limiting during high traffic"
likelihood: "medium"
impact: "medium"
mitigation: "Implement exponential backoff and message batching"
- id: "risk-3"
description: "Memory leaks in long-running bot instances"
likelihood: "medium"
impact: "high"
mitigation: "Add memory monitoring, implement LRU caches, periodic cleanup"
- id: "risk-4"
description: "Breaking changes in upstream @ruvector packages"
likelihood: "low"
impact: "high"
mitigation: "Pin specific versions, maintain compatibility layer"
- id: "risk-5"
description: "Vector index corruption on unexpected shutdown"
likelihood: "medium"
impact: "high"
mitigation: "WAL logging, periodic snapshots, automatic recovery"
# ============================================================================
# PACKAGE STRUCTURE
# ============================================================================
package_structure:
root: "npm/packages/ruvbot"
directories:
- path: "src/core"
purpose: "Domain entities and core types"
files:
- "entities/Agent.ts"
- "entities/Session.ts"
- "entities/Message.ts"
- "entities/Skill.ts"
- "types.ts"
- "errors.ts"
- "Result.ts"
- "BotConfig.ts"
- "BotState.ts"
- path: "src/infrastructure"
purpose: "Database, messaging, and worker infrastructure"
files:
- "storage/SessionStore.ts"
- "storage/adapters/SQLiteAdapter.ts"
- "storage/adapters/PostgresAdapter.ts"
- "messaging/MessageQueue.ts"
- "messaging/InMemoryQueue.ts"
- "messaging/RedisQueue.ts"
- "workers/WorkerPool.ts"
- "workers/Worker.ts"
- "workers/TaskScheduler.ts"
- "events/EventBus.ts"
- "health/HealthChecker.ts"
- path: "src/learning"
purpose: "WASM embeddings, vector memory, and ruvllm integration"
files:
- "memory/MemoryManager.ts"
- "memory/VectorIndex.ts"
- "embeddings/WasmEmbedder.ts"
- "embeddings/EmbeddingCache.ts"
- "llm/LLMOrchestrator.ts"
- "llm/ModelRouter.ts"
- "trajectory/TrajectoryRecorder.ts"
- "trajectory/PatternExtractor.ts"
- "retrieval/SemanticSearch.ts"
- path: "src/skills"
purpose: "Extensible skill system"
files:
- "SkillRegistry.ts"
- "SkillLoader.ts"
- "SkillContext.ts"
- "HotReloader.ts"
- "builtin/SearchSkill.ts"
- "builtin/SummarizeSkill.ts"
- "builtin/CodeSkill.ts"
- "builtin/MemorySkill.ts"
- path: "src/integrations"
purpose: "Slack, Discord, and webhook integrations"
files:
- "ChatAdapter.ts"
- "AdapterFactory.ts"
- "slack/SlackAdapter.ts"
- "slack/SlackEventHandler.ts"
- "discord/DiscordAdapter.ts"
- "webhooks/WebhookServer.ts"
- path: "src/api"
purpose: "REST and GraphQL endpoints"
files:
- "rest/server.ts"
- "rest/routes/chat.ts"
- "rest/routes/sessions.ts"
- "rest/routes/skills.ts"
- "graphql/schema.ts"
- "graphql/resolvers/*.ts"
- path: "src/cli"
purpose: "CLI interface"
files:
- "index.ts"
- "commands/start.ts"
- "commands/config.ts"
- "commands/skills.ts"
- "modes/local.ts"
- "modes/remote.ts"
- "wizard/ConfigWizard.ts"
- path: "bin"
purpose: "CLI entry point for npx"
files:
- "cli.js"
- path: "tests"
purpose: "Test suites"
files:
- "unit/**/*.test.ts"
- "integration/**/*.test.ts"
- "e2e/**/*.test.ts"
- path: "scripts"
purpose: "Installation and utility scripts"
files:
- "install.sh"
- "uninstall.sh"
# ============================================================================
# DEPENDENCIES
# ============================================================================
dependencies:
production:
core:
- name: "@ruvector/wasm-unified"
version: "^1.0.0"
purpose: "WASM embeddings and attention mechanisms"
- name: "@ruvector/ruvllm"
version: "^2.3.0"
purpose: "LLM orchestration with SONA learning"
- name: "@ruvector/postgres-cli"
version: "^0.2.6"
purpose: "PostgreSQL vector storage"
infrastructure:
- name: "better-sqlite3"
version: "^9.0.0"
purpose: "Local SQLite storage"
- name: "ioredis"
version: "^5.3.0"
purpose: "Redis message queue"
- name: "fastify"
version: "^4.24.0"
purpose: "REST API server"
integrations:
- name: "@slack/bolt"
version: "^3.16.0"
purpose: "Slack bot framework"
- name: "discord.js"
version: "^14.14.0"
purpose: "Discord integration"
optional: true
cli:
- name: "commander"
version: "^12.0.0"
purpose: "CLI framework"
- name: "chalk"
version: "^4.1.2"
purpose: "Terminal styling"
- name: "ora"
version: "^5.4.1"
purpose: "Terminal spinners"
- name: "inquirer"
version: "^9.2.0"
purpose: "Interactive prompts"
development:
- name: "typescript"
version: "^5.3.0"
- name: "tsup"
version: "^8.0.0"
purpose: "Build tool"
- name: "vitest"
version: "^1.1.0"
purpose: "Testing framework"
- name: "@types/node"
version: "^20.10.0"
# ============================================================================
# NPX DISTRIBUTION
# ============================================================================
npx_distribution:
package_name: "@ruvector/ruvbot"
binary_name: "ruvbot"
commands:
- command: "npx @ruvector/ruvbot init"
description: "Initialize RuvBot in current directory"
- command: "npx @ruvector/ruvbot start"
description: "Start bot in local mode"
- command: "npx @ruvector/ruvbot start --remote"
description: "Start bot connected to remote services"
- command: "npx @ruvector/ruvbot config"
description: "Interactive configuration wizard"
- command: "npx @ruvector/ruvbot skills list"
description: "List available skills"
- command: "npx @ruvector/ruvbot skills add <name>"
description: "Add a skill from registry"
- command: "npx @ruvector/ruvbot status"
description: "Show bot status and health"
install_script:
url: "https://get.ruvector.dev/ruvbot"
method: "curl -fsSL https://get.ruvector.dev/ruvbot | bash"
environment_variables:
required:
- name: "SLACK_BOT_TOKEN"
description: "Slack bot OAuth token"
- name: "SLACK_SIGNING_SECRET"
description: "Slack app signing secret"
optional:
- name: "RUVBOT_PORT"
description: "HTTP server port"
default: "3000"
- name: "RUVBOT_LOG_LEVEL"
description: "Logging verbosity"
default: "info"
- name: "RUVBOT_STORAGE"
description: "Storage backend (sqlite|postgres|memory)"
default: "sqlite"
- name: "RUVBOT_MEMORY_PATH"
description: "Path for vector memory storage"
default: "./data/memory"
- name: "DATABASE_URL"
description: "PostgreSQL connection string"
- name: "REDIS_URL"
description: "Redis connection string"
- name: "ANTHROPIC_API_KEY"
description: "Anthropic API key for Claude"
- name: "OPENAI_API_KEY"
description: "OpenAI API key"
# ============================================================================
# CONFIGURATION FILES
# ============================================================================
config_files:
- name: "ruvbot.config.json"
purpose: "Main configuration file"
example: |
{
"name": "my-ruvbot",
"port": 3000,
"storage": {
"type": "sqlite",
"path": "./data/ruvbot.db"
},
"memory": {
"dimensions": 384,
"maxVectors": 100000,
"indexType": "hnsw"
},
"skills": {
"enabled": ["search", "summarize", "code", "memory"],
"custom": ["./skills/*.js"]
},
"integrations": {
"slack": {
"enabled": true,
"socketMode": true
}
}
}
- name: ".env"
purpose: "Environment variables"
example: |
SLACK_BOT_TOKEN=xoxb-xxx
SLACK_SIGNING_SECRET=xxx
SLACK_APP_TOKEN=xapp-xxx
ANTHROPIC_API_KEY=sk-ant-xxx
# ============================================================================
# MILESTONES
# ============================================================================
milestones:
- name: "M1: Core Bot"
date: "Week 2"
deliverables:
- "RuvBot class with lifecycle management"
- "Core entities (Agent, Session, Message)"
- "Basic unit tests"
- name: "M2: Infrastructure"
date: "Week 3"
deliverables:
- "Session persistence"
- "Message queue"
- "Worker pool"
- name: "M3: Learning"
date: "Week 4"
deliverables:
- "WASM embeddings working"
- "Vector memory with HNSW"
- "Semantic search"
- name: "M4: Skills & Integrations"
date: "Week 5"
deliverables:
- "Skill registry with built-in skills"
- "Slack integration working"
- name: "M5: API & CLI"
date: "Week 6"
deliverables:
- "REST API"
- "CLI with npx support"
- name: "M6: Production Ready"
date: "Week 8"
deliverables:
- "85%+ test coverage"
- "Performance benchmarks passing"
- "Published to npm"
# ============================================================================
# TEAM ALLOCATION
# ============================================================================
team_allocation:
agents:
- role: "architect"
tasks: ["p1-t2", "p3-t1", "p4-t1"]
focus: "System design and core architecture"
- role: "coder"
tasks: ["p1-t1", "p1-t3", "p2-*", "p3-*", "p5-*", "p6-*", "p7-*"]
focus: "Implementation"
- role: "tester"
tasks: ["p1-t5", "p8-*"]
focus: "Testing and quality assurance"
- role: "reviewer"
tasks: ["all"]
focus: "Code review and security"
# ============================================================================
# QUALITY GATES
# ============================================================================
quality_gates:
- name: "Unit Test Coverage"
threshold: ">= 80%"
tool: "vitest"
- name: "Type Coverage"
threshold: ">= 95%"
tool: "typescript --noEmit"
- name: "No High Severity Vulnerabilities"
threshold: "0 high/critical"
tool: "npm audit"
- name: "Performance Benchmarks"
thresholds:
- metric: "embedding_latency"
value: "< 50ms"
- metric: "vector_search_latency"
value: "< 10ms"
- metric: "message_throughput"
value: "> 1000 msg/s"