Skip to content

[Next 0.0.2] A3 la_core-Rest: Parser, DI, Event-Vertrag, Flutter-Adapter #93

Description

@Toqsick

Scope

Fortsetzung von #59 (Headless-Probe) und #60 (Registry), deren Kern im Branch feature/mla-gtk-scaffold umgesetzt und belegt ist (Gate 1). Rest für den reinen Dart-Kern packages/la_core ohne Flutter-/GTK-Typen:

  • Parser/Probe-Modelle für free, df, uptime, ps (Quellen: lib/services/system_stats_service.dart, lib/linux/linux_filesystem.dart, lib/linux/linux_system.dart, lib/linux/linux_process.dart)
  • Dependency Injection und Event-Vertrag
  • Flutter-Adapter (path-Dependency) für die bestehende App
  • Deskriptor: id, titleKey, viewId, kind, capabilities, requires, probeIds, actionIds, subscribedTopics; View-Factories gehören in die UI-Adapter

Nicht: linux.dart komplett zerlegen; dynamische Fremdcode-Plugins.

Abnahme

  • Parser mit Fixtures aus echten, geschwärzten Zorin-Ausgaben; dart test grün; die bestehenden Flutter-Parser-Tests (test/system_parsers_test.dart) laufen unverändert — erledigt in Schnitt 1 (94b5ef8/755665c/080becf); test/system_parsers_test.dart byte-identisch, la_core-Tests grün.
  • DI und Event-Vertrag: Tests für Registrierung, Auflösung und Fehlerfälle — Schnitt 2: command_runner_test.dart, cpu_info_test.dart, event_bus_test.dart, probe_registry_test.dart — la_core 30 → 52 Tests.
  • Flutter-Adapter bindet la_core ein; Root-flutter test bleibt grün (Stand 2026-09-29: +184) — flutter analyze No issues found!, flutter test +200 (die +184 im Titel waren der Stand vor Schnitt 1).
  • dart compile exe und Lauf ohne DISPLAY/WAYLAND_DISPLAY bleiben grün (Gate 1) — dart compile exe bin/la_probe.dart → Generated; env -u DISPLAY -u WAYLAND_DISPLAY /tmp/la_probe --version → la_probe 0.0.1-spike.1 (dart 3.13.4 … linux_x64); la_probe zusätzlich in build-deb.sh abgelegt.
  • git diff --stat <Basis>..HEAD -- lib/ additional/ deb/ linux/ zeigt nur die beabsichtigten Adapter-Änderungen; der Spike selbst hatte hier einen leeren Diff — die Abweichung wird im Handoff begründet — 6c5c625..6510892 unter lib/ = genau helpers/command_helper.dart, linux/linux_system.dart, services/linux.dart; deb/, additional/, linux/ leer. Abweichung im Handoff begründet.

Handoff (Pflicht je Aufgabe, aus docs/mla-next/VERIFY.md)

  • Basis-SHA, Pfade, Scope und Failing-Test/Fixture stehen vor der Umsetzung fest — Basis 6c5c625; Scope, bewusste Grenze und nicht ausgeführte Gates im Handoff-Abschnitt von docs/mla-next/VERIFY.md.
  • Reviewer 1 (Funktion/UX/Races) und Reviewer 2 (Privilegien/Secrets/argv/IPC) haben geprüft — Drei adversariale Sonnet-Linsen + Synthese über den Diff: PASS, keine Blocker (Umfang/Regeln · Verträge/Nebenläufigkeit · Tor-/Testbeweis).
  • Wirklich ausgeführte Gates mit Ausgabe; rote oder übersprungene Gates benannt; Rückfallplan genannt — Gate-Tabelle mit echter Ausgabe, Abschnitt „Nicht ausgeführt" und git revert-Rückfallplan in docs/mla-next/VERIFY.md.
  • Kein Merge, Release oder Policy-Update ohne gesonderte Freigabe — PR feat(mla): #93 Schnitt 2 — DI, Event-Vertrag und la_probe-Ablage #107 offen, nicht gemergt; Merge und Schließen von [Next 0.0.2] A3 la_core-Rest: Parser, DI, Event-Vertrag, Flutter-Adapter #93 warten auf gesonderte Freigabe.

Abhängigkeiten

Blockiert durch: #59 und #60 (Kern; Roadmap-Issues in V0.9)
Blockiert: #96, #100, #94

Track: MLA-Next — getrenntes Experiment, kein Flutter-Ersatzbeschluss; die Roadmap V0.8.x–V1.0 bleibt gültig.
Quelle: docs/mla-next/AGENT_PLAN.md (A3), docs/mla-next/VERIFY.md (Gate 1).

Activity

  1. added
    gate:testGate: automatisierte Tests müssen grün sein
    track:mla-nextMLA-Next: getrenntes GTK4-Experiment (docs/mla-next); die Roadmap V0.8.x-V1.0 bleibt gueltig
    on Sep 29, 2026
  2. Toqsick commented on Sep 30, 2026

    @Toqsick
    OwnerAuthor

    Handoff #93 Schnitt 2 — DI, Event-Vertrag und la_probe-Ablage

    PR #107 (feature/mla-93-rest, vier Commits auf Basis 6c5c625) liefert den Rest von #93:
    Dependency Injection, Event-Vertrag, la_probe in der Paketablage und den Logger-/CommandHelper-Umzug.

    Was geliefert ist

    Teil Ort
    DI-Verträge packages/la_core/lib/src/command_runner.dart, core_logger.dart, cpu_info.dart (Instanz-Cache statt static), probe_registry.dart
    Event-Vertrag packages/la_core/lib/src/event_bus.dart — typisierte Topic<T>, CoreTopics mit genau zwei Saat-Themen (probeResult, moduleRegistered), Subscription.cancel() idempotent, onListenerError, Nutzung nach dispose → EventBusError; ModuleRegistry nimmt optional einen EventBus?
    App-Seam lib/helpers/command_helper.dart (ProcessCommandRunner + CommandHelper-Fassade), lib/services/linux.dart (eine Zeile), lib/linux/linux_system.dart (statischer Thread-Cache raus)
    Paketablage build-deb.sh → /usr/lib/linux-assistant/la_probe + display-loser --version-Smoke

    Bewusste Grenze

    lib/services/linux.dart ist ~2600 Zeilen Statik — volle Konstruktor-Injektion hätte das
    Minimal-Diff-Kriterium gesprengt. Der Kern nutzt Konstruktor-Injektion, die App-Grenze genau
    einen Seam (CommandHelper.runner) plus Instanzfelder (Service-Locator, keine Nachlässigkeit).

    Die polkit-Dreifaltigkeit (Policy-exec.path, _privilegedEntryPoints, die beiden chmod +x)
    ist unberührt: la_probe landet bewusst nicht in /usr/bin, deb/DEBIAN/control ist unverändert.

    Gates (alle frisch, echte Ausgabe)

    la_core: dart analyze No issues found! · dart format 22 files (0 changed) · dart test
    +52 (vorher 30) · dart compile exe bin/la_probe.dart Generated · la_probe --version ohne
    DISPLAY/WAYLAND_DISPLAY grün.
    Root: check-versions.sh 0.8.0 consistent · dart format 122 files (0 changed) ·
    flutter analyze No issues found! · flutter test +200 ·
    system_parsers_test +22 (byte-identisch) · Python Ran 49 tests — OK · bash -n build-deb.sh OK.

    Nicht ausgeführt (ehrlich)

    • CI für diesen Branch nicht beobachtet.
    • Kein echter Spawn-Beweis für ProcessCommandRunner in dieser Umgebung.
    • Gate-0-/Gate-1-Manual-Checks auf Zorin bleiben Bastis Teil.

    Verifikation

    Drei adversariale Sonnet-Linsen über den Diff (Umfang/Regeln · Verträge/Nebenläufigkeit ·
    Tor-/Testbeweis) plus Synthese: PASS, keine Blocker.

    Nicht Teil dieses Schnitts

    Kein Merge, kein Release, kein Policy-Update. PR #107 ist offen und nicht gemergt; Merge und
    Schließen von #93 nur nach gesonderter Freigabe.

    Rückfallplan: git revert 6510892 442a28c 3b81f27 c59badc — jeder Schnitt ist einzeln baubar.

    🤖 Generated with Claude Code

  3. added a commit that references this issue on Sep 30, 2026
  4. Toqsick commented on Sep 30, 2026

    @Toqsick
    OwnerAuthor

    Erledigt über PR #107 (Squash e4c1346, CI-Run 36661645887 grün) und PR #89/#60 davor (6c5c625).

    Evidence:

    Bewusst offen (nicht blockierend, separat getrackt): manuelle Gate-0-Checks (BASELINE §3), kein echter Process-Spawn-Nachweis für pkexec/flatpak-spawn (Code wortgleich übernommen). Merge-Freigabe erteilt 2026-09-30.

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

    gate:testGate: automatisierte Tests müssen grün seinsize:L4+ Sessionstrack:mla-nextMLA-Next: getrenntes GTK4-Experiment (docs/mla-next); die Roadmap V0.8.x-V1.0 bleibt gueltig

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions