Architektura danych
i kluczy.
Od logowania i odblokowania skarbca po zaszyfrowany upload, publikację na łańcuchu i kontekst przekazywany modelowi AI.
Stan lokalnego kodu i konfiguracji: 14 września 2026. Diagramy dotyczą obecnego mirrorboards-chat-web, aktywnego boardu Chatboards Chats i usług, z których korzystają. To analiza implementacji oraz deklaracji Pulumi, bez sprawdzania działających podów, ruchu produkcyjnego i polityk dostawców. Repozytoria mogą zawierać nieopublikowane zmiany; odciski analizowanych plików znajdują się w evidence.json.
Najważniejszy podział: XAuth potwierdza tożsamość logowania; System określa, kogo reprezentujesz i jakie zasoby są z nim związane; XKeys otwiera klucze na urządzeniu; Actanet obsługuje operacje i upload; Swaplock zapisuje uprawnienia i odnośniki; S3 przechowuje szyfrogramy. Użycie AI tworzy osobną ścieżkę, na której treść jest czytelna dla API i dostawcy modelu.
Legenda diagramów: zielony — lokalna kryptografia lub szyfrogram; niebieski — usługa aplikacyjna; fioletowy — jawne metadane lub rejestr; pomarańczowy — treść dostępna w postaci jawnej albo istotna granica prywatności. W diagramach sekwencji podpisy określają ochronę danych. „Jawne” oznacza brak szyfrowania aplikacyjnego, a nie brak HTTPS.
01 · Mapa całego przepływu
Źródła: S01, S02, S03, S08, S16, S20, S23, S28, S32.
Boardy są modułami uruchamianymi w aplikacji. Host rejestruje Chatboards Chats, YouTube, CV, Acta Network, Go To Market, XShelf, The Map of Everything, Astral, Vet i Settings. Daje im kontekst sesji oraz klienty System, Actanet i Swaplock Query. Rejestracja boardu nie oznacza automatycznie kompletnego backendu ani identycznej polityki szyfrowania. Główny opis poniżej odtwarza przepływ Chatboards Chats; współdzielony pakiet @mirrorboards-shell/datarooms jest również wykorzystywany przez Go To Market. S01, S02, S43
02 · Hierarchia kluczy i warstwy szyfrowania
Źródła: S04, S05, S06, S07, S11, S12, S13, S14, S15.
Hasło skarbca nie jest kluczem pokoju. Otwiera strażnika, który pozwala odzyskać CEK, następnie master, a z niego klucze zabezpieczające prywatne tożsamości. Room key jest osobno losowany. Każda przygotowywana rewizja treści otrzymuje nowy DEK; ponowienie tego samego przygotowanego uploadu wykorzystuje zachowany szyfrogram. To rozdziela zmianę sposobu odblokowania od szyfrowania dużych plików.
Format danych pokoju: version (1 B) | nonce (12 B) | ciphertext | tag (16 B), czyli 29 B narzutu. Hash karty to SHA-256 szyfrogramu. Przed odszyfrowaniem klient sprawdza hash, kontekst, rozmiar oraz dozwolony adres magazynu. AAD uwierzytelnia pięć pól kontekstu; parent, children i size należą do deskryptora/publikacji, nie do tej piątki AAD. S14, S15, S19
Co pozostaje jawne w kopercie skarbca: wersja, vault_id, epoka, rodzaje i identyfikatory strażników, parametry KDF, credential ID, zasięg i transporty. Zaszyfrowane są master oraz treść zawierająca tożsamości i etykiety. AAD koperty to CBOR z wersją, vault_id i epoką. Nie należy utożsamiać paddingu z ukryciem wszystkich metadanych. S06
Granica WASM: prywatne klucze tożsamości są używane przez interfejs skarbca bez zwykłego eksportowania ich do boardu. Odszyfrowany room key jest jednak przekazywany do kodu JS, a treść istnieje w pamięci React/Query. Kod wywołuje fill(0)/zwalnianie sekretów i czyści kontekst przy zmianie dostępu; nie jest to sprzętowa izolacja ani dowód wymazania wszystkich kopii tekstu w pamięci przeglądarki. S11, S18, S22
03 · Logowanie, System i rejestracja tożsamości
Źródła: S03, S23, S24, S25, S26, S27, S35.
System przechowuje relacje między użytkownikiem XAuth, osobą, systemami/organizacjami, dostępami i kontami łańcuchowymi. Obsługuje także ustawienia marketplace/kolejności oraz rejestr pokoi. Te rekordy są dostępne serwerowi; XKeys nie szyfruje całej bazy System. Wariant nazwy private trzyma właściwą nazwę w System, a na łańcuch trafia losowy alias mb-…. To ukrycie przed publicznym rejestrem, nie przed System. S24, S25
Transport jest przypisany do konkretnej sesji, a X-Account-Index wybiera slot cookie. To pozycja konta w przeglądarce, nie trwały identyfikator osoby ani skarbca. Zwykłe logowanie nie otwiera vaultu; reset danych logowania nie odtwarza historycznych kluczy memo/pokoi. XAuth przekazuje hasło logowania do Zitadel, podczas gdy hasło urządzenia XKeys służy lokalnej kryptografii. S03, S10, S23, S26
Zitadel jest źródłem tożsamości i sesji. Redis stanowi opcjonalny cache m.in. listy passkeys i statusów weryfikacji, zapisany jako JSON z TTL; nie jest skarbcem kluczy treści. Wartości hashy haseł i dokładne szyfrowanie wewnętrznej bazy Zitadel nie były przedmiotem tego przeglądu. S26, S27
04 · Utworzenie pokoju i publiczny ślad
Źródła: S16, S17, S24, S29, S35.
W obecnych pokojach Chatboards description jest markerem {app: "chatboards", storage: "s3", version: 1}. Nazwa użytkowa, podsumowanie i sloty dokumentów znajdują się w szyfrowanym manifeście aplikacji. Techniczna nazwa dr-UUID, identyfikator właściciela i istnienie pokoju pozostają publiczne. System rejestruje pokój niezależnie od nazwy boardu; nie wymaga app == chatboards. S17, S24, S29
Konta mają identyfikatory 1.2.x, pokoje 1.23.x, a content cards 1.26.x. Rejestracja pokoju w System i utworzenie go w Swaplock są oddzielnymi zapisami. Utrata odpowiedzi nie oznacza, że operacja się nie wykonała: klient przechowuje informacje o oczekującej transakcji i odzyskuje rezultat przez receipt/indexer. S16, S20
Dostęp ma dwa poziomy. Relacja w System pomaga znaleźć zasób i określa uprawnienia podmiotu w aplikacji. Możliwość odszyfrowania wynika z klucza memo i otrzymanej koperty room key. Zmiana wyłącznie relacji w System nie unieważnia już skopiowanego klucza. Backend Actanet ma operacje członkostwa, rotacji i regrant; ich obecność nie dowodzi dostępności wszystkich wariantów w aktualnym UI. S18, S36
05 · Gdzie trafiają wiadomości i pliki: pełny upload
Źródła: S14, S19, S20, S21, S28, S30.
Lokalizacja obiektów z konfiguracji: bucket mirrorboards-actanet-content, OVH WAW, stałe adresy https://mirrorboards-actanet-content.s3.waw.io.cloud.ovh.net/objects/…. staging/ jest prywatny; docelowy obiekt ma public-read. Publiczny jest szyfrogram, nie odszyfrowany dokument. Autoryzacja pobierania docelowych bajtów nie zastępuje kryptografii — link może pobrać ktoś bez sesji. Dokładny URL aplikacja otrzymuje z usług storage, a czytnik sprawdza public_base_url. S19, S28, S30, S33
Duży plik nie przechodzi przez Chat API ani System. Najpierw idzie z przeglądarki do S3. Następnie Actanet pobiera i ponownie publikuje zweryfikowane bajty szyfrogramu, więc stwierdzenie „backend w ogóle nie dotyka bajtów pliku” byłoby nieprawdziwe. Actanet nie dostaje w tym przepływie klucza do odszyfrowania. S28, S30
Załącznik ma dwie warstwy. Pierwszy obiekt to zaszyfrowane surowe bajty pliku typu protokołu urn:mirrorboards:blob:1. Drugi to szyfrowany manifest dokumentu: oryginalna nazwa, MIME, rozmiar, hash plaintextu, stan usunięcia i referencja do pierwszego obiektu, w tym jego opakowany DEK. Publikacja manifestu wskazuje children, które utrzymują blob przy życiu. MIME pliku i jego nazwa nie muszą trafiać do publicznej karty; publiczny type określa rodzaj zasobu protokołu. S21, S29
Limit plaintextu wynosi 100 000 000 B, szyfrogramu 100 000 029 B. Przygotowany upload ma limit czasu; nie jest to termin ważności opublikowanego URL. Limit z kodu: 8 aktywnych uploadów i 200 000 058 B na właściciela, do 4 jednoczesnych weryfikacji w procesie. To limity implementacji, nie potwierdzone bieżące wykorzystanie produkcyjne. S28, S30
06 · Odczyt, historia i odwoływanie dostępu
Źródła: S18, S19, S20, S22, S31.
Aktualny kod posiada UI historii kart i odtwarzania wersji. Starsza notatka operacyjna nadal mówi o „UI deferred”; w tym punkcie rozstrzyga nowsza implementacja. Czytnik historii korzysta z content_cards/get_revisions/query. Ten indeks przedstawia stany kart na granicach bloków, więc nie jest to gwarancja pokazania każdej pośredniej rewizji w jednym bloku. Dokładne podpisane publikacje są osobno utrwalane w storage ledger. S20, S31, S33
Zmiana expected_hash zapewnia kontrolę współbieżnego zapisu: nowa wersja nie powinna nadpisać obcej zmiany bez zauważenia konfliktu. Usunięcie dokumentu w boardzie publikuje deleted: true. Nie jest równoznaczne z fizycznym usunięciem obiektu S3 ani historii. Potwierdzone rewizje są zachowywane, a GC ma dotyczyć osieroconych uploadów po co najmniej 24 godzinach i tylko po bezpiecznej weryfikacji braku referencji. S20, S21, S30, S33
Trzy różne rotacje: zmiana strażnika dotyczy otwierania mastera; rotacja mastera zmienia epokę skarbca i przepakowuje jego zawartość; rotacja room key dotyczy nowych danych pokoju i kopert członków. Usunięcie strażnika bez rotacji nie odbiera mu możliwości otwarcia zachowanej starej koperty. Usunięcie członka nie usuwa jego wcześniejszych kopii room key, treści ani szyfrogramów. Brak podstaw, aby deklarować forward secrecy dla każdej wiadomości: tutaj nie ma protokołu ratchet per wiadomość. To wnioski z opisanej konstrukcji. S04, S18, S36
07 · Rozmowa z AI: granica poufności
Źródła: S32, S34, S37, S38, S39.
Chatboards wysyła wiadomości rozmowy; materiały projektu nie są jeszcze automatycznie dołączane. Sam upload PDF nie oznacza OCR, indeksowania wektorowego ani RAG. UI mówi o tym wprost, a runtime nie ma w tej ścieżce narzędzia pobierającego pliki projektu. Nie przenoszę możliwości dawnych proxy i innych boardów do obecnego Chat API. S32, S34
Snapshot w S3 może przechowywać pełną historię, nazwy i statusy wiadomości. Request modelu ogranicza się do maksymalnie 200 wiadomości i 128 KiB serializacji; pomija wskazane nieudane wiadomości oraz puste odpowiedzi asystenta. API dodatkowo waliduje wejście. SSE nie jest trwałym logiem rozmowy: runtime używa without_memory(), a trwały zapis inicjuje frontend. Domyślne limity backendu: 120 s, 4096 tokenów odpowiedzi, 2 jednoczesne uruchomienia na konto w procesie. S29, S32, S34, S37
Wartość domyślna zależy od warstwy. Kod ChatConfig domyślnie wybiera agent, ale Pulumi ustawia AI_MODEL_PROFILE_DEFAULT=fast. Oba domyślne aliasy to klasa -open. Lokalny katalog gateway opisuje tę klasę jako dopuszczającą trening u dostawców; to opis intencji konfiguracji, nie przeprowadzona tutaj weryfikacja bieżących warunków OpenRoutera lub konkretnego modelu. Alias mb/agent-std jest zdefiniowany w gateway, lecz nie należy do domyślnej mapy profili Chat API. S37, S38, S39
Logowanie gateway jest włączone w wykonywanej konfiguracji: EnableLogging: true, LogsStore.Enabled: true, SQLite /app/data/logs.db. Wolumen /app/data jest emptyDir, więc nie jest trwałą historią po usunięciu poda. Starszy komentarz w main.go mówi o wyłączonych logach; rozstrzygają wartości w config.go. Zakres przechowywania promptów/odpowiedzi, redakcja i eksport logów nie zostały sprawdzone, dlatego diagram nie obiecuje „zero retention”. S38, S39
Zaszyfrowane przechowywanie rozmowy nie oznacza, że treść pozostaje nieczytelna podczas inferencji. Plaintext zna przeglądarka, Chat API, AI gateway i wybrany dostawca; routing i fallbacki mogą zmieniać ostatniego odbiorcę.
08 · Kopie skarbca, AutoUnlock i nowe urządzenie
Źródła: S04, S08, S09, S10, S40, S41, S42.
Lokalna baza xkeys zawiera stores envelopes i marks. Koperta urządzenia jest adresowana account:<user_id>; znaczniki świeżości są przechowywane oddzielnie. AutoUnlock używa w envelopes osobnego klucza obejmującego API URL i user_id, z JSON-em {vaultId, epoch, password}. To jawne hasło zapisane na tym urządzeniu, nie dodatkowo zaszyfrowany sekret. Nie jest częścią backupu ani uploadu koperty. Zabezpieczenie aplikacyjne przy lokalnym odczycie bazy jest zatem inne niż w trybie ręcznego wpisywania hasła. S09, S10
Przenośna koperta usuwa odbiorców typu device-password; hasło lokalnego urządzenia nie wystarcza do otwarcia samej koperty pobranej z serwera na nowym urządzeniu. Wspierane typy strażników to hardware key, platform passkey, device password i recovery code. Opcja odzyskiwania zarządzanego przez Mirrorboards jest w wizardzie wyłączona („Wkrótce”). MetaMask nie jest typem strażnika w bieżącym formacie. S04, S06, S42
Zapis koperty wymaga rosnącej dokładnie o jeden revision; epoch liczy rotacje mastera. Serwer sprawdza podpis Ed25519, a rotacja klucza zapisu wymaga podpisów starym i nowym kluczem. Pierwszy zapis opiera się na przedstawionym kluczu publicznym i bramce sesji. list_owned jest filtrowane po koncie, natomiast get(vault_id) wymaga sesji, lecz nie sprawdza, czy adres należy do pytającego. Poufność koperty opiera się na szyfrowaniu. S08
Pairing nie wysyła krótkiego kodu jako hasła szyfrującego do relay. CPace służy do uzgodnienia sekretu między urządzeniami; zaszyfrowany payload zawiera master, CEK i vault ID. Urządzenie dołączające potrzebuje również zgodnej koperty. Przyznanie dostępu wymaga ponownego dowodu strażnika. Limity i skierowanie prośby do tego samego konta XAuth są częścią ochrony. S40, S41
09 · Rozmieszczenie usług i trwałość
Źródła: S08, S28, S30, S33, S38, S39, S44, S45.
Diagram przedstawia logiczne rozmieszczenie wynikające z repozytorium; nie deklaruje, że każda usługa ma własny fizyczny serwer. W szczególności XKeys wykorzystuje AppDbEnvelope z rodziny czatu i schemat xkeys, choć obecny Chat API nie zapisuje tam wiadomości. Nazwa pakietu lub bazy nie dowodzi przechowywania treści rozmów. S08, S32, S44
Backup registry i backup vaultu rozwiązują różne problemy. Registry odtwarza historię publikacji i powiązań z obiektami; nie posiada plaintextu dokumentów ani kluczy umożliwiających ich odszyfrowanie. Odzyskanie dokumentu wymaga równocześnie zachowanego szyfrogramu, poprawnych metadanych i odpowiednich kluczy użytkownika/pokoju. Sama koperta bez strażnika albo sam bucket bez kluczy nie wystarczą. Harmonogram CNPG deklaruje codzienny backup 02:00 UTC i archiwizację WAL, prywatny bucket oraz retencję 30 dni. Ta retencja nie ogranicza czasu życia opublikowanych obiektów. Nie sprawdzałem w tej sesji skuteczności backupów ani opóźnienia WAL. S33, S45
HTTPS publicznych hostów wynika z adresów aplikacji i infrastruktury. Wewnętrzne URL-e do XAuth oraz AI gateway używają http://…svc.cluster.local. Nie zweryfikowano aktywnego service mesh/mTLS, szyfrowania wszystkich dysków i backupów na poziomie dostawcy ani dokładnych reguł sieciowych. Nie należy dopisywać takich gwarancji do szyfrowania realizowanego przez XKeys.
10 · Tabela: co, gdzie i kto może przeczytać
| Dane | Miejsce | Ochrona aplikacyjna | Widoczność / ograniczenie |
|---|---|---|---|
| Wiadomości, tytuły, podsumowania w czasie pracy | React / Query / pamięć urządzenia | Odszyfrowane do użycia | Kod działający w kontekście aplikacji ma dostęp do treści. |
| Snapshot rozmowy i manifest pokoju | OVH S3 objects/… |
AES-GCM, losowy DEK, DEK opakowany room key | Publiczne bajty są szyfrogramem; rozmiar i wzorce dostępu pozostają widoczne. |
| Surowe bajty dokumentu | Osobny obiekt S3 | Jak wyżej | Odszyfrowanie lokalne; samo pobranie szyfrogramu nie wymaga sesji. |
| Nazwa pliku, MIME, hash plaintextu | Szyfrowany manifest dokumentu | Jak treść | API storage widzi typ protokołu, hash szyfrogramu, rozmiar i powiązania. |
| URL, hash szyfrogramu, rodzaj karty, deskryptor, opakowany DEK | Swaplock, Query, registry | Metadane jawne; DEK zaszyfrowany | Istnienie zasobu, właściciel, identyfikatory, rewizje i struktura powiązań są obserwowalne. |
| Room key | Chwilowo JS; koperty członków na łańcuchu | ECIES do publicznego memo | Posiadacz odpowiedniego prywatnego memo może otworzyć kopertę. |
| Prywatne owner/active/memo | Szyfrowana zawartość vaultu; użycie w WASM | Warstwa koperty + osobno zapieczętowane klucze identity | XKeys API przechowuje szyfrogram; publiczne odpowiedniki są publikowane. |
| Hasło urządzenia XKeys | Wpisanie lokalne; opcjonalnie IndexedDB | Argon2id do KDF; AutoUnlock przechowuje jawny tekst | Nie jest wysyłane w przenośnej kopercie. |
| Kod odzysku | Pamięć kreatora / lokalny PDF | Jawny sekret użytkownika | PDF z kodem i vault ID nie jest kompletnym backupem koperty. |
| Koperta skarbca | IndexedDB / XKeys PostgreSQL / backup plikowy | CBOR + COSE AES-GCM / A256KW | Jawne metadane strażników; local_snapshot różni się od export. |
| Stan niedokończonej edycji | IndexedDB mirrorboards-encrypted-content |
Zaszyfrowany payload lub przygotowany szyfrogram | Klucze rekordów i część metadanych ponowienia są jawne. |
| Pending transaction i dane publikacji | localStorage | Podpisana transakcja, metadane i opakowane klucze | Nie jest to ten sam magazyn co szyfrowany draft; nie powinien zawierać treści użytkowej. |
| Token logowania | Cookie / transport Tauri | Token bearer, Base64 JSON; transport sesji | Base64 nie szyfruje; browser cookie ma HttpOnly i konfigurowalny Secure. |
| Konta, e-mail, sesje, weryfikacje | XAuth / Zitadel / cache Redis | Kontrola dostępu usług | Poza szyfrowaniem treści XKeys. |
| Osoby, organizacje, dostęp, nazwy, preferencje | System PostgreSQL | Autoryzacja Authorized |
System zna relację user ↔ subject ↔ konto ↔ pokój. |
| Prompt i odpowiedź w czasie inferencji | Chat API → Bifrost → dostawca | Transport; bez szyfrowania przed usługą AI | Usługi przetwarzające otrzymują treść jawną. |
| Historia zapytań gateway | SQLite w emptyDir poda Bifrost |
Po stronie serwera; logowanie włączone | Zakres payloadów, redakcja i ewentualny eksport niezweryfikowane. |
| Backup storage ledger | Prywatny bucket OVH | ACL i osobne credentials; zawartość to registry | Nie jest kopią odszyfrowanych plików; warstwy szyfrowania backupu wymagają osobnej weryfikacji. |
Tabela syntetyzuje diagramy 01–09 i przypisane im źródła. Ochrona przed odczytem treści nie ukrywa wszystkich metadanych ani nie zastępuje kontroli kodu uruchamianego na urządzeniu.
11 · Zakres i rzeczy, których nie należy dopowiadać
- XFiles/IPFS nie jest ścieżką uploadu opisanego Chatboards. Obecny router
xfiles-koreama pustą listę endpointów. Repozytorium zawiera historyczne komponenty IPFS i XFiles, ale analizowana ścieżka korzysta z Actanet storage i S3. Nie oznacza to, że żaden inny produkt w workspace ich nie używa. S46 - Szyfrowanie storage i prywatność AI to osobne właściwości. Nie można określić całej aplikacji jako „serwer nigdy nie widzi wiadomości”, jeśli użytkownik wysyła je do AI.
- Autoryzacja nie jest kluczem deszyfrującym. XAuth i System nie otwierają vaultu. Skopiowane wcześniej klucze/treść nie znikają po zmianie ACL.
- Aktualny frontend i dawny
mirrorboards-chat-proxy-ainie są tą samą ścieżką. Obecny Chat API jest w Rust/Rig; diagram nie przypisuje mu dawnych narzędzi, głosu czy integracji bez dowodu wywołania. S32, S34 - API boardów jest odrębnym rozszerzeniem. Host zna
boards.mirrorboards.chat; ta rodzina montuje routery Astral/Marketing/Strategy/Crossword. Nie bierze udziału w pokazanym uploadzie Chatboards. Każdy konkretny board z własnym backendem wymaga odrębnego prześledzenia zakresu wysyłanych danych. S01, S47 - To mapa kodu, nie atest bezpieczeństwa. Nie uruchamiałem testów kryptograficznych, pentestu, produkcyjnego capture ruchu ani restore drill. Walidacja artefaktu obejmuje renderowanie diagramów, otwieranie HTML, interakcje i spójność odnośników do istniejących plików.
12 · Źródła i możliwość aktualizacji
Odnośniki poniżej prowadzą do kodu w repozytoriach GitHub; prywatne repozytoria wymagają uprawnionego konta. Odciski opisują analizowany stan lokalny. Przy pliku zmienionym względem HEAD odnośnik pokazuje bazowy commit, a SHA-256 identyfikuje analizowany plik. evidence.json zawiera SHA-256 pliku, commit repozytorium i informację, czy dany plik różnił się od HEAD. Nazwy sekretów opisują zależności; dokument nie zawiera ich wartości. Diagramy można edytować jako Mermaid w tym pliku lub w katalogu diagrams/. HTML ma osadzone SVG, działa bez CDN i bez kontaktu z API produktu.
Rozwiń 47 grup źródeł · 93 odnośniki do plików
S01 · Host, konfiguracja usług i boardy
applications/applications-mirrorboards-chat/mirrorboards-chat-web/src/env.ts
applications/applications-mirrorboards-chat/mirrorboards-chat-web/src/api.ts
applications/applications-mirrorboards-chat/mirrorboards-chat-web/src/boards.tsx (lokalny plik różnił się od HEAD; link pokazuje wersję bazową)
S02 · Wstrzyknięcie klientów usług
S03 · Runtime sesji i porty skarbca
applications/applications-mirrorboards-chat/mirrorboards-chat-web/src/sessions.ts
applications/applications-mirrorboards-chat/mirrorboards-chat-web/src/components/vault/ports.ts
S04 · Cykl życia vaultu i export/local_snapshot
S05 · KDF strażników i rozdział dziedzin
S06 · Format jawnej/zapieczętowanej koperty
S07 · COSE i wewnętrzne klucze tożsamości
S08 · Magazyn XKeys, autoryzacja zapisu i odczytu
mirrorboards/mirrorboards-xkeys/xkeys-korea/core/src/rules.rs
mirrorboards/mirrorboards-xkeys/xkeys-korea/router/src/routes/xkeys/vault/_query/get.rs
mirrorboards/mirrorboards-xkeys/xkeys-korea/router/src/routes/xkeys/vault/_command/put.rs
mirrorboards/mirrorboards-xkeys/xkeys-korea/router/src/state.rs
S09 · IndexedDB skarbca
S10 · AutoUnlock
S11 · Granica WASM i generowanie tożsamości
S12 · Role kluczy łańcuchowych
S13 · ECIES i losowy room key
S14 · DEK, wrapping i AAD stored content
S15 · HKDF i AES-GCM payloadów
S16 · Tworzenie i odnajdywanie pokoju
mirrorboards/mirrorboards-shell/mirrorboards-shell-datarooms/src/creation/prepare.ts
mirrorboards/mirrorboards-shell/mirrorboards-shell-datarooms/src/hooks/useCreateDataRoom.ts
mirrorboards/mirrorboards-shell/mirrorboards-shell-datarooms/src/services/rooms.ts
S17 · Nazwa i prywatny manifest pokoju Chatboards
mirrorboards-boards-chats/boards-chatboards-chats/chatboards-chats-board/src/hooks/useCreateChatboard.ts (lokalny plik różnił się od HEAD; link pokazuje wersję bazową)
mirrorboards-boards-chats/boards-chatboards-chats/chatboards-chats-messages/src/room.ts (lokalny plik różnił się od HEAD; link pokazuje wersję bazową)
S18 · Aktualne członkostwo i historyczne klucze
S19 · Descriptor i weryfikacja pobranego szyfrogramu
S20 · Publikacja kart, CAS i pending transaction
mirrorboards/mirrorboards-shell/mirrorboards-shell-datarooms/src/hooks/useDataRoomCard.ts
mirrorboards/mirrorboards-shell/mirrorboards-shell-datarooms/src/services/cards.ts
S21 · Upload pliku i szyfrowany manifest dokumentu
mirrorboards/mirrorboards-shell/mirrorboards-shell-datarooms/src/hooks/useStoredBlob.ts
mirrorboards-boards-chats/boards-chatboards-chats/chatboards-chats-board/src/hooks/useProjectDocuments.ts (lokalny plik różnił się od HEAD; link pokazuje wersję bazową)
S22 · Drafty i prywatny kontekst pamięci
mirrorboards/mirrorboards-shell/mirrorboards-shell-datarooms/src/services/draftStore.ts
mirrorboards/mirrorboards-shell/mirrorboards-shell-datarooms/src/hooks/useDataRoomDraft.ts
mirrorboards/mirrorboards-shell/mirrorboards-shell-datarooms/src/access/usePrivateDataScope.ts
S23 · Rozwiązywanie sesji przez XAuth
S24 · System: subject i rejestr pokoi
applications/applications-system/system-korea/system-router/src/authorized.rs
applications/applications-system/system-korea/system-core/src/store/data_rooms.rs
S25 · System: rejestracja nazw i kont
S26 · XAuth: logowanie, token, cookie
mirrorboards/mirrorboards-xauth/xauth-korea/xauth-core/src/session/token.rs
mirrorboards/mirrorboards-xauth/xauth-korea/xauth-core/src/session/cookie.rs
S27 · Zitadel i Redis cache
mirrorboards/mirrorboards-xauth/xauth-korea/xauth-core/src/cache.rs
mirrorboards/mirrorboards-xauth/xauth-korea/xauth-core/src/session/zitadel.rs
S28 · API Actanet storage i dowody właściciela
applications/applications-actanet/actanet-api/src/routers/storage.rs
mirrorboards/mirrorboards-shell/mirrorboards-shell-datarooms/src/services/storageUpload.ts
S29 · Schematy utrwalanych danych
mirrorboards-boards-chats/boards-chatboards-chats/chatboards-chats-messages/src/schemas.ts
mirrorboards-boards-chats/boards-chatboards-chats/chatboards-chats-messages/src/room.ts (lokalny plik różnił się od HEAD; link pokazuje wersję bazową)
mirrorboards-boards-chats/boards-chatboards-chats/chatboards-chats-board/src/services/chatSnapshot.ts (lokalny plik różnił się od HEAD; link pokazuje wersję bazową)
S30 · Trwały cykl życia S3 i GC
S31 · UI historii i przywracania
mirrorboards-boards-chats/boards-chatboards-chats/chatboards-chats-board/src/components/CardHistory/DocumentHistory.tsx (lokalny plik różnił się od HEAD; link pokazuje wersję bazową)
mirrorboards-boards-chats/boards-chatboards-chats/chatboards-chats-board/src/pages/ProjectChat/ProjectChat.tsx (lokalny plik różnił się od HEAD; link pokazuje wersję bazową)
mirrorboards/mirrorboards-shell/mirrorboards-shell-datarooms/src/hooks/useDataRoomCard.ts
S32 · Aktywny backend czatu Rust/Rig
applications/applications-mirrorboards-chat/mirrorboards-chat-api-korea/core/src/runtime.rs
applications/applications-mirrorboards-chat/mirrorboards-chat-api-korea/router/src/routes/run.rs
applications/applications-mirrorboards-chat/mirrorboards-chat-api/src/routers/chat.rs
S33 · Notatka operacyjna storage; częściowo starsza niż UI
S34 · Wysyłanie kontekstu i checkpoint czatu
mirrorboards-boards-chats/boards-chatboards-chats/chatboards-chats-board/src/services/chatContext.ts
mirrorboards-boards-chats/boards-chatboards-chats/chatboards-chats-board/src/pages/ProjectChat/ProjectChat.tsx (lokalny plik różnił się od HEAD; link pokazuje wersję bazową)
S35 · Weryfikowanie wyzwań i transakcji przed podpisaniem
mirrorboards/mirrorboards-xkeys/xkeys-web/src/registration.ts
mirrorboards/mirrorboards-xkeys/xkeys-web/src/transaction.ts
S36 · Backend operacji członków i rotacji
S37 · Profile i limity Chat API
applications/applications-mirrorboards-chat/mirrorboards-chat-api-korea/core/src/config.rs
applications/applications-mirrorboards-chat/mirrorboards-chat-api-korea/core/src/input.rs
applications/applications-mirrorboards-chat/mirrorboards-chat-api-korea/router/src/state.rs
S38 · Gateway: routing i faktyczne ustawienia logowania
S39 · Pulumi: Chat API i Bifrost
S40 · CPace i zaszyfrowany payload parowania
S41 · Relay: limity, DB i klient parowania
S42 · Recovery, backup oraz niedostępny managed recovery
applications/applications-mirrorboards-chat/mirrorboards-chat-web/src/boards/settings/recoveryPdf.ts
S43 · Przykład współdzielenia datarooms przez Go To Market
- mirrorboards-boards-chats/boards-go-to-market-chats/go-to-market-chats-board/src/components/RoomContext/RoomContext.tsx (lokalny plik różnił się od HEAD; link pokazuje wersję bazową)