Nofax: explizite menschliche Entscheidungen für KI-Agenten
Eine Open-Source-Brücke zwischen KI-Coding-Agenten und expliziten menschlichen Entscheidungen. Lokal sind Freigaben, Auswahl, Verfeinerung und begrenztes Warten möglich; der optionale Remote Worker ist bewusst auf einseitige Benachrichtigungen und sichere Anfrageeinsicht beschränkt.
Repository ansehenLokale Entscheidungen, engere Remote-Sicht
Nofax hält die Entscheidungsbefugnis lokal. Der lokale Workflow kann eine Person um Freigabe oder Ablehnung bitten, Optionen wählen lassen, eine Anfrage verfeinern und auf eine ausdrückliche Antwort warten. Der optionale Remote Worker hat einen kleineren Vertrag: Er kann eine einseitige Benachrichtigung senden und begrenzte Anfragemetadaten zur Einsicht bereitstellen. Er kann nicht freigeben, ablehnen, auswählen, verfeinern oder auf eine Entscheidung warten.
Capability-Grenze
Die Trennung ist beabsichtigt: Remote-Erreichbarkeit verleiht keine Remote-Entscheidungsbefugnis.
| Funktion | Lokaler Workflow | Remote Worker |
|---|---|---|
| Einseitige Benachrichtigung | Ja | Ja |
| Anfragemetadaten einsehen | Ja | Ja |
| Freigeben / ablehnen | Ja | Nein |
| Auswahl / Verfeinerung | Ja | Nein |
| Auf Entscheidung warten | Ja | Nein |
Pending ist keine Freigabe
Die aktuelle Dokumentation und die Tests sind fail-closed: Pending, Timeout, fehlerhafte Ergebnisse, Netzwerkfehler und Verbindungsabbrüche dürfen nicht in eine Allow-Entscheidung umgewandelt werden. Bleibt ein Wait pending, bleibt er pending und erfordert einen weiteren ausdrücklichen Wait. Nofax transportiert eine menschliche Entscheidung; es ist nicht die Policy Engine, die entscheidet, ob eine Aktion erlaubt werden soll.
Den neuesten offenen Request wiederfinden
PR #34 „fix: recover newest pending requests“ wurde am 22. September 2026 mit Merge-Commit 979df9f5a3a3e52004a398c1b8738dbb80c6ffd2 gemergt.
Vorher
Pending-Dateinamen enthalten zufällige Request-IDs. Die Implementierung sortierte diese Dateinamen absteigend und brach ab, sobald das Ergebnislimit erreicht war. Ein neu erstellter Request mit lexikografisch niedriger ID konnte deshalb ausgelassen werden, bevor sein Datensatz überhaupt gelesen wurde.
Nachher
Die Implementierung liest die Pending-Datensätze, sortiert sie nach dauerhaftem createdAt absteigend mit Request-ID als deterministischem Tie-Breaker und wendet erst danach das Ergebnislimit an.
Synthetisches Regressionsfixture
Der Regressionstest erzeugt 20 ältere Datensätze plus einen neuesten, fordert ein Limit von 20 an und prüft, dass der neueste zuerst enthalten und der älteste ausgeschlossen ist. Das sind synthetische Testdaten – kein Nutzervolumen, kein Kundenincident und keine gemessene Kundenwirkung.
Öffentliche Belege
Die historische CI vom 22. September 2026 bestand die Checks für Node 20, Node 22, Node 24, Worker und CodeQL. Das ist historische GitHub-CI-Evidenz und getrennt von den Portfolio-Tests für diese Seite.
Aktuelle Grenzen
- Der Remote Worker stellt nur Benachrichtigungs- und sichere Einsichtsfunktionen bereit; er ist kein gehosteter Freigabedienst.
- Hier werden keine Aussagen zu zahlenden Teams, Nutzung, Uptime oder universeller Sicherheit gemacht.
- Paketversionen und Downloadzahlen bleiben bewusst außen vor, weil sie volatil sind und die Freigabegrenze nicht belegen.

