Przejdź do treści

Chain — append-only pamięć#

Chain to fundamentalna struktura pamięci Memphis. Łańcuch bloków, każdy blok podpisany SHA-256, każdy blok zawiera hash poprzedniego. Żadnego cichego edytowania historii — zmiana jakiegokolwiek bloku niszczy wszystkie kolejne hasze.

Typy chainów#

Memphis rozróżnia kilka równoległych strumieni:

Chain Co zapisuje Retention
journal pamięć długoterminowa, decyzje, reflections bez limitu
soul stan tożsamości agenta, głos, styl bez limitu
system events runtime, healthchecks, service lifecycle rolujący
heartbeat puls agenta (raz na cykl) rolujący
ops operacje ryzykowne (self-mod, vault writes, tool invokes) bez limitu

Każdy chain jest odrębnym plikiem append-only. Nigdy nie kasujemy, nigdy nie nadpisujemy.

Anatomia bloku#

┌─────────────────────────────────────────────┐
│  block_n                                    │
├─────────────────────────────────────────────┤
│  prev_hash  : SHA-256 bloku n-1             │
│  timestamp  : ISO 8601 UTC                  │
│  agent_id   : ed25519 public key            │
│  event_type : str                           │
│  payload    : JSON (może być zaszyfrowany)  │
│  signature  : ed25519 nad wszystkim powyżej │
│  block_hash : SHA-256 całego bloku          │
└─────────────────────────────────────────────┘

Weryfikacja integralności#

memphis chain verify                # weryfikacja wszystkich chainów
memphis chain verify --type journal # jeden strumień
memphis chain verify --since 7d     # tylko ostatni tydzień

W razie wykrycia rozjazdu — Memphis wstrzymuje write'y do danego chaina i flaguje event chain.integrity.breach w system chain. Decyzja co dalej (quarantine, repair, accept) należy do operatora.

Co z GDPR / "prawo do bycia zapomnianym"?#

Append-only nie oznacza "plaintext forever". Dla danych PII:

  • Encrypt-at-rest przez vault — klucz obieralny per-domain.
  • Shredding przez key-rotation — zniszczenie klucza unieważnia odczyt starych bloków bez łamania integralności łańcucha.
  • Retention policy per chain — rolujące chainy (system, heartbeat) mają default TTL.

Dlaczego nie zwykłe logi?#

Bo logi kłamią. rm -rf albo sed -i zmienia historię bez śladu. Chain z prev_hash + signature wymaga ujawnienia każdej modyfikacji jako break — widoczny dla memphis chain verify.