Architecture Decision Records¶
The why behind Leoflow's design. ADRs are immutable once accepted.
- ADR 0001: Why Leoflow and Not Apache Airflow's KubernetesExecutor
- ADR 0002: Pod-per-Task Execution Model
- ADR 0003: DAG-as-Image with
leoflow.yamlAbstraction Layer - ADR 0004: Thin Static Go Agent in the Worker Container
- ADR 0005: Hybrid DAG Authoring with Compile-Time Parsing
- ADR 0006: XCom with Redis Backend
- ADR 0007: Airflow UI Compatibility for the MVP
- ADR 0008: JWT Authentication with OIDC-Ready Interface
- ADR 0009: Leader Election via Postgres Advisory Locks
- ADR 0010: Observability Stack from Day One
- ADR 0011: Test-Driven Development (Strict)
- ADR 0012: Code Quality Standards (Go Report Card A+ as Floor)
- ADR 0013: API Documentation via Scalar, Embedded in the Server Binary
- ADR 0014: Supply Chain Security Stack
- ADR 0015: Kubernetes as the Sole Container Execution Path (No Docker SDK)
- ADR 0016: Deferrable Tasks (Deferred to v0.3)
- ADR 0017: UI Static Asset Serving Strategy
- ADR 0018: UI Custom as Strategic North Star
- ADR 0019: Secret Encryption at Rest (Connections)
- ADR 0020: "Delete DAG" Clears History; Deregister Is Separate
- ADR 0021: Exposing Variables and Connections to Task Pods
- ADR 0022: Ephemeral Per-DAG-Run Staging Volume
- ADR 0023: DAG Authoring โ Config Binding and Override Layers
- ADR 0024: DAG Parsing via a Structural Shim (No Airflow SDK Dependency)
- ADR 0025: Embedded Monaco Web Editor for Leoflow Lite
- ADR 0026: Lite Datastore โ XCom on Postgres, No Redis
- ADR 0027: Product Editions โ Executors and Delivery
- ADR 0028: Release & Versioning for the Two Editions (One Tag, Two Co-Versioned Artifacts)
- ADR 0029: Lite Datastore Default โ Docker Postgres (Managed PG is the Opt-In)
- ADR 0030: Lite Datastore Auto-Selects โ Docker Postgres, or a Managed PG When Docker Is Absent
- ADR 0031: Scheduler Architecture โ Reconciliation Loop, Two-Phase Dispatch, Two-Layer Reaping
- ADR 0032: Task Return Values Are Not Logged โ Only Their Metadata Is
- ADR 0033: Release Flow โ RC Tags, E2E Gates, and Immutable Versions
- ADR 0034: Fan-in / map-reduce โ list-of-upstream parameter binding
- ADR 0035: Cloud connector auth โ keyless-first; Leoflow is not a key manager
- ADR 0036: Airflow 3.X runtime compatibility shim โ one model, one policy seam
- ADR 0037: Release version scheme โ skip alpha/beta, RC discipline from
v0.0.1