Severity: High — architect review (2026-06-20).
Encryption was wired into bundle.export (iter-22) but scripts/sync.py has zero awareness of it, even though sync is the command users actually run:
- A
SECONDBRAIN_REQUIRE_ENCRYPTION=1 refusal raises EncryptionUnavailable inside export, which sync calls mid-flow — it will crash mid-rebase, leaving the bundle repo in a dirty/rebasing state, rather than failing cleanly before touching git.
- The "N private Concepts exported as PLAINTEXT" warning is emitted by
export but never surfaced/aggregated in the sync UX.
A security feature users can't see or safely operate is staged, not shipped.
Acceptance criteria
Severity: High — architect review (2026-06-20).
Encryption was wired into
bundle.export(iter-22) butscripts/sync.pyhas zero awareness of it, even thoughsyncis the command users actually run:SECONDBRAIN_REQUIRE_ENCRYPTION=1refusal raisesEncryptionUnavailableinsideexport, whichsynccalls mid-flow — it will crash mid-rebase, leaving the bundle repo in a dirty/rebasing state, rather than failing cleanly before touching git.exportbut never surfaced/aggregated in thesyncUX.A security feature users can't see or safely operate is staged, not shipped.
Acceptance criteria
syncchecks encryption preconditions before starting the git rebase; a strict-mode refusal aborts cleanly with an actionable message and a clean tree.syncoutput.syncleaves no partial commit and no rebase-in-progress.