M15/M09-Control-Anbindung final FREIGEGEBEN: Doku-Statusabschluss (M15 FREIGEGEBEN, M15->M09 produktiv verifiziert, README + M09-Control-Gate aktualisiert, 20.08.2026)

This commit is contained in:
Rain Ocampo 2026-08-20 16:37:12 +00:00
parent ed77df65c3
commit 8f77230d6c
4 changed files with 70 additions and 14 deletions

View file

@ -42,10 +42,11 @@ Jede Änderung folgt dem **Notation-Format**: Autor (`Alice` / `Rain Ocampo`) +
| 12 | Backtesting | ✅ FREIGEGEBEN (backtesting:0.1.2) | 55012 (intern) |
| 13 | Optimization | ✅ FREIGEGEBEN (optimization:0.1.0) | 55013 (intern) |
| 14 | Notification | ✅ FREIGEGEBEN (notification:0.1.0) | 55014 (intern) |
| 1517 | … | ⬜ Platzhalter (alpine) | 5501555017 |
| 15 | Monitoring-Control | ✅ FREIGEGEBEN (monitoring-control:0.1.0) | 55015 (intern) |
| 1617 | … | ⬜ Platzhalter (alpine) | 5501655017 |
Details: siehe `modul-03-market-data.md``modul-14-notification.md` (Module 0314
vollständig implementiert und freigegeben). Modul-15 ff. folgen.
Details: siehe `modul-03-market-data.md``modul-15-monitoring-control.md` (Module 0315
vollständig implementiert und freigegeben). Modul-16 ff. folgen.
---
@ -90,3 +91,7 @@ Grund: README-Modultabelle aktualisiert — Modul-13 Optimization als FREIGEGEBE
Geändert von: Rain Ocampo
Datum: 20.08.2026
Grund: README-Modultabelle aktualisiert — Modul-14 Notification als FREIGEGEBEN eingetragen; Details-Link auf modul-14-notification.md erweitert.
Geändert von: Rain Ocampo
Datum: 20.08.2026
Grund: README-Modultabelle aktualisiert — Modul-15 Monitoring-Control als FREIGEGEBEN eingetragen; Details-Link auf modul-15-monitoring-control.md erweitert.

View file

@ -100,3 +100,47 @@ sowie `REJECTED`, `CANCELLED`, `FAILED`.
(kein öffentlicher Host-Port)
- Health/Readiness 200, PG + RabbitMQ erreichbar, Consumer bereit
- Env: `EXECUTION_MODE=PAPER`, `TRADING_ENABLED=false`, `DEFAULT_BROKER=paper`
## Geändert
```
Geändert von: Rain Ocampo
Datum: 20.08.2026
Grund: Modul-09-Doku um final freigegebenen Control-Gate-Status (M15→M09, Variante C) ergänzt.
Kernregel, Einbau-Punkt, Audit-Felder, Parameter, Live-E2E-Ergebnisse dokumentiert.
```
## Control-Gate (M15→M09, FREIGEGEBEN 20.08.2026)
**Status: FREIGEGEBEN / PRODUKTIV VERIFIZIERT** — Variante C (Event-Cache-Vorfilter + synchroner HTTP-Final-Check).
M15 (`Modul-15-Monitoring-Control`) ist die **autoritative Safety-/Trading-Control-Instanz**.
M09 sendet neue Orders (OPEN/INCREASE) **nur**, wenn M15 eindeutig `ENABLED` + frisch bestätigt.
### Kernregel
| State | OPEN/INCREASE | REDUCE/CLOSE/CANCEL |
|-------|---------------|---------------------|
| `ENABLED` | **ERLAUBT** | erlaubt |
| `PAUSED` | **VERBOTEN** | erlaubt |
| `HALTED` | **VERBOTEN** | erlaubt |
| `UNKNOWN` / M15-down / stale | **VERBOTEN (FAIL-CLOSED)** | erlaubt |
### Einbau-Punkt
Control-Check zwischen Schritt 4 (Order atomar in DB anlegen) und Schritt 5 (`_submit_and_track`).
Bei OPEN/INCREASE ohne Erlaubnis → Order als `FAILED`/`REJECTED` speichern, **nicht** senden.
`TRADING_ENABLED`-Flag bleibt unverändert (blockiert nur LIVE, nicht PAPER).
### Audit-Felder je Order
`action_type`, `control_status`, `control_state_version`, `control_expires_at`,
`control_audit_id`, `control_check_source` (`http`|`cache`|`bypass`|`none`).
### Parameter
- Final-Check-HTTP-Timeout: **500 ms**, Retry: **max 1** sofort.
- `expires_at`-TTL (M15): **500 ms**; Cache-TTL (M09): **5 s**.
- Kein Auto-Resume; kein "Senden ohne Check".
### Live-E2E (VPS, 20.08.2026) — alle Szenarien grün
S1 ENABLED 9/9 · S2 HALTED 9/9 · S3 PAUSED 4/4 · S4 Risikoabbau 4/4 · S5 M15-down 7/7 ·
S6 Cache-vs-Final 2/2 · S7 Race/TTL 2/2 · S8 Event-Cache verifiziert · S9 Recovery 3/3 ·
S10 Health/Security verifiziert · S11 Regression bestanden.
Details: siehe `modul-15-m09-anbindung-implementierung.md` (FREIGEGEBEN).

