# Milestone: workspace 메타데이터와 재현성 정리

## 상태

[완료]

## 목표

모노레포의 lockfile, local test 문서, package metadata, 배포 템플릿 상태를 정리해 새 작업과 배포 검증이 일관되게 재현되도록 만든다.

## 범위

- `.gitignore`의 `pubspec.lock`과 `agent-test/local/` ignore 정책을 현재 추적 파일과 맞춘다.
- Flutter client와 runner package description, web manifest, Chocolatey package placeholder를 제품 상태에 맞게 갱신한다.
- package별 lockfile 추적 또는 비추적 기준을 명시한다.

## 범위 제외

- 배포 채널 추가
- package versioning 정책 전면 개편
- secret 또는 private 설정 문서화

## 구현 잠금

- 상태: 해제
- 결정 필요:
  - 없음

## 작업 컨텍스트

- `.gitignore`는 기본적으로 `pubspec.lock`을 ignore하되, executable application인 `apps/client`와 `apps/runner` lockfile만 추적 예외로 둔다.
- root에는 `pubspec.yaml`이 없으므로 root `pubspec.lock`은 stale local artifact로 제거하고 계속 ignore한다.
- library package인 `packages/flutter/oto_console`의 `pubspec.lock`은 비추적 기준으로 두고 local artifact로 제거한다.
- `agent-test/local/*.md`는 tracked local test rule/smoke 문서로 유지하고, `agent-test/runs/`는 local 산출물로 ignore한다.
- `apps/client`와 `apps/runner` metadata의 Flutter/Dart 기본 템플릿 문구는 OTO 제품 설명으로 갱신했다.
- `apps/runner/assets/package/chocolatey/_TODO.txt`는 generic Chocolatey TODO 대신 OTO packaging status와 release 전 확인 항목을 기록한다.

## 기능

### Epic: [metadata] workspace metadata

- [x] [lock-policy] application/library package별 `pubspec.lock` 추적 기준을 확정하고 `.gitignore`를 그 기준에 맞춘다.
- [x] [test-docs] `agent-test/local/` ignore 정책과 tracked smoke 문서 운영 방식이 충돌하지 않도록 정리한다.
- [x] [descriptions] Flutter client, web manifest, runner package description의 기본 템플릿 문구를 제품 설명으로 갱신한다.
- [x] [package-todo] Chocolatey package placeholder의 처리 방향을 결정하고 배포 템플릿 상태를 문서 또는 파일 구조에 반영한다.

## 완료 리뷰

- 상태: 승인됨
- 요청일: 2026-06-09
- 승인일: 2026-06-09
- 완료 근거:
  - `.gitignore`가 app lockfile만 추적 예외로 두고 root/library lockfile은 비추적 기준으로 정리되었다.
  - local test 문서 추적 예외, package/web metadata, Chocolatey packaging status가 현재 제품 구조에 맞게 갱신되었다.
  - `dart pub get`, `flutter pub get`, runner/client analyzer, client test, focused runner CLI smoke가 통과했다.
- 사용자 최종 확인:
  - 2026-06-09 완료 및 archive 이동 승인.
- 리뷰 코멘트: runner 전체 `dart test`는 외부 iop Edge smoke의 `agent_kind` 설정 문제로 실패했으며, 이번 변경과 직접 관련된 focused runner CLI smoke는 통과했다. 해당 runner 검증 기준 정합화는 별도 후속 Milestone 범위로 분리한다.
