Slice 3: caching layer for remote-first Forgejo ingest #110

Closed
opened 2026-06-17 11:59:08 +00:00 by coilysiren · 1 comment
Owner

Slice 3 (deferred from #109): caching layer for remote-first ingest

Remote-first Forgejo ingest (#109, Slices 1+2) is live: REPO_RECALL_REMOTE_FIRST seeds
targets from fetch_active_repos, and issues/PRs/milestones/commits hydrate with no local
clone. Caching was explicitly fenced as Slice 3.

Want: persist the last-good remote snapshot (issues/PRs/milestones/commits) across refreshes
and process restarts so a cold container shows data immediately and a transient Forgejo blip
doesn't blank the dashboard. Today a fresh cache dir is empty until the first full remote pass
completes (~50s for ~33 repos).

Notes / adjacent cleanups uncovered during #109:

  • finalize_repo_aggregates runs in the blocking phase before the remote pass, so
    remote-ingested commits needed a second finalize call after ingest_remote_commits
    (already done in #109). A cache layer should make aggregate recompute ordering explicit.
  • The per-source scheduler can run git_log (which wipe_git_logs the commit tables) without
    github_remote in the same tick; in remote-first that transiently drops remote commits until
    the next remote pass. A cache / source-ownership split would fix this cleanly.

refs #109

## Slice 3 (deferred from #109): caching layer for remote-first ingest Remote-first Forgejo ingest (#109, Slices 1+2) is live: `REPO_RECALL_REMOTE_FIRST` seeds targets from `fetch_active_repos`, and issues/PRs/milestones/commits hydrate with no local clone. Caching was explicitly fenced as Slice 3. **Want:** persist the last-good remote snapshot (issues/PRs/milestones/commits) across refreshes and process restarts so a cold container shows data immediately and a transient Forgejo blip doesn't blank the dashboard. Today a fresh cache dir is empty until the first full remote pass completes (~50s for ~33 repos). **Notes / adjacent cleanups uncovered during #109:** - `finalize_repo_aggregates` runs in the blocking phase *before* the remote pass, so remote-ingested commits needed a second `finalize` call after `ingest_remote_commits` (already done in #109). A cache layer should make aggregate recompute ordering explicit. - The per-source scheduler can run `git_log` (which `wipe_git_log`s the commit tables) without `github_remote` in the same tick; in remote-first that transiently drops remote commits until the next remote pass. A cache / source-ownership split would fix this cleanly. refs https://forgejo.coilysiren.me/coilyco-flight-deck/repo-recall/issues/109
Author
Owner

Closing. The Claude-session observability tree (repo-recall / luca / session-lattice) is retired in the June 2026 surface reduction.

Closing. The Claude-session observability tree (repo-recall / luca / session-lattice) is retired in the June 2026 surface reduction.
Commenting is not possible because the repository is archived.
No milestone
No project
No assignees
1 participant
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
coilyco-flight-deck/repo-recall#110
No description provided.