rdev/ai-lookup/services/sdlc.md
jordan 425ef0f806 feat: add SDLC orchestration - library, CLI, and API integration
Implements deterministic feature lifecycle management for agent-driven
development. Agents use the CLI in pods; operators control via REST API.

Library (internal/sdlc/):
- Feature lifecycle with 10 phases (draft → released)
- Classifier engine with priority-ordered rules
- Artifact tracking with approval workflow
- Task management within features
- YAML-based state persistence

CLI (cmd/sdlc/):
- init, state, next, feature, artifact, task, query commands
- --json flag for machine-readable output
- Runs inside project pods

API (21 endpoints under /projects/{id}/sdlc/):
- State: GET /state, GET /next
- Features: CRUD + transition/block/unblock
- Artifacts: approve/reject per type
- Tasks: add/start/complete/block
- Queries: blocked/ready/needs-approval

Architecture:
- Port: SDLCExecutor interface (internal/port/)
- Adapter: kubectl exec into pods (internal/adapter/kubernetes/)
- Service: pod resolution + logging (internal/service/)
- Handlers: 5 files under 500-line limit (internal/handlers/)

Also includes template upgrades (chassis framework, UI components,
OpenAPI helpers, backend/frontend guides) and component improvements.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-02 09:57:05 -07:00

3.6 KiB

SDLC Orchestration

Last Updated: 2026-02 Confidence: High (Steps 1-5 implemented, Step 6 pending)

Summary

Deterministic feature lifecycle management. Classifier engine evaluates priority-ordered rules to determine the next required action. State lives in .sdlc/ directory (git-tracked). Used by Claude agents in pods (CLI) and by rdev API (Go library + kubectl exec).

Key Facts:

  • 10 phases: draft → specified → planned → ready → implementation → review → audit → qa → merge → released
  • 24 classifier rules, first match wins, returns Classification with action + guidance
  • 7 artifact types: spec, design, tasks, qa_plan, review, audit, qa_results
  • rdev drives transitions on behalf of users (approve, reject, unblock, transition)
  • Multi-project: scoped by projectID (pod name), each pod has its own .sdlc/

File Pointers:

  • Library: internal/sdlc/ (types, state, feature, classifier, rules, config)
  • CLI: cmd/sdlc/ (cobra commands, --json output for API consumption)
  • Port (planned): internal/port/sdlc_executor.go
  • Adapter (planned): internal/adapter/kubernetes/sdlc_adapter.go
  • Handler (planned): internal/handlers/sdlc.go
  • Spec: docs/specs/sdlc-orchestration-system.md
  • Guide: .claude/guides/services/sdlc.md

Library Types

// internal/sdlc/classifier.go
type Classification struct {
    Feature      string       `json:"feature"`
    CurrentPhase FeaturePhase `json:"current_phase"`
    RuleMatched  string       `json:"rule_matched"`
    Action       ActionType   `json:"action"`
    Message      string       `json:"message"`
    NextCommand  string       `json:"next_command,omitempty"`
    OutputPath   string       `json:"output_path,omitempty"`
    TransitionTo FeaturePhase `json:"transition_to,omitempty"`
    TaskID       string       `json:"task_id,omitempty"`
}

CLI Commands

sdlc init                              # Create .sdlc/ structure
sdlc state [--json]                    # Full state dump
sdlc feature create <slug> <title>     # New feature
sdlc feature transition <slug> <phase> # Phase transition
sdlc feature block/unblock <slug>      # Blocker management
sdlc artifact create/approve/reject    # Artifact lifecycle
sdlc task add/start/complete/block     # Task lifecycle
sdlc next [--for <feature>] [--json]   # Classifier output
sdlc query blocked/ready/needs-approval # Queries

rdev API Endpoints (Planned - Step 6)

GET    /projects/{id}/sdlc/state
GET    /projects/{id}/sdlc/next
GET    /projects/{id}/sdlc/features
GET    /projects/{id}/sdlc/features/{slug}
POST   /projects/{id}/sdlc/features/{slug}/transition
POST   /projects/{id}/sdlc/features/{slug}/artifacts/{type}/approve
POST   /projects/{id}/sdlc/features/{slug}/artifacts/{type}/reject
POST   /projects/{id}/sdlc/features/{slug}/unblock
GET    /projects/{id}/sdlc/query/blocked
GET    /projects/{id}/sdlc/query/ready
GET    /projects/{id}/sdlc/query/needs-approval

Feature Gaps (Step 6)

Gap Description Effort
Port interface SDLCExecutor port for pod operations Small
Pod adapter kubectl exec wrapper for sdlc commands Medium
Service layer Business logic, validation, error mapping Medium
HTTP handlers REST endpoints under /projects/{id}/sdlc/ Medium
Cross-project view Dashboard of all project SDLC states Small
Webhook events SDLC phase transitions as webhook events Small