Goal: To able to reason about the SecureDrop Client as a single application-level state machine, in which each global state is composed of (in order from left to right):
- an authentication state or state machine;
- a synchronization state or state machine; and
- a job-queue state or state machine.
Notes:
- This diagram is both descriptive and prescriptive. It describes what I read the SecureDrop Client codebase and supporting specifications as wanting to do. It prescribes (or implies) some changes that might help realize those design intentions. (And, inevitably, it makes some assumptions that may no longer hold or serve us.)
- Refer to the Mermaid state-diagram syntax if you have questions about how to read this diagram.