An encrypted personal cloud built on the AT Protocol.

Update docs to reflect module directory restructuring

ARCHITECTURE.md crate structure tree now matches the actual layout
after splitting crypto.rs, records.rs, and xrpc.rs into module
directories. Also adds files that were missing from the tree
(download_grant.rs, download_keyring.rs, sharing/list.rs, etc.).

CONTRIBUTING.md testing section updated to mention the extracted
test file pattern used by larger modules.

sans-self.org b0e9a75a dbe787d7

Waiting for spindle ...
+26 -6
+1
CHANGELOG.md
··· 7 7 ## [Unreleased] 8 8 9 9 ### Added 10 + - Update docs to reflect module directory restructuring (#95) 10 11 - Add verbose flags for CLI debug output (#92) 11 12 - Add keyring rotation history to preserve member access to pre-rotation documents (#87) 12 13 - Add cross-PDS download for keyring members (#84)
+1 -1
CONTRIBUTING.md
··· 39 39 40 40 ## Testing 41 41 42 - - Tests live in `#[cfg(test)]` modules alongside the code they test 42 + - Small test suites live inline in `#[cfg(test)]` modules. Larger test suites are extracted to sibling `*_tests.rs` files using `#[cfg(test)] #[path = "..._tests.rs"] mod tests;` — keeps implementation files focused 43 43 - Test contracts, not implementations — assert on inputs and outputs 44 44 - Name regression tests after the bug: `bug__float_not_rounding_correctly` 45 45 - Use `MockTransport` (from `opake-core/src/test_utils.rs`) for XRPC tests — enqueue responses, assert on captured requests
+24 -5
docs/ARCHITECTURE.md
··· 36 36 crates/ 37 37 opake-core/ Platform-agnostic library (compiles to WASM) 38 38 src/ 39 - crypto.rs AES-256-GCM encryption, X25519 key wrapping 40 - records.rs Serde types for all app.opake.cloud.* lexicons 41 39 atproto.rs AT-URI parsing, shared AT Protocol primitives 42 40 resolve.rs Handle/DID → PDS → public key resolution pipeline 43 41 error.rs Typed error hierarchy (thiserror) 42 + test_utils.rs MockTransport + response queue (behind test-utils feature) 43 + crypto/ 44 + mod.rs Type defs, constants, re-exports 45 + content.rs AES-256-GCM: generate_content_key(), encrypt_blob(), decrypt_blob() 46 + key_wrapping.rs X25519-HKDF-A256KW: wrap_key(), unwrap_key(), create_group_key() 47 + keyring_wrapping.rs Symmetric AES-KW: wrap/unwrap content key under group key 48 + records/ 49 + mod.rs SCHEMA_VERSION, Versioned trait, check_version(), re-exports 50 + defs.rs WrappedKey, EncryptionEnvelope, KeyringRef 51 + document.rs DirectEncryption, KeyringEncryption, Encryption, Document 52 + public_key.rs PublicKeyRecord, collection/rkey constants 53 + grant.rs Grant 54 + keyring.rs KeyHistoryEntry, Keyring 44 55 client/ 45 - mod.rs XrpcClient, Session, re-exports 56 + mod.rs Re-exports 46 57 transport.rs Transport trait (HTTP abstraction for WASM compat) 47 - xrpc.rs Authenticated XRPC methods (CRUD, blob ops, token refresh) 48 58 did.rs Unauthenticated DID resolution and cross-PDS queries 59 + list.rs Generic paginated collection fetcher 60 + xrpc/ 61 + mod.rs XrpcClient struct, Session, response types, check_response() 62 + auth.rs login(), refresh_session() 63 + blobs.rs upload_blob(), get_blob() 64 + repo.rs create_record(), put_record(), get_record(), list_records(), delete_record() 49 65 documents/ 50 66 mod.rs Re-exports, shared test fixtures 51 67 upload.rs encrypt_and_upload() 52 - download.rs download_and_decrypt(), download_shared(), fetch_content_key() 68 + download.rs download_and_decrypt() — direct-encrypted documents 69 + download_grant.rs download_shared() — cross-PDS via grant URI 70 + download_keyring.rs download_keyring_document() — keyring-encrypted documents 53 71 list.rs list_documents() 54 72 delete.rs delete_document() 55 73 resolve.rs Filename → AT-URI resolution ··· 62 80 sharing/ 63 81 mod.rs Re-exports 64 82 create.rs create_grant() 83 + list.rs list_grants() 65 84 revoke.rs revoke_grant() 66 85 67 86 opake-cli/ CLI binary wrapping opake-core