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

3.8 KiB
Raw Blame History

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.