# Packet schema v1

Packets contain only aggregate statistics.

Required top-level fields:

- `schema_version`: integer `1`
- `packet_id`: random UUID
- `generated_date`: local calendar date, without time
- `source`: `fluidvoice-macos` or `voiceink-csv`
- `privacy`: object declaring excluded fields
- `context`: workspace type and analysis goal, plus nullable optional `role`, `industry`, and `work_type` values
- `summary`: total prompts, active days, observed weeks, and aggregate word statistics
- `weekday`: seven Monday-first aggregate records
- `hour_of_week`: 168 aggregate cells with weekday, hour, prompt count, and rounded mean words
- `length_histogram`: fixed word-count bands
- `burst_histogram`: prompt-count bands for bursts separated by no more than five minutes

The server must reject unknown top-level fields and any key containing `text`, `transcript`, `title`, `app`, `file`, `device`, `user`, `email`, or `timestamp` outside the fixed boolean privacy declarations.

Counts may be suppressed for cells below a future privacy threshold. Schema v1 currently emits zero-count cells and rounded means.

Optional context is retained for internal analysis and must not be rendered as an individual public result. Prefer broad categories; omitted values are encoded as `null`.
