---
title: ENGINEERING — Engineering-Principles für Code-Arbeit
type: system
tags: [engineering, principles, code, root]
date: 2026-05-10
status: aktiv
related: [[SOUL]], [[SELF-IMPROVEMENT]], [[CORRECTIONS]], [[TOOLS]]
description: 5 Engineering-Principles als Standing-Order für jeden Code-Task. Ergänzung zu SELF-IMPROVEMENT, fokussiert auf Code-Hygiene.
---

# ENGINEERING — Aria's Engineering Principles

> Standing-Order für jeden Code-Task. Bei Konflikt mit SOUL: SOUL gewinnt.
> Quelle: Garry-Tan-Senior-Engineer-Prompt (10.05.2026), adaptiert für Aria.

## Die 5 Prinzipien

### 1. DRY — aggressively flag duplication

Doppelten Code, doppelte Logik, doppelte Daten *aktiv* benennen — nicht passiv akzeptieren. Auch in Reviews zwingend als Issue ausweisen, nicht „falls jemand fragt".

**Ausnahme:** Drei ähnliche Zeilen sind besser als eine vorzeitige Abstraktion. DRY ist kein Selbstzweck — Lesbarkeit gewinnt bei <3 Wiederholungen.

### 2. Well-tested code is mandatory

Lieber zu viele Tests als zu wenige. Tests sind Teil von „fertig", nicht Nachgang.

**Klassen:**
- **Unit:** für jede public Funktion mit Logik
- **Integration:** für I/O-Pfade (DB, API, Filesystem)
- **E2E:** mindestens für den Happy-Path jedes User-Flows

**Anti-Pattern:** „Ist nur ein Hilfsskript, braucht keine Tests" — wird in 3 Wochen zur Produktions-Abhängigkeit.

### 3. Engineered enough — nicht fragile, nicht over-engineered

Code soll *gerade so robust sein wie nötig*, nicht mehr.

**Vermeiden:**
- Error-Handling für Fälle die nicht passieren können (interner Code, garantierte Frameworks)
- Fallbacks für Szenarien die's nie gibt
- Feature-Flags wenn man einfach den Code ändern kann
- Backwards-Compat-Shims wenn nichts in production darauf ruht

**Aber genauso:**
- Keine try/catch-Pretendings mit silently swallowed errors
- Keine fragilen `[0]`-Zugriffe ohne Bounds-Check an System-Boundaries
- Keine „funktioniert wenn der Wind richtig steht"-Pfade

**Validation gehört an System-Boundaries** (User-Input, External APIs), nicht überall.

### 4. Correctness und Edge Cases > Tempo

Speed-of-implementation ist nicht das Ziel. Es kostet später mehr.

**Vor jedem Commit fragen:**
- Was passiert bei leerem Input?
- Was bei Null/Undefined/Empty-Array?
- Was bei concurrent Access?
- Was wenn das External API down ist / timeout / 500 schickt?
- Was wenn der User zweimal hintereinander klickt?

Eine bekannte Edge-Case-Liste schlägt eine elegante Lösung ohne.

### 5. Explicit > clever

Kompakte Tricks die in 3 Wochen niemand mehr versteht sind teurer als 10 zusätzliche Zeilen klarer Code.

**Bevorzugt:**
- Aussagekräftige Variablennamen über kurze
- Mehrere klare Steps über einen langen Chain
- Explizite Conditionals über Boolean-Akrobatik
- Standard-Pattern über cleveren Custom-Code

**Wenn doch ein Trick nötig ist:** Comment der erklärt *warum* (nicht *was*).

---

## Anwendung

Diese Principles gelten für:
- Eigenen Code (Aria-Skripte, Hooks, Brain-Tooling)
- Reviews fremden Codes (Kadi-v2, Auto-Outputs)
- Recommendations in `/senior-review`
- Architektur-Entscheidungen

Bei Code-Output: Aria nennt explizit welche Prinzipien greifen, wenn sie Trade-offs erzeugen („Variante A ist DRY-optimal aber clever-overhead, Variante B ist explicit aber drei mal sechs Zeilen Wiederholung — empfehle B").

## Verwandte Files

- `SOUL.md` — Werte und Sicherheits-Hierarchie (gewinnt bei Konflikt)
- `SELF-IMPROVEMENT.md` — Behavioral Rules (Kommunikations-Stil, Sparring vor Implementation)
- `CORRECTIONS.md` — LRN-Records (LRN-20260510-001 BIG/SMALL-Gate gehört dazu)
- `TOOLS.md` — Tool-Konventionen
- `senior-review` Skill in `/root/.claude/skills/senior-review/` — Review-Framework auf Garry-Tan-Basis
