2.5.1 릴리스 실행 기록¶
{
"schema": "release-metadata/v3",
"version": "v2.5.1",
"status": "planned",
"releaseScopes": [
"coupler-api",
"docs"
],
"extraRepoRefs": [],
"versionMapping": {
"docs": {
"tag": "v2.5.1",
"commit": null
},
"coupler-api": {
"tag": "v2.5.1",
"commit": "a67da8fa3d1c455806eb9144336fab1243f79338"
},
"coupler-admin-web": {
"tag": null,
"commit": null
},
"coupler-mobile-app": {
"store": {
"android": null,
"ios": null
},
"nextPush": null,
"commit": null
}
},
"scopeResults": {
"coupler-api": {
"status": "planned",
"summary": "희망 나이가 없는 회원의 자동 매칭 예약 후보 조회가 나이 필터 없이 동작하도록 수정하고 운영 배포를 준비한다.",
"evidence": {
"deployment": null,
"smoke": null,
"publicContract": null,
"runtimeRecovery": null
}
},
"docs": {
"status": "planned",
"summary": "API 배포 결과를 반영한 최종 릴리스 기록과 docs tag를 준비한다.",
"evidence": {}
}
},
"apiContractCutover": null
}
문서 역할¶
- 역할:
시나리오 - 문서 종류:
flow - 충돌 시 우선 문서:
policy/release-process.md, 태그 기준은policy/release-tag-policy.md - 기준 성격:
as-is
목적¶
v2.5.1릴리스의 실제 반영 결과와 검증 근거를 한 문서에 고정한다.
범위¶
- 대상:
coupler-api,docs - 포함 범위: 자동 매칭 예약 NULL 희망 나이 처리, API 운영 배포, 서비스·docs 태그와 릴리스 기록
- 제외 범위: DB migration, contracts package, Admin, Mobile Store·NextPush
상위 규범 문서¶
릴리스 상태¶
- 목표 버전:
v2.5.1 - 전체 상태:
planned - 완료 범위:
- 대기 범위: API PR 승인·병합, 릴리스 preflight, 운영 배포·postcheck, 서비스·docs 태그
버전 매핑¶
docs: 기록 버전v2.5.1, 태그v2.5.1, 커밋은 최종 기록 병합 뒤 확정coupler-api: 태그v2.5.1, 커밋a67da8fa3d1c455806eb9144336fab1243f79338coupler-admin-web: 태그N/A, 커밋N/Acoupler-mobile-app: Store 기준N/A, NextPushN/A, NextPush 커밋N/A- Store 제출 마커 태그와 증빙 이관/삭제:
N/A- Mobile Store 미포함
작성 기준¶
- 신규 기록은 템플릿을 직접 복사하지 않고 docs 레포 루트에서
yarn release:record:init v2.5.1로 초기화해 lifecycle registry,content/AGENTS.md인덱스와mkdocs.ymlnav를 같은 변경 단위로 준비한다. - 이 파일은 입력 골격이다. 상태·scope·evidence의 규범과 closed value는
릴리스 프로세스의
릴리스 운영 모델과릴리스 기록 상태값을 따른다. - 위
release-metadata는 docs-onlyplanned시작형이다. 실제releaseScopes와 같은 key만scopeResults에 추가하고,scripts/release-schema.mjs가 정의하지 않은 key나 별도 완료 축을 만들지 않는다. - scope, exact commit, 검증 시나리오와 rollback 기준을 확정하고 현재 PR head에 적용된 필수 CI를 확인한 뒤
전체 상태와 nonterminal
scopeResults를pending으로 전환한다. 전환을 push한 현재 PR head의 필수 CI 성공을 다시 확인하기 전에는 preflight나 운영 실행을 시작하지 않는다. release-metadata가 기계 판정 SoT이고 본문은 사람이 읽는 mirror다. 두 표현의 범위·상태·버전 기준을 맞춘다.- terminal scope는 정책과 descriptor가 요구하는 concrete evidence로 닫는다. placeholder나
N/A로 완료 증빙을 대신하지 않는다. - API contract cutover가 있을 때만
content/templates/api-contract-cutover-gate-template.md를검증 근거아래에 삽입한다. - DB migration은 DB Migration 실행 런북에 따라 개발계와 운영계에 사용한 동일한 마이그레이션 소스 커밋과 최종 pending 0건을 사람이 읽는 결과에 기록한다. 별도 plan·execution artifact는 만들지 않는다.
main에 이미 병합된 릴리스 기록과 evidence는 수정·삭제·개명·대체하거나 현재 계약으로 재검증하지 않는다.- 개인 사용자명·로컬 home/tmp 경로·secret을 기록하지 않는다. 변동 값에는 확인 시각과 timezone을 남긴다.
- 최종 후보에서
yarn release:preflight --pending-ref <40자 commit SHA>와 적용 docs 품질 Gate를 실행한다.
릴리스 결과¶
- 현재 결과:
planned- API 후보와 릴리스 범위를 고정했으며 PR·운영 Gate는 아직 진행 전이다.
메인 흐름¶
- API PR의 필수 CI와 승인·main 반영을 확인한다.
- docs 릴리스 기록을
pending으로 전환하고 공통 preflight를 통과한다. - 운영 API를 exact main commit으로 fast-forward하고 PM2·내부/외부 smoke·로그를 확인한다.
- API 서비스 태그를 생성하고 최종 기록과 docs 태그·Release postcheck를 완료한다.
검증 근거¶
- Preflight 명령·결과: 릴리스 기록
pending전환과 API main 반영 뒤 실행 예정 - Scope별 Gate·smoke·artifact: API 후보
a67da8fa에서 표준 품질 게이트 통과, 187 suites·1,653 tests 성공 - API cutover:
No- 공개 요청·응답, 오류, 인증, WebSocket, bootstrap·version 계약 변경 없음 - DB 마이그레이션 소스 커밋·개발계/운영계 결과:
N/A- schema·migration 변경 없음 - Workflow·로그·수동 검증 링크: API PR #210
Mobile 개발계 QA 빌드 기록¶
개발계 QA 빌드가 있을 때만 기록한다. 운영 Store·NextPush·서비스 태그 증빙으로 사용하지 않는다.
- 기록일:
- API 대상:
- iOS TestFlight QA 빌드:
- Android QA APK:
- 운영 릴리스 전 확인:
롤백 기준¶
coupler-api: 배포 직전 운영 기준7a92e56173930ade6d3dcd4cad675131bdf245b8로 복구하고 production PM2를 재시작한다. DB 변경은 없다.docs: 운영 변경 전에는 같은 PR에서 기록을 보정한다. 최종 병합·태그 뒤 기록은 수정하지 않는다.
후속 작업¶
- 남은 범위: API·docs PR Gate, 공통 preflight, 운영 API 배포·postcheck, 태그와 최종 기록 마감
- 완료 조건: exact API main commit의 운영 반영과 PM2·내부/외부 smoke, API·docs 태그 및 docs Release postcheck 완료