Skip to content

feat(smartlog): Phase 5 — PR merge readiness overlay · Refs #309 - #417

Merged
erishforG merged 1 commit into
release/1.0from
feat/auto-309-merge-readiness-phase1
Sep 2, 2026
Merged

feat(smartlog): Phase 5 — PR merge readiness overlay · Refs #309#417
erishforG merged 1 commit into
release/1.0from
feat/auto-309-merge-readiness-phase1

Conversation

@erishforG

Copy link
Copy Markdown
Owner

무엇

SmartlogPrOverlaymerge_ready: Option<bool> 필드를 추가해 GitHub의 병합 가능 여부를 smartlog 한 줄 뱃지에 표시한다.

변경 설명
merge_ready 필드 추가 SmartlogPrOverlayOption<bool>; skip_serializing_if=None으로 기존 JSON 호환 유지
fetch_overlay() 수정 PrStatus::mergeable (이미 API에서 가져오던 값)을 open PR에만 채워 전달
format_pr_badge() 수정 open PR에서 readiness 알 때만 뒤에 ⬆ ready (green) / ⚡ conflicts (red) 세그먼트 추가
7개 Phase 5 테스트 ready/conflict 뱃지, None 생략, merged/draft 미표시, serde round-trip
mk_overlay_with_readiness() 헬퍼 기존 mk_overlay() 확장 (merge_ready=None 기본값 유지)

뱃지 출력 예시:

[PR #42 ● open ✓ CI ✓ approved ⬆ ready]      # 머지 가능
[PR #42 ● open ✓ CI ✓ approved ⚡ conflicts]  # 충돌 있음
[PR #42 ● open ✓ CI ✓ approved]               # GitHub 아직 계산 중 (None)

왜 (이슈 참조)

Refs #309 — smartlog PR overlay merge readiness Phase 5.

PrStatus.mergeable은 이미 get_pr_status()가 GitHub API에서 가져오고 있었지만 SmartlogPrOverlay에 전달되지 않았음. worktree별 한 줄 뱃지를 보면서 충돌 여부를 즉시 파악하는 것이 #309의 핵심 value.

변경

  • src/cli/commands/smartlog.rs 1파일, +154줄
    • SmartlogPrOverlay::merge_ready 필드
    • fetch_overlay(): open PR일 때만 status.mergeable 복사
    • format_pr_badge(): Phase 5 세그먼트 추가 (open 상태일 때만)
    • mk_overlay_with_readiness() 헬퍼
    • Phase 5 테스트 7개

다음 Phase 힌트

리스크

low — 순수 additive 변경. merge_ready=None이 기본값이라 기존 동작 영향 0. GitHub API 호출 추가 없음 (이미 가져오는 값 활용). 뱃지 포맷 변경은 open PR에만, 뒤에 세그먼트 추가 방식.

롤백

git revert 4db2d93 — 즉시 이전 상태 복원.

Test plan

  • cargo test -- smartlog: 36 tests pass (기존 29 + Phase 5 신규 7)
  • cargo build --quiet + cargo clippy -D warnings + cargo fmt --check: all clean
  • 기존 CLI integration tests (smartlog_json_empty_is_array 등): 5개 전부 통과

@erishforG

Add `SmartlogPrOverlay::merge_ready: Option<bool>` that surfaces GitHub's
merge-ability verdict in the smartlog one-line badge.

Changes:
- `SmartlogPrOverlay`: new `merge_ready: Option<bool>` field
  (skip_serializing_if=None for backward-compat)
- `fetch_overlay()`: populate from `PrStatus::mergeable` (open PRs only)
- `format_pr_badge()`: append '⬆ ready' (green) / '⚡ conflicts' (red)
  for open PRs when readiness is known; no segment when None or non-open
- 7 Phase 5 unit tests: ready/conflict badge, None omit, merged/draft skip,
  serde round-trip (absent + present)
- `mk_overlay_with_readiness()` test helper for targeted badge tests

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@erishforG erishforG added the auto-improvement Daily auto-generated improvement PR/issue label Sep 1, 2026
@erishforG
erishforG merged commit e012c33 into release/1.0 Sep 2, 2026
12 checks passed
@erishforG
erishforG deleted the feat/auto-309-merge-readiness-phase1 branch September 2, 2026 00:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

auto-improvement Daily auto-generated improvement PR/issue

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant