Skip to content

[Follow-up] Restpool aus den #89–#95-Reviews: Registry-Race, Review-Minors, Spawn-Env #110

Description

@Toqsick

Sammel-Issue für die bewusst aufgeschobenen Reste aus den Reviews der MLA-Next-Läufe #89–#95. Das unmittelbare Follow-up-Paket (parsePsOutput, RAM-MiB, .ai-TLD, Spawn-Tests, checkout@v4, Errata) ist im zugehörigen PR umgesetzt; dieser Pool hier bleibt zurück.

Quellen: Plan docs/superpowers/plans/2026-09-30-mla-followups-compact.md (Abschnitt „Boundary / bewusst draußen"), Task-6-Final-Review-Minors (Ledger), #93-Task-6-Review-Minors.

A. Registry-Race-Härtung (la_core)

Die ModuleRegistry hat zwei bekannte, ungetestete Race-Kanten (Minor aus dem #93-Task-6-Review):

  • activate während deactivate (gleichzeitige Zustandswechsel desselben Moduls)
  • Cross-ID-Race (Operationen auf verschiedenen IDs interagieren über gemeinsame Strukturen)

Ziel: Härtung + Race-Tests (Repo-Lektion beachten: keine Fake-Async-Widget-Tests um echte dart:io-Ströme).

B. Task-6-Review-Minors (Follow-up-PR)

  • test/fixtures/README.md: Zeilenreferenz-Drift zu lib/linux/linux_system.dart (:22→:26, :53→:57, Call-Referenzen 13–15) nachziehen
  • parsePsOutput count≤0-Kante: Verhalten ist dokumentiert (alle Einträge statt leer), aber ungeprüft und ohne Produktions-Caller — entscheiden: Test pinnen oder dokumentiert lassen
  • Spawn-Test Fall 6: output-Assert nur auf isEmpty prüfen (schwache Aussage) — stärkeres Assert nachziehen
  • Spawn-Test 8: startsWith-Assertion schwach — exakte Präfixkette pinnen
  • ALLOWED_TLDS-Misnomer: Kommentar entkräftet die falsche Lesart bereits; sauberer wäre ein Rename (z. B. FLAGGED_TLDS)

C. Spawn-Umgebungs-Produkt-Fix

Task 4 des Follow-up-Plans hat die Dart-Semantik empirisch gepinnt (Process.run merged per Default includeParentEnvironment: true — ein übergebenes environment ersetzt das Eltern-Env nicht; Tests 7+8 in test/process_command_runner_test.dart). Offen ist die Produktfrage:

  • Entscheiden, ob ProcessCommandRunner für pkexec/flatpak-spawn eine stärkere Umgebungsisolierung braucht (z. B. PATH-Fixierung auf bekannte Präfixe) — heute löst der nackte Präfix über den Eltern-PATH auf

D. Bewusst draußen geblieben (nur Referenz, keine Aktion in diesem Issue)

  • Release-Process.md-Rewrite (Wiki-Runbook lehrt noch RPM, verschweigt pubspec-Co-Bump)
  • Manuelle Gate-0-Checks (BASELINE §3), Wayland-Screenshot und -dev-Pakete — offene [Next 0.0.1] A0 Baseline & Evidence-Map #90-Teilitems, Abnahme durch Basti

Activity

  1. Toqsick commented on Oct 1, 2026

    @Toqsick
    OwnerAuthor

    Status-Annotation (2026-10-02) — welche Checkboxen durch die Merges erledigt sind und was offen bleibt. Damit erfüllt: A (2 Boxen), B (5 Boxen) und der D-Release-Eintrag; offen: C und die manuellen Gate-0-Items.

    A. Registry-Race-Härtung — erledigt via PR #115 → Squash 86ac454 (night/pool-a, 3 Commits, +381/−27)

    • Beide Kanten adressiert: richtungsbewusstes Single-Flight (_Inflight trägt _Direction), geordnetes Last-Wins (Gegenrichtung reiht sich hinter dem laufenden Vorgang ein), Dep-Re-Check nach jedem await mit Rollback, plus Review-Fix 530ea0f (deactivateAll-Last-Wins-Regression gegen Basis).
    • Race-Tests packages/la_core/test/module_registry_ordering_test.dart, 6 Fälle mit echten Completer-Gates (kein fake_async): RED-Belege gegen Basis 506eb88 (Tests 1–4 rot) und gegen b13bdd7 (Test 6 rot). la_core +67.
    • Bewusst offen (pre-existing, außerhalb des Diff-Scopes): deactivateAll deckt Module im Zustand starting weiterhin nicht ab.

    B. Task-6-Review-Minors — erledigt via PR #114 → Squash 0ca532b (night/pool-b, 2 Commits, +82/−12)

    • README-Zeilenref-Drift nachgezogen (:22→:26, :13-14→:13-15, :53→:57; Bug-Notiz :11→:13-15), „TLD-Allowlist"→„TLD-Flag-Liste", stale .ai-Aussage korrigiert (.ai ist seit 643da93 geflaggt).
    • count≤0-Kante: Test-Pin (count 0 or negative yields every entry, not an empty list), Mutationsbeleg gefahren.
    • Spawn-Test Fall 6: voller Fehlervertrag (output isEmpty + error contains "No such file or directory").
    • Spawn-Test 8: exakte Präfixkette PATH=$parentPath statt startsWith("PATH=/").
    • ALLOWED_TLDS → FLAGGED_TLDS (Rename + Kommentar + README-Prosa).
    • Nebenbefund bewusst offen: README:137 :19-Ref (vorbestehend, außerhalb des Buchstabens B).

    D. Release-Process-Rewrite — erledigt via PR #116 → Squash de0026d (RPM raus, pubspec.yaml-Co-Bump via tool/check-versions.sh dokumentiert; dazu der R11-Linkfix auf die Modul-Registry im Wiki).

    Weiter offen:

    • C. Spawn-Umgebungs-Produkt-Fix — Entscheidung, ob ProcessCommandRunner für pkexec/flatpak-spawn eine PATH-Fixierung braucht: menschliche Sicherheitsentscheidung, liegt bei Basti.
    • Manuelle Gate-0-Checks (BASELINE §3; Wayland-Screenshot + -dev-Pakete) — offene [Next 0.0.1] A0 Baseline & Evidence-Map #90-Teilitems, Abnahme durch Basti.
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

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions