mirror of
https://github.com/azaion/ui.git
synced 2026-06-21 12:11:11 +00:00
eef3bdf7db
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>
92 lines
6.0 KiB
Markdown
92 lines
6.0 KiB
Markdown
# 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 1–2 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`
|