# Structural Snapshot — 2026-05-16 **Purpose**: First structural snapshot for this codebase. Future retrospectives compute deltas against this file. ## Component Inventory | # | Component | Owns (representative) | Imports from | |---|-----------|------------------------|--------------| | 1 | `01_vehicle_catalog` | `Controllers/VehiclesController.cs`, `Services/VehicleService.cs`, `DTOs/{Create,Update,GetVehicles,SetDefault}*.cs` | `04_persistence`, `05_identity`, `06_http_conventions` | | 2 | `02_mission_planning` | `Controllers/MissionsController.cs`, `Services/{Mission,Waypoint}Service.cs`, mission/waypoint DTOs | `04_persistence`, `05_identity`, `06_http_conventions`, `01_vehicle_catalog` (DB FK existence) | | 3 | `04_persistence` | `Database/AppDataConnection.cs`, `Database/DatabaseMigrator.cs`, 7 entities under `Database/Entities/`, persisted enums under `Enums/` | (none internal) | | 4 | `05_identity` | `Auth/JwtExtensions.cs` (single `"FL"` policy) | (none internal) | | 5 | `06_http_conventions` | `Middleware/*` (exception → ProblemDetails mapper, etc.) | (none internal) | | 6 | `07_host` | `Program.cs`, `GlobalUsings.cs`, `Infrastructure/{ConfigurationResolver,CorsConfigurationValidator}.cs` | Every other component | ## Layout Convention **Custom (layer-organized).** Not per-component-directory. Each component's `Owns` glob is a *set of file paths spanning multiple top-level directories* (`Controllers/`, `Services/`, `DTOs/`, `Enums/`, `Database/`, `Auth/`, `Middleware/`). This is the established baseline and is **intentional** per `_docs/02_document/module-layout.md` § "Layout Rules". Future refactors that introduce per-component subdirectories would be a structural deviation worth surfacing in the next snapshot delta. ## Graph Metrics | Metric | Value | |--------|-------| | Component count | 6 | | Cross-component import edges | 8 (`01→04`, `01→05`, `01→06`, `02→04`, `02→05`, `02→06`, `02→01`, `07→all`) | | Cycles in the import graph | **0** | | Avg imports per component (excluding `07_host`) | ~2.2 | | Components imported by `07_host` | 5 (all non-host) — expected for a composition root | | Public-API contracts directory present | **No** (`_docs/02_document/contracts/` does not exist; this project documents Public API inline in each component's `description.md`) | ## Architecture Baseline State (entering cycle 2) Source: `_docs/02_document/architecture_compliance_baseline.md` (4 findings F1–F4 at cycle-1 start). | Finding | Severity | Cycle-1 outcome | |---------|----------|-----------------| | F1 | (see baseline doc) | unchanged — carried into cycle 2 | | F2 | (see baseline doc) | unchanged — carried into cycle 2 | | F3 | (see baseline doc) | unchanged — carried into cycle 2 | | F4 (Low Maintainability — empty scaffolding dirs) | Low | **Partially resolved**: `Entities/` and `DTOs/Requests/` removed via AZ-588 (batch 05). `Infrastructure/` retained — now legitimately used by `07_host` (`Infrastructure/ConfigurationResolver.cs`, `Infrastructure/CorsConfigurationValidator.cs`). Per the AZ-588 spec the third originally-empty dir was explicitly out of scope. | ## Open Architecture Tickets - AZ-587 (Epic) — Refactor 02-baseline-cleanup. Single child AZ-588 closed today; epic can close once cycle 2 verifies no regression. ## Notes for Next Snapshot - Re-run this snapshot at the end of every cycle. - If `_docs/02_document/contracts/` is added in a future cycle, record contract count + contracts-per-public-API ratio. - If F1–F3 from the architecture baseline are addressed in a future cycle, log the resolution in this file's "Architecture Baseline State" table. - If the layout convention changes (e.g., one component is split into a `src/01_vehicle_catalog/` subdirectory), flag it as a structural deviation in the next snapshot.