# Environment Strategy

## Environments

| Environment | Purpose | Hardware | Inference | Gimbal |
|-------------|---------|----------|-----------|--------|
| Development | Local dev + tests | x86 workstation with NVIDIA GPU | ONNX Runtime or TRT on dev GPU | Mock (TCP socket) |
| Production | Field deployment on UAV | Jetson Orin Nano Super (ruggedized) | TensorRT FP16 | Real ViewPro A40 |

CI testing uses the Development environment with Docker (mock everything).
HIL testing uses the Production environment on a bench Jetson.

## Configuration

Single YAML config file per environment:
- `config.dev.yaml` — mock gimbal, console logging, ONNX Runtime
- `config.prod.yaml` — real gimbal, NVMe logging, thermal monitoring

Config is a file on disk, not environment variables. Updated via USB in production.

## Environment-Specific Overrides

| Config Key | Development | Production |
|-----------|-------------|------------|
| inference_engine | onnxruntime | tensorrt_fp16 |
| gimbal_mode | mock_tcp | real_uart |
| vlm_enabled | false (or stub) | true |
| recording_enabled | false | true |
| thermal_monitor | false | true |
| log_output | console | file (NVMe) |

## Field Update Procedure

1. Prepare USB drive: Docker image tar, TRT engines (if changed), config.yaml, update.sh
2. Connect USB to Jetson
3. Run `update.sh`: stops services → loads new images → copies files → restarts
4. Verify: health endpoint returns 200, test frame produces detection
5. Remove USB

If update fails: re-run with previous package from USB, or re-flash Jetson from known-good image.
