# 0008. Data-loading orchestration is outside the renderer freeze

> ADR 0005 froze packages/core/src/engine/ to protect rendering. History loading also lives under engine/data/ (chartDataManager.ts, scrollCompensator.ts,…

Source: https://kcq.nebutra.com/docs/architecture/adr/0008-loading-orchestration-out-of-freeze


* Status: Accepted
* Date: 2026-10-09
* Deciders: tseka
* Amends: ADR 0005

Context [#context]

ADR 0005 froze `packages/core/src/engine/**` to protect rendering. History loading also lives under `engine/data/` (`chartDataManager.ts`, `scrollCompensator.ts`, `incrementalLoadHint.ts`). It currently produces a visible defect:

* one 500-bar first page that does not fill the viewport;
* empty slots right-aligned and labelled T-N;
* gap pages loaded one at a time, each with its own flash.

That is loading orchestration, not drawing.

Decision [#decision]

These may change, with tests:

* `engine/data/**` loading policy: first-request size, alignment of short data, gap prefetch and batching, load hints.
* `data/**` (provider, buffer, live).
* The decision of whether the time axis shows placeholder past-slot labels.

These stay frozen:

* `engine/renderers/**` drawing code
* `engine/scale/**`
* `controllers/**`
* `foundation/tokens/fonts.ts`

Consequences [#consequences]

* Loading fixes ship as normal PRs with unit tests on the orchestration.
* Any change to how bars are drawn still needs its own ADR.