View file

@ -1,12 +1,12 @@
# Modul-15 → Modul-09 Control-Anbindung — Implementierung & Live-E2E
**Status: IMPLEMENTIERT + LIVE-E2E VERIFIZIERT (alle Szenarien grün).**
**Status: FREIGEGEBEN / PRODUKTIV VERIFIZIERT** (20.08.2026, Nutzer-Bestätigung).
**Datum:** 20.08.2026 · **Autor:** Rain Ocampo (Hermes)
**Gilt für:** Modul-09-Execution-Service ↔ Modul-15-Monitoring-Control
> **Freigabe-Hinweis:** Diese Doku dokumentiert den Implementierungs- und E2E-Stand.
> Die **finale Freigabe** (M15/M09 als FREIGEGEBEN markieren) erfolgt erst nach
> Nutzer-Bestätigung. M16 wird **nicht** begonnen.
> Die **finale Freigabe** (M15/M09 als FREIGEGEBEN markieren) erfolgte am **20.08.2026**
> durch Nutzer-Bestätigung. M16 wird **nicht** begonnen.
---
@ -139,12 +139,13 @@ REDUCE/CLOSE/CANCEL → control_check_source=bypass (erlaubt)
---
## 6. Offene Punkte / Freigabe
## 6. Freigabe-Status
- **Finale Freigabe** M15/M09 als FREIGEGEBEN markieren: **ausstehend** (Nutzer-Bestätigung).
- **FREIGEGEBEN / PRODUKTIV VERIFIZIERT** (20.08.2026, Nutzer-Bestätigung).
- M15/M09-Control-Anbindung ist **final freigegeben** — keine weiteren technischen Änderungen an M09/M15.
- M16: **nicht beginnen**.
- Credential-Cleanup: temporäre Forgejo-Tokens/Deploy-Keys → count=0 (siehe Git-Commit).
---
*Implementierung + Live-E2E abgeschlossen. Finale Freigabe steht aus.*
*Implementierung + Live-E2E abgeschlossen. Finale Freigabe erteilt (20.08.2026).*

View file

