Files
missions/_docs/06_metrics/structure_2026-05-16.md
T
Oleksandr Bezdieniezhnykh 040b1f85f8 [AZ-588] Close cycle 1 retrospective; bootstrap LESSONS.md
Autodev cycle 1 retro: 5 batches, 12 tasks, 48 SP delivered.
Architecture baseline F4 partial -> resolved (Entities/ +
DTOs/Requests/ removed); net architecture delta -1. Zero blockers,
zero High/Critical findings, zero auto-fix escalations.

Artifacts:
- _docs/06_metrics/retro_2026-05-16.md  (first retro, no trend yet)
- _docs/06_metrics/structure_2026-05-16.md  (baseline snapshot)
- _docs/LESSONS.md  (3 entries: tooling, process, estimation)

State: cycle 1 -> cycle 2 boundary; Step 9 (New Task) is next.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-16 14:32:22 +03:00

54 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 F1F4 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 F1F3 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.