--- test_env: local last_rule_updated_at: 2026-06-07 --- # local 테스트 규칙 **현재 문서를 반드시 끝까지 정독하고 작업한다. 다 읽지 않고 즉각 작업은 금지한다.** ## 공통 규칙 - local 테스트/검증은 이 파일을 기준으로 판단한다. - 작업 완료 검증은 변경 범위 기준으로 선택한다. - 필수 검증을 실행하지 못하면 차단 사유로 보고한다. - 최종 보고에는 실행 명령, 결과, 생략 사유, 남은 위험을 남긴다. - 환경값, secret, 개인 endpoint는 tracked docs/roadmap에 쓰지 않는다. ## 기본 환경 - host: - port: - runtime: Dart SDK, Flutter SDK, Go toolchain - package manager: dart pub, flutter pub, Go modules - docker: - external service: 없음 - model endpoint: - credential: ## Workspace 포트/환경 체크리스트 - OTO Core host publish 후보는 backend `18020`이다. 로컬 실행 기본값 `127.0.0.1:8080`은 compatibility 경로로만 해석한다. - Flutter client/web preview 후보는 frontend `13020`이다. preview 포트와 `OTO_SERVER_HTTP_URL` 서버 연결 URL을 혼동하지 않는다. - `OTO_RUNNER_RELEASE_BASE_URL`과 bootstrap command 검증은 source of truth와 validation 기준만 기록한다. secret, token, private release host 원문은 tracked 문서와 테스트 규칙에 남기지 않는다. - 독립 OTO Control Plane 검증에서 iop Edge/wire 포트를 OTO workspace 포트 표준으로 간주하지 않는다. ## 라우팅 - agent / smoke / OTO agent CLI, OTO Server registration, bootstrap script: `agent-test/local/agent-smoke.md` - cli / smoke / CLI entrypoint, resource importer, scripts, package assets: `agent-test/local/cli-smoke.md` - command / smoke / command implementations and data models: `agent-test/local/command-smoke.md` - core / smoke / Application, tag system, composer, core utilities: `agent-test/local/core-smoke.md` - framework / smoke / pubspec, analyzer options, dependency and generated-code boundary: `agent-test/local/framework-smoke.md` - pipeline / smoke / pipeline execution and pipeline data model: `agent-test/local/pipeline-smoke.md` - sample / smoke / sample YAML and template-facing examples: `agent-test/local/sample-smoke.md` - scheduler / smoke / scheduler CLI and runtime: `agent-test/local/scheduler-smoke.md` ## 패키지 및 Makefile 대상 (Monorepo Targets) - **apps/runner** (Dart CLI runner): - Setup: `make runner-get` 또는 `cd apps/runner && dart pub get` - Lint: `make runner-analyze` 또는 `cd apps/runner && dart analyze` - Test: `make runner-test` 또는 `cd apps/runner && dart test` - **apps/client** (Flutter OTO client app): - Setup: `make client-get` 또는 `cd apps/client && flutter pub get` - Lint: `make client-analyze` 또는 `cd apps/client && flutter analyze` - Test: `make client-test` 또는 `cd apps/client && flutter test` - **services/core** (Go OTO Server): - Test: `make core-test` 또는 `cd services/core && go test ./...` - **packages/flutter/oto_console** (Flutter OTO console package): - Setup: `cd packages/flutter/oto_console && flutter pub get` - Lint: `cd packages/flutter/oto_console && flutter analyze` - Test: `cd packages/flutter/oto_console && flutter test` - **protobuf** (proto contract): - Generate: `make proto` (또는 `make proto-go`, `make proto-dart`) ## 라우팅 규칙 - 여러 항목이 맞으면 모두 읽는다. - 도메인 매핑이나 domain rule이 있으면 각 도메인의 `-smoke` 문서를 기본 baseline으로 둔다. - 도메인이 아직 없을 때만 `project-smoke`를 fallback baseline으로 둔다. - 도메인/검증 시나리오별 문서는 다른 테스트 문서로 라우팅하지 않는다.