# Restrictions

## Software Constraints

| Constraint | Value | Source |
|-----------|-------|--------|
| Runtime | .NET 8.0 (LTS) | global.json, Dockerfile |
| Database | PostgreSQL 16 | docker-compose.yml |
| Container runtime | Docker | Dockerfile, docker-compose.yml |
| Image processing | SixLabors.ImageSharp 3.1.11 | SatelliteProvider.Services.csproj |
| CI platform | Woodpecker CI | .woodpecker/*.yml |
| Target architecture | ARM64 (primary), AMD64 (prepared) | .woodpecker/02-build-push.yml |

## Operational Constraints

| Constraint | Value | Source |
|-----------|-------|--------|
| Deployment model | Single instance (no horizontal scaling) | In-process Channel queue, no distributed state |
| Max concurrent tile downloads | 4 (configurable) | ProcessingConfig |
| Max concurrent region processing | 20 (configurable) | ProcessingConfig |
| Queue capacity | 1000 requests | ProcessingConfig |
| Max ZIP archive size | 50 MB | RouteProcessingService |
| Tile versioning | Year-based integer (e.g., 2025) | Migration 004 |

## Environment Constraints

| Constraint | Value | Source |
|-----------|-------|--------|
| Storage | Local filesystem (./tiles, ./ready, ./logs) | docker-compose.yml volumes |
| Network | Outbound HTTPS to Google Maps required | GoogleMapsDownloaderV2 |
| Authentication | None (internal/trusted network only) | Program.cs (no auth middleware) |
| Database persistence | Docker volume (postgres_data) | docker-compose.yml |

## Dependencies on External Services

| Service | Criticality | Failure Impact |
|---------|-------------|----------------|
| Satellite imagery provider (provider-agnostic via `ISatelliteDownloader`; e.g., Google Maps) | High | No new tiles can be downloaded; cached tiles still served |
| PostgreSQL | Critical | Service cannot start; all state operations fail |
| File system | Critical | Cannot store tiles or produce output artifacts |
