# UTO Manager — Development Status **Last Updated:** 2026-08-07 **Current Branch:** `feature/phase-1-foundations` → merged to `main` **Active Phase:** Phase 1 — Architecture & Data Foundations ✅ COMPLETE --- ## Phase 1 — Architecture & Data Foundations ✅ COMPLETE ### Completed Items | Item | Status | Notes | |------|--------|-------| | Flutter project initialization | ✅ | Multi-platform: Windows, Web (WASM), Android | | Clean architecture folder structure | ✅ | domain / infrastructure / presentation layers | | `pubspec.yaml` configuration | ✅ | Drift, Equatable, flutter_bloc, uuid, meta, path_provider | | `analysis_options.yaml` lint rules | ✅ | very_good_analysis base + project overrides | | `Echelon` entity | ✅ | Brigade→Team hierarchy, `isValidParent`, `isValidChild`, `level` | | `DoctrinalBranch` entity | ✅ | Infantry, Medical, Fires, Signal, Cyber/EW, Aviation, Logistics, Engineer | | `AuthorizedRank` entity | ✅ | E1–E9, W1–W5, O1–O10; `payGrade`, `rankTitle`, `meetsMinimum`, category flags | | `UnitNode` entity | ✅ | Immutable, `Equatable`, `copyWith`, `isRoot`, `isValidParentNode` | | `PositionSlot` entity | ✅ | Immutable, `Equatable`, `copyWith`, `isVacant`, `isFilled` | | `PersonnelRecord` entity | ✅ | Immutable, `Equatable`, `copyWith`, `ReadinessState` (FMC/PMC/NMC) | | `DutyMos` value object | ✅ | Validated MOS codes, `@immutable`, `codesForBranch`, `isKnown` | | `domain_entities.dart` barrel export | ✅ | Single import for all domain entities | | `UnitRepository` abstract interface | ✅ | CRUD + subtree + watch streams | | `PersonnelRepository` abstract interface | ✅ | CRUD + assignment + watch streams | | `AppDatabase` (Drift) schema | ✅ | Units, PositionSlots, Personnel, Templates tables | | Drift code generation (`build_runner`) | ✅ | `app_database.g.dart` generated (94 KB) | | `assets/data/mos_dictionary.json` | ✅ | 8 branches, 60+ MOS codes, position slot templates | | `assets/svg/` directory | ✅ | Reserved for NATO military symbols (Phase 2) | | GitHub Actions CI/CD pipeline | ✅ | Test + analyze + build (Windows, Web WASM, Android) | | `lib/main.dart` placeholder scaffold | ✅ | Army-blue Material 3 theme, placeholder UI | | Unit tests — `Echelon` | ✅ | 17 tests passing | | Unit tests — `AuthorizedRank` | ✅ | 16 tests passing | | Unit tests — `PersonnelRecord` | ✅ | 13 tests passing | | Unit tests — `UnitNode` | ✅ | 15 tests passing | | Unit tests — `DutyMos` | ✅ | 32 tests passing | | Widget test — placeholder scaffold | ✅ | 1 test passing | | **Total tests** | ✅ | **94 / 94 passing** | | `flutter analyze` | ✅ | **No issues found** | --- ## Phase 2 — Canvas Engine & Drag-Drop UTO Builder (NEXT) ### Planned Items | Item | Priority | Notes | |------|----------|-------| | `UnitTreeService` domain service | High | Build/validate unit tree from `UnitNode` list | | `AssignmentService` domain service | High | Assign/unassign soldiers to slots with validation | | Drift DAO implementations | High | `UnitDao`, `PersonnelDao`, `PositionSlotDao`, `TemplateDao` | | Repository concrete implementations | High | Wire DAOs to abstract repository interfaces | | `flutter_bloc` Cubits/Blocs | High | `UnitTreeCubit`, `PersonnelCubit`, `TemplateCubit` | | Three-pane UI shell | High | Left panel (unit tree), center canvas, right panel (personnel) | | Interactive canvas widget | High | Scrollable/zoomable org chart canvas | | Drag-and-drop soldier assignment | High | Drag from personnel panel → drop on position slot | | NATO military symbol SVGs | Medium | Brigade, Battalion, Company, Platoon, Squad, Team symbols | | Unit node card widget | Medium | Echelon symbol + name + fill rate indicator | | Position slot card widget | Medium | MOS badge + rank + soldier name or "VACANT" | | Readiness color coding | Medium | FMC=green, PMC=amber, NMC=red | | Template save/load | Medium | Serialize unit tree to JSON, persist via `Templates` table | --- ## Phase 3 — Reporting & Export (PLANNED) | Item | Priority | Notes | |------|----------|-------| | UTO report generation | High | PDF/HTML export of unit task organization | | Readiness dashboard | High | Aggregate FMC/PMC/NMC statistics by echelon | | Personnel roster export | Medium | CSV export of assigned/unassigned soldiers | | Template library | Medium | Save/load/share UTO templates | | Multi-BCT support | Low | Support multiple simultaneous BCT configurations | | Web deployment | Low | Deploy WASM build to internal web server | --- ## Known Issues / Technical Debt | Issue | Severity | Resolution | |-------|----------|-----------| | `lines_longer_than_80_chars` disabled | Low | Dart formatter produces lines > 80 chars for chained method calls; rule disabled in `analysis_options.yaml` | | Drift DAOs not yet implemented | Medium | Phase 2 work item — abstract interfaces defined, concrete implementations pending | | No integration tests | Medium | Phase 2 will add integration tests for repository implementations | | `sqlite3_flutter_libs` EOL warning | Low | Will upgrade when `drift` supports newer version | --- ## Test Coverage Summary ``` flutter test --coverage 94 tests | 0 failures | 0 skipped Coverage: domain layer ~95%+ (entities, value objects) ``` --- ## Branch History | Branch | Merged | Description | |--------|--------|-------------| | `feature/phase-1-foundations` | 2026-08-07 | Phase 1: Architecture & Data Foundations |