# KORA Studio Report Viewer Requirements

## Purpose

The KORA Studio report viewer should let users inspect local validation reports and aggregate counters without uploading artifacts or implying new benchmark claims.

Current scaffold status: the local preview exposes a report viewer/export placeholder from fixture metadata only. It does not scan arbitrary local files, upload reports, write generated report files, commit generated reports, or create new benchmark evidence.

## Input Artifacts

Initial inputs should come from local files generated by existing validation examples:

- local no-network Markdown reports
- JSON summary output copied from local validation commands
- reviewer packet outputs selected by the user
- future local model validation reports after separate implementation and review

## Supported Files

Initial support should focus on:

- `.md` Markdown reports
- `.json` summary files with aggregate counters

Unsupported or ambiguous files should fail closed with a clear message.

## Expected Report Sections

The viewer should preserve and surface sections such as:

- report metadata
- summary counters
- adapter selection result
- provider fixture dry-run contract
- boundary language
- interpretation
- explicit non-claims
- reproduction notes

## Counter Extraction Later

Counter extraction can be added after the static viewer exists. It should read structured report fields or companion JSON when available, then map them to the dashboard counter schema.

The viewer should not infer unavailable counters, estimate cost, or convert model-call counters into billing or energy claims.

## Local-Only Behavior

- read files from local paths selected by the user
- do not upload reports by default
- do not require API keys
- do not require provider credentials
- do not call external services
- do not commit generated reports by default

## Privacy Rules

- do not display or persist secrets
- do not include raw provider responses in public fixtures
- do not include private customer data
- do not include proprietary datasets
- prefer synthetic and aggregate examples
- warn users before opening files that may contain private data

## Claim Boundary

The report viewer does not create new benchmark evidence. It only visualizes already generated validation counters and claim-safe report language.

Do not describe local/no-network reports as production validation, production cost reduction proof, real API-cost reduction proof, or energy reduction evidence.

## Future UI Notes

Useful UI states include:

- empty state with local-only guidance
- report loaded state
- unsupported file state
- missing path state
- counter extraction unavailable state
- boundary language visible state
- local file path indicator
