---
name: App follows async model — SQLite is source of truth, flusher handles remote
description: All data writes go to SQLite first (instant UI), then enqueue to PendingEditFlusher for remote sync. Never block the UI thread for remote operations.
type: feedback
originSessionId: 128f87ce-3760-4ccf-a0c9-a198f2137c9a
---
The app follows a strict async model:
1. All changes write to SQLite immediately (source of truth for the app)
2. UI reflects SQLite state instantly
3. Remote sync (GH Issues, etc.) is enqueued to PendingEditFlusher
4. Never use thread.join() or block the UI thread for remote API calls

**Why:** User explicitly corrected the D-08 synchronous approach. The app must feel instant — SQLite is the local cache/source of truth, and remote operations happen in the background.

**How to apply:** When implementing any feature that creates or updates remote resources (GH Issues, etc.), always write to SQLite first, then enqueue a pending edit. Never make the UI callback wait for a network response.