@ -1,6 +1,6 @@
# Modul-15: Monitoring-Control
**Status: IMPLEMENTIERT & E2E-verifiziert (noch NICHT freigegeben)** · Container `Modul-15-Monitoring-Control` · Image `monitoring-control:0.1.0`
**Status: FREIGEGEBEN** (20.08.2026) · Container `Modul-15-Monitoring-Control` · Image `monitoring-control:0.1.0`
## Zweck
Zentrale **technische Überwachung und Sicherheits-/Kontrollebene** des Trading-Systems.
@ -11,7 +11,7 @@ und PostgreSQL und leitet daraus deterministisch einen **globalen Trading-Status
**Restriktionen (Nutzer-Vorgabe):**
- **Keine KI/ML**, **keine Trading-Entscheidungen**, **keine Brokerorders**, **keine Shell-/Docker-Control-Rechte**.
- **FAIL-CLOSED:** Bei unklarem/kritischem Zustand wird Trading sicher blockiert (`HALTED`).
- M15 unerreichbar → M09 behandelt den Zustand als `HALTED` (siehe Design-Vorschlag M15→M09, noch offen).
- M15 unerreichbar → M09 behandelt den Zustand als `HALTED` (FAIL-CLOSED, siehe M15→M09-Anbindung, FREIGEGEBEN).
- **Keine Event-Schleifen:** Events nur bei Status-Änderung, dedupliziert.
- Container wird **nicht** automatisch neu gestartet/gekillt — M15 beobachtet und entscheidet Status.
- Port 55015 **nur Docker-intern** (`expose`, kein Host-Port).
@ -96,7 +96,7 @@ Events werden **nur bei Status-Änderung** publiziert (Idempotenz) — nie bei j
- Env per Compose, Zugangsdaten nur via ENV (`POSTGRES_*`, `RABBITMQ_*`), nie hart kodiert.
## Unit-Tests
- `tests/test_monitoring.py`: **18/18 grün** — deterministische Rules, FAIL-CLOSED (PG/RabbitMQ/Critical), stale, Queue-Consumer, Idempotenz, Audit genau einmal, Recovery, Reconnect, keine Secrets.
- `tests/test_monitoring.py`: **19/19 grün** — deterministische Rules, FAIL-CLOSED (PG/RabbitMQ/Critical), stale, Queue-Consumer, Idempotenz, Audit genau einmal, Recovery, Reconnect, keine Secrets, `state_version`-Inkrementierung.
## E2E-Verifikation (VPS, 20.08.2026) — 17 Szenarien
Alle 17 verifiziert (System-/Trading-Status via Loop, API `/control/trading-state` + `/monitoring/status` konsistent):
@ -124,8 +124,8 @@ Alle 17 verifiziert (System-/Trading-Status via Loop, API `/control/trading-stat
- **PG-Ausfall ⇒ `PERSISTENCE_FAILURE`**: ohne PG kann `control_event`-Audit nicht geschrieben werden (fachlich korrekt FAIL-CLOSED), aber Audit-Lücke im Fehlerfenster.
## Freigabe
- **Noch NICHT freigegeben.** Implementierung + E2E (17 Szenarien) grün. Freigabe ausstehend.
- M09-Anbindung **nicht** umgesetzt (Design-Vorschlag separat).
- **FREIGEGEBEN** (20.08.2026, Nutzer-Bestätigung). Implementierung + E2E (17 Szenarien) grün.
- M09-Anbindung **umgesetzt** (Variante C, Event-Cache + HTTP-Final-Check) — siehe `modul-15-m09-anbindung-implementierung.md`, FREIGEGEBEN.
## Nächste Module
- **Modul-16 ff.** — noch Platzhalter (alpine), NICHT gestartet.
@ -138,3 +138,9 @@ Datum: 20.08.2026
Grund: Modul-15-Monitoring-Control dokumentiert — implementiert + E2E-verifiziert (17 Szenarien grün),
Rules/API/Events/Audit/Security dokumentiert, NICHT FREIGEGEBEN.
```
```
Geändert von: Rain Ocampo
Datum: 20.08.2026
Grund: Modul-15-Monitoring-Control auf FREIGEGEBEN gesetzt (Nutzer-Bestätigung 20.08.2026).
M15→M09-Anbindung (Variante C) als umgesetzt/FREIGEGEBEN vermerkt; Unit-Tests 19/19.
```