# framework ## 목적 / 책임 현재 프로젝트에는 `lib/framework/` 모듈이 없다. 이 도메인은 외부 Git 의존성인 `dart_framework` 사용 규칙과 의존성 경계를 기록한다. ## 포함 경로 - `pubspec.yaml` — `dart_framework` 외부 Git 의존성 선언 ## 제외 경로 - `lib/framework/` — 제거된 로컬 모듈. 새로 만들지 않는다 - `lib/oto/` — OTO 비즈니스 로직 (framework 위에서 동작) - `lib/cli/` — CLI 레이어 (framework를 소비) ## 주요 구성 요소 - `dart_framework/core/application.dart` — `bin/main.dart`에서 앱 진입 래퍼로 사용 - `dart_framework/platform/process.dart` — 커맨드 실행에서 `ProcessExecutor`, `ProcessData` 사용 - `dart_framework/platform/isolate_manager.dart` — CLI 실행/스케줄러 isolate 처리에서 사용 - `dart_framework/utils/*` — `simpleFuture`, path/system/string/os startup 유틸 사용 - `dart_framework/log/log.dart` — `Application.logWithType()`의 로그 타입에 사용 ## 유지할 패턴 - 프로세스 실행은 `ProcessExecutor.start()` (스트리밍, stdout/stderr 실시간 수신) 또는 `ProcessExecutor.run()` (블로킹, 결과만 필요) 중 목적에 맞게 선택 - `dart_framework` API 사용 시 기존 import 패턴을 따른다 - 외부 의존성 ref 변경은 `pubspec.yaml`에서만 수행하고, 변경 후 `dart pub get` 및 `dart analyze`를 확인한다 - 로컬에 `lib/framework/`를 되살리는 대신 필요한 OTO 로직은 `lib/oto/` 또는 `lib/cli/`의 해당 도메인에 둔다 ## 다른 도메인과의 경계 - **core**: `lib/oto/application.dart`는 OTO 오케스트레이터이며 외부 framework의 Application과 별개다 - **cli/scheduler**: isolate, process, OS startup 유틸을 소비하지만 스케줄러 정책은 scheduler 도메인에 둔다 - **command**: 커맨드들은 `ProcessExecutor`를 소비하지만 커맨드별 비즈니스 로직은 command 도메인에 둔다 ## 금지 사항 - `lib/framework/` 디렉터리를 새로 만들지 않는다 - 외부 `dart_framework` 내부 코드를 이 저장소의 도메인 rule 기준으로 직접 수정한다고 가정하지 않는다 - OTO 비즈니스 로직(파이프라인, 커맨드 등록 등)을 framework 의존성 변경으로 해결하려 하지 않는다