# Architecture & Dependency Rules

## Layer Dependency (ABSOLUTE — NO EXCEPTIONS)

```
presentation/ → domain/providers/ → core/
```

| From | Can Import | CANNOT Import |
|------|-----------|---------------|
| `presentation/` | `domain/`, `presentation/`, `core/logger/log_viewer_screen.dart` only | `core/adapters/`, `core/device/`, `core/providers/` |
| `domain/` | `core/`, external packages | `presentation/` |
| `core/` | external packages, `core/` internal | `features/` |

## Re-export Pattern
Presentation이 core 타입이 필요하면 domain에서 `export`로 re-export한다:
```dart
// domain/providers/scan_providers.dart
export '../../../../core/adapters/ble_scanner.dart' show ScannedDevice;
```

## Verification Commands (커밋 전 필수)
```bash
# presentation → core 직접 import 위반 체크
grep -r "import.*core/" lib/features/*/presentation/ | grep -v "log_viewer_screen"

# core → features import 위반 체크
grep -r "import.*features/" lib/core/
```
위반 1건이라도 있으면 커밋 금지.
