Phase 0: Repository-Initialisierung nach Bauplan v1.2

- Struktur gemäß §8 (Eigentumsgrenzen), PLAN.md als normative Basis
- Pflichtdokumente: STATUS.md, ERRORS.md, TEST_REPORT.md, CHANGELOG.md, ADRs
- ADR-0001 Python 3.13-Pin, ADR-0002 GStreamer 1.28.6-Pin (Windows),
  ADR-0003 IPC TCP+MessagePack v1
- Kernpakete: hms_protocol, hms_domain, hms_parameter, hms_artnet,
  hms_adaptive, hms_capabilities, hms_plugin_sdk
- Renderer-Spike: D3D11-Primärpfad + Dev-GL-Pfad (§36 Nr. 4-5)
- Control Core: FastAPI REST + WebSocket (§36 Nr. 9)
- Beispielplugins: Passthrough + Gaussian Blur (3 Adaptive-Quality-
  Varianten, HLSL/GLSL/GLES)
- Tools: Art-Net-Emulator, Fixture-Generator (Master32/Layer64-CSV),
  Capability-Probe
- JSON-Schemas: IPC, Plugin, Projekt, Cluster
- 121 Unit-/Integrationstests grün, Ruff grün

Gate 0 bleibt offen: Hardwaremessungen nur auf echter Windows-Referenz-
hardware gültig (§29.7, §33).
This commit is contained in:
HMS MediaEngine Agent
2026-09-11 00:36:59 +02:00
commit 0922cc1d68
133 changed files with 7939 additions and 0 deletions
View File
+27
View File
@@ -0,0 +1,27 @@
# ADR-0001: Python-Version pinnen
- **Status:** Angenommen
- **Datum:** 2026-09-10
- **Phase:** 0
- **Bauplan:** §7 („Python, unterstützte Version exakt pinnen“)
## Entscheidung
Der Control Core und alle Python-Pakete pinnen **Python 3.13** (`requires-python = "==3.13.*"` in `pyproject.toml`).
## Kontext
Der Bauplan verlangt eine exakt gepinnte Python-Version. 3.13 ist die aktuelle stabile Version mit ausgereiftem `asyncio`, breitem Wheel-Support für FastAPI/Pydantic und PyGObject-Kompatibilität für die GStreamer-Bindings.
## Alternativen
- 3.12: kein messbarer Vorteil, kürzeres Supportfenster als 3.13.
- 3.14: bei Projektstart zu neu für stabile Binärwheels aller Abhängigkeiten.
## Folgen
- uv-Lockfile und CI pinnen 3.13; Versionssprünge erfolgen bewusst per ADR-Änderung.
## Freigabe
- Auftragsvorgabe „exakt pinnen“ aus PLAN.md §7; Umsetzung ohne Abweichung.
+28
View File
@@ -0,0 +1,28 @@
# ADR-0002: GStreamer-Pin für Windows
- **Status:** Angenommen (Bündelungsumfang folgt nach Phase-0-Build)
- **Datum:** 2026-09-10
- **Phase:** 0
- **Bauplan:** §7.1, §30.2
## Entscheidung
Für die portable Windows-Ausgabe wird **GStreamer 1.28.6 (MSVC, x86_64)** gebündelt (Runtime-Paket, exakt manifestierte Plugin-Untermenge). Details: `build/windows/GSTREAMER.md`.
## Kontext
Die 1.28-Serie ist die aktuelle stabile Release-Serie mit gepflegtem D3D11-Stack (`d3d11h264dec`, `d3d11convert`, `d3d11compositor`, `d3d11videosink`). Version ermittelt von https://gstreamer.freedesktop.org/download/ (Stand 2026-09-10).
## Alternativen
- Ältere LTS-Releases: keine Vorteile, ältere D3D11-Elemente.
- Eigener GStreamer-Build: höherer Wartungsaufwand, für Phase 0 nicht nötig.
## Folgen
- Phase 0 prüft die Bündelung in einer sauberen Windows-VM ohne installiertes GStreamer (§29.6); Pluginliste und SHA-256 werden nach dem ersten Onefolder-Build manifestiert.
- Muss mit der Packaging-Entscheidung (ADR-0005 offen) zusammenarbeiten.
## Freigabe
- Entspricht PLAN.md §7.1 (Version pinnen); Bündelungsumfang wird nach dem ersten Portabilitätstest ergänzt.
+23
View File
@@ -0,0 +1,23 @@
# ADR-0003: IPC lokales TCP mit length-prefixed MessagePack
- **Status:** Angenommen (Bauplan-Vorgabe §6.2; umgesetzt in `packages/protocol`)
- **Datum:** 2026-09-10
- **Phase:** 0
## Entscheidung
Control Core ↔ Renderer kommunizieren über lokales TCP auf `127.0.0.1` mit length-prefixed MessagePack (4-Byte-Big-Endian-Länge, Protokollversion 1, Idempotency-Keys; Heartbeat ab Phase 1). JSON ausschließlich im Debugmodus.
## Alternativen
- Named Pipes/Unix Sockets: plattformspezifische API-Unterschiede, kein Nutzen im Spike.
- JSON-Lines: langsamer und größer; nur für Debug erlaubt (§6.2).
## Folgen
- `hms_protocol` definiert Envelope, Framing und Idempotency-Registry mit Unit-Tests.
- IPC bindet niemals an eine externe Netzwerkschnittstelle (§6.2).
## Freigabe
- Direkte Umsetzung der normativen Vorgabe PLAN.md §6.2.
+17
View File
@@ -0,0 +1,17 @@
# Architecture Decision Records
Vorlage: `_template.md`. Nummerierung fortlaufend. Abweichungen vom Bauplan nur mit ADR und Freigabe (PLAN.md §1).
## Angenommen
- ADR-0001: Python-Version-Pin 3.13
- ADR-0002: GStreamer-Pin 1.28.6 (Windows)
- ADR-0003: IPC lokales TCP + length-prefixed MessagePack v1
## Offen (Phase 0 entscheidet, §32 / §7.1)
- ADR-0004: Nativer Renderkern Rust vs. C++, eigenständige Bridge vs. GStreamer-Plugin
- ADR-0005: Packaging Nuitka vs. PyInstaller (Onefolder)
- ADR-0006: Frontend React vs. Svelte
- ADR-0007: Typprüfung mypy vs. pyright
- weitere gemäß Bauplan §32 (Persistenz, Preview, Show-Codec, Ownership, Display-Abstraktion, Adaptive-Quality-Policy, Discovery, Clusterprotokoll, Paarung/TLS, Clock-Sync, UI-Design-Tokens)
+30
View File
@@ -0,0 +1,30 @@
# ADR-NNNN: <Titel>
- **Status:** Vorgeschlagen | Angenommen | Ersetzt (durch ADR-xxxx) | Verworfen
- **Datum:** YYYY-MM-DD
- **Phase:** (z. B. Phase 0)
- **Betroffene Bauplan-Abschnitte:** (z. B. §7.1, §31 Phase 0)
## Kontext
Welches Problem, welche Optionen, welche Messungen/Zahlen liegen vor?
## Entscheidung
Die gewählte Option, klar und eindeutig formuliert.
## Alternativen
Die geprüften Alternativen und warum sie verworfen wurden.
## Folgen
Positiv, negativ, Risiken, Migrationspfad, Testfolgen.
## Messwerte / Nachweise
Verweis auf TEST_REPORT.md oder Rohdaten, die die Entscheidung stützen.
## Freigabe
Auftraggeber: (Freigabe erforderlich gemäß PLAN.md §1)