5탭 계약 대조 — 계약 원본 사본을 앱 저장소에 두어 어느 체크아웃에서도 검증

This commit is contained in:
Sn-Kinos
2026-09-14 13:30:26 +09:00
parent 60ea6974df
commit 1c51662c25
3 changed files with 76 additions and 1 deletions
+29
View File
@@ -27,6 +27,35 @@ fvm flutter config --jdk-dir ~/.jdks/jdk-17.0.20.1+1/Contents/Home
`brew install --cask temurin@17` 은 sudo 를 요구한다. sudo 없이 쓰려면 Adoptium
tar.gz 를 `~/.jdks/` 에 풀면 된다.
## 테스트
```bash
export ANDROID_HOME=/opt/homebrew/share/android-commandlinetools
fvm flutter analyze
FANUZU_DESIGN_DIR=/path/to/p-fancake/design fvm flutter test
```
`FANUZU_DESIGN_DIR` 은 5탭 계약 대조용이다. 스모크 테스트가
`craft-allowlist.yaml` 의 `APP_TABS` 를 직접 읽어 앱의 `appTabs` 와 정확 일치를 검증한다.
**정본은 상위 저장소 `p-fancake/design/craft-allowlist.yaml`** 이고 이 저장소는 분리돼
있으므로, 같은 파일의 사본을 `design/craft-allowlist.yaml` 로 두었다. 탐색 순서는 아래와 같다.
1. `$FANUZU_DESIGN_DIR/craft-allowlist.yaml` — 정본을 직접 가리킬 때 쓴다.
2. `design/craft-allowlist.yaml` — 이 저장소의 사본.
3. `../design/craft-allowlist.yaml` · `../p-fancake/design/craft-allowlist.yaml` — p-fancake 와
형제로 둔 체크아웃.
사본이 있으므로 **git worktree 에서도 변수 없이 통과한다.** 그래도 못 찾으면 통과가 아니라
실패한다 — 계약 대조가 조용히 사라지면 안 된다.
사본은 정본과 갈리면 저장소마다 다른 답을 내므로, **정본을 고칠 때 사본에도 함께 복사한다.**
파일 머리에 같은 문장을 적어 두었다.
```bash
cp /path/to/p-fancake/design/craft-allowlist.yaml design/craft-allowlist.yaml
# 머리 주석 5줄은 사본에만 있으니 지우지 말고 APP_TABS·CAPS_OK 만 맞춘다.
```
## 빌드
```bash