d1ce4c8970
- axis.rs: paint_axes extraído a función pública reusable entre crates de visualización. LapalomaChartElement::paint_axes ahora es un thin wrapper. - OhlcBuffer: stride 6 f32 por bar (t, o, h, l, c, v). Bar struct con is_bull/is_bear. price_range y time_range. 5 tests. - aggregate_time_bucketed (sección 3.2 del ARCHITECTURE.md): buckets por TIEMPO (no índice) — open=first, close=last, high=max, low=min, volume=sum. Preserva volatilidad (los wicks sobreviven al downsample, a diferencia de LTTB). Fallback a copy 1:1 si el span temporal es cero. 4 tests cubren bucket count, preservation of volatility, fallback, empty input. - paint_candlesticks: render agnóstico contra el trait Canvas. Wick = stroke_line vertical (high → low). Body = fill_rect open ↔ close con color bull/bear/neutral. body_width derivado del spacing entre bars (con body_min_width floor). - LapalomaCandlestickElement: Element GPUI que reusa paint_axes + paint_candlesticks. Sin pan-blit cache en v0.1 (≤500 bars on-screen no lo necesita). - crates/apps/lapaloma-financial-demo: random walk determinístico (xorshift32 inline + seed fijo) de 120 bars, pan + zoom + reset igual que el cartesian demo. Paleta nórdica para bull (#a3be8c) y bear (#bf616a). 60 tests verdes (28 cartesian + 20 core + 9 financial + 3 render). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>