Skip to main content

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 ansehen
  • Open-Source-Entwicklerwerkzeug
  • MCP-Integration
  • Human-in-the-loop-Workflow
  • Cloudflare-Worker-Grenze

Lokale 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.

FunktionLokaler WorkflowRemote Worker
Einseitige BenachrichtigungJaJa
Anfragemetadaten einsehenJaJa
Freigeben / ablehnenJaNein
Auswahl / VerfeinerungJaNein
Auf Entscheidung wartenJaNein

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.

Engineering-Notiz

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.