# 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/<service>/...` 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/<service>/` 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/<service>/` 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`
