# Structural Snapshot — 2026-05-12 (Phase B Cycle 1 close) **Cycle**: Phase B, cycle 1 (`state.cycle = 1`) **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`. ## Component Inventory | Metric | Value | Notes | |--------|-------|-------| | Component count | 12 | `00_foundation`, `01_api-transport`, `02_auth`, `03_shared-ui`, `04_login`, `05_flights`, `06_annotations`, `07_dataset`, `08_admin`, `09_settings`, `10_app-shell`, `11_class-colors` | | Components with Public API barrels | 11 | Every component except `10_app-shell` (intentionally barrel-less; collection of root files like `App.tsx`, `main.tsx`) | | Barrel coverage of barrel-eligible components | 11 / 11 = 100 % | F4 closed by AZ-485 (commit `23746ec`) | | Documented feature→feature edges | 1 | F2 grandfathered: `07_dataset → 06_annotations` for `CanvasEditor`, routed through the `06_annotations` barrel (STC-ARCH-01 compliant) | | Documented F3-pending exemption | 1 | `src/features/annotations/classColors` direct path — exempted by `STC-ARCH-01` until F3 lands; tracked in 5 places (barrel, consumer, script regex, layout doc, test) | | Cycles in component import graph | 0 | Verified by `STC-T1` (`tsc --noEmit`) + `STC-B1` (`vite build`) — both green | ## Architecture Gates (cycle close) | Gate | Added in | Enforces | Status | |------|----------|----------|--------| | `STC-ARCH-01` | Batch 09 / AZ-485 / Phase B cycle 1 | No cross-component deep imports; barrels are the Public API | PASS | | `STC-ARCH-02` | Batch 10 / AZ-486 / Phase B cycle 1 | No hardcoded `/api//...` literals in production source | PASS | Total commit-time static gates: **31** (29 at start of Phase B cycle 1; +2 this cycle). ## Architecture Baseline Delta vs `architecture_compliance_baseline.md` | Finding | Category | Baseline status | After cycle 1 | |---------|----------|-----------------|---------------| | F1 — mission-planner vs flights duplication | Architecture | Open | Open (out of cycle scope) | | F2 — cross-feature edge `07_dataset → 06_annotations` | Architecture | Open | Open (grandfathered; routed through barrel post-AZ-485) | | F3 — classColors physical/logical owner split | Architecture | Open | Open (exemption holds; deferred) | | **F4 — No Public API barrels** | Architecture | Open | **RESOLVED (AZ-485, STC-ARCH-01)** | | F5 — Pre-existing cycle inside `mission-planner` | Architecture | Open | Open (port-source, out of scope) | | F6 — No `src/shared/` | Architecture | Open | Open (deferred; AZ-486 builds the relocation-friendly barrel pattern that makes F6 trivial later) | | **F7 — Hardcoded `/api//` literals** | Architecture | Open | **RESOLVED (AZ-486, STC-ARCH-02)** | | F8 — Layering-table inconsistency | Architecture | Open | Open (doc-only fix; deferred) | | F9 — Inert second Vite entry tree | Architecture | Open | Open (port-source, out of scope) | - **Resolved this cycle**: 2 (F4, F7) - **Newly introduced**: 0 - **Net delta**: −2 (improvement) ## Contract Coverage - `_docs/02_document/contracts/` does NOT exist in this project. The project uses the **"code-derived documentation" pattern**: `src/api/endpoints.test.ts` (36 assertions, AZ-486) IS the wire-contract document for every `/api//` path. Computed coverage % is not applicable. - Wire-contract surface: 25 endpoint builders × multi-arity inputs = 36 pinned URL assertions in fast suite. ## Test Suite Snapshot | Profile | Files | Count | Wall-clock | |---------|-------|-------|------------| | Fast | 28 | 209 PASS / 13 SKIP / 0 FAIL | ~22.6 s | | Static | — | 31 / 31 PASS | ~14 s | | e2e | — | env-blocked (registry-access; same condition as Step 7) | n/a | ## Sources - `_docs/03_implementation/batch_09_report.md` (AZ-485, batch 1 of 2) - `_docs/03_implementation/batch_10_report.md` (AZ-486, batch 2 of 2) - `_docs/03_implementation/implementation_report_refactor_phase_b_cycle1.md` - `_docs/03_implementation/test_run_report_phase_b_cycle1.md` - `_docs/02_document/module-layout.md` - `_docs/02_document/architecture_compliance_baseline.md`