Przejdź do treści

Zasady i granice

Dwanaście zasad produktu

1. Local-first jest zachowaniem, nie hasłem

Podstawowy czat, planowanie, pamięć, wykonanie oraz audyt muszą działać bez zewnętrznego dostawcy AI. Usługa chmurowa może poprawić jakość określonego zadania, lecz jej brak nie może zatrzymać całego systemu. Przed każdym wysłaniem danych na zewnątrz Norbi zna odbiorcę, zakres, klasyfikację i podstawę zgody.

2. Model proponuje, narzędzie wykonuje

Tekst modelu nie jest komendą systemową. Propozycja jest walidowana, kanonizowana i zamieniana na job. Jedyną drogą do skutku jest aktywna wersja zarejestrowanego adaptera. Nie istnieje agentowy raw shell, arbitralne argv, eval ani ogólna funkcja „zapisz dowolny plik”.

3. Domyślna odmowa

Nieznane narzędzie, pole, capability, ścieżka, stan, provider, konto albo typ danych jest odrzucany. Brak informacji nie jest interpretowany jako niskie ryzyko. Polityka wylicza wymagania z rejestru i rzeczywistego kontekstu; caller nie może zadeklarować requires_approval=false.

4. Autonomia nie obejmuje własnej władzy

Agent może zaproponować nową umiejętność, workflow lub podwyższenie limitu. Nie może tego aktywować, sam zatwierdzić, zmienić polityki ani przejąć konta operatora. Capability assignment, aktywacja agenta/narzędzia, instalacja, publikacja i promocja kodu należą do odrębnych ról i wymagają decyzji człowieka.

5. Zgoda jest konkretna i jednorazowa

Approval wiąże dokładny job, narzędzie i wersję, payload, ścieżki, konta, odbiorców, artefakty, hashe, ryzyko, politykę, termin ważności i nonce. Zmiana któregokolwiek elementu unieważnia zgodę. Kliknięcie „zatwierdź” podejmuje decyzję; nie wykonuje efektu synchronicznie i nie może wykonać go dwukrotnie.

6. Candidate nie jest stanem aktywnym

Kod zmienia się w odizolowanym worktree, media powstają jako candidate/preview, wiadomości jako draft. Test, render albo akceptacja treści nie oznacza promocji, nadpisania pliku źródłowego, wysłania czy publikacji. Każdy z tych kroków ma własny job i politykę.

7. Dowód ma pierwszeństwo przed deklaracją

System ufa testowi, hashom, receiptowi i obserwacji adaptera, nie komunikatowi „zrobiłem”. Wynik zawiera powiązania z wejściami, wersją narzędzia/modelu, parametrami, decyzjami i walidatorami. Gdy skutek jest niepewny, Norbi mówi „nie wiem, czy nastąpił” i uruchamia reconciliation.

8. Pamięć ma źródło, zakres i termin

Pamięć nie jest jednym magazynem wektorów. Rekord zawiera źródło, właściciela, projekt, klasyfikację, pewność, czas ważności i prawo użycia. Treści rozmów oraz internetu nie mogą samodzielnie stać się wysokozaufaną zasadą ani uprawnieniem.

9. Sekrety nie trafiają do modeli

Rejestr kont przechowuje metadane, a sekret pozostaje w sejfie systemowym. Adapter otrzymuje krótkotrwały uchwyt lub sesję, nigdy wartość w prompcie, approvalu, logu czy artefakcie. Provider zewnętrzny nie otrzymuje uchwytów wykonawczych.

10. Telefon jest Control Plane

Telefon może inicjować zadania, przeglądać status, zatwierdzać w odpowiednio bezpiecznym kanale i odbierać alerty. Nie jest zaufanym workerem, nie dostaje dostępu do IPC wykonawczego ani bazy i nie może omijać lokalnego brokera.

11. Awaria jest stanem domenowym

Crash, timeout, utrata sieci, wygaśnięcie lease, brak miejsca i niespójny receipt prowadzą do jawnych stanów: retry_wait, uncertain, reconciling lub recovery_required. System nie ukrywa awarii automatycznym powtórzeniem operacji o nieodwracalnym skutku.

12. Człowiek zachowuje możliwość odcięcia

Każde wdrożenie ma mechanizm zatrzymania kolejki, unieważnienia grantów, zawieszenia agenta/narzędzia, odłączenia workerów i przejścia do lokalnego trybu read-only. Odzyskiwanie sprzętowe jest oddzielone od codziennego Control Plane.

Hierarchia reguł

flowchart TD
    H["Twarde zakazy produktu"] --> P["Polityka instalacji"]
    P --> O["Polityka organizacji / projektu"]
    O --> W["Polityka workflow"]
    W --> J["Parametry job"]
    J --> M["Sugestie modelu lub agenta"]

Reguła niższa nie może rozszerzyć wyższej. Twardego zakazu nie da się obejść instrukcją w dokumencie, parametrem narzędzia ani odpowiedzią providera. Lokalna polityka klienta może być bardziej restrykcyjna niż pakiet branżowy. Wyjątek wymaga jawnej, wersjonowanej zmiany polityki przez uprawnionego operatora; nie może być utworzony podczas wykonania joba, którego dotyczy.

Klasy skutków

Klasa Przykłady Domyślne zachowanie
obserwacja odczyt jawnego pliku projektu, status joba automatyczne w zakresie projektu
transformacja lokalna streszczenie, indeks, render preview automatyczne z walidacją
odwracalna zmiana kandydata edycja worktree, nowa wersja artefaktu approval planu albo polityka z limitem
komunikacja draft, upload, send, publish każdy etap osobny; wysłanie zwykle wymaga zgody
stan biznesowy zmiana grafiku, rekordu CRM, zamówienia walidacja domenowa; approval zależny od progu
finansowy/prawny zakup, umowa, płatność, podpis człowiek podejmuje ostateczną decyzję
infrastruktura instalacja, restart, sieć, aktualizacja firmware maintenance window i jawna zgoda
fizyczny uruchomienie urządzenia, dostęp do obiektu capability urządzenia, interlock i często podwójna zgoda
eskalacja władzy aktywacja narzędzia/agenta, nowe konto, większy zakres nigdy autonomicznie

Rozstrzyganie konfliktu celów

Gdy szybkość, koszt, prywatność i jakość są sprzeczne, system nie wybiera ukrycie. Profil zadania definiuje priorytety oraz limity. Przykładowo: dokument poufny może zabraniać konsultacji zewnętrznej, nawet jeśli model lokalny osiąga niższą jakość. Alarm bezpieczeństwa może przerwać zadania kreatywne i zarezerwować zasoby vision. Deadline nie usprawiedliwia pominięcia approvala ani walidacji krytycznej.

Scenariusz awaryjny zasad

Jeśli Policy Engine, rejestr capability lub Approval Broker jest niedostępny albo niespójny, system przechodzi w tryb fail closed: odczyt uprzednio wygenerowanych, niesekretnych wyników może pozostać dostępny, ale nowe skutki są blokowane. Operator otrzymuje przyczynę, dotknięte jobs, ostatni spójny punkt i procedurę przywrócenia. Nie powstaje „tymczasowy tryb bez zabezpieczeń”.