1.4 KiB
1.4 KiB
Architectural Decision Log (ADL)
[2026-08-09] - ADL-001: Distributed Local-First System Baseline
- Status: Accepted
- Context: Design a multi-platform (Windows, Linux, Android, Headless) productivity engine for time, project, and note management without centralized servers.
- Decision: Adopted Rust core with SQLCipher local storage, Automerge CRDT delta sync over libp2p, and Flutter presentation layer bound via C-FFI.
[2026-08-09] - ADL-002: chronogrid_crypto Crate – Argon2id KDF & OS Keychain
- Status: Accepted
- Context: Task 1.2 required implementing the
chronogrid_cryptocrate with Argon2id master-key derivation and OS-native keychain bindings perdocs/ARCHITECTURE/02-security-and-crypto.md. - Decision:
- Argon2id parameters pinned: 64 MiB memory, 3 iterations, 4 threads, 16-byte random salt, 32-byte output.
DerivedKeystruct implementsZeroize + Dropto scrub sensitive memory on scope exit.- OS keychain abstracted via
keyringcrate v3 (Windows Credential Manager / DPAPI, Linux SecretService / libsecret). Android keychain is excluded (cfg(not(target_os = "android"))) and will be handled by Flutter KeyStore bridge in Task 1.5. - Raw key material is Base64-encoded before credential-store insertion for UTF-8 backend compatibility.
- Inline Base64 encode/decode helpers avoid adding an external Base64 dependency.