b3os-release-opslisted
Install: claude install-skill b3rys/b3rys-team-os
# b3os-release-ops — 공개 배포·머지·핫픽스 게이트
정본 문서: `docs/DEPLOY_MERGE_HOTFIX_WORKFLOW.md`
## 언제 invoke하나
- b3os 공개 `main`에 PR을 merge하기 전.
- live deploy(라이브 배포)하기 전/후.
- hotfix(긴급 수정)를 만들거나 머지할 때.
- force-push/history rewrite/orphan public snapshot 같은 공개 기록 재작성 논의가 있을 때.
- 봇이 “자동 머지해도 되는가?”를 판단해야 할 때.
## 빠른 판정
| 작업 | 봇 자율 가능? | 필수 게이트 |
|---|---:|---|
| 문서 오탈자, 링크, 포맷팅 | 가능 | clean worktree, preflight, 가능하면 리뷰 |
| 테스트만 수정, 제품 동작 불변 | 제한적 가능 | 관련 테스트, preflight, 리뷰 1명 |
| 코드 동작 변경 | 불가 | PR, CI/typecheck, member review, 필요 시 harness |
| DB·권한·보안·시크릿 | 불가 | GD 승인, 리뷰, rollback, 감사 로그 |
| live deploy/restart | 불가 | GD/운영 승인, dry-run, build, acceptance, rollback |
| branch protection/force-push | 불가 | GD 승인, 2명 또는 harness review, backup, audit |
## 표준 실행 절차
### 1. PR merge 전
```bash
# 작업 브랜치에서
skills/b3os-release-ops/scripts/release-preflight.sh --mode merge
bun run typecheck # 코드 변경일 때
```
확인:
- `git status`가 clean인지.
- 브랜치가 `main`이 아닌지.
- `origin/main..HEAD` commit author·committer email이 GitHub noreply인지.
- GitHub `main` branch protection이 켜져 있는지.
- PR 리뷰 1명 이상을 받았는지.
### 2. clean merge
- 공개 기록에 남길 author가 GD라면 `gd.on` noreply email로 재작성한다.
- merge 수행 계정은 GitHub Settings → Emails에서 “Keep my email addresses private”를 먼저 켠다. GitHub 웹/squash merge commit은 브랜치 commit이 all-noreply여도 머지 수행 계정의 author·committer email을 남길 수 있다.
- rebase/amend/fast-forward merge도 committer email이 로컬 실명 email로 남을 수 있으므로 author와 committer를 모두 확인한다.
- squash/rebase는 PR 범위 안에서만 한다.
- branch protecti