# 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.