← 작업일지

2026-04-24 · v1.0.0

2026.04.24 작업일지 v1.0.0

새벽 05:25~06:37 KST 세션. 자동 /sync 양쪽 기기에서 끄기 + 포모도로 Play Console Closed Testing(alpha) 업로드. versionCode 셋을 태우고 6번째에 alpha 트랙 draft 커밋 성공.

오늘의 궤적

05:25 텔레그램 “추천작업” 한 줄로 시작. 먼저 Mac/WSL 양쪽 daily-sync-and-learn 자동 스케줄을 전부 끔 (/sync 수동 호출은 그대로 유지). 이어서 포모도로 Google Play Console Closed Testing(alpha) 업로드 완주 시도 — versionCode 3/4/5 를 태우고 6번째에 성공. 과정에서 “draft app 은 모든 트랙의 모든 릴리즈가 draft 여야 commit 통과” 라는 숨은 제약을 실측으로 확인, 새 lesson 한 장 추가.

자동 /sync 끄기

  • 사유: 토큰 비용 추가 절감. 수동 호출만 남기기.
  • Mac: launchctl bootout + launchctl disable gui/<uid>/com.claude.daily-sync-and-learn
  • WSL (별도 Claude 세션): systemctl --user stop + disable + mask daily-sync-and-learn.timer
  • 06:45 KST 자동 발화 → 양쪽 0
  • /sync 수동 호출은 그대로 가능 (같은 daily-sync-and-learn.py 호출)
  • 메모리 갱신: project_automation_disabled_2026_04_21.md + MEMORY.md 인덱스 줄

포모도로 Closed Testing 업로드

전제 상태 확인

  • keystore 이미 있음: android/pomodoro-upload-keystore.jks (2026-04-21 생성, key.properties 동일 위치)
  • build.gradle.kts release signingConfig 세팅 완료 — keystoreProperties 로 key.properties 읽음
  • store-listing 자산 전부 준비됨 (android/store-listing/text/ko-KR.md + graphics/ 4장)
  • 스크린샷 “리셋” 버튼 잘림 이슈는 어제 커밋 e8a6cf2 에서 아이콘-only 60×60 로 재촬영됨 (screenshot-1/2 PNG 도 그 커밋에 포함)

AAB 빌드 (Xcode license 회피)

  • flutter build appbundle --releaseYou have not agreed to the Xcode license agreements 에러로 block (Android 빌드인데도 Xcode 체크가 걸림)
  • sudo xcodebuild -license accept 는 interactive sudo 필요 → 회피
  • 회피: DEVELOPER_DIR=/Library/Developer/CommandLineTools 환경변수로 Flutter 가 Xcode 대신 CommandLineTools 를 보도록 유도
  • Flutter 3.41.7 (fvm 경로 ~/fvm/versions/3.41.7/bin/flutter) 사용. 빌드 타임 11~25초

Play Console API 업로드 시도 (4번)

#versionCodetrackstatus 요청결과원인
13betacompleted❌ 403 “Version code 3 has already been used”vc=3 과거 시도에서 이미 소비
24betacompleted→draft(retry)❌ 400 tracks.update Precondition check failedalpha/beta 트랙에 testers 그룹 없음
(수동)✅ 대종님이 Play Console 웹에서 memoyo-beta-testers@googlegroups.com 을 alpha 트랙에 추가
35alphacompleted→draft(retry)❌ 400 edits.commit “Only releases with status draft may be created on draft app”draft app 규칙
46alphadraft (from start)❌ 동일 에러???

숨은 blocker 발견

수동 파이썬으로 모든 트랙 순회한 결과, internal 트랙에 vc=3 status=completed 가 남아있음. 과거 업로드 시도 중 어느 시점에 internal 로 끼어든 상태. edits.commit 은 전체 트랙 상태를 validate → 하나의 non-draft 릴리즈가 있으면 draft app 은 reject. 기존 스크립트 auto-retry 로직은 target 트랙 하나만 draft 로 재시도해서 이 조합 케이스를 커버 못 함.

최종 성공 흐름 (수동 파이썬)

edit = service.edits().insert(...)
# 1. 새 aab 업로드
bundles.upload(vc=6)                                       # OK
# 2. 기존 non-draft 릴리즈 demote
tracks.update(internal, vc=3, status=draft)                # OK
# 3. 새 릴리즈를 target 트랙에 draft 로
tracks.update(alpha, vc=6, status=draft, releaseNotes)     # OK
# 4. commit
edits.commit(edit_id)                                       # OK
  • edit_id: 04724584959853325210
  • 실패한 edit id (discard 됨): 08231519479274434153, 07488784411631080250

결과 (Play Console 현재 상태)

  • alpha (Closed Testing): vc=6 draft ← 대종님이 원래 원한 위치
  • internal: vc=3 draft (demoted)
  • beta / production: 비어있음
  • 다음 단계: Play Console 웹에서 필수 페이지(콘텐츠 등급·데이터 보안·타겟층·광고 선언·스토어 등록정보 ko-KR) 완성 → “검토를 위해 앱 전송” → Google 심사

새 lesson 기록

  • 파일: ~/.claude/skills/submit-app/lessons/android-all-tracks-must-be-draft.md
  • 요점: draft app 은 모든 트랙 모든 릴리즈가 draft 여야 commit 통과. 기존 play-upload.py auto-retry (status=draft) 는 단일 트랙만 다루기 때문에 조합 케이스 미커버.
  • 후속 TODO: play-upload.py--demote-existing 옵션 추가 고려 (probe 단계에서 모든 트랙 스캔 → non-draft 자동 demote)

곁가지: 더치페이/약먹자 iOS “제출 준비 중” 질문

업로드 재시도 기다리는 동안 App Store Connect 앱 목록 스크린샷 날아옴 — “약먹자 - 복용 알림” + “더치페이 계산기” 가 iOS 1.0 “제출 준비 중” 상태로 걸려 있음. 2026-04-20 Mac 에서 앱 레코드 + 메타데이터 작성까지 진행된 뒤 포모도로/심사레이더/한줄일기로 우선순위 이동하면서 심사 제출 단계에서 멈춘 상태. todos 의 “드롭” 라인과 실제 상태 불일치. 오늘 세션에선 상태 확인만 하고 별도 세션으로 넘김.

관련 커밋

repoSHA메시지push?
pomodoroff7337bchore: bump version to 1.0.0+6 + release notes❌ local only
claude-skills03a355cdocs(submit-app): add lesson android-all-tracks-must-be-draft✅ pushed

남은 작업

  • pomodoro repo push (현재 local 커밋만)
  • Play Console 웹에서 필수 페이지 완성 후 검토 제출
  • 더치페이/약먹자 iOS “제출 준비 중” 상태 해소 (별도 세션)
  • play-upload.py --demote-existing 옵션 추가 (lesson 후속)