feat: add end-to-end encrypted kDrive vault - #17
Conversation
OpenCow42
left a comment
There was a problem hiding this comment.
Review outcome: changes required before merge. I reviewed the cryptographic format and key custody, journal/reducer convergence, local encrypted persistence, rollback/checkpoint/GC behavior, migration, File Provider routing and item versions, trash/version semantics, onboarding, documentation, and the new tests. The feature is appropriately disabled by default and documented as experimental, but the findings below include reproducible state-corruption and stale-write paths. I submitted a comment review because GitHub does not allow an author to request changes on their own PR.
|
Added the mandatory unsupported-feature/data-loss gate in bee9f3b. The warning now appears before any remote vault preparation, explicitly states that complete unrecoverable data loss is possible, that no party provides support, and that the user proceeds entirely on their own. The continuation button is disabled for five seconds, with the same boundary enforced in the app model. Validation: focused macOS model tests passed (including 4.999s rejection and 5.000s acceptance with zero remote objects before acceptance); the targeted macOS UI test passed; iOS Simulator and unsigned generic visionOS builds passed. |
|
Self-review completed on commit Addressed and resolved all five inline review findings:
Additional fail-closed findings caught during self-review and fixed:
Validation:
This is not a production approval. The normative safety register in I did not change the PR's draft/readiness, approval, or merge state. |
Summary
KPE2/KPC2/KPB2,KPV2recovery kits, andev2:File Provider identifiers) while retaining v1 configuration decoding only to fail closedEncryptedVaultsEnabledgate, the complete-data-loss/no-support warning, and an independently enforced five-second monotonic delaySecurity status
doc/CONFLICT_RESOLUTION_TRUTH_TABLE.mdValidation
git diff --check: passedbuild-for-testing; 33 focused journal, provisioning/maintenance, cryptography, and domain-format tests passed directlypotassiumProviderTeststarget passedpotassiumProviderTeststarget passed; affected format/crypto/activation suites passed again after the final fail-closed changesThe normal local macOS test host executed the activation-model assertions but hung while finalizing its Xcode result bundle; this PR does not represent that run as a clean full-host exit.