# STATUS Stand: 2026-09-11 ## Aktuelle Phase **Phase 1 – Fundament und Netzwerkbasis** unter der **Build-first-Strategie (ADR-0008)**: Die Phasen 1–5 werden plattformneutral vollständig gebaut; Gate 0 und alle renderer-nahen Abnahmen werden gesammelt in einem späteren Windows-Durchlauf validiert. Auftraggeber-Freigabe für die Reihenfolgeabweichung vom 2026-09-11, dokumentiert in ADR-0008 gemäß PLAN.md §1. ## Letzter grüner Commit - siehe `git log` und `TEST_REPORT.md` – jede Etappe endet mit grünem pytest und Ruff und wird sofort nach Forgejo gepusht. ## Bestandene Gates - keine; **Gate 0 bleibt offen** bis zum Windows-Hardware-Durchlauf (Testplan in ADR-0008) ## Arbeitsweise (ADR-0008) - Build-first: plattformneutral fertig bauen, Hardware-Validierung gesammelt am Ende (Windows-Durchlauf). - Kein Gate wird als grün gemeldet, solange der Windows-Durchlauf offen ist. - Renderer-Nähe ausschließlich über den Backend-Vertrag (§12.6); Korrekturen bleiben lokal im Adapter. ## Laufende Arbeit Phase 0 (abgeschlossen, soweit ohne Hardware möglich): - [x] Repository, Pflichtdokumente, ADRs 0001–0003 - [x] GStreamer-Pin 1.28.6, Kernpakete, Control Core, Renderer-Spike - [x] Beispielplugins (Passthrough, Gaussian Blur mit 3 AQ-Varianten), Tools - [x] 121 Unit-/Integrationstests grün, Ruff grün (Belege: TEST_REPORT.md) Phase 1 (im Bau): - [x] IPC-Verbindung Control Core ↔ Renderer: Handshake (hello/welcome), vollständiger Snapshot nach Verbindung, Deltas mit monotoner Revision, Command-Acks idempotent über message_id, Heartbeat 500 ms in beide Richtungen, Re-Sync nach Reconnect, ausschließlich Loopback (§6.2) - [x] SQLite-Persistenz (WAL, Migrationen mit Backup, Integritätscheck, Projekt-/Einstellungs-/Plugin-Status-CRUD, §24) - [x] Launcher/Supervisor: echte Kindprozesse, portable Umgebung, freie Portwahl, kontrolliertes Beenden (terminate→kill) mit Recovery- Markierung, Restart-Policy mit Crashloop-Erkennung (§6.1A, §26.2, §26.4) - [x] Cluster-Nachrichtenhülle: Pflichtfelder, Sequenzen, Revisionen, Trace-ID, Idempotenz-Tracker mit vorwärts-only-Statuskette (§6.5) - [x] Node-Registry: online/degraded/stale/offline über Schwellen, UI-Kategorien discovered/paired/unknown/incompatible/offline, Doppel-Node-ID-Fehler, IP-Wechsel erhält node_id (§6.3, §6.5) - [x] Paarung: kurzlebige PIN (TTL 120 s, Versuchslimit), sichtbarer Fingerprint, Token nur als Hash mit Scopes read/control/content_sync/ admin, Ablauf und sofortiger Widerruf (§6.3, §27.1, ADR-0010) - [x] Discovery-Modell: mDNS-Service _hmsmedia._tcp.local. mit TXT ohne Secrets, Capability-Digest, persistente manuelle Fallback-Liste (ADR-0009) - [x] Node-Identität + Rollen in der App-Verkabelung: Control Core lädt persistente node_id (Launcher/Produktion) bzw. Dev-ephemeral, Registry registriert die eigene Node, Endpunkte /system/identity und /cluster/nodes nach UI-Kategorien (§3.6, §6.3, §27.1) - [ ] mDNS-Echtnetz-Betrieb mit zeroconf auf Zielsystemen (Modell fertig; Multicast-Test gehört zu Gate 1, ADR-0009) ## Nächste drei Aufgaben 1. Phase-2-Domänenmodell: Composition/Layer/MediaAsset in hms_domain (§10.1) 2. Renderer-IPC-Handshake an Control Core anbinden (Snapshot/Delta-Fluss) 3. mDNS-Echtnetz mit zeroconf auf Zielsystemen + Gate-1-LAN-Test vorbereiten ## Ausstehende Hardware-Validierung (ADR-0008 Testplan) Nur auf echtem Windows mit GPU messbar; nichts davon gilt als erledigt: - D3D11-Hardwaredecode aktiv; D3D11Memory durchgängig ohne CPU-Rundweg - Framezeit p50/p95/p99; DMX → sichtbarer Frame p95 ≤ 2 Frames - Adaptive-Quality-Wechsel ohne Stall; Golden Images; Shader-Compile auf GPU - Portable Onefolder-Ausgabe auf sauberem Rechner (§29.6) - Rust-Renderkern-Kompilierung und GStreamer-Plugin-Bindung (ADR-0004) ## Bekannte Blocker - Windows-Referenzhardware fehlt in der Entwicklungsumgebung (Linux-Container, CPU-only) – Kernblocker, durch ADR-0008 gemanagt. - Rust-Toolchain (cargo) fehlt im Container: Rust-Quellcode wird entwickelt, das Kompilierungsgate erfolgt im Windows-Durchlauf. - pnpm fehlt im Container: wird für Phase 5 über Node-Corepack aktiviert (kein Installationsblocker).