Nofax: izričite ljudske odluke za AI agente
Open-source most između AI programerskih agenata i izričitih ljudskih odluka. Lokalni način podržava odobrenja, izbore, dorade i ograničeno čekanje; opcionalni udaljeni Worker namjerno je ograničen na jednosmjerne obavijesti i siguran pregled zahtjeva.
Otvori repozitorijLokalne odluke, uži udaljeni uvid
Nofax zadržava ovlast odlučivanja lokalno. Lokalni tijek može tražiti od osobe odobrenje ili odbijanje, izbor među opcijama, doradu zahtjeva i čekati izričit odgovor. Opcionalni udaljeni Worker ima manji ugovor: može poslati jednosmjernu obavijest i izložiti ograničene metapodatke zahtjeva za pregled. Ne može odobriti, odbiti, birati, dorađivati niti čekati odluku.
Granica mogućnosti
Razdvajanje je namjerno: udaljena dostupnost ne daje udaljenu ovlast odlučivanja.
| Mogućnost | Lokalni tijek | Udaljeni Worker |
|---|---|---|
| Jednosmjerna obavijest | Da | Da |
| Pregled metapodataka zahtjeva | Da | Da |
| Dopusti / odbij | Da | Ne |
| Izbori / dorada | Da | Ne |
| Čekanje odluke | Da | Ne |
Čekanje nije odobrenje
Trenutačna dokumentacija i testovi rade fail-closed: stanje pending, timeout, neispravni rezultati, mrežne greške i prekidi veze ne smiju se pretvoriti u odluku Allow. Ako je čekanje i dalje pending, ostaje pending i traži novo izričito čekanje. Nofax prenosi ljudsku odluku; nije policy engine koji sam odlučuje treba li radnja biti dopuštena.
Dohvat najnovijeg zahtjeva na čekanju
PR #34 „fix: recover newest pending requests” spojen je 22. rujna 2026. merge commitom 979df9f5a3a3e52004a398c1b8738dbb80c6ffd2.
Prije
Nazivi datoteka na čekanju sadrže nasumične ID-jeve zahtjeva. Implementacija ih je sortirala obrnutim redoslijedom i stala čim je dosegnut limit rezultata. Novi zahtjev s leksikografski niskim ID-jem zato je mogao biti izostavljen prije nego što je zapis uopće pročitan.
Poslije
Implementacija učita zapise na čekanju, sortira ih po trajnom createdAt od najnovijeg prema starijima uz ID zahtjeva kao deterministički razrješivač izjednačenja, a tek zatim primjenjuje limit.
Sintetički regresijski primjer
Regresijski test stvara 20 starijih zapisa i jedan najnoviji, traži limit 20 te provjerava da je najnoviji prvi i uključen, a najstariji isključen. To su sintetički testni podaci, a ne volumen korisnika, incident klijenta ili izmjereni utjecaj na korisnike.
Javni dokazi
Povijesni CI 22. rujna 2026. prošao je Node 20, Node 22, Node 24, Worker i CodeQL provjere. To je povijesni GitHub CI dokaz, odvojen od testova portfelja pokrenutih za ovu stranicu.
Trenutačne granice
- Udaljeni Worker izlaže samo obavijesti i sigurne funkcije pregleda; nije hostana usluga odobravanja.
- Ovdje nema tvrdnji o timovima koji plaćaju, usvajanju, dostupnosti ili univerzalnoj sigurnosti.
- Verzije paketa i broj preuzimanja namjerno su izostavljeni jer su promjenjivi i ne dokazuju granicu odobrenja.

