Windows 릴리스 체크리스트
릴리스마다 새 Windows VM snapshot에서 수행하고, 결과를 릴리스 PR 또는 첨부된 테스트 기록에 남긴다. 체크하지 못한 항목은 “통과”가 아니라 blocker 또는 알려진 제한으로 기록한다.
1. 빌드 출처와 자동 검사
- release commit이 보호된
main에 있고 worktree가 깨끗하다. -
package.json, lockfile, Cargo workspace,tauri.conf.json버전이 일치한다. - Frontend test/check/build, Rust fmt/clippy/test, docs build, npm audit, RustSec audit가 통과한다.
- release workflow가 동일 commit에서 NSIS, MSI, portable x64 artifact를 만들었다.
- 각 artifact의 SHA-256, 크기, commit SHA를 기록하고 release notes/CHANGELOG를 검토했다.
- production이면 Authenticode signer와 timestamp를 세 artifact 모두에서 검증했다.
- 서명되지 않은 빌드는 prerelease로만 표시되고 SmartScreen 경고 가능성을 명시한다.
- GitHub private vulnerability reporting이 활성화되어
SECURITY.md링크가 실제로 열리고, Dependabot/RustSec 알림을 받을 maintainer가 지정되어 있다.
2. 깨끗한 VM 조합
지원 대상 Windows 버전별로 snapshot을 되돌려 아래 조합을 각각 검사한다.
| 조합 | 확인 사항 |
|---|---|
| Standard user + NSIS | 관리자 권한 없이 설치/실행 가능한지, elevation이 필요하면 정확히 문서화 |
| Standard user + MSI | 설치 범위와 elevation 동작, repair/uninstall |
| Administrator + NSIS/MSI | 설치 위치, Start menu, Apps & Features, 중복 설치 방지 |
| Portable | 쓰기 가능한 폴더와 읽기 전용 폴더에서 실행 결과, AppData 위치 |
| WebView2 최신 | 첫 실행, 기본 화면, devtools 없이 정상 렌더링 |
| WebView2 없음/오래됨 | installer의 bootstrap/offline 동작과 사용자 오류 안내; 강제 설치 정책 기록 |
| 네트워크 차단 | 앱 핵심 편집 기능이 네트워크 없이 동작하는지 확인 |
3. 설치·업그레이드·제거·롤백
- 새 VM에 NSIS 설치 → 실행 → 종료 → 제거. 프로그램 파일/shortcut은 제거되고
%APPDATA%\AgentGuard와 프로젝트 설정은 정책대로 보존된다. - snapshot을 되돌려 MSI 설치 → repair → 실행 → 제거를 같은 기준으로 확인한다.
-
N-1에서 최근 프로젝트, 프로필, 메타데이터, dismissed finding, 백업을 만든 뒤N으로 in-place 업그레이드하고 모두 다시 로드되는지 확인한다. - 업그레이드 도중 앱 실행, 파일 잠금, 디스크 부족을 각각 재현해 원본과 이전 실행본이 손상되지 않는지 확인한다.
-
release-policy.md의 AppData 복사본으로N-1롤백을 수행하고, DB migration이 있었다면 migration 전 복사본 복원이 실제로 동작하는지 확인한다.
4. 경로·파일 시스템 매트릭스
각 위치에서 프로젝트 열기 → 스캔 → Allow/Deny 편집 → Diff → 저장 → 앱 재실행 → 복원까지 수행한다. 경로가 지원되지 않으면 조용히 오동작하지 않고 변경 없이 명확한 오류를 보여야 한다.
| 경로/조건 | 예시 또는 준비 | 합격 기준 |
|---|---|---|
| 한글/공백 | C:\테스트 사용자\내 프로젝트 |
표시·저장·백업·재로드에서 경로 손실 없음 |
| 긴 경로 | 전체 경로 260자 초과, OS long paths on/off | 지원 여부가 일관되고 실패 시 원본 유지 |
| OneDrive | 동기화 폴더, online-only/로컬 고정 파일 | placeholder·동기화 충돌 시 원본 유지와 오류 표시 |
| UNC | \\server\share\프로젝트 및 연결 끊김 |
지원 범위를 기록하고 연결 손실 시 hang/부분 저장 없음 |
| 읽기 전용 | 파일 ACL read-only와 폴더 쓰기 거부 | 권한 오류를 “파일 없음”으로 오인하지 않고 원본 유지 |
| 외부 변경 | 앱이 dirty인 동안 editor로 JSON 변경 | 덮어쓰기 전에 충돌을 알리고 사용자 선택을 요구 |
| 손상 JSON | 구문 오류가 있는 각 scope 설정 | 저장 차단, 원문/백업 접근 가능 |
WSL path 변환은 현재 지원 범위 밖이다. Windows에서 \\wsl$ 경로를 UNC와 별개로 시험하고,
지원한다고 공표하려면 별도의 변환·왕복 테스트가 필요하다.
5. 핵심 사용자 흐름
- User/Project/Local 및 managed file scope를 불러오고 effective 결과에서 Deny 우선순위를 확인한다.
- 규칙의 reason/risk level/notes, 선택 프로필, scanner dismiss가 재실행 후 유지된다.
- Raw JSON → 시각 편집 → Raw JSON 왕복에서 알 수 없는 키가 보존되고 잘못된 JSON 저장은 차단된다.
- 백업 목록은 프로젝트 경계를 벗어난 파일을 열거나 복원할 수 없다.
- 홈/창 닫기/탭 전환에서 dirty 변경을 버릴 때 확인하며 Cancel이 동작한다.
- 키보드만으로 주요 동작, modal focus trap/Escape/초점 복귀가 동작한다.
- 800px 최소 창과 100%, 125%, 200% 배율에서 주요 control이 잘리거나 겹치지 않는다.
-
npm run test:claude-permissions는 별도 승인된 개발 머신에서만 실행하고 앱 smoke test와 혼동하지 않는다.
6. 승인 기록
- Release/tag/commit:
- VM image 및 Windows build:
- WebView2 version:
- Installer별 결과와 로그 링크:
- Path matrix 증거:
- Signer/timestamp/checksum:
- 발견된 제한과 release notes 링크:
- 검증자 / 날짜:
- 최종 승인자 / 날짜: