docs: record human decisions on Linux keyring policy, retention defaults, review gate
This commit is contained in:
@@ -1269,28 +1269,31 @@ stage.
|
||||
primary keys, the purge ordering (key before file), lazy materialisation, and the F1–F49 failure
|
||||
table.
|
||||
|
||||
### Open questions for the human
|
||||
### Open questions for the human — resolved 2026-08-04
|
||||
|
||||
1. **If Stage A item 6 shows an unsigned build loses its Keychain item across updates**, does the
|
||||
encrypted store ship anyway (re-bootstrapping after each update — bandwidth, not data loss), or
|
||||
wait on VNCprodbuild step 9 (Apple Developer ID, already a human-owned purchase)? This is the one
|
||||
Stage A outcome that could change the plan rather than just an implementation detail.
|
||||
2. **Linux with no keyring (`basic_text`, §6.3.1 / E3):** refuse outright, or offer an explicit
|
||||
opt-in that records the downgrade? Refusing is the safe default and what this design specifies;
|
||||
an opt-in is defensible for a single-user machine with full-disk encryption. Affects a real
|
||||
segment — AppImage users on minimal window managers.
|
||||
3. **Concrete retention defaults** — `offlineEnvelopeDays` ≫ `offlineBodyDays` and the MB cap on
|
||||
bodies only are settled (M§2.1); the *numbers* are not recorded anywhere. Two constants; the
|
||||
design is value-independent. Same open question M ends on.
|
||||
4. **Does the follow-up in §2.5 (collapse to one socket per account by having the renderer listen to
|
||||
the local server instead of Stalwart) get scheduled?** It would retire the renderer's WS
|
||||
circuit-breaker path as dead code and halve the connection count, but it makes a working
|
||||
notification path depend on the new one, so it is deliberately not in v1.
|
||||
5. **Should this land as its own PR ahead of the offline engine?** Stage A is pure verification and
|
||||
§10.3's `app.requestSingleInstanceLock()` (E7) plus §8.4's cooperative quit are improvements to
|
||||
the shell on their own merits, independent of any offline store.
|
||||
1. **If Stage A item 6 shows an unsigned build loses its Keychain item across updates** — left open
|
||||
deliberately; this is an empirical Stage A outcome, not something to decide blind. Resolve once
|
||||
Stage A actually runs and reports what happens.
|
||||
2. **Linux with no keyring (`basic_text`, §6.3.1 / E3): refuse outright.** Decided — matches this
|
||||
design's own "cheapest wrong answer" philosophy (§ discussion of `safeStorage`'s silent-downgrade
|
||||
landmine): an honest failure beats a store that looks encrypted but isn't. No opt-in path in v1.
|
||||
3. **Concrete retention defaults: same as the mobile design's defaults.** Decided —
|
||||
`offlineEnvelopeDays: 365`, `offlineBodyDays: 30`, MB cap on bodies matching mobile's default
|
||||
(§ mobile M§2.1's shipped numbers). Consistent behavior across platforms for v1; revisit only if
|
||||
desktop usage patterns actually show it's too narrow — don't widen speculatively.
|
||||
4. **§2.5 single-socket follow-up: not scheduled for v1.** Stays a gated follow-up as designed —
|
||||
don't collapse to one connection until the engine's own connection is proven in production.
|
||||
5. **Stage A as its own PR ahead of the offline engine: not decided separately** — proceed with the
|
||||
implementation sequence as designed (Stage A is the first step regardless of PR boundaries); the
|
||||
human can split the PR at merge time if desired, this doesn't block starting work.
|
||||
|
||||
None of these blocks starting Stage A.
|
||||
Also decided: **this design goes through an independent adversarial review next**, matching the
|
||||
mobile engine's process (design → review → implementation), before any implementation code is
|
||||
written — same reasoning as before: this is the same class of highest-stakes, hardest-to-undo
|
||||
component (a persistent, encrypted, multi-account local store), and the review process caught real
|
||||
critical bugs in the mobile design that this document's own author-side verification did not.
|
||||
|
||||
None of these blocks starting the review.
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user