Annotate how fresh each displayed data point is #183

Closed
opened 2026-07-29 06:59:07 +00:00 by coilyco-ops · 0 comments
Member

Problem

The World page presents pollution, climate, map, and activity values together, but each data plane has a different freshness contract. A reader cannot tell whether a value reflects the latest Eco tick, the 60-second climate cache, or an older browser page load.

Current behavior:

  • MapPage fetches its four data planes once when the page mounts and does not poll.
  • ClimateSnapshot carries fetched_at_iso, and the backend climate cache defaults to a 60-second TTL.
  • Eco climate values move on game-hour ticks.
  • The page footer uses the world snapshot timestamp, which can misrepresent the age of the climate and pollution values.

Desired outcome

Try to annotate each displayed data point, or each coherent data section, with the freshest accurate provenance the app has. Keep the UI compact and avoid claiming precision the source does not provide.

Possible labels:

  • updated 42 seconds ago
  • sampled during game hour 14
  • cached, refreshes within 60 seconds
  • loaded 8 minutes ago, reload for latest
  • source cadence unknown

The design should distinguish three concepts where available:

  1. Source observation time or Eco tick.
  2. Backend fetch and cache age.
  3. Browser load age and whether the page polls.

Acceptance criteria

  • Each independently fetched plane retains an observation timestamp and known cadence or cache metadata.
  • The climate and pollution section reports the age of its own climate snapshot, not the world snapshot timestamp.
  • The UI distinguishes source sample age, backend cache age, and browser load age where those differ.
  • Unknown timestamps or cadences render honestly as unknown rather than as fresh.
  • Relative-age labels remain accessible and have an absolute timestamp available through suitable detail text.
  • Tests cover fresh, cached, stale, and unknown states without restating tunable configuration in test code.
  • Automatic polling is not required unless implementation work shows that it is the simplest honest freshness model.
## Problem The World page presents pollution, climate, map, and activity values together, but each data plane has a different freshness contract. A reader cannot tell whether a value reflects the latest Eco tick, the 60-second climate cache, or an older browser page load. Current behavior: * MapPage fetches its four data planes once when the page mounts and does not poll. * ClimateSnapshot carries fetched_at_iso, and the backend climate cache defaults to a 60-second TTL. * Eco climate values move on game-hour ticks. * The page footer uses the world snapshot timestamp, which can misrepresent the age of the climate and pollution values. ## Desired outcome Try to annotate each displayed data point, or each coherent data section, with the freshest accurate provenance the app has. Keep the UI compact and avoid claiming precision the source does not provide. Possible labels: * updated 42 seconds ago * sampled during game hour 14 * cached, refreshes within 60 seconds * loaded 8 minutes ago, reload for latest * source cadence unknown The design should distinguish three concepts where available: 1. Source observation time or Eco tick. 2. Backend fetch and cache age. 3. Browser load age and whether the page polls. ## Acceptance criteria * Each independently fetched plane retains an observation timestamp and known cadence or cache metadata. * The climate and pollution section reports the age of its own climate snapshot, not the world snapshot timestamp. * The UI distinguishes source sample age, backend cache age, and browser load age where those differ. * Unknown timestamps or cadences render honestly as unknown rather than as fresh. * Relative-age labels remain accessible and have an absolute timestamp available through suitable detail text. * Tests cover fresh, cached, stale, and unknown states without restating tunable configuration in test code. * Automatic polling is not required unless implementation work shows that it is the simplest honest freshness model.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
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-gaming/eco-app#183
No description provided.