Skip to content

Conductor-E

Conductor-E is the backend API for the Engineering Rig. It provides the event store, assignment engine, and escalation logic that powers the automated development system.

Architecture

Conductor-E uses Clean Architecture — the Core project has zero external dependencies.

Runs as two components in the same Kubernetes namespace:

  • Automate-E instance — Discord bot, GitHub MCP tools, Claude Haiku (shared runtime)
  • Conductor-E API — .NET 10, Marten event store on PostgreSQL, Clean Architecture (this repo)
┌──────────────────── conductor-e namespace ────────────────────┐
│                                                               │
│  ┌──────────────────┐        ┌──────────────────┐            │
│  │ Conductor-E      │  HTTP  │ Conductor-E API  │            │
│  │ (Automate-E)     │───────▶│ (.NET 10)        │            │
│  │                  │        │                  │            │
│  │ Discord bot      │        │ Domain:          │            │
│  │ GitHub MCP (26)  │        │   Events (pure)  │            │
│  │ Claude Haiku     │        │   ReadModels     │            │
│  │ 1-year sub token │        │ Ports:           │            │
│  └──────────────────┘        │   IEventStore    │            │
│                              │   IIssueQuery    │            │
│                              │ UseCases:        │            │
│                              │   SubmitEvent    │            │
│                              │ Adapters:        │            │
│                              │   Marten → PG    │            │
│                              └────────┬─────────┘            │
│                                       │                      │
│                              ┌────────▼─────────┐            │
│                              │ PostgreSQL 16    │            │
│                              │ Marten schema    │            │
│                              └──────────────────┘            │
└───────────────────────────────────────────────────────────────┘

Tech Stack

Layer Technology
Architecture Clean Architecture (Core: zero deps)
API .NET 10, ASP.NET Core Minimal API
Event Store Marten 8.x on PostgreSQL 16
Projections Marten inline (IssueStatus, AgentStatus)
Stream Identity String-based (repo#issueNumber)
LLM Auth 1-year Max subscription OAuth token
Container Docker (buildah on Dell)
Orchestration Kubernetes (Dell k3s cluster)
Tests xUnit + Testcontainers PostgreSQL

Project Structure

src/
  ConductorE.Core/           ← ZERO external dependencies
    Domain/Events.cs          Pure event records
    Domain/ReadModels.cs      Pure read model records
    Ports/IEventStore.cs      Interfaces
    UseCases/SubmitEvent.cs   Business logic

  ConductorE.Api/             ← Frameworks & Drivers
    Program.cs                DI wiring, endpoints
    Adapters/MartenEventStore  IEventStore → Marten
    Adapters/MartenProjections Inline projections

tests/
  ConductorE.Core.Tests/      28 unit tests (FakeEventStore)
  ConductorE.Api.Tests/       11 integration tests (Testcontainers PG)
  • Architecture — Clean Architecture, event flow, projections, test coverage
  • Event Store — all 20 event types, payloads, recovery paths
  • API Reference — endpoints, request/response formats
  • Deployment — k8s manifests, secrets, building images

Status

Component Status
Event Store (Marten) Running
Inline Projections Running (IssueStatus, AgentStatus)
API Endpoints Running (6 endpoints)
PostgreSQL Running
Clean Architecture Implemented (Core: 0 deps)
Tests 39 passing (28 unit + 11 integration)
Coverage 70% Core line, 90% branch
Assignment Engine Events only (coordination loop not yet built)
CI/CD Manual (buildah on Dell)