This repository has been archived on 2026-09-17. You can view files and clone it, but you cannot make any changes to its state, such as pushing and creating new issues, pull requests or comments.
nixos-config/docs/pipelines.md
pijukka 6605dc621c docs: switch directly, and build locally on pinix where it helps
Zwei Regeln entsprachen nicht mehr der Arbeitsweise:

"niemals lokal auf pinix bauen" galt für den vollen Dienstbestand. Weil
die Konfiguration deklarativ ist, lässt sich die Maschine verlustfrei
reduzieren und dann direkt auf der Zielhardware testen -- eine externe
Abhängigkeit weniger im Zyklus. Der nixbuild.net-Store bleibt für große
Kompilierläufe. SD-Karten-Verschleiß ist ein Abwägungsgrund, kein Verbot.

Die Verifikationskaskade vor jedem Deploy, inklusive `nixos-rebuild test`
als Vorstufe, entfällt als Pflicht. Die Absicherung steckt schon im
Aufbau und kostet nichts: NixOS-Generationen und das Git-Repo. Das gilt
ausdrücklich auch in Produktion -- der Sinn des deklarativen Aufbaus ist,
dass schnelles Arbeiten nicht riskant ist.

Die Einzelkommandos bleiben als Werkzeug bei konkretem Verdacht. Die eine
echte Ausnahme ist Aussperren: dagegen hilft keine Generation ohne Zugang,
also sshd-/Netzwerk-/Boot-Änderungen auf blunix und pinix weiter vorher
prüfen. Die predeploy-check-Skill ist entsprechend als optionale
Diagnose umgeschrieben statt als Gate.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ML1tzf3RKWwetud5S4TRAn
2026-09-12 13:24:41 +02:00

5.1 KiB

Pipelines

Der Architektur-Graph (graphify-out/platform-infrastructure/) zeigt, was mit was zusammenhängt. Diese Datei zeigt stattdessen Reihenfolge und Richtung — input → output → input → output, wie eine Fertigungsstraße. Beide Ansichten ergänzen sich; diese Datei ist die Quelle der Wahrheit für pipelines.html im dashboard-Repo, nicht umgekehrt.

Deploy-Pipeline

flowchart LR
    A[Config-Änderung im Repo] --> B[nix flake check]
    B --> C["nix eval --raw .drvPath"]
    C --> D[nix build toplevel]
    D --> E[nix store diff-closures]
    E --> F{Diff plausibel?}
    F -->|nein, klären| A
    F -->|ja| G[dry-activate]
    G --> H[nixos-rebuild switch]
    H --> I[Live-System]
    I --> J["Verifikation: curl / systemctl / journalctl"]

Der Normalfall ist direktes nixos-rebuild switch; abgesichert wird über NixOS-Generationen und das Git-Repo (siehe §4 in docs/operator-prompt.md). Die hier gezeigten Prüfschritte sind optionale Werkzeuge bei konkretem Verdacht, keine Pflichtkette — Ausnahme sind Änderungen mit Aussperr-Risiko (sshd, Netzwerk, Boot).

Agenten-Delegation (Herdr)

flowchart LR
    A[Nutzer-Auftrag] --> B[Orchestrator]
    B -.fire and forget.-> C["Spezialist: eigene, atomare Session (Administrator / Orga / Agent-Manager / Graphics)"]
    C -.Skill-Rückfrage — Entwurf §4.-> B
    B -.Antwort.-> C
    C --> D[Output]
    D -->|Aktivierung im Auftrag ausdrücklich freigegeben| E[Deploy durch Spezialisten]
    D -->|Regelfall: keine Freigabe| E2[Meldet Aktivierungsschritt, stoppt]
    E --> F[Reviewer]
    E2 --> F
    C -->|keine Rückfragen offen| Z[Session wird idle]
    Z --> G[Synthese im Orchestrator]
    F -->|Befunde, read-only| G
    G -->|Korrektur nötig| C
    G --> H[Antwort an Nutzer]

Der Orchestrator delegiert fire-and-forget — er wartet nicht aktiv, sondern beendet seinen eigenen Turn nach der Übergabe (docs/herdr-orchestration.md). Jede Delegation startet als eigene, atomare Session: die Rolle ist so klar umrissen (agents/*.md), dass der Spezialist die Aufgabe bis zum Ende durcharbeitet und die Session verlässt (Pane wird idle — nicht wirklich terminiert, sonst wäre sie über herdr agent read/send nicht mehr ansprechbar), sobald keine Rückfragen mehr offen sind, statt auf weitere Anweisung zu warten. Das Idle-Werden der Session ist der Auslöser für die Synthese im Orchestrator, nicht ein separater, unabhängiger Schritt.

Deploy/Aktivierung ist kein unbedingter Teil des "funktional lösen" — alle vier Rollenverträge verlangen dafür standardmäßig eine im Auftrag ausdrücklich erteilte Freigabe (agents/admin.md: "nur wenn ausdrücklich freigegeben, sonst mit dem genauen Aktivierungsschritt melden und stoppen"; agents/agent-manager.md, agents/orga.md gleiches Muster je Aktion). agents/graphics.md hat überhaupt kein Deploy-Konzept — committet/pusht nie selbst. Der Regelfall ist also D → E2 (Aktivierungsschritt melden, stoppen); D → E (Spezialist deployed selbst) ist die Ausnahme bei expliziter Freigabe, keine automatische Folge von "fire and forget".

Review passiert danach am bereits ausgelieferten oder gemeldeten Ergebnis, nicht als Gate davor — Reviewer bleibt read-only und fließt mit seinen Befunden ebenfalls in diese Synthese ein, statt sie zu blockieren; laufen die Befunde erst nach der ersten Antwort an den Nutzer ein, löst das bei Bedarf eine Korrekturschleife zurück zum Spezialisten aus. "Fire and forget" ersetzt nicht die ursprüngliche Nutzer-Freigabe der Aufgabe selbst, nur die Notwendigkeit weiterer Zwischen-Bestätigungen während der Ausführung. Spezialisten können während der Bearbeitung außerdem jederzeit eine Skill-/Sachfrage an den Orchestrator zurückschicken — im Diagramm selbst als Entwurf markiert (§4), nicht nur im Fließtext, weil sonst diese Kante optisch nicht von der bestätigten "fire and forget"-Kante zu unterscheiden wäre (Entwurf für einen entsprechenden Rückfrage-Kanal: docs/herdr-eskalation-review-entwurf.md §4) — das ist etwas anderes als das noch unfreigegebene "Review als Standardschritt" aus §1, das hier bewusst nicht dargestellt ist.

Zugangs-/Ein-Ausgabe-Kette

flowchart LR
    P[iPhone: a-Shell] --> T[Tailscale-Mesh]
    L[Laptop: SSH] --> T
    T --> B[blunix]
    B --> TM["tmux: Herdr-Session"]
    TM --> AG[Agent-Prozess]
    AG --> OUT[Output]
    OUT --> LOG[Log / Memory]
    OUT --> DEP[Deploy]

Wie ein diktierter Prompt tatsächlich durchs System läuft, bevor überhaupt etwas passiert. Details zu a-Shell/SSH-Client sind aus der Ferne nicht verifizierbar, der Rest der Kette (Tailscale → blunix → tmux → Agent) ist mit dieser Session konsistent beobachtet.

Zettel-Transformation

flowchart LR
    A["Analog: handschriftliche DIN-A5-Seite"] --> B[Scan]
    B --> C[Digitaler Input an KI]
    C --> D["ai-magic / Transformation"]
    D --> E["Contingent digital artifact, any medium"]
    E --> F[Analog Output]

Aus memory/zettel/ (Blatt 9) — die Methode des Ursprungsprojekts selbst, nicht von der Plattform abgeleitet, sondern ihr Vorbild.