Skip to content

[V0.9] FU2 Reiner Dart-Kern packages/la_core #59

Description

@Toqsick

Ziel

Probes, Parser und Doctor laufen ohne GUI; die Reinheit erzwingt der Build. Voraussetzung für den Wächter (#66) und den Doctor (#78).

Scope

Logik, die ohne GUI laufen muss (Probes, Parser, Doctor), liegt in einem Paket ohne Flutter-Abhängigkeit — die Reinheit erzwingt der Build, nicht eine Konvention. Voraussetzung für LB3 (Wächter) und ST3 (Doctor).

Spike (eine Session, zuerst):

  • dart compile exe packages/la_core/bin/la_probe.dart mit dem Dart aus dem Flutter-SDK, lokal und in CI
  • Messen: Binärgröße, Startzeit, Lauf ohne DISPLAY/WAYLAND_DISPLAY

Danach (Spec + Plan):

  • CommandHelper umziehen (heute lib/helpers/command_helper.dart, nur dart:io)
  • Logger-Shim ohne flutter/foundation (heute hängt lib/services/logger.dart:1 daran)
  • Probe-Vertrag: Probe, ProbeResult{level: ok|warn|crit|unknown, key, params, at}
  • Parser für free, df, uptime und ps aus system_stats_service.dart:32, linux_filesystem.dart, linux_system.dart:36ff, linux_process.dart:19ff
  • App bindet das Paket als path-Dependency ein; test als dev_dependency (begründete Ausnahme vom pub-Budget)

Nicht: linux.dart komplett zerlegen — umgezogen wird nur, was Probes brauchen (M5 geht schrittweise weiter).

Abnahme

  • flutter test und dart test in packages/la_core grün
  • la_probe --version läuft auf Zorin ohne Session-Variablen
  • build-deb.sh legt das Binary nach /usr/lib/linux-assistant/
  • Risiko geprüft (Verflechtung größer als gedacht): Fallback = Probes vorerst im App-Prozess, Wächter später

Stand 2026-09-30 (Branch feature/mla-gtk-scaffold, Draft-PR #89)

Spike und Probe-Vertrag sind im Branch umgesetzt und belegt (docs/mla-next/BASELINE.md §7, docs/mla-next/VERIFY.md Gate 1):

  • dart test in packages/la_core: 14/14 grün (Probe + Registry)
  • dart compile exe bin/la_probe.dart; Lauf mit env -u DISPLAY -u WAYLAND_DISPLAY: la_probe --version Exit 0
  • Messwerte (Zorin OS 18.1, Dart 3.13.4): Binärgröße 6 547 240 Bytes, Median-Startzeit 3 ms (5 Läufe)
  • Root-Gates unverändert grün: flutter test +184, flutter analyze 0 Findings, Python-Tests 49 OK
  • CI-Schritte für la_core sind im Branch eingerichtet

Offen: build-deb.sh legt das Binary ab · Parser-Umzug · Logger-Shim/CommandHelper-Umzug · App-Einbindung als path-Dependency · Risiko-Fallback prüfen.
Erste Abnahmezeile: dart test ist erfüllt; flutter test im reinen Dart-Paket ist nicht sinnvoll (bewusst ohne Flutter-Abhängigkeit) → Formulierung im Spec klären, das Kästchen bleibt daher offen.

Andockpunkte (geprüft 2026-09-30)

  • lib/helpers/command_helper.dart (nur dart:io) und lib/services/logger.dart:1 (importiert flutter/foundation, braucht einen Shim)
  • Parser: parseFreeOutput in lib/services/system_stats_service.dart:32, lib/linux/linux_filesystem.dart, parseUptime in lib/linux/linux_system.dart, ps-Parser in lib/linux/linux_process.dart
  • Im Branch feature/mla-gtk-scaffold bereits vorhanden: packages/la_core/bin/la_probe.dart, lib/src/probe.dart, lib/src/module_descriptor.dart, lib/src/module_registry.dart

Teststrategie

  • dart test in packages/la_core (Stand 2026-09-30: 14/14); Root-flutter test bleibt grün (+184)
  • Fixtures aus echten, geschwärzten Zorin-Ausgaben; die bestehenden Parser-Tests (test/system_parsers_test.dart) laufen unverändert gegen die umgezogenen Parser
  • dart compile exe und Lauf ohne DISPLAY/WAYLAND_DISPLAY in CI

Risiko & Fallback

Die Verflechtung von linux.dart mit der UI ist größer als gedacht → Spike zuerst, nur Probe-relevantes umziehen; Fallback: Probes vorerst im App-Prozess, Wächter später. Paketierung des CLI (dart compile exe im deb-Build: CI-Zeit, Binärgröße) — Spike-Messung: 6 547 240 Bytes, Median-Start 3 ms (docs/mla-next/BASELINE.md §7).

Abhängigkeiten

Blockiert durch: #41 (V0.8.5 abgeschlossen)
Blockiert: #60, #66, #78

Gates

  • Die fünf CI-Gates grün (tool/check-versions.sh, dart format, flutter analyze mit 0 Findings, flutter test, Python-unittest)
  • Abnahme auf dem Referenzsystem (Zorin OS 18.1) mit Beleg; bei UI oder Hotkey in Wayland und X11
  • Leak-Check auf Doku und Issue-Text (Muster aus release-plaene-v0.8.1-v0.8.5.md, Task 7): keine Hosts, IPs, Ports, /home-Pfade

Tier: Core · Größe: L · Spec + Plan · zuerst im Epic.
Quelle: Ausbauplan V0.8.6–V1.0, Epic FU (Teilplan FU2).
MLA-Next-Bezug: MLA-Next A3 #93 (Rest des Dart-Kerns).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    epic:fuEpic Fundament (V0.9)size:L4+ Sessionstier:coreCore = Release-Blocker auf dem Referenzsystem

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions