mirror of
https://github.com/harivansh-afk/sandbox-agent.git
synced 2026-04-22 02:03:49 +00:00
1.7 KiB
1.7 KiB
Repo Overview Should Read Cached State Only
Problem
Repo overview currently forces PR sync and branch sync inline before returning data. That turns a read path into:
- repo fetch
- branch enumeration
- diff/conflict calculations
- GitHub PR listing
The frontend polls repo overview repeatedly, so this design multiplies slow work and ties normal browsing to sync latency.
Target Contract
getRepoOverviewreturns the latest cached repo projection immediately.- Sync happens on a background cadence or on an explicit async refresh trigger.
- Overview responses include freshness metadata so the client can show "refreshing" or "stale" state without blocking.
Proposed Fix
- Remove inline
forceProjectSync()fromgetRepoOverview. - Add freshness fields to the project projection, for example:
branchSyncAtprSyncAtbranchSyncStatusprSyncStatus
- Let the existing polling actors own cache refresh.
- If the client needs a manual refresh, add a non-blocking command such as
project.requestOverviewRefreshthat:- enqueues refresh work
- updates sync status to
queuedorrunning - returns immediately
- Keep
getRepoOverviewas a pure read over project SQLite state.
Client Impact
- The repo overview screen should render cached rows immediately.
- If the user requests a refresh, the UI should show a background sync indicator instead of waiting for the GET call to complete.
- Polling frequency can be reduced because reads are now cheap and sync is event-driven.
Acceptance Criteria
getRepoOverviewdoes not callforce()on polling actors.- Opening the repo overview page does not trigger network/git work inline.
- Slow branch sync or PR sync no longer blocks the page request.