FRESH, DELAYED, STALE and UNAVAILABLE describe the evidence pipeline. They do not mean NORMAL, WATCH or ALERT operating conditions.
Freshness states
- FRESH: ATI checked the source on schedule and the publisher observation is within that source’s reviewed age window.
- DELAYED: a check is late, the latest publisher observation is older than expected, or the newest refresh failed while a validated snapshot remains available.
- STALE: the check or observation is beyond the source-specific stale limit. The date remains visible so users can judge whether it is still useful.
- UNAVAILABLE: ATI has no validated stored observation or cannot read the operational status. It does not mean normal conditions.
Source-specific policies
Publishers update at different speeds, so ATI does not apply one universal threshold. The check window measures ATI’s scheduler; the observation window measures the date inside the publisher’s data.
NASA documents a typical two-to-three-day latency for meteorological parameters, which supports ATI’s three-day delayed and seven-day stale boundaries. Regional publishers update continuously, while ATI deliberately checks the assessed corridor product every four hours to control model cost. A run records which feeds answered, and partial coverage remains visible instead of being presented as complete. PortWatch publishes daily estimates but can revise AIS-derived records; ATI’s wider 21/35-day observation windows reflect that source behavior and the latest live-adapter review. The World Bank series is monthly and published about a month in arrears, so its newest figure is normally 30 to 60 days old; the 70/95-day boundaries cover that cycle plus a late release without describing a skipped month as current.
Publisher documentation: NASA POWER latency ↗ · IMF PortWatch methodology ↗ · AllAfrica RSS terms and feeds ↗ · Africanews RSS feeds ↗ · World Bank Pink Sheet ↗.
| Source | Check cadence | Delayed observation | Stale observation |
|---|---|---|---|
| NASA POWER · Côte d’Ivoire | 1 day | After 3 days | After 1 week |
| NASA POWER · Ghana | 1 day | After 3 days | After 1 week |
| NASA POWER · Togo | 1 day | After 3 days | After 1 week |
| NASA POWER · Benin | 1 day | After 3 days | After 1 week |
| NASA POWER · Nigeria | 1 day | After 3 days | After 1 week |
| IMF PortWatch · corridor ports | 1 day | After 3 weeks | After 5 weeks |
| Regional news · corridor reporting | 4 hours | After 6 hours | After 12 hours |
| Exchange and FX context | 4 hours | After 26 hours | After 2 days |
| World Bank commodity benchmarks | 1 week | After 10 weeks | After 95 days |
| ACA bulletin index | 1 day | After 4 weeks | After 8 weeks |
Reviewed and seasonal records
Some values are read by a person before they are published. The Ghana raw cashew CFR range comes from the African Cashew Alliance’s AfriCashewSplits report: ATI checks the report archive automatically every day, but a new issue’s price table is read and approved by hand, because the tables can be misread in ways a parser cannot detect.
Ghana’s cashew trade is seasonal. Once ACA reports that the Ghana season has closed, and its off-season issues carry no Ghana price, the last in-season offer stays the newest one available until the next season. ATI then labels it as the season’s last offer rather than as stale, and says when new prices are expected. From that date, a missing new-season price counts against freshness again. A new ACA issue is flagged for review the day the daily check finds it, in or out of season.
Validated last-known-good data
Each refresh checks required fields, coverage and observation dates before replacing the stored snapshot. Empty, malformed, unexpectedly incomplete, future-dated or backwards-dated results fail closed. ATI keeps the previous validated snapshot and marks it DELAYED or STALE instead of replacing it with bad data.
The snapshot contains public-source results only. It does not contain customer accounts, reports, supplier records or farm polygons.
Run history and monitoring
Every scheduled attempt records its source, start and completion time, coverage, schema version, status and SHA-256 response hash. Failed runs store a short error code rather than upstream response bodies. A daily aggregate Sentry cron check monitors the source set, while source-tagged Sentry events identify individual refresh failures.
The status shown on product pages comes from a read-only, sanitised API. Database credentials and stored payloads are never returned by that endpoint.