Memarium FAQ¶
Po co Memarium potrzebuje paszportu?¶
-
Bo Memarium jest organem konstytucyjnym, nie usługą CRUD. Memarium nie jest „bazą z danymi modułu". To wspólna pamięć węzła z czterema przestrzeniami o różnych politykach konstytucyjnych (Personal/Community/Public/Crisis). Każde wejście do Memarium jest aktem politycznym: „kto ma prawo coś zapisać w pamięci Community? kto może odczytać Personal innego modułu? kto może ogłosić kryzys?". Taki akt musi mieć pojedynczy, jawny, audytowalny punkt decyzji. Paszport to właśnie to: uzewnętrzniona reprezentacja uprawnienia, która wchodzi przez drzwi razem z żądaniem, zamiast być ukrytą w „kto wywołał funkcję w tym samym procesie". Bez paszportu mielibyśmy ambient authority — „jeżeli kod działa w węźle, to ma dostęp" — co jest klasycznym anty-wzorcem (confused deputy).
-
Bo separacja ról operator ↔ moduł ↔ delegat musi być strukturalna, nie umowna. Paszport nosi w sobie pola, które są nośnikami trzech rozłącznych semantyk: A0 (operator) — człowiek/administracja węzła, szeroki zakres, rozliczany osobowo; A1 (moduł lokalny) — Monus, Sensorium, Agora; wąski zakres, rozliczany per moduł; A2 (delegat przez nym) — pseudonimowy agent, rozliczany przez ścieżkę delegacji. Gdybyśmy to zrobili lokalnym ACL-em, musielibyśmy w każdym wywołaniu ręcznie udowadniać „to naprawdę Monus, a nie ktoś podszywający się". Paszport podpisany i związany z caller-identity przesuwa ten dowód na moment wystawienia, a dispatch-gate tylko weryfikuje, nie ustanawia. To jest ta sama różnica co między „każdy pokój ma własny zamek z własnym kluczem, który kopiujemy ręcznie" a „drzwi sprawdzają paszport wystawiony przez jeden urząd".
-
Bo delegacja z cofnięciem jest wymaganiem dziedzinowym, nie ozdobą. Memarium musi umożliwić: „Monus może przez 24h delegować do pod-agenta prawo dopisywania do Personal tylko dla topic-class X". Bez paszportu to wymaga albo kopiowania poświadczeń (które nie dają się cofnąć), albo trzymania per-delegacja wpisów w lokalnej tabeli (co nie przenosi się między węzłami i łamie stratyfikację). Z paszportem: nym wystawia cert delegacji z TTL, target-id daje ziarno do cofnięcia, a feed rewokacji (lokalny + statyczny + seed-directory) — ten sam, który już mamy — realizuje unieważnienie. Jeden mechanizm na całym węźle, zero duplikacji.
-
Bo audit-time decision musi być uchwycony w momencie decyzji, nie rekonstruowany post hoc.
audit_decision()zwraca"denied:binding-mismatch"w momencie bramy, nie w momencie analizy logów. To oznacza, że fakt rozliczeniowy ma tę samą przyczynę, co odpowiedź sieciowa (reason: "binding_mismatch"),correlation_idspina żądanie ↔ denial ↔ wpis w ledgerze, a przyszła analiza „dlaczego Monusowi odmówiono 412 razy w kwietniu" jest rozpytaniem po danych, nie detektywistyką po tracach. Paszport jest artefaktem wprowadzającym kontekst do momentu decyzji (caller, grant, target, scope, nonce) — bez niego strata ta jest odtwarzalna tylko heurystycznie. -
Bo stratyfikacja wymaga cienkich, stabilnych bram. Dispatch-gate (daemon) → engine (memarium-service). Engine ufa, że bramka już zautoryzowała; engine nie zna pojęcia „operator", „moduł", „delegacja". To jest dokładnie ta separacja, którą stosujemy w Sealer (gate authorization + engine policy = allow-all-as-invariant). Paszport jest interfejsem bramki: jedno wejście, jeden kontrakt, jedna reprezentacja. Gdyby nie paszport, każdy engine musiałby wiedzieć o wszystkich klasach caller-identity — czyli complecting warstw w stylu, od którego uciekamy. Dodatkowo: ta sama bramka obsłuży przyszły community-key service i kolejne organy — bez zmian w enginie Memarium. Paszport skaluje się jako koncept, nie jako kod.
-
Bo portability między deploymentami wymaga pojęć, nie konfiguracji. Węzeł może biec jako jednoosobowy pod, federacyjny relay, kontener serwerowy albo instancja testowa. W każdym z tych przypadków „kto jest operatorem, a kto modułem" jest inne. Paszport jako struktura danych przenosi się między tymi kontekstami; ACL jako lokalna tabela w konfigu nie przenosi się nigdzie. To zgodne z zasadą „dane jako wspólny język, logika na brzegach": paszport to dane, a polityka w bramce to logika brzegowa.
-
Bo Crisis wymaga autoryzacji, której nie można sfałszować z wewnątrz.
memarium.crisis_resolvejest operacją, w której moduł mówi węzłowi „możesz wrócić do Running". To jest klasyczny wektor eskalacji: złośliwy/uszkodzony moduł ogłasza „wszystko ok", węzeł zdejmuje degradację, konstytucja zostaje naruszona. Paszport z operator-only scope nacrisis_resolverealizuje tu twarde rozróżnienie: moduł może zaraportować sygnał (crisis-detectedprzez bus, per-module), ale nie może zamknąć epizodu. Bez paszportu to rozróżnienie wymaga procesowej separacji (osobne UID-y, sandboxy) — kosztownej i niedostępnej w deploymentach, gdzie wszystko żyje w jednym procesie. -
Krótko, w jednym zdaniu. Paszport to uzewnętrzniona, audytowalna, delegowalna i cofalna reprezentacja uprawnienia, która pozwala stratyfikować autoryzację (brama) od wykonania (engine), zachować rozdział ról A0/A1/A2, i przenieść ten sam wzorzec na kolejne organy konstytucyjne węzła. Wszystko inne — reason dictionary, HTTP statusy,
denied:*w ledgerze — to konsekwencje tej decyzji, nie jej przyczyny. Usunięcie paszportu oznaczałoby albo ambient authority (niedopuszczalne konstytucyjnie), albo rozsianie logiki autoryzacji po enginach (niedopuszczalne rzemieślniczo).