What's missing
Thinking about what to build next — and why it's not another clean architecture project.
Felix Wahl — .NET Backend Engineer focused on distributed systems — reliability, consistency, and the stuff nobody talks about until it breaks.
Notes from the work: reasoning behind technical decisions, half-baked thoughts, and what I'm currently building. Unpolished, mostly for my future self — public in case it helps someone. Some posts age badly. That's fine.
A .NET 10 import pipeline built around reliability: outbox pattern, strict domain state machine, idempotent processing, and a config-switchable dispatch strategy — every design decision focused on correctness and auditability.
Thinking about what to build next — and why it's not another clean architecture project.
Why Ingestor processes large import files in 500-line chunks instead of all-at-once — bounded blast radius, partial success semantics, and the tradeoffs that came with it.
Designing deterministic idempotency keys for an import pipeline — why SHA256 over file content, what the unique index enforces, and how HTTP clients benefit.
Why Ingestor starts with a database-backed outbox instead of RabbitMQ — and what the switchable dispatcher pattern makes possible later.
Why Ingestor uses a Result<T> type instead of exceptions at application boundaries — what it makes explicit, what it costs, and where exceptions still belong.
How an explicit domain state machine with nine states and an enumerated transition table prevents silent state corruption in a long-running pipeline.