Design-Notiz: egui als Menschmaschine-Dashboard â warum kausal, wo die Intent-Grenze liegt
Version: v0.1
Stand: 22. September 2026
Status: WORKING NOTE â Werkzeugwahl + Architektur-Grenze, keine Runtime-Invariante
Ort: Ansible-Crumbforest / docs
Anlass: egui.rs gefunden nach der Tokio-Erkenntnis; âhier hĂ€tten wir kausale Elemente im Kern"
Bezug: DESIGN-SILENCE-ESKALATION-UND-OUTBOX (2026-09-22), Memory: manifest-rust-debian-ohne-gpu,
hoerspiel-auf-zero-terminal-first, was-nicht-antwortet-ist-nicht-da
1. Der Kern in einem Satz
egui ist immediate-mode: ui = f(state). Es gibt keinen retained widget tree, kein verstecktes
GUI-GedĂ€chtnis, das vom Zustand abdriften kann â jeder Frame wird aus dem aktuellen Zustand neu
gerechnet. Das ist deine Anti-Drift-Doktrin in Bildschirmform: der Bildschirm kann nicht ĂŒber den
Zustand lĂŒgen, weil er ihn nicht speichert, sondern rendert. Wie --check --diff: die RealitĂ€t ist
das Gerenderte, nicht das Behauptete.
Ein Retained-GUI (Qt, Web-DOM) hĂ€lt einen zweiten Zustand neben der Wahrheit â und zwei ZustĂ€nde
driften. Genau die zweite AutoritÀt, die wir bei nginx-Zombie und Checkmk-:8000 weggerÀumt haben,
nur auf der Glasscheibe. egui hat sie strukturell nicht.
Dazu passt es ins #rust #core-Bild: pure Rust, native UND WASM aus einer Codebase, auf
glow/Software ohne GPU (Manifest: CPU-only an zwei GerÀteklassen). Nativ im Baumhaus, via
cdn.crumbforest.io/Proxy im Browser. Ein Dashboard, zwei Wege.
2. Die Grenze, die es zum Dashboard macht statt zur Waffe
Immediate-mode macht es verfĂŒhrerisch einfach, aus dem Fenster eine HandlungsautoritĂ€t zu machen:
if ui.button("Alarm quittieren").clicked() { state.alarm = false; } // â die Falle
FĂŒr die Menschmaschine gilt dieselbe Grenze wie beim Sensor:
Das Dashboard liest. Ein Klick erzeugt eine Absicht, nicht eine Wirkung.
Klick â Intent â Core deutet/ververtragt â Receipt/msg_id â neuer Zustand â nĂ€chster Frame zeigt ihn.
NieKlick â Zustand direkt.
Dieselbe Form wie Sensor misst â Raum deutet â Policy â Wirkung. Die kausalen Elemente gehören
in den Kern (questions-server/Receipt), nicht in die egui-Event-Handler â auch wenn immediate-mode
sie dir in die Hand drĂŒckt. Der Frame emittiert die Passkante, der Core entscheidet, der ĂŒbernĂ€chste
Frame zeigt das Ergebnis. Das Dashboard bleibt Zeuge, wird nie TĂ€ter.
3. Höhe im Dashboard-Zoo â egui ist kein Silo, es ist die Entscheidungs-Schicht
Heute gibt es schon mehrere Read-Surfaces, jede fĂŒr ein Subsystem:
| Dashboard | Antwortet auf | Art | Höhe |
|---|---|---|---|
| Checkmk (seeds-Proxy) | âist die Maschine gesund?" | retained, pollt Agents | Infra-Gesundheit |
| ninja.sh | âwerde ich gerade beklopft?" | Shell-Snapshot, flĂŒchtig, menschlich gelesen | Infra-Security-Moment |
| Ollama-UI | âlebt/antwortet das Modell?" | Dienst-eigen | Modell |
| SQL/processlist | âwas tut die DB jetzt?" | Dienst-eigen | Datenbank |
| egui-Menschmaschine | âist die Menschmaschine sicher? schweigt ein Baum? wer ist gezĂ€hlt?" | immediate-mode, Intent-fĂ€hig | Passkanten-Schicht |
Die ersten vier sind Infra-/Dienst-Höhe â sie sehen Bytes, Ports, Requests, Queries. Das
egui-Dashboard ist eine andere Höhe: es rendert den Zustand aus der Silence-Eskalation und den
Passkanten â was ein Rauchmelder, eine processlist und ein Request-ZĂ€hler nicht modellieren.
Es ersetzt die anderen nicht und saugt sie nicht auf. Es darf ihre Signale als Karten lesen
(ein ninja-Befund â34.126.104.0/24 hĂ€mmert 401" wird eine warning-Karte), bleibt aber Read+Intent â
es dropt keine IP, es schlÀgt das Droppen als Passkante vor, ein Mensch entscheidet.
4. Was es rendert â der Silence-Zustand der zwei BĂ€ume
- Zwei Heartbeats, Baum A (crumbforest/nullfeld) / Baum B (onezeromore): grĂŒn steht, grau
UNKNOWN_LIFE_SAFETY, rot gefallen. - Eskalations-Queue OZMâcrumbforest: warning â Ticket â 1/2/3 min â CRITICAL, als lebende Liste.
- Counts, offene Resonanz-Tickets, UNKNOWN-ZustĂ€nde â sichtbar, quittierbar als Intent.
- optional: eingelesene Fremdsignale (Checkmk-Alarm, ninja-/24-Befund) als warning-Karten.
5. Zwei ehrliche Vorbehalte
- Repaint drosseln auf dem Zero. Immediate-mode spinnt per Default Richtung 60 fps. Auf einer
Pi Zero event-driven zeichnen:ctx.request_repaint_after(âŠ), nur neu rendern, wenn Heartbeat/
Ticket sich Ă€ndert â sonst frisst das Fenster den Ruhestrom, den der Core braucht. - Terminal-first bleibt primĂ€r. Die Barrierefreiheits-/mouseless-Linie
(hoerspiel-auf-zero-terminal-first) heiĂt: das Dashboard ist ein Komplement fĂŒr Crew/Sysop,
nicht der Ersatz fĂŒr den ASCII-/Terminal-Weg der KrĂŒmel. egui hat AccessKit fĂŒr Screenreader â
gut â aber die KatzentĂŒr bleibt das Terminal.
Kurzform
egui ist die richtige Glasscheibe â weil immediate-mode/kausal, ohne zweite AutoritĂ€t.
Bedingung, die es wahr macht: die KausalitÀt bleibt im Kern, der Bildschirm emittiert Intents,
keine Wirkungen. Es ist kein weiteres Silo neben Checkmk/ninja/Ollama/SQL, sondern die Höhe darĂŒber:
wo der Mensch entscheidet. Zeuge, nie TĂ€ter.
rust #menschmaschine #kausal #niefertig
Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com