2.4.0 릴리스 실행 기록¶
{
"schema": "release-metadata/v2",
"version": "v2.4.0",
"status": "released",
"releaseScopes": [
"db-migration",
"docs"
],
"extraRepoRefs": [],
"versionMapping": {
"docs": {
"tag": "v2.4.0",
"commit": null
},
"coupler-api": {
"tag": "v2.4.0",
"commit": "299abc63d0c4cebaaff9f27a9f1484e0ef82c9db"
},
"coupler-admin-web": {
"tag": null,
"commit": null
},
"coupler-mobile-app": {
"store": null,
"releaseTag": null,
"commit": null,
"nextPush": null
}
},
"scopeResults": {
"db-migration": {
"status": "released",
"summary": "긴급 선적용된 migration 98·99를 현재 운영 ledger·catalog·schema·postcondition으로 재검증하고 canonical execution 부재를 숨기지 않는 위반 기록으로 닫았다.",
"evidence": {
"schema": "db-migration-maintenance-evidence/v1",
"kind": "violation",
"violation": {
"version": "v2.4.0",
"apiSourceRef": "299abc63d0c4cebaaff9f27a9f1484e0ef82c9db",
"verifiedAt": "2026-08-03T17:29:40.000Z",
"catalogState": {
"catalogPath": "db/schema/schema-contract.json",
"catalogSha256": "c1afce7707a25cd8e7003eb9dedae85695ad646d51321e0f3bd16db12a8af66a",
"ledgerCompatibilityPath": "db/schema/ledger-compatibility.json",
"ledgerCompatibilitySha256": "b3f7b274bb82ff3a0d18541eec0e3c46a66395fb59ea902606fc1e1ab9346fe9",
"catalogEntryCount": 26,
"resolutionCounts": {
"applied": 25,
"recovered": 0,
"baseline": 0,
"superseded": 1
},
"pendingCount": 0,
"adjudicableLedgerGapCount": 0
},
"prodState": {
"databaseIdentitySha256": "fda77e0b97d327b13e2e215f170204c441143a6159d95d8e65acc6d1381b8b69",
"schemaFingerprintSha256": "607387544c052a59c960cf1fc34540497b9d438176d4d28ad4fd9c0a61ea5efe",
"migrations": [
{
"file": "db/migrations/98_expand_match_lounge_source.sql",
"sha256": "37b81efdf3e5154def46d891cd56b9ae6f0f1686f0f554480164e14100b7f57f",
"ledger": "applied",
"postcondition": "passed"
},
{
"file": "db/migrations/99_expand_match_finding_send_card_setting.sql",
"sha256": "3f1b9bd74c6a6d95804bb73643916d883c1c24832dead8ee0792fb8d72c405ab",
"ledger": "applied",
"postcondition": "passed"
}
]
},
"historicalExecution": {
"backupSha256": "949b81ce249212d0df8b47e9f1a1878028dc5a2c5d138ccc01d8978ee3cd5315",
"writerFenceEvidence": "2026-08-04 KST API와 cron을 중지한 뒤 migration 98·99를 실행했다.",
"resumeSmokeEvidence": "ledger·postcondition 확인 뒤 API와 cron을 재개하고 내부·외부 smoke를 통과했다.",
"canonicalExecution": "unavailable-not-recreated"
},
"limitation": "긴급 실행 전에 canonical dev/prod plan·execution을 만들지 못했으며 현재 상태 검증으로 과거 execution event를 사후 제조하지 않는다."
}
}
},
"docs": {
"status": "released",
"summary": "DB migration 98·99의 확인 결과와 canonical execution 부재 한계를 최종 기록으로 고정했다.",
"evidence": {}
}
},
"apiContractCutover": null
}
문서 역할¶
- 역할:
시나리오 - 문서 종류:
flow - 충돌 시 우선 문서:
policy/release-process.md, DB 실행 기준은policy/db-migration-gate-policy.md - 기준 성격:
as-is
목적¶
- 긴급 선적용된 운영 DB migration 98·99의 확인 가능한 결과와 누락된 canonical 실행 이력을 함께 보존한다.
범위¶
- 대상:
docs,coupler-api - 포함 범위: 운영 DB migration 98·99의 ledger·postcondition 재검증, 위반 기록, docs 최종 기록과 태그 기준점
- 제외 범위: contracts package, API·Admin 배포, Mobile Store·NextPush, Apple 계정·결제 복구와 후속 migration
상위 규범 문서¶
릴리스 상태¶
- 목표 버전:
v2.4.0 - 전체 상태:
released - 완료 범위: 운영 DB migration 98·99의 ledger·catalog·schema·postcondition 재검증과 한계 기록
- 제외 범위: DB 외 서비스·모바일 릴리스는 이 기록의 완료 조건이 아니다.
버전 매핑¶
docs: 태그v2.4.0, 커밋N/Acoupler-api: 태그v2.4.0, 커밋299abc63d0c4cebaaff9f27a9f1484e0ef82c9dbcoupler-admin-web: 태그N/A, 커밋N/Acoupler-mobile-app: StoreN/A, 릴리스 태그N/A, 커밋N/A, NextPushN/A
릴리스 결과¶
- DB migration: 2026-08-04 KST 운영계에 98·99가 적용됐고
schema_migrationsledger와 live postcondition을 재확인했다. - Canonical execution: 긴급 실행 전에 dev/prod plan·execution을 만들지 못했으며 사후 제조하지 않았다.
- Docs: 확인 가능한 사실과 한계를
kind: violation으로 고정하고 일반 migration 실행 근거와 분리했다.
메인 흐름¶
- 운영 ledger·catalog·schema fingerprint와 migration 98·99 checksum을 read-only로 재검증했다.
- migration별 live postcondition과 API·cron fence/resume smoke의 당시 증빙을 확인했다.
- canonical 실행 부재를 위반 기록으로 남기고 이후 release의 실행·승격 근거로 재사용하지 않게 닫았다.
검증 근거¶
- Catalog: SHA-256
c1afce7707a25cd8e7003eb9dedae85695ad646d51321e0f3bd16db12a8af66a, 26/26 resolved, 미해결 migration과 판정 가능한 ledger gap은 모두 0건이다. - Migration 98: checksum
37b81efdf3e5154def46d891cd56b9ae6f0f1686f0f554480164e14100b7f57f,t_match.lounge_idcolumn과idx_t_match_lounge_idindex를 확인했다. - Migration 99: checksum
3f1b9bd74c6a6d95804bb73643916d883c1c24832dead8ee0792fb8d72c405ab,t_setting.id=26, value=-5를 확인했다. - Backup: manifest SHA-256
949b81ce249212d0df8b47e9f1a1878028dc5a2c5d138ccc01d8978ee3cd5315를 당시 실행 증빙으로 보존한다. - 한계: 현재 상태 재검증은 누락된 canonical execution event 순서를 증명하거나 대신하지 않는다.
롤백 기준¶
- DB: 적용 ledger와 당시 backup 증빙을 보존한다. 임의 역쿼리나 98·99 재실행을 하지 않는다.
- Docs: 이 terminal 기록은 병합 뒤 수정하지 않는다. 사실 오류는 별도 이슈·사고 기록으로 추적한다.
후속 작업¶
- 이 기록에서 제외한 API·Admin·Mobile·계정·결제 작업은 각각의 실제 실행 범위에서 별도로 기록한다.