rdev/ai-lookup/features/build-orchestration.md
jordan c59d348040 chore: prepare for composable monorepo template implementation
This commit captures the current state before implementing the composable
monorepo template system. Key changes included:

Infrastructure:
- Add CockroachDB provisioner adapter for database provisioning
- Add Redis provisioner adapter for cache provisioning
- Add build events system with PostgreSQL storage
- Add WebSocket endpoint for real-time build progress

Code agent improvements:
- Fix Claude Code adapter to use default allowed tools instead of dangerously-skip-permissions
- Add context-aware stream closing for cancellation support
- Improve parser tests for edge cases

Build system:
- Add build event constants and metrics
- Remove deprecated git_operations.go (replaced by pod_git_operations.go)
- Add rollback logic for multi-step provisioning operations

Documentation:
- Add composable-monorepo feature documentation
- Add DNS/Cloudflare service documentation
- Update deployment and troubleshooting guides

Cookbooks:
- Add fullstack-app cookbook
- Refactor landing-test with shared library

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 11:39:28 -07:00

2.9 KiB

Build Orchestration

Last Updated: 2026-01-27 Confidence: High

Summary

Build orchestration enables structured build specs for bot-driven development. Bots submit build requests with prompts and templates via POST /project/{name}/build, workers execute Claude Code, and callbacks notify completion. All builds are recorded in the build_audit table for observability.

Key Facts:

  • BuildSpec: prompt (required), template, variables, auto_commit, auto_push, callback_url
  • BuildResult: success, output, error, commit_sha, files_changed, duration_ms, artifacts
  • Builds enqueued as work tasks for the worker pool
  • Auto-commit/push triggers Woodpecker CI pipeline
  • Callback URL receives completion notification with full BuildResult
  • Complete audit trail in build_audit PostgreSQL table

File Pointers:

  • Domain: internal/domain/build.go (BuildSpec, BuildResult, BuildAuditEntry)
  • Port: internal/port/build_audit.go (BuildAudit interface)
  • Adapter: internal/adapter/postgres/build_audit.go
  • Service: internal/service/build_service.go
  • Handler: internal/handlers/builds.go (StartBuild, ListBuilds, GetBuild)
  • Handler: internal/handlers/create_and_build.go (CreateAndBuild)
  • Executor: internal/worker/build_executor.go (BuildSpec→AgentRequest translation)
  • Git: internal/worker/pod_git_operations.go (post-build commit/push via kubectl exec)
  • Migration: internal/db/migrations/012_worker_registry.sql (build_audit table)

API Endpoints

Method Path Description
POST /projects/{id}/builds Start a build, returns task_id
GET /projects/{id}/builds List builds for project
GET /builds/{taskId} Get build status and result
POST /project/create-and-build Create project + start build in one call

Orchestration Flow

  1. Bot calls POST /projects/{id}/builds with BuildSpec (prompt, template, auto_commit, auto_push)
  2. BuildService validates spec (prompt required), creates WorkTask with build spec, enqueues
  3. Creates BuildAuditEntry with status "pending"
  4. Returns task ID immediately
  5. WorkExecutor poll loop claims task from queue
  6. BuildExecutor builds AgentRequest, calls CodeAgent.Execute() in pod via kubectl exec
  7. Post-build phase: If auto_commit, PodGitOperations runs git add/commit/push in pod
    • Git operations are programmatic, not LLM-driven (deterministic)
  8. WorkExecutor reports completion with BuildResult (includes commit_sha, files_changed)
  9. Audit entry updated, callback URL notified

Build Audit Statuses

  • pending - enqueued, waiting for worker
  • running - worker executing
  • completed - finished successfully
  • failed - execution failed
  • cancelled - cancelled before completion