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ń”.