Tier-Strategie & Qualitätssicherung
BACON-AI Workshop: Architecture & Design Document — Port-Konvention v2.0 (Service-Projekt-Tier), Multi-Tenant-Architektur, BACON-AI Test-Framework und TAXD Dokumenten-Architektur.
1. Einführung: Warum eine Tier-Strategie?
In der professionellen Softwareentwicklung sind Produktivsysteme heilig. Kein Entwickler, kein Agent und kein Prozess darf direkte Änderungen an einem laufenden Produktivsystem vornehmen. Alle Änderungen durchlaufen eine kontrollierte Pipeline, in der sie Schritt für Schritt getestet und freigegeben werden.
Das Ergebnis: Jeder Port, jede URL, jede Datenbank erzählt ihre eigene Geschichte — keine Rätsel, keine Verwechslungen.
Die Lösung vs. Das Problem
Links: Jeder Port hat eine klare Bedeutung. Rechts: Ohne Konvention herrscht Chaos.
2. Die Port-Formel: Jede Ziffer hat Bedeutung
Port = [Service][Projekt##][Tier] — eine 4-stellige Zahl, die sich selbst erklärt.
Lesregel: „Dies ist ein [Service] für [Projekt], laufend in [Tier]“
⚠ v2.0 — Tier ist jetzt die letzte Stelle (nicht mehr die zweite). Alle alten Port-Nummern wurden nach diesem Schema aktualisiert.
| Position | Name | Werte | Bedeutung |
|---|---|---|---|
| 1. Ziffer | Service-Typ | 3–9 | Welche Art von Dienst? |
| 2.–3. Ziffer | Projekt | 01–99 | Welches Projekt? |
| 4. Ziffer | Tier | 0–9 | Welche Umgebung? (0=Prod, 9=Sandbox) |
2.1 Typ-Codes (1. Ziffer)
| Code | Dienst-Kategorie | Beispiele |
|---|---|---|
| 3 | MCP-Server, KI-Agent-Endpunkte | Governance-Nudge-Channel |
| 4 | API-Backends, REST-Dienste | Session-API, Run-API |
| 5 | Web-Frontends, SPAs, Dokumentation | BPMN-Editor, Docs-Seite |
| 6 | Monitoring, Observability, Analytics | Grafana, Health-Checks |
| 7 | WebSocket, Channels, Echtzeit | SSE-Endpunkte, Event-Streams |
| 8 | Odoo-Instanzen (ERP/Workflow) | Orchestrator, Rental |
| 9 | Overflow, temporär, experimentell | Schnelle Prototypen |
2.2 Tier-Codes (4. Ziffer — letzte Stelle)
| Code | Umgebung | Schutzlevel | Pflicht-Tests |
|---|---|---|---|
| 0 | PRODUKTION | Heilig — niemals direkt ändern | TUT + FUT + SIT + UAT + Regression + Perf |
| 1 | Hotfix / Notfall | Geschützt — Audit erforderlich | TUT + FUT + SIT (Minimum) |
| 2 | Staging / UAT | Kontrolliert — Benutzerabnahme | Vollständige Regression |
| 3 | QA / SIT | Verifiziert — Integrationstest | SIT (System-Integrationstest) |
| 4–8 | Entwicklung A–E | Offen — hier wird Code geschrieben | TUT während der Entwicklung |
| 9 | Sandbox | Frei — hier darf man alles kaputt machen | Keine Tests erforderlich |
2.3 Projekt-Nummern (2.–3. Ziffer)
| Nr. | Kategorie | Projektname | Primärer Dienst |
|---|---|---|---|
| 01 | ORCH | Workflow Orchestrator | Odoo (8xxx) |
| 02 | RENT | Odoo Rental Management | Odoo (8xxx) |
| 03 | MESH | Bacon Mesh | Web (5xxx) |
| 04 | LNCH | Bacon Launcher | Web (5xxx) |
| 05 | VOIC | Bacon Voice / TTS | API (4xxx) |
| 06 | WALL | Bacon Wallpaper | Web (5xxx) |
| 07 | DATV | Mouse-Click Datev | Web (5xxx) |
| 08 | KOFL | Kofali Contract Review | Web (5xxx) |
| 09 | BPMN | BPMN-AI AgenticFlow | Web (5xxx), API (4xxx) |
| 10 | BRST | Brainstorm Companion | Web (5xxx), WS (7xxx) |
| 11 | DASH | Server Dashboard | Web (5xxx), API (4xxx) |
| 12 | FLWS | Flowise (TNAS) | Web (5xxx) |
| 13 | MEMO | Memos | Web (5xxx) |
| 14 | N8N | n8n Automation | Web (5xxx) |
| 15 | TAXD | Tax Document Registry | API (4xxx), Web (5xxx) |
| 16–99 | — | (verfügbar) | — |
Konflikte vermeiden — diese Kombinationen NICHT verwenden
| Service | Projekt überspringen | Würde erzeugen | Konflikt mit |
|---|---|---|---|
| 5 (Web) | 17 | 5173 | Vite Dev-Server |
| 5 (Web) | 43 | 5432 | PostgreSQL |
| 5 (Web) | 90 | 5900 | VNC |
| 6 (Monitor) | 37 | 6379 | Redis |
| 3 (MCP) | 30 | 3306 | MySQL |
| 8 (Odoo) | 08 | 8080 | HTTP-Alt |
| 8 (Odoo) | 44 | 8443 | HTTPS-Alt |
Port-Beispiele auf einen Blick
3. Die Promotions-Pipeline: Code fließt nur in eine Richtung
Das Herzstück der Tier-Strategie ist die Promotions-Pipeline. Code bewegt sich immer von unten nach oben — niemals rückwärts. An jeder Grenze steht ein Test-Gate, das bestanden werden muss.
Die Promotions-Pipeline: Code fließt immer bottom-up. Jede Stufe hat ein Test-Gate.
3.1 Warum nur in eine Richtung?
- Sandbox → Dev: Ideen fließen frei
- Dev → QA: Nur getesteter Code wird weitergegeben
- QA → Staging: Nur integrierte Features erreichen die Benutzerabnahme
- Staging → Produktion: Nur vom Benutzer abgenommener Code geht live
4. Multi-Tenant-Architektur: Ein Container, viele Projekte
4.1 Das SAP-Mandanten-Modell
In SAP läuft eine Instanz auf einem Applikationsserver (Port) mit mehreren Mandanten (Clients). Jeder hat eigene Daten, teilt aber die Software. BACON-AI übernimmt dieses Modell für Odoo.
Ein Odoo-Container bedient mehrere Datenbanken (Mandanten) — genau wie SAP.
SAP-Begriffe → Odoo/BACON-AI
| SAP-Begriff | Odoo-Begriff | Unsere Konvention |
|---|---|---|
| Instanz (NN) | Odoo Server-Prozess | Port (z.B. 8901) |
| Mandant/Client (000–999) | Datenbank | z.B. orch-0001-sand |
| SAP-Router | Caddy Reverse Proxy | *.engine.bacon-ai.cloud |
4.2 URL-Routing
Vom Browser zur Datenbank: DNS Wildcard → Caddy → Odoo dbfilter → PostgreSQL.
4.3 Datenbank-Namenskonvention
Format: {projekt}-{nummer}-{tier}
| Datenbank | Projekt | Tier | URL |
|---|---|---|---|
| orch-0001-sand | Orchestrator | Sandbox | orch-0001-sand.engine.bacon-ai.cloud |
| rent-0001-sand | Rental | Sandbox | rent-0001-sand.engine.bacon-ai.cloud |
| orch-0001-dev | Orchestrator | Development | orch-0001-dev.engine.bacon-ai.cloud |
| rent-0001-dev | Rental | Development | rent-0001-dev.engine.bacon-ai.cloud |
| rent-0001-qa | Rental | QA/SIT | rent-0001-qa.engine.bacon-ai.cloud |
| rent-0001-stag | Rental | Staging/UAT | rent-0001-stag.engine.bacon-ai.cloud |
4.4 Warum Option B (ein Container pro Tier)?
| Kriterium | Option A: Ein Container pro Projekt | Option B: Ein Container pro Tier |
|---|---|---|
| Container-Anzahl | 10 Tiers x N Projekte = viele | 10 Tiers = maximal 10 |
| RAM-Verbrauch | ~300MB pro Container x N | ~300MB pro Tier = ~3GB gesamt |
| Port-Konflikte | 8902 = Rental-Sandbox oder Orch-Websocket? | Keine — Port = Tier |
| SAP-Bewährt | Nein | Ja — Mandanten-Modell seit 40 Jahren |
| Neue Projekte | Neuer Container + Port + Config | Nur neue Datenbank erstellen |
5. Das BACON-AI Test-Framework
5.1 Die vier Test-Stufen
Basierend auf der V-Modell-Methodik: Jede Planungsebene hat eine korrespondierende Teststufe.
| Test | Vollständiger Name | Was wird getestet? | Wann? | Wo? |
|---|---|---|---|---|
| TUT | Technical Unit Test | Einzelne Funktionen und Methoden | Bei jedem Speichern | Dev (Port 8401) |
| FUT | Functional Unit Test | Geschäftslogik liefert korrekte Ergebnisse | Vor PR-Erstellung | Dev (Port 8401) |
| SIT | System Integration Test | Mehrere Komponenten arbeiten zusammen | Nach Feature-Merge | QA (Port 8301) |
| UAT | User Acceptance Test | Ein Mensch bestätigt: Es funktioniert | Vor Produktion | Staging (Port 8201) |
Das klassische V-Modell: Jede Planungsebene wird durch eine korrespondierende Teststufe validiert.
5.2 Test-Stufen und Tier-Zuordnung
Jede Teststufe läuft in ihrer eigenen Tier-Umgebung.
Von der Entwicklung bis zur Produktion: Jede Stufe muss bestanden werden.
5.3 Anti-Dodge-Governance: KI-Agenten können nicht schummeln
7 Validatoren prüfen jede Schritt-Abschlussmeldung:
| Nr. | Validator | Prüfung | Blockiert bei… |
|---|---|---|---|
| 1 | Reflexions-Gate | Menschliche Schritte → Genehmigung | Genehmigung fehlt |
| 2 | Evidenz-Prüfung | Nachweise vorhanden | Leere Nachweise |
| 3 | Schema-Prüfung | output_schema validiert | Schema-Verletzung |
| 4 | Nachbedingungen | Pflichtfelder in Ergebnissen | Fehlende Pflichtfelder |
| 5 | Tier-Anforderungen | Control-Point spezifische Anforderungen | Fehlende Artefakte |
| 6 | Policy-Prüfung | Self-Annealing-Regeln (SA-001 bis SA-008) | Policy blockiert |
| 7 | Challenge-Tabelle | Spezifische Evidenz-Keywords pro Schritttyp | TUT ohne test_results |
Ein KI-Agent kann einen TUT-Schritt nicht als abgeschlossen markieren, ohne Test-Evidenz vorzulegen. Die Engine ist deterministischer Python-Code — sie kann nicht überredet oder ausgetrickst werden.
6. Alles zusammen: Die komplette Umgebungslandschaft
6.1 Workshop-Umgebungen (Stand: April 2026)
Alle Umgebungen auf dem Hostinger-Server (srv906866.hstgr.cloud):
| Tier | Port | Rental-Projekt | Orchestrator-Projekt |
|---|---|---|---|
| Sandbox | 8901 | rent-0001-sand.engine.bacon-ai.cloud | orch-0001-sand.engine.bacon-ai.cloud |
| Dev A | 8401 | rent-0001-dev.engine.bacon-ai.cloud | orch-0001-dev.engine.bacon-ai.cloud |
| QA/SIT | 8301 | rent-0001-qa.engine.bacon-ai.cloud | orch-0001-qa.engine.bacon-ai.cloud |
| Staging | 8201 | rent-0001-stag.engine.bacon-ai.cloud | orch-0001-stag.engine.bacon-ai.cloud |
Infrastruktur-Übersicht: Vom Internet über Caddy bis zu den Docker-Containern und PostgreSQL.
7. Kapazität und Skalierung
| Dimension | Kapazität | Bei 100K Flows |
|---|---|---|
| Projekte pro Tier | Unbegrenzt (PostgreSQL-Limit) | ~50 Projekte |
| Container pro Server | ~10 (einer pro Tier, ~300MB je) | ~3GB RAM gesamt |
| Datenbanken pro Container | Unbegrenzt | Hunderte |
| URLs pro Tier | Eine pro Projekt (Wildcard-DNS) | Automatisch |
| Port-Nummern | 99 Projekte x 10 Tiers = 990 | 0,5% genutzt |
8. Zusammenfassung: Die drei Säulen
Die drei Säulen der BACON-AI Tier-Strategie: Port-Konvention, Multi-Tenant und Test-Framework.
Port-Konvention
- SAP-inspiriert
- Typ = Dienst-Art
- Projekt = Anwendung
- Tier = Umgebung
Multi-Tenant
- SAP-Mandanten-Modell
- Ein Container pro Tier
- Viele Datenbanken
- URL-basiertes Routing
Test-Framework
- TUT = Technisch
- FUT = Fachlich
- SIT = Integration
- UAT = Benutzer
- Anti-Dodge Governance
Kernprinzipien
- Produktion ist heilig — keine direkten Änderungen, nur getestete Transporte.
- Jede Umgebung hat eine feste Identität — Port-Nummer ändert sich nie.
- Eine Nummer sagt alles — Port 8301 = Odoo / QA / Orchestrator, immer.
- Die Pipeline wird von der Infrastruktur erzwungen — nicht von der Disziplin der Entwickler.
- KI-Agenten können nicht schummeln — deterministische Validatoren in der Engine.
- Das Mandanten-Modell skaliert — bewährt bei SAP über 40 Jahre weltweit.
6. Anwendungsbeispiel: TAXD (Tax Document Registry)
Erste vollständige Implementierung der Port-Konvention v2.0 als Referenz-Architektur. TAXD (Projekt 15) verwaltet Steuerdokumente für Colin Bacon (DE ESt 2023/2024, UK SA) in einer strukturierten Datenbank mit graphähnlicher Dokumenten-Relationstabelle und Google-Sites-Frontend.
6.1 Port-Zuordnung (Konvention v2.0)
| Port | Formel | Dienst | Status |
|---|---|---|---|
| 4159 | API(4) + TAXD(15) + Sandbox(9) | Flask REST API — 127.0.0.1:4159, Hostinger | ✅ Aktiv |
| 4154 | API(4) + TAXD(15) + Dev(4) | API, Dev-Tier | Geplant |
| 4150 | API(4) + TAXD(15) + Prod(0) | API, Produktions-Tier (alle Gates) | Geplant |
| 5159 | Web(5) + TAXD(15) + Sandbox(9) | Web-Dashboard / Google Sites | Geplant |
6.2 Systemarchitektur
6.3 Datenmodell — 5 Tabellen
6.4 Dokumenten-Graph (rekursives CTE)
6.5 Sicherheitsmodell
| Schicht | Mechanismus | Zugang |
|---|---|---|
PostgreSQL bacon_tax | Lokaler Socket, kein externer Port | Nur localhost |
| Flask API Port 4159 | host=127.0.0.1 — niemals 0.0.0.0 | Tailscale via Caddy |
| Google Sites | Seiten-spezifische Google-Berechtigungen | Böhm sieht nur seine Sektion |
| Odoo Port 8069 | PoC — separat, kein gemeinsamer Code | Zu härten (nächste Phase) |
📄 Wissensdatenbank: docs/DE-TAX-KNOWLEDGE-BASE.md —
Registry: docs/DE-TAX-DOCUMENT-REGISTRY.json