# Session metadata schema

Per-clip `metadata/*.json` includes a `session` object. One session per delivered clip.

## Fields

| Field | Type | Description |
|-------|------|-------------|
| `session_id` | string | e.g. `GGN_20260618_S01` (date + clip rank) |
| `capture_date` | string | ISO date `YYYY-MM-DD` |
| `timezone` | string | IANA tz, e.g. `Asia/Kolkata` |
| `collector_id` | string | Anonymous worker ID, e.g. `WRK_846159` |
| `clips_in_session` | int | `1` for current sample pack |
| `indoor_outdoor` | string | `indoor` or `outdoor` |
| `lighting` | string | `tubelight_cfl`, `mixed`, or `natural` |
| `mount_type` | string | `head_mounted_via_headband_egocentric` |
| `task_id` | string | Dominant task from `action_segments.jsonl` |
| `time_reference` | string | `clip_start` — timestamps relative to deliverable MP4 |
| `utc_available` | bool | `false` unless wall-clock from source file is added |

## Related files

| Path | Purpose |
|------|---------|
| `sessions/{session_id}.json` | Session record + link to clip and timestamps CSV |
| `sessions/session_index.json` | Index of all sessions |
| `annotations/timestamps/{clip}_timestamps.csv` | `frame_idx`, `timestamp_sec` (clip-relative) |

## Aligning annotations

- `action_segments.jsonl` `start_sec` / `end_sec` — same clip-relative clock as `timestamps.csv`
- Keypoints / object boxes `timestamp_sec` — same clock
