# V13-FE-035 — KBX freshness indicator adoption

## Scope

- **Source:** KBX v60 `KbxFreshnessIndicator.vue` and freshness contract principles.
- **Adopted:** explicit caller-supplied clock, optional source/revision metadata, stale label, and opt-in refresh command with accessible naming.
- **Not adopted:** system-clock reads, invented freshness windows, automatic refresh loops, server `published_at`/revision persistence, or provider APIs.

## Source / Assumption / Unknown / Decision Required

- **Source:** current `DataFreshnessBadge.vue`, centralized `formatAsOf`, and KBX freshness indicator.
- **Assumption:** `staleAfterMinutes` remains an approved caller input; the shared component does not choose a domain threshold.
- **Unknown:** production mapping from PIT `published_at`/revision and approved source display names.
- **Decision Required:** Data/UX/QA must approve freshness windows, source redaction, revision semantics, and refresh ownership.

## Evidence

- Targeted Vitest: 3 tests passed.
- `pnpm typecheck`: required after this change.

Visual, browser, PIT integration, and production evidence remain outstanding.
