Repository navigation
fix: warn when displayed feeds trail newer local caches - #248
Merged
Merged
Conversation
vjovanov
force-pushed
the
fix/issue-244
branch
from
October 22, 2026 15:58
6f4b671 to
b78811b
Compare
vjovanov
marked this pull request as ready for review
October 22, 2026 15:58
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #244
After a separate
ephor refresh demosuccessfully replacedOLD cache rowwithNEW cache rowon disk, an openephor tuiused to keep showing OLD without saying the screen was behind. It now keeps that displayed snapshot and adds a persistent warning on the periodic tick:The warning names every affected project and wraps to the terminal width. Rows, selection and seen/done state stay intact. Other messages and unrelated project refreshes cannot clear it: each project's warning disappears only when an existing feed load or refresh absorption brings that displayed snapshot up to the newer cache. The new functional point specifies this behavior and keeps it separate from provider-failure stale labeling (§FS-001-forge-interface.7.1).
The TUI observes only its session projects' known cache files. Unchanged metadata avoids parsing and added redraws; changed files are checked for valid newer fetch evidence. Initial loading, reloads and per-project absorption establish their metadata baseline before reading the displayed snapshot, so a replacement during loading remains detectable. The updated session explanation documents this local observation and when warnings retire (§AR-009-surfaces.2).
Observation starts no provider fetch, changes no provider health and writes no cache. Missing, unreadable, malformed, incompatible or wrong-project cache data preserves last-good rows and any established warning. The existing
raction remains the remedy; CLI/JSON output, cache schema, provider interfaces and refresh scope retain their contracts.The specification and three failing regressions were committed first in
86d318c6db; implementation6f4b671dbaenabled all three without changing their assertions. The real-terminal regression usespyte==0.8.2, added as a test dependency and installed by CI before Cargo tests.Local verification on
6f4b671dbapassed:rrecovery, rendered warning lifecycle with reader-state preservation, and deterministic cache replacement during the initial read. None is ignored.pre-commit run --all-files: Rust formatting, warnings-as-errors build, all-target Rust tests, Python integration, CI-pinned grund 0.18.0 check/format, fissile and content guards.fmt --checkpassed.TMPDIR, including all three regressions.The local gate finished
READY: yeson its first run; independent review approved with no findings. Remote CI is checked during shipping. The generated workflow summary below covers recorded invocations before shipping.AI workflow: `rhei`, 11 agent invocations across 1 model; 6 tasks completed, 10 in progress.
github-issues-agent-grounds-ephor-244-implement-8b944eef.ticketsupervising (visit 1) — cdx, openai/gpt-6.1-sol — 2m22s — 555.6k in / 4.6k outgithub-issues-agent-grounds-ephor-244-implement-8b944eef.ticket.triageassessing (visit 1) — cdx, openai/gpt-6.1-sol — 1m32s — 303.7k in / 2.5k outgithub-issues-agent-grounds-ephor-244-implement-8b944eef.ticket.triagereproducing (visit 1) — cdx, openai/gpt-6.1-sol — 7m42s — 1.3M in / 14.4k outgithub-issues-agent-grounds-ephor-244-implement-8b944eef.ticketsupervising (visit 2) — cdx, openai/gpt-6.1-sol — 2m34s — 707.3k in / 6.8k outgithub-issues-agent-grounds-ephor-244-implement-8b944eef.ticket.specifyspecify — cdx, openai/gpt-6.1-sol — 15m03s — 4.3M in / 28.8k outgithub-issues-agent-grounds-ephor-244-implement-8b944eef.ticketsupervising (visit 3) — cdx, openai/gpt-6.1-sol — 1m56s — 455.6k in / 4.0k outgithub-issues-agent-grounds-ephor-244-implement-8b944eef.ticket.implementimplement — cdx, openai/gpt-6.1-sol — 10m19s — 2.8M in / 16.8k outgithub-issues-agent-grounds-ephor-244-implement-8b944eef.ticketsupervising (visit 4) — cdx, openai/gpt-6.1-sol — 2m24s — 450.6k in / 4.2k outgithub-issues-agent-grounds-ephor-244-implement-8b944eef.ticket.review-1review — cdx, openai/gpt-6.1-sol — 5m17s — 1.3M in / 9.6k outgithub-issues-agent-grounds-ephor-244-implement-8b944eef.ticketsupervising (visit 5) — cdx, openai/gpt-6.1-sol — 2m45s — 824.1k in / 4.7k outgithub-issues-agent-grounds-ephor-244-implement-8b944eef.ticketsupervising (visit 6) — cdx, openai/gpt-6.1-sol — 2m07s — 514.8k in / 4.5k out