Files
ui/_docs/06_metrics/structure_2026-05-13.md
T
Oleksandr Bezdieniezhnykh eef3bdf7db [AZ-509][AZ-510][AZ-511] Cycle 3 closure: deploy + retro + state
Steps 16 (Deploy) and 17 (Retrospective) outputs for cycle 3.

- 03_implementation/deploy_cycle3_report.md — ui/ dev pushed
  (15838c5..09449bd, 5 commits); stage/prod cutover deferred
  per push-scope gate option A.
- 06_metrics/retro_2026-05-13_cycle3.md — cycle 3 retro: 6/9
  pts shipped (AZ-510, AZ-511); AZ-512 deferred to backlog
  at cross-workspace prereq gate (AZ-513 filed on admin/).
- 06_metrics/structure_2026-05-13.md — structural snapshot
  referenced by retro.
- LESSONS.md — appended 3 cycle-3 lessons (process x2,
  architecture x1).
- _autodev_state.md — cycle 3 closed; cycle 4 Step 9 not
  started.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-13 04:15:37 +03:00

6.0 KiB
Raw Blame History

Structural Snapshot — 2026-05-13 (Phase B Cycle 3 close)

Cycle: Phase B, cycle 3 (state.cycle = 3) Source-of-truth files: _docs/02_document/module-layout.md, _docs/02_document/architecture_compliance_baseline.md, scripts/check-arch-imports.mjs, scripts/run-tests.sh, src/api/endpoints.test.ts. Previous snapshot: _docs/06_metrics/structure_2026-05-12.md (Phase B cycle 1 close).

Component Inventory

Metric Cycle 1 close Cycle 3 close Δ
Component count 12 12 0
Components with Public API barrels 11 11 0
Barrel coverage (eligible components) 11 / 11 = 100 % 11 / 11 = 100 % 0
Documented feature→feature edges (grandfathered) 1 (07_dataset → 06_annotations) 1 (unchanged) 0
Documented STC-ARCH-01 carve-out exemptions 1 (classColors direct path) 0 1
Cycles in component import graph 0 0 0

The single STC-ARCH-01 exemption that survived cycles 12 is gone. AZ-511 carved out classColors to its own src/class-colors/ component with a public barrel, and scripts/check-arch-imports.mjs ARCH_IMPORTS_EXEMPT_RE now equals null. The 5-coupled-places carry-over surface logged in cycle 1's retro is fully retired.

Architecture Gates (cycle 3 close)

Gate Added in Enforces Status (cycle 3 close)
STC-ARCH-01 Cycle 1 / AZ-485 No cross-component deep imports; barrels are the Public API PASS (now with zero exemptions)
STC-ARCH-02 Cycle 1 / AZ-486 No hardcoded /api/<service>/... literals in production source PASS
STC-SEC1C Cycle 2 / AZ-499 Banned literal: OpenWeatherMap key PASS
STC-SEC1D Cycle 2 / AZ-501 Banned literal: Google Geocode key PASS

Total commit-time static gates: 33 (cycle 2 close = 33; cycle 3 close = 33 — no new gates this cycle). STC-ARCH-01 was strengthened (exemption removed), not added new.

Architecture Baseline Delta vs architecture_compliance_baseline.md

Finding Category Cycle 1 close Cycle 2 close Cycle 3 close
F1 — mission-planner vs flights duplication Architecture Open Open Open
F2 — cross-feature edge 07_dataset → 06_annotations Architecture Open (grandfathered) Open Open
F3 — classColors physical/logical owner split Architecture Open Open RESOLVED (AZ-511)
F4 — No Public API barrels Architecture RESOLVED (AZ-485) RESOLVED RESOLVED
F5 — Pre-existing cycle inside mission-planner Architecture Open Open Open
F6 — No src/shared/ Architecture Open Open Open
F7 — Hardcoded /api/<service>/ literals Architecture RESOLVED (AZ-486) RESOLVED RESOLVED
F8 — Layering-table inconsistency Architecture Open Open Open
F9 — Inert second Vite entry tree Architecture Open Open Open

Plus the per-cycle verification-log finding B3 (Auth bootstrap missing credentials:'include') was tracked in _docs/02_document/04_verification_log.md and closed by AZ-510 in cycle 3.

  • Resolved this cycle: 1 baseline finding (F3) + 1 verification-log finding (B3)
  • Newly introduced this cycle: 0
  • Architecture findings open at cycle 3 close: 6 of 9 baseline (F1, F2, F5, F6, F8, F9)
  • Net architecture delta cycle 3: 1 baseline (improvement)

Contract Coverage

  • _docs/02_document/contracts/ does NOT exist; project uses code-derived contracts pattern via src/api/endpoints.test.ts.
  • Wire-contract assertions count: cycle 1 = 36, cycle 2 = 36, cycle 3 = 37 (+1; AZ-510 added endpoints.admin.usersMe()).

Test Suite Snapshot

Profile Cycle 1 close Cycle 2 close Cycle 3 close Δ vs cycle 2
Fast (count) 209 PASS / 13 SKIP / 0 FAIL 229 PASS / 13 SKIP / 0 FAIL 231 PASS / 13 SKIP / 0 FAIL +2 PASS, 0 SKIP
Static (gates) 31 / 31 PASS 33 / 33 PASS 33 / 33 PASS 0
Build green (no circular warnings) green green 0
Bundle (gzipped initial JS) not measured 290 465 B 290 575 B +110 B (+0.04 %)

Bundle delta is well within budget (≤ 2 097 152 B threshold; ~14 % utilization).

Cycle 3 Source-of-Truth Mutations

File / area Mutation Driver
src/auth/AuthContext.tsx POST refresh + chained /users/me + module-scoped bootstrapInflight + test-only reset hook AZ-510 (B3 / Vision P3)
src/auth/index.ts Re-exports __resetBootstrapInflightForTests AZ-510 (STC-ARCH-01 compliance)
src/api/endpoints.ts Added usersMe: () => '/api/admin/users/me' builder AZ-510 (STC-ARCH-02 compliance)
src/class-colors/ New component directory: classColors.ts (git mv from src/features/annotations/) + index.ts (new barrel) AZ-511 (F3)
src/components/DetectionClasses.tsx, src/features/annotations/{CanvasEditor,AnnotationsSidebar,AnnotationsPage}.tsx Import path swap to barrel AZ-511 (F3)
src/features/annotations/index.ts Removed F3 carry-over comment block AZ-511 (cleanup)
scripts/check-arch-imports.mjs ARCH_IMPORTS_EXEMPT_RE = null; class-colors added to COMPONENT_DIRS AZ-511 (gate strengthening)
tests/architecture_imports.test.ts AC-4 inverted to assert deep imports FAIL AZ-511 (regression guard)

Sources

  • _docs/03_implementation/batch_13_cycle3_report.md (AZ-510)
  • _docs/03_implementation/batch_14_cycle3_report.md (AZ-511)
  • _docs/03_implementation/batch_15_cycle3_report.md (AZ-512 deferred)
  • _docs/03_implementation/implementation_report_auth_classcolors_cycle3.md
  • _docs/03_implementation/implementation_completeness_cycle3_report.md
  • _docs/03_implementation/deploy_cycle3_report.md
  • _docs/05_security/security_report_cycle3_delta.md
  • _docs/02_document/module-layout.md
  • _docs/02_document/architecture_compliance_baseline.md