# Structural Snapshot — 2026-06-25 (post-cycle 9, gRPC tile provision)

Cycle 9 delta against `structure_2026-05-23_cycle8.md`. Source: `_docs/02_document/module-layout.md` + on-disk `*.csproj` graph.

## Projects

| Layer | csproj | Cycle 9 delta |
|-------|--------|---------------|
| 1 (Foundation) | `SatelliteProvider.GrpcContracts` | **NEW** — shared proto project (`tile_provision.proto`, GrpcServices=Both) |
| 4 (API) | `SatelliteProvider.Api` | + `Grpc/RouteTileDeliveryGrpcService.cs`; `Program.cs` AddGrpc/MapGrpcService; ProjectReference → GrpcContracts |
| 3 (Application) | `SatelliteProvider.Services.RouteManagement` | `RouteTileDeliveryOrchestrator` — collection caps + lat/lon validation |
| 6 (Tests) | `SatelliteProvider.IntegrationTests` | + `RouteTileDeliveryGrpcTests.cs`, `GrpcTestHelpers.cs`; ProjectReference → GrpcContracts |
| 6 (Tests) | `SatelliteProvider.Tests` | + `DeliverAsync_TooManyWaypoints_Throws` |

**Project count**: **10** (+1 vs cycle 8).

## Cross-Project Import Edges

| Edge | Cycle 9 delta |
|------|---------------|
| Api → GrpcContracts | **NEW** |
| IntegrationTests → GrpcContracts | **NEW** |
| GrpcContracts → (none) | leaf contract project |

**Total ProjectReference edges**: **23** (+2 vs cycle 8). **Import cycles**: 0.

## Contract coverage

| Surface | Contract location |
|---------|-------------------|
| gRPC `DeliverRouteTiles` | `SatelliteProvider.GrpcContracts/tile_provision.proto` |
| REST tile delivery | unchanged (existing contracts) |

**gRPC perf coverage**: Unverified — no PT-10 in harness yet.
