Changelog
All notable changes to the Sharpe API are documented here. Entries are auto-generated from conventional commits touching API code, docs, and infrastructure.
September 2026
fix
servenever answer one read model's request with another model's read on the same dataset
feature
servehealth lists each dataset's freshness, Runtime Cache usage is counted, v1 usage is exact
- /api/health reads a per-dataset freshness rollup from the snapshot index and
- Every Runtime Cache read, hit and write is counted per key namespace and
- /v1/usage reads the last 24 h through keyset pages on (created_at, id): past
improvement
serveserve the pump-dump and insider-selling boards through one read model
- One signal read model behind the free and v1 routes of both boards: the
- A fresh board is cached 600/1,200 s, a stale one 30/30; a failed read is 503
- The stale bound is 1 hour everywhere: API, v1 freshness_sla_seconds (3600),
improvement
serveserve the /global overview through one read model
- Both /global overview routes run on one model: the crypto snapshot while it
- A fallback to an old snapshot is flagged stale and no longer cached (was
- Registry prose, docs, the contract and OpenAPI describe the new fallback.
improvement
serveserve correlation, market-cap search, price prediction and coin compare through read models
- Eight research read models behind the 11 routes; one CoinGecko client for all
- Unknown correlation ids: partial success with `unresolved` on both routes
- The coin picker's hour-cached CoinGecko list gets its own dataset
- Outages answer 503 problem+json on the free routes (v1 502); contracts,
feature
signalsscore crypto assets only, from each venue's primary contract, and give dropped coins no score
- The pump-dump and insider-pressure scorers are engine metrics pump_dump.score
- Their 72 h and daily funding inputs read each venue's primary crypto
- A coin that stops scoring is written with score NULL and its sub-scores and
fix
listingsone freshness bound for listing events, and rollup reads that cannot lose buckets
- The events payload marks the persisted rows partial once the newest completed
- The hub's weekly and monthly rollup reads are ordered by their unique key and