# ADR-002: Phase D in-memory candle cache

**Status:** Accepted  
**Date:** 2026-10-02

## Context

Phase D adds symbol/timeframe switching. Repeated identical API calls could increase OANDA load. Project rules disallow Redis for this phase.

## Decision

Use `MemoryCache` in `lib/cache/memory-cache.ts`:

- **TTL:** 30 seconds per cache key `symbol:timeframe:count`
- **In-flight dedupe:** concurrent identical requests share one OANDA fetch
- **Scope:** server process only (dev / single-node)

## Consequences

- Manual Refresh within 30s may return cached data (acceptable for Chart MVP)
- No cross-process cache; Phase E warehouse will replace long-history strategy

## Alternatives rejected

- Redis / external cache — premature infrastructure
- Browser-only cache — insufficient for dedupe across tabs
