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>
6.0 KiB
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 viasrc/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