---
id: ADR-PFM-LLM-013
title: Use Daily Aggregates for HQ History and Scoped Reads for Live Detail
product_area: platform
module: llm
revision: 1
status: proposed
design_intent: proposed
source_sha:
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
decision: >-
  Rebuild organization-day aggregates from settled and refused requests for cross-organization history, while
  entering organization scope for live positions and individual records.
constrains:
  - DOM-PFM-LLM-004
  - WF-PFM-LLM-006
  - WF-PFM-LLM-012
  - SVC-PFM-LLM-llm
  - SCR-PFM-LLM-003
origin: >-
  Cross-organization reads through an exempt rollup plus per-organization entry reported as settled by
  inspection (services-platform:docs/proposals/llm-observability/11-decisions.md#11.1 Settled by inspection
  (reported)); UTC days are an unapproved assumption (FND-PFM-LLM-017).
alternatives:
  - option: Read every raw organization for every historical chart
    why_not: It scales reporting work with all underlying request records.
  - option: Bypass organization policy for raw reporting
    why_not: The proposed system scope is not built and exposes more than aggregate figures.
  - option: Increment reporting counters on every settlement
    why_not: Lost or repeated movements can create drift that full-day replacement avoids.
consequences:
  - The dedicated reporting reader accesses aggregate columns rather than raw requests.
  - Historical data lags successful rollup progress and excludes running requests.
  - Unreadable organization discovery blocks global progress.
  - The UTC-day reporting boundary remains proposed.
supersedes: []
evidence:
  - >-
    services-platform at ad3f6a6: modules/llm/services/reconciliation/rollup-settled-invocations.ts;
    services/persistence/usage-rollups.ts; services/usage-reports/*; db/row-level-security.ts; docs/llm.md
    (The daily rollup, Reporting).
---

# Use Daily Aggregates for HQ History and Scoped Reads for Live Detail

## Context

HQ comparisons need a common reporting source without granting raw cross-organization request access.

## Decision

Rebuild organization-day aggregates from settled and refused requests for cross-organization history, while entering organization scope for live positions and individual records.

## Alternatives Considered

Read every raw organization for every historical chart: It scales reporting work with all underlying request records.

Bypass organization policy for raw reporting: The proposed system scope is not built and exposes more than aggregate figures.

Increment reporting counters on every settlement: Lost or repeated movements can create drift that full-day replacement avoids.

## Consequences

The dedicated reporting reader accesses aggregate columns rather than raw requests. Historical data lags successful rollup progress and excludes running requests. Unreadable organization discovery blocks global progress. The UTC-day reporting boundary remains proposed.
