# Structural Snapshot — 2026-06-25 (post-cycle 10, REST error sanitizer)

Cycle 10 delta against `structure_2026-06-25_cycle9.md`. Source: `_docs/02_document/module-layout.md` + on-disk `*.csproj` graph.

## Projects

| Layer | csproj | Cycle 10 delta |
|-------|--------|----------------|
| 4 (API) | `SatelliteProvider.Api` | `GlobalExceptionHandler`, `UavUploadValidationFilter` — string-only changes |
| 3 (Application) | `SatelliteProvider.Services.TileDownloader` | `UavTileUploadHandler` — string-only change |
| 6 (Tests) | `SatelliteProvider.Tests`, `SatelliteProvider.IntegrationTests` | assertion updates |

**Project count**: **10** (unchanged vs cycle 9).

## Cross-Project Import Edges

**Total ProjectReference edges**: **23** (unchanged). **Import cycles**: 0.

## New infra (non-code)

| Artifact | Purpose |
|----------|---------|
| `docker-compose.perf.yml` | Unsets postgres host port for perf/tests when 5433 occupied |

## Contract coverage

| Surface | Contract | Cycle 10 delta |
|---------|----------|----------------|
| REST error envelope | `error-shape.md` v1.0.1 | patch — Information Disclosure section |
| gRPC `DeliverRouteTiles` | `tile_provision.proto` | unchanged |

**gRPC perf coverage**: Unverified — PT-10 still absent (carry-over from cycle 9).
