Repository navigation
패키지 저장소 배포 (PyPI / Homebrew / winget) #88
Description
Activity
Phase 2 진행 상황 — PyPI 배포 준비
Draft PR: #126
Implemented
- 최종 배포명
omm-model, Python import/CLI는omm유지 - 통합 workflow
.github/workflows/release.yml - PyPI Environment
pypi, TestPyPI Environmenttestpypi - 기존 OMM pipx 환경만 식별해 안전하게
omm-model로 마이그레이션하고, unrelated PyPIomm환경은 보존 - pip/pipx 설치는
omm update로 Git 설치로 바뀌지 않도록 package-manager-aware 정책 적용 - TestPyPI → PyPI OIDC 게시, 파일/해시/attestation/공개 pipx 설치 검증 단계 구현
- 현재 버전
0.2.124
Unit-verified
- signed HEAD
1e94dc8격리 전체 테스트:1635 passed, 4 skipped - GitHub Windows 전체 테스트(push/PR 각각):
1621 passed, 18 skipped, 0 failed - Windows/macOS/Ubuntu, Python 3.10/3.14 wheel 설치 smoke 성공
omm_model-0.2.124wheel/sdist 빌드 및twine check, metadata/checksum 검증 성공- PR 체크: 31 passed, 6 intentionally skipped (tag publication jobs), 0 failed/pending
External blockers / 실제 배포 전 차단 조건
- PR #126은 아직 Draft이며
main에 병합되지 않음 - GitHub
pypi/testpypiEnvironment에 required reviewer와 tag deployment policy가 아직 없음 v*tag ruleset이 아직 없음- PyPI Pending Publisher를
omm-model / omm-hippo / omm / release.yml / pypi로 로그인 확인 필요 - TestPyPI Pending Publisher도 별도로 등록/확인 필요(Environment
testpypi)
Not verified / 미검증
- 실제 TestPyPI/PyPI 업로드는 하지 않음
- 두 인덱스의
omm-model은 아직 404 - 공개
pip install omm-model/pipx install omm-model, live attestation은 태그 배포 전까지 미검증 - Homebrew와 winget 등록은 PyPI 공개 릴리스 뒤의 다음 단계
보호 설정과 Pending Publisher가 확인되기 전에는 병합 후에도
v0.2.124태그를 만들지 않습니다.- 최종 배포명
v0.2.128 PyPI release completed
- Signed tag:
v0.2.128→cbe370711a6065d6fe1dd319f7fc1e0080153e9c - GitHub Release: https://github.com/omm-hippo/omm/releases/tag/v0.2.128
- PyPI: https://pypi.org/project/omm-model/0.2.128/
- TestPyPI: https://test.pypi.org/project/omm-model/0.2.128/
- Release workflow: https://github.com/omm-hippo/omm/actions/runs/32325951670
Implemented
- TestPyPI → PyPI Trusted Publishing with protected GitHub Environments
- Exact file/SHA-256 and publish-attestation verification
- Public PyPI pipx install/run/uninstall verification on Ubuntu, macOS, and Windows
- GitHub Release with wheel, sdist, and
SHA256SUMS
Unit-verified
- Release build, six wheel smoke jobs, and three full-suite release gates passed
- TestPyPI and PyPI file/provenance verification passed
- Public PyPI pipx paths passed on all three GitHub-hosted operating systems
Actual service verification
omm-model==0.2.128is live on TestPyPI and PyPI- Downloaded GitHub Release archives match the PyPI SHA-256 digests
Not verified / 미검증
- A public PyPI upgrade from an older OMM release is not yet testable because
0.2.128is the first public PyPI release - Physical-device user-path verification remains separate from GitHub-hosted CI
- Homebrew and winget are not implemented or published yet
Follow-up
-The first TestPyPI verification attempt hit temporary
/simple/index propagation delay. A retry passed after the index became visible. Add bounded retry/backoff aroundsmoke-index-installbefore the next release.- Signed tag:
2026-08-20 Homebrew / 문서 / npm 후속 상태
Implemented
- Homebrew Tap
omm-hippo/homebrew-omm과Formula/omm.rb이 공개되어 있다. - 공개 설치 명령은
brew install omm-hippo/omm/omm이다. - README 문서 PR #145가 병합되어 Homebrew 설치·업그레이드·제거 명령,
omm update정책, 검증 수준 표가main에 반영됐다. - npm 설치 경로는 별도 설계 이슈 #146으로 분리했다. npm 패키지나 게시 워크플로는 아직 만들지 않았다.
Unit-verified
- README 변경 관련 집중 테스트: 71 passed
- PR Document verified Homebrew installation path #145 검사: 24 success, 6 intentionally skipped, 0 failed
- 병합 커밋
505b84cd5eb5627a46e1931cd91c60060840abff의mainCI: 8/8 jobs success - Main CI: https://github.com/omm-hippo/omm/actions/runs/32348318440
Simulator-verified
- 공개 Tap의 최신
brew test-botCI가 성공했다. - 2026-08-20 현재
brew info omm-hippo/omm/omm에서 공개 Formula 0.2.128과 고정된 PyPI source/checksum이 조회된다. - Formula와 PyPI는 릴리스 주기가 다를 수 있으므로 README는 설치 버전을 고정해 쓰지 않고
brew info를 현재 Tap 버전의 기준으로 안내한다.
Physical-device-verified
- Apple Silicon 실제 Mac에서 공개 Tap 설치,
omm --version,brew test,omm update의 Homebrew 업그레이드 안내, 제거 경로를 확인했다.
Not verified / 미검증
- Intel Mac의 실제 설치·실행·업그레이드·제거는 미검증이다.
- 서로 다른 두 공개 Homebrew Formula 버전 사이의 실제 업그레이드는 미검증이다.
- npm 공개 registry 게시·설치·실행·업그레이드·제거는 미검증이며 #146에서 설계부터 진행한다.
- Winget 범위는 별도 작업에서 진행 중이므로 이 댓글에서는 구현·검증·완료 상태를 변경하지 않는다.
- Homebrew Tap
2026-08-21 배포 현황 갱신
PyPI
omm-model==0.2.147TestPyPI→PyPI Trusted Publishing 완료- 파일·SHA-256·publish attestation 검증 성공
- GitHub-hosted Ubuntu/macOS/Windows의 공개 pipx 설치·실행·제거 성공
- Apple Silicon 실제 Mac의 공개 PyPI 설치·실행·제거 성공
- 공개
0.2.129 → 0.2.147업그레이드는 이번 후속 작업에서 별도 검증 예정
Homebrew
- 공개 Tap과 Formula
0.2.129존재, Apple Silicon 실제 설치 경로 검증 완료 - Formula
0.2.147갱신과 공개 버전 간 업그레이드, 실제 Intel Mac 경로는 남음
WinGet
- microsoft/winget-pkgs PR #421239는 OPEN
- 검증 10단계와 CLA 성공,
Validation-Completed상태 - 현재 Microsoft write-access reviewer 승인이 필요하며 병합 후 공식 source 설치·업그레이드·제거는 미검증
npm 후속
@omm-hippo/omm@0.2.147최초 공개와 Apple Silicon 실제 사용자 경로는 검증됨- 상세 미검증 항목은 #146에서 추적
GitHub Release: https://github.com/omm-hippo/omm/releases/tag/v0.2.147
Winget PR: microsoft/winget-pkgs#421239#88은 WinGet 공식 병합·공개 경로와 남은 업그레이드 검증이 끝날 때까지 열린 상태로 유지합니다.
배포 경로 후속 검증 기록 (2026-08-21)
Implemented
- Homebrew PR #3에서 Formula를 0.2.147로 갱신하고 공개 PyPI sdist URL/SHA-256을 고정했다.
- Linux strict linkage에 필요한
libffi직접 의존성을 선언했다. - Intel CI에 실제 source install,
brew test, version/help 실행 단계를 추가했다.
Unit-verified
- 공개 PyPI sdist SHA-256과
omm-model0.2.147 메타데이터를 확인했다. - Ruby syntax,
brew style,actionlint,git diff --check가 통과했다.
Simulator-verified
- Homebrew run 32458555756의 Apple Silicon macOS와 Linux에서 source build, bottle 재설치, strict linkage, Formula test가 통과했다.
- macOS 15.7.7 x86_64 hosted runner가 실제 source install,
brew test,omm --version,omm --help를 실행했고omm 0.2.147을 확인했다.
Physical-device-verified
- Apple Silicon Mac의 격리된 pipx 환경에서 공개 PyPI
omm-model을 0.2.129로 설치한 뒤pipx upgrade omm-model로 0.2.147까지 실제 업그레이드했다. - 업그레이드 전후 버전, package-managed
omm update안내, CLI 도움말, 제거와 명령 삭제까지 확인했다.
실제 서비스 검증
- PyPI
omm-model==0.2.147은 공개 상태이며 yanked가 아니고 wheel·sdist가 존재한다. - Homebrew PR #3은 Ready, CLEAN, MERGEABLE이며 CI 3개가 모두 성공했지만 아직 미병합이다.
- Winget PR #421239는 OPEN/Ready/REVIEW_REQUIRED이고
Azure-Pipeline-Passed,Validation-Completed,New-Package상태다. 이 채팅에서는 Winget 파일이나 PR을 수정하지 않았다.
Not verified / 미검증
- Homebrew PR #3이 아직 병합되지 않아 공개 tap의 0.2.147 설치·0.2.129→0.2.147 업그레이드·제거는 미검증이다.
- Intel 검증은 GitHub-hosted runner이며 사용자 소유 물리 Intel Mac 검증은 아니다.
- Winget은 관리자 리뷰·병합 전이므로 공식 source의 검색·설치·업그레이드·제거는 미검증이다.
따라서 #88은 아직 닫지 않는다. Homebrew PR #3 병합 후 공개 tap 경로와 Winget PR 병합 후 공식 source 경로를 검증한 뒤 종료 여부를 판단한다.
Homebrew 공개 업그레이드 실검증 (2026-08-21, 정정 포함)
Implemented
- Homebrew PR #3이 merge commit
65b030315a55b282b76724111f5900c1f6877d78로 병합됐다. - 공개 Tap의 Formula가
0.2.147과 고정된 PyPI sdist/SHA-256,libffi직접 의존성을 제공한다.
Unit-verified
- PR run 32458555756에서 Formula의 source build,
brew test, linkage 검사가 통과했다. - 병합 후 main push run 32462863285의 Apple Silicon, Intel, Linux 작업도 모두 성공했다. 단, 이 push run에서는 Formula exercise 단계가 변경 파일 판정 때문에 skip됐으며, 실제 Formula build/test/linkage 근거는 PR run 32458555756이다.
Simulator-verified
- PR run 32458555756의 GitHub-hosted Apple Silicon macOS와 Linux에서 source build, bottle 재설치, linkage 및
brew test가 성공했다. - 같은 run의 GitHub-hosted Intel macOS 15.7.7 x86_64에서
brew install --build-from-source,brew test,omm --version,omm --help가 실제 실행됐고omm 0.2.147을 확인했다.
Physical-device-verified
- 실제 Apple Silicon Mac에서 공개 Tap의 이전 Formula
0.2.129를 설치했다. omm 0.2.129,omm --help,brew test, Homebrew 관리 설치의omm update안내를 확인했다.brew update후0.2.147이 outdated upgrade 대상으로 감지되는 것을 확인했다.brew upgrade omm-hippo/omm/omm으로 실제0.2.129 → 0.2.147업그레이드가 성공했다.- 업그레이드 후
omm 0.2.147, 도움말,brew test, Homebrew 업그레이드 안내가 모두 성공했다. - 새 로그인 셸에서 bare
omm이/opt/homebrew/bin/omm으로 확인됐고omm 0.2.147과 도움말이 실행됐다. brew uninstall omm-hippo/omm/omm후 Formula가 제거됐고, 기존/Users/minjun/.local/bin/omm은 SHA-256aaf1c17ce63567be2a5f2c6718c2d4a4459b838daf3c9fc6e03e111b938ff06d이 바뀌지 않은 채 다시 선택되어omm 0.2.129로 실행됐다.
Not verified / 미검증
- 사용자 소유 실제 Intel Mac에서 공개 Tap 설치·업그레이드·제거는 미검증이다. Intel 경로는 GitHub-hosted runner까지만 검증됐다.
- Winget PR #421239는 Microsoft reviewer 승인 대기 상태이므로 공식 source의 검색·설치·업그레이드·제거는 미검증이다.
따라서 Homebrew의 공개 Apple Silicon 설치·새 셸 실행·버전 간 업그레이드·제거 경로는 완료됐지만, #88은 Winget 공식 경로가 검증될 때까지 열린 상태로 유지한다.
- Homebrew PR #3이 merge commit
v0.2.148 공동 릴리스 결과
Implemented
- PR #156을 병합하고 main SHA
048645efe3e4d4c76bf60534736c49156d428a20에 서명된v0.2.148태그를 생성했다. - GitHub Release: https://github.com/omm-hippo/omm/releases/tag/v0.2.148
Unit-verified
- PR release: prepare 0.2.148 #156: 68 success, 10 expected skipped, failure/pending 0.
- 병합 후 main: npm design 15/15, cross-platform 8/8 성공.
- 태그에서 시작된 11개 workflow가 최종적으로 모두 성공했다.
Simulator-verified
- Python release는 Ubuntu/macOS/Windows의 build, wheel install, full release gate, 공개 PyPI pipx 설치·실행·제거를 통과했다.
- npm release는 Apple Silicon/Intel macOS, Linux x64/ARM64, Windows x64 공개 설치·서명 감사·실행·업데이트 안내·제거를 통과했다.
Physical-device-verified
- 실제 Apple Silicon Mac에서 공개 npm
0.2.147 → 0.2.148업그레이드, 새 로그인 셸 실행, version/help, npm 업데이트 안내, 서명 감사, 제거를 확인했다.
실제 서비스 검증
- TestPyPI와 PyPI에
omm-model==0.2.148wheel/sdist가 공개됐고 SHA-256과 provenance가 검증됐다. - PyPI 공개 pipx 경로는 재검증 attempt 2에서 17/17 성공했다. 첫 Windows 시도는 게시 직후 simple-index 전파 지연으로 실패했으며, 파일 재업로드 없이 failed-job-only rerun으로 통과했다.
- npm launcher와 플랫폼 패키지 5개가 모두
0.2.148로 공개됐고 SHA-512 integrity, registry 서명, publish attestation, SLSA provenance를 확인했다. - GitHub Release의 wheel/sdist SHA-256은 PyPI 파일과 일치한다.
Not verified / 미검증
- 사용자 소유 실제 Intel Mac, Windows, Linux 장치에서 공개 버전 간 업그레이드는 미검증이다.
- Winget PR #421239는 Microsoft reviewer 승인·병합 대기 상태이므로 공식 source 검색·설치·업그레이드·제거는 미검증이다.
npm 후속 이슈 #146은 완료 처리했다. #88은 Winget 공식 경로가 검증될 때까지 계속 열린 상태로 유지한다.
- PR #156을 병합하고 main SHA
2026-09-16 실기기 검증 기록 (Windows 11, python.org 3.13, 격리 venv, 격리 HOME):
- 공개 PyPI
omm-model==0.3.33설치 →omm --version= 0.3.33 →pip install -U omm-model==0.3.41→omm --version= 0.3.41,omm --help,omm list,omm doctor정상 →pip uninstall후omm.exe제거 확인. 즉 "실제 Windows 장치의 공개 버전 간 업그레이드" 항목은 통과. - 부수 발견: stdin 은 터미널·stdout 은 파이프인 환경에서 첫 실행 온보딩 프롬프트가 죽음 → fix: 출력이 파이프일 때 첫 실행 온보딩 프롬프트가 죽던 문제 (#88 검증 중 발견) #341 로 수정.
- 현재 GitHub Release v0.3.41 에는 자산(zip/wheel/체크섬)이 없어(
releases/download/.../omm-windows-x64-0.3.41.zip404) winget 매니페스트가 가리킬 파일이 없음. 다음 서명 태그 릴리스(docs/release-process.md 절차)가 나가면 자산 5개가 생기고, 그 버전으로 winget 매니페스트를 새로 제출하는 것이 남은 경로. New package: OmmHippo.OMM version 0.2.149 microsoft/winget-pkgs#421239 (0.2.149) 는 낡아서 새 제출로 대체 예정.
- 공개 PyPI
- added a commit that references this issue
on Sep 15, 2026
배경
OMM의 패키지 저장소 배포를 하나의 서명된 릴리스를 기준으로 추적한다. PyPI와 Homebrew는 공개됐고, winget은 Microsoft 검토·병합과 공식 source 사용자 경로가 남아 있다.
확정 범위 및 이름
omm-modelpipx install omm-model또는pip install omm-modelomm을 유지한다.omm-hippo/homebrew-ommbrew install omm-hippo/omm/ommOmmHippo.OMMwinget install --id OmmHippo.OMM -e진행 순서
0. 공통 릴리스 기반
pyproject.toml버전 일치 검사omm --version/omm --help실행1. PyPI
pyproject.toml배포 이름과 프로젝트 메타데이터 정리0.2.129 → 0.2.147업그레이드·실행·제거를 확인했다.2. Homebrew Tap
omm-hippo/homebrew-omm저장소 생성Formula/omm.rb작성brew audit,brew install --build-from-source,brew test통과0.2.129 → 0.2.147설치·새 셸 실행·업그레이드·제거를 확인했다.3. Windows 설치 아티팩트
install.ps1과 별개인 고정 버전 portable ZIP 방식 결정~/.omm사용자 데이터가 기본적으로 보존되는지 자동 검증4. winget
OmmHippo.OMMmanifest 작성winget validate및 GitHub-hosted Windows의 local manifest 설치·제거 검증microsoft/winget-pkgsPR #421239 제출5. 문서 및 업데이트 정책
omm update가 파일을 직접 덮어쓰지 않고 해당 패키지 관리자의 업그레이드 명령을 안내하도록 정책 확정현재 차단 요소
검증/완료 원칙
Out of scope