G-1: 메신저 Webhook Relay + _send_to_room 실제 httpx 호출 구현 G-2: POST /api/tasks/bulk SR 대량작업 엔드포인트 (최대 100건) G-3: 라이선스 만료 알림 스케줄러 (매일 09:00 KST) G-4: 체험판 upgrade_banner 필드 + license.py 배너 로직 G-5: core/auto_rca.py + incidents/problem auto-rca 엔드포인트 G-6: core/deploy_impact.py + vibe impact-analysis 엔드포인트 G-7: core/ticket_classifier.py + SR 생성 시 AI 분류 + ai-suggestion API G-8: VulnPatchRecord 모델 + vuln_scan 패치추적 4개 엔드포인트 G-9: core/jira_sync.py + gateway Jira/Confluence 연동 엔드포인트 G-10: core/push_notify.py + routers/push.py + PushSubscription 모델 G-11: approvals 다중승인 (위임/서명/기한초과/마감연장) G-12: alembic.ini + migrations/ + cicd/migrate_to_postgres.sh 하네스: guardia-orchestrator 확장기능 Phase 반영 봇명령어: /sr /status /license /bulk 슬래시 명령어 추가 설치스크립트: setup/ (Ubuntu, CentOS, RHEL, Windows) --test 옵션 포함 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
10 KiB
10 KiB
Release Audit — 2026-04-18
담당: release-engineer 에이전트
대상 저장소: /Users/robin/IdeaProjects/harness (revfactory/harness)
상위 전략 문서: /Users/robin/Downloads/harness-research/revfactory-harness_Jcurve_전략_2026-04-18.md §3.2 P-04
근거: 리서치 보고서 §1.5, §4.7 약점 4번 (태그·버전 불일치)
1. 현재 상태 (Before)
| 소스 | 버전 | 파일 경로 | 비고 |
|---|---|---|---|
| README.md 뱃지 | 1.0.1 | README.md:6 |
version-1.0.1-brightgreen.svg |
| README_KO.md 뱃지 | 1.0.1 | README_KO.md:6 |
EN과 동일 문자열 |
| README_JA.md 뱃지 | 1.0.1 | README_JA.md:6 |
EN과 동일 문자열 |
| plugin.json | 1.2.0 | .claude-plugin/plugin.json:4 |
Claude Code가 실제로 읽는 권위 소스 |
| marketplace.json | 1.1.0 | .claude-plugin/marketplace.json:14 |
plugins[0].version |
| CHANGELOG 최신 | [1.2.0] | CHANGELOG.md:5 |
2026-04-08 날짜 |
| git tag 최신 | (없음) | — | git tag -l 빈 출력, 태그드 릴리스 0건 |
| 최신 커밋 | 3bfc442 |
HEAD (main) | v1.2.0: CLAUDE.md 포인터 정책으로 간소화... |
1.1 불일치 요약
3중 불일치 상태 — 엔터프라이즈 결재·마켓플레이스 신뢰 축적 과정에서 첫 탈락 트리거가 될 수 있는 위생 문제.
- README 뱃지(3종) vs plugin.json: 2단계 gap (1.0.1 → 1.2.0)
- marketplace.json vs plugin.json: 1단계 gap (1.1.0 → 1.2.0)
- plugin.json vs git tag: 태그 부재 (1.2.0 선언은 있으나 릴리스 아티팩트 0건)
1.2 불일치 영향도
| 영향 영역 | 증상 |
|---|---|
| 신뢰성 | 방문자가 README 뱃지를 보고 "1.0.1이 최신"으로 오해 → 구버전 선입견 |
| 설치 경험 | 마켓플레이스 설치 시 1.1.0 메타로 등록되나 실제 plugin은 1.2.0 → 후속 업데이트 추적 불가 |
| 릴리스 추적 | git tag -l 빈 값 → gh release list 빈 값 → 사용자가 버전별 CHANGELOG를 추적할 수 없음 |
| 엔터프라이즈 결재 | 태그드 릴리스가 없으면 CVE·SBOM·감사 트레일을 구성할 수 없음 |
2. 정답 버전 결정
선정: v1.2.0
근거
- plugin.json 우선 원칙 — Claude Code 플러그인 시스템이 실제로 읽는 소스이므로 가장 권위 있음 (역할 정의 Step 2 우선순위)
- CHANGELOG 최신과 일치 —
[1.2.0] - 2026-04-08이 최신 엔트리로 존재하며 plugin.json과 정합 - 최신 커밋 메시지 일치 —
3bfc442 v1.2.0: CLAUDE.md 포인터 정책으로 간소화...(2개 소스 상호 확증)
→ README 뱃지 3종(1.0.1) 및 marketplace.json(1.1.0)을 v1.2.0으로 상향 동기화
추가 판단: 현재 작업 자체를 v1.2.1로 기록
- 이번 작업(버전 정합성 + 포지셔닝 선언 + CONTRIBUTING + docs/ + Issue #3 응답)은
v1.2.0이후의 patch/minor 단위 개선이므로 CHANGELOG에 [1.2.1] - 2026-04-18 엔트리로 추가 - SemVer 판단: breaking change 없음 + 기능 추가(CONTRIBUTING, docs/)는 additive이나 사용자 스킬 API는 변경 없음 → patch로 판정
- 애매 시 minor가 기본이나, 이 저장소 사용자가 보는 "스킬 실행 표면"은 전혀 변경이 없으므로 patch 유지
3. 동기화 내역 (After)
| 파일 | Before | After | 변경 방식 |
|---|---|---|---|
README.md:6 |
version-1.0.1-brightgreen |
version-1.2.0-brightgreen |
Edit (뱃지 URL 문자열 교체) |
README_KO.md:6 |
version-1.0.1-brightgreen |
version-1.2.0-brightgreen |
Edit |
README_JA.md:6 |
version-1.0.1-brightgreen |
version-1.2.0-brightgreen |
Edit |
.claude-plugin/marketplace.json:14 |
"version": "1.1.0" |
"version": "1.2.0" |
Edit |
.claude-plugin/plugin.json:4 |
"version": "1.2.0" |
(변경 없음) | 이미 정답 버전 |
CHANGELOG.md |
최신 [1.2.0] |
[1.2.1] - 2026-04-18 섹션 추가 |
Edit (앞에 삽입) |
3.1 수정된 파일 목록 (5종)
M CHANGELOG.md
M README.md
M README_JA.md
M README_KO.md
M .claude-plugin/marketplace.json
3.2 신규 파일 (1종)
?? _workspace/release/audit-2026-04-18.md (이 감사 문서)
3.3 plugin.json은 건드리지 않음
이미 정답 버전(1.2.0)을 갖고 있으므로 무변경. 다음 버전(1.2.1) 릴리스 시점에 별도 bump 필요.
4. git tag 계획 (실행 승인 대기)
실행 금지 — 아래 명령은 메인 오케스트레이터의 명시적 승인 후에만 실행. 현재는 문서화만.
4.1 소급 태그 (3건)
| 태그 | 대상 커밋 | 커밋 날짜 | 근거 |
|---|---|---|---|
v1.0.0 |
dd0d0db |
2026-03-27 | "마켓플레이스 제출 준비: CHANGELOG 추가, description 영문 병기, 요구사항 정리" — CHANGELOG에 [1.0.0] 섹션이 처음 들어간 커밋 |
v1.0.1 |
22bdbff |
2026-03-29 | "README 뱃지 추가 및 plugin.json 버전 1.0.1 동기화" — plugin.json 1.0.0→1.0.1 실제 bump 커밋 |
v1.1.0 |
2d84863 |
2026-04-05 | "v1.1.0: Phase 0 현황 감사, CLAUDE.md 자동 동기화, 운영/유지보수 워크플로우 추가" — v1.1.0 최종 릴리스 커밋 (동일 날 선행 커밋 8604b11은 중간 단계) |
4.2 신규 태그 (1건)
| 태그 | 대상 커밋 | 근거 |
|---|---|---|
v1.2.0 |
3bfc442 |
현재 HEAD, "v1.2.0: CLAUDE.md 포인터 정책으로 간소화, 하이브리드 실행 모드 추가" |
4.3 실행 예정 명령 (승인 대기)
cd /Users/robin/IdeaProjects/harness
# 소급 태그 — annotated 태그만 사용 (lightweight 금지, 역할 정의 §6)
git tag -a v1.0.0 dd0d0db -m "v1.0.0: 초기 하네스 메타 스킬 공개
- 6 Phase 워크플로우 기반 하네스 구성
- 6가지 에이전트 아키텍처 패턴
- 에이전트 팀 / 서브 에이전트 실행 모드
- Progressive Disclosure 기반 스킬 생성 가이드"
git tag -a v1.0.1 22bdbff -m "v1.0.1: SKILL.md 중복 제거 및 plugin.json 버전 동기화
- SKILL.md ↔ references 간 중복 내용 제거 (330줄 → 285줄)
- Phase 2-1, 2-3, 3, 5-2 references 포인터 전환"
git tag -a v1.1.0 2d84863 -m "v1.1.0: Phase 0 현황 감사, CLAUDE.md 동기화, 하네스 진화 메커니즘
- Phase 0: 현황 감사 및 3분기 라우팅 (신규/확장/유지보수)
- Phase 5-4: CLAUDE.md 하네스 컨텍스트 등록
- Phase 7: 하네스 진화 메커니즘 (피드백→반영→변경 이력)
- 오케스트레이터 후속 작업 지원"
git tag -a v1.2.0 3bfc442 -m "v1.2.0: CLAUDE.md 포인터 정책, 하이브리드 실행 모드
- CLAUDE.md 등록 정책 간소화 (컨텍스트 → 포인터)
- Phase 2-1 하이브리드 실행 모드 (팀 + 서브 조합)
- Phase 5-0 하이브리드 오케스트레이터 패턴
- Phase 5-1 반환값 기반 데이터 전달 (서브 모드)"
# 확인
git tag -l --sort=-v:refname
git show v1.2.0 --stat | head -20
4.4 원격 push (이중 승인 대기)
# ⚠️ 위 로컬 태그 4건을 검증한 후, 메인 오케스트레이터의 2차 승인을 받은 뒤에만 실행
git push origin v1.0.0 v1.0.1 v1.1.0 v1.2.0
원칙: git push --tags (전체 push)는 사용하지 않음. 태그 4건을 명시적으로 개별 push하여 사고 방지.
5. GitHub Release 초안 (승인 대기)
실행 금지 — gh release create는 draft 포함 모두 승인 대기. 아래는 명령 텍스트만 제안.
5.1 v1.2.0 (현재 정답 버전)
cd /Users/robin/IdeaProjects/harness
gh release create v1.2.0 \
--title "v1.2.0 — CLAUDE.md 포인터 정책 & 하이브리드 실행 모드" \
--notes "$(cat <<'EOF'
> ⚠️ **Experimental**: Claude Code 플러그인 시스템은 현재 Experimental 단계입니다. 프로덕션 도입 시 pin-to-tag 전략을 권장합니다.
## Changed
- **CLAUDE.md 등록 정책 간소화 (중복 제거)** — Phase 5-4 "컨텍스트 등록"을 "포인터 등록"으로 전환. 에이전트 목록·스킬 목록·디렉토리 구조·실행 규칙 상세를 CLAUDE.md에서 제거하고 **트리거 규칙 + 변경 이력**만 남김
- **Phase 3/4 임시 동기화 단계 삭제** — CLAUDE.md 동기화 부담 축소
- **핵심 원칙 3번 재정의** — "컨텍스트 등록" → "포인터 등록"
## Added
- **Phase 2-1: 하이브리드 실행 모드** — 에이전트 팀 / 서브 에이전트 외 하이브리드 패턴 추가
- **Phase 2-1 실행 모드 비교표** — 팀/서브/하이브리드 3종 의사결정 순서
- **Phase 5-0 하이브리드 오케스트레이터 패턴**
- **Phase 5-1 반환값 기반 데이터 전달** (서브 에이전트 모드 전용)
## Migration
이전 버전(v1.1.0)에서 CLAUDE.md 섹션 "하네스 컨텍스트"가 비대해진 사용자는 `docs/migration-1.2.md` (준비 중)를 참고하여 포인터 블록으로 전환하세요.
## Full Changelog
[CHANGELOG.md §1.2.0](https://github.com/revfactory/harness/blob/main/CHANGELOG.md)
EOF
)" \
--draft
5.2 v1.0.0 / v1.0.1 / v1.1.0 (소급 릴리스)
태그 생성 후 CHANGELOG의 해당 섹션을 --notes 본문으로 추출. 본 감사에서는 명령 제안 생략 (v1.2.0 승인 후 2차 배치로 처리).
5.3 실행 승인 체크리스트
메인 오케스트레이터가 gh release create 실행을 승인하기 전 확인:
- 로컬 태그 4건이 정확한 SHA에 붙었는가 (
git show <tag>검증) git push origin v*완료 후 GitHub에서 태그가 확인되는가- 릴리스 노트 상단 Experimental 경고가 포함되었는가 (역할 정의 Step 6)
- content-creator가 배너 이미지를 릴리스에 첨부할 수 있는지 확인했는가
부록 A. 다음 감사 시점의 체크리스트
- 이번 감사 이후 새 커밋 수
- plugin.json 버전이 그 사이 변경되었는가
- CHANGELOG에 새 엔트리가 추가되었는가
- 태그된 마지막 버전과 plugin.json 사이 gap
- 3종 README 뱃지 동기화 상태
부록 B. 상위 문서 연결
- 전략 보고서 §3.2 P-04 "버전·릴리스 정합성" — 본 작업의 직접 트리거
- 전략 보고서 §4.7 "엔터프라이즈 결재 경로" — 태그드 릴리스 요구사항
- 리서치 보고서 §1.5 "저장소 정량 지표" — 릴리스 0건 상태 원인
- 리서치 보고서 §4.7 약점 4 "태그·버전 불일치" — 본 작업의 해결 대상