# PR #247 merge — STOP (base branch ruleset prohibits non-admin/non-auto merge) 2026-06-23

**상태명**: `PR247_MERGE_APPROVED_BUT_RULESET_BLOCKED_ADMIN_OR_AUTO_REQUIRED_STOP_ACTIVE_FALSE`
(회장 승인 상태 `PR247_MERGE_APPROVED_REMOTE_MAIN_ONLY_ACTIVE_FALSE` 하에서 merge 실행 시도 → ruleset 차단으로 STOP)

## 결과: merge 미실행 (STOP)
회장 merge 승인 수용 후 최종 pre-merge 게이트 11항목 **ALL_PASS** 확인했으나, 실제 merge 실행이 **base branch ruleset 으로 거부**됨. GitHub 메시지: *"Pull request #247 is not mergeable: the base branch policy prohibits the merge. … add the `--auto` flag … or `--admin` flag."*

## 최종 pre-merge 확인 (1회, ALL_PASS)
- PR #247 · head **6fc945b9** · base **main** · state **OPEN** · mergeable **MERGEABLE**
- diff files = **expected_files 8개 정확 일치**
- Gemini HIGH **unresolved=0** (resolved=2/2)
- CI **11/11 pass** · gemini-review-gate **PASS** · phase3-merge-gate **PASS**
- 6fc945b9 이후 새 commit 추가 **없음** · review_count 요구 0

## STOP 사유 (회장 중단조건/금지 직접 해당)
- merge 실행이 GitHub ruleset 으로 prohibit → **`--admin`(admin override) 또는 `--auto`(auto-merge queue) 필요**.
- 회장 중단조건: "admin override가 필요하면 STOP" → 해당.
- 회장 금지: "admin override 금지 · auto-merge 금지 · merge queue 진입 금지" → `--admin`/`--auto` 둘 다 금지.
- 결론: 일반(non-admin·non-auto) merge 경로가 막혀 **STOP**. admin override/auto-merge 강행 안 함.

## 원인 진단 (read-only, 1회)
- main branch ruleset:
  - `required_status_checks` **strict=True** (8개: ci/guard·guard·cancel-kill-switch·qc-check·hidden-path-audit·lock-in-check·merge-safety-check·gemini-review-gate) — 전부 6fc945b9 에서 pass.
  - `pull_request` rule: required_approving_review_count=**0** (review 불필요).
  - `deletion`/`non_fast_forward` rule.
- origin/main tip = **38ee05556c1f** == PR baseRefOid 38ee0555 (up-to-date). mergeStateStatus=**BLOCKED**.
- ★ strict=True + up-to-date + required checks pass 인데도 GitHub 가 일반 merge 를 prohibit → 이 repo 의 main merge 는 **admin override 또는 auto-merge 활성화로만** 가능한 ruleset 구조로 판단(회장이 반복적으로 "admin override 금지"를 강조해온 맥락과 일치).

## 불변식 유지 (전부 미실행/미착수)
- **merge 미실행** · admin override **0** · auto-merge **0** · merge queue 진입 **0**.
- origin/main **38ee0555 불변**(미advance) · canonical local HEAD **38ee0555 불변**.
- local dirty hygiene/local working tree reset·clean·pull **미착수** (fetch/ls-remote read-only 만 사용).
- matrix delta **미착수**(e03059be 불변) · Activation Readiness **미착수** · chair_injected/PreToolUse/S4/enforcement **미착수** · P0-B **FROZEN** · systemd/activation **무변경**.
- task-2771+1 scope-guard false-positive 축 보존: `.done` 미생성 · failure-envelope 유지 · 수동완료 금지.
- PR #247 외 다른 PR 처리 **0** · 추가 코드 수정/commit/push **0**.

## 회장 결정 필요 (택1)
1. **admin override 1회 승인**: `gh pr merge 247 --squash --admin` (회장이 이번 1회 admin override 명시 승인 시).
2. **auto-merge 승인**: `gh pr merge 247 --squash --auto` (조건 충족 시 GitHub 가 자동 merge — 현재 조건 충족이라 즉시 merge될 가능성).
3. **ruleset 일시 완화**: owner 가 main ruleset 의 해당 정책을 조정 후 일반 merge.
4. 보류: PR #247 OPEN 유지.

★ ANU 는 위 1~3 중 어느 것도 회장 명시 추가 승인 없이 실행하지 않음. 현재는 STOP.

---

## 후속: native auto-merge 1회 승인 시도 → repo 설정으로 거부 STOP (2026-06-23)
**상태명**: `PR247_NATIVE_AUTOMERGE_ONE_SHOT_APPROVED_BUT_REPO_AUTOMERGE_DISABLED_STOP_ACTIVE_FALSE`

회장 판정 2번 = "PR #247 한해 GitHub native auto-merge 1회 승인"(`--squash --auto` 1회·admin override 아님·ruleset 변경 아님·운용 확대 아님).
- 실행 전 게이트 1회 재확인 **PASS**(head 6fc945b9·OPEN·MERGEABLE·diff 8개·HIGH unresolved 0·CI 11/11·gemini/phase3 PASS).
- 실행: `gh pr merge 247 --squash --auto` → **거부**: *"Auto merge is not allowed for this repository (enablePullRequestAutoMerge)"*.
- 원인(read-only): repo 설정 **`allow_auto_merge=false`** (allow_squash=true·allow_merge_commit=true). auto-merge 기능 자체가 repo 레벨에서 비활성 → `--auto` 등록 불가.
- auto-merge 쓰려면 repo 전역 `allow_auto_merge=true` 토글 필요 = **회장이 "일반 자동머지 운용 확대 아님"으로 명시 배제한 repo 설정 변경** → ANU 미실행 **STOP**.
- 결과: merge **미실행** · auto-merge **미등록(pending 아님)** · admin override 0 · ruleset 변경 0 · repo 설정 변경 0.
- origin/main **38ee0555 미advance** · canonical 38ee0555 불변 · matrix e03059be 불변 · local dirty/sync 미착수 · Activation 미착수 · P0-B FROZEN · scope-guard false-positive 축 보존.

### 회장 결정 필요 (택1) — ANU 추가 승인 없이 미실행
1. **repo `allow_auto_merge=true` 임시 토글 승인**(1회용: 토글 ON → `--squash --auto` → merge 후 OFF 복구) — repo 설정 변경 명시 승인 시.
2. **admin override 1회 승인**(`--squash --admin`) — 회장이 이전에 거부했으나 비-설정변경 단일 경로.
3. **회장 직접 GitHub UI 에서 merge**.
4. 보류(PR #247 OPEN 유지).

---

## 후속2: OWNER-approved admin squash merge 1회 → conversation resolution ruleset 으로 또 STOP (2026-06-23)
**상태명**: `PR247_ADMIN_MERGE_BLOCKED_BY_CONVERSATION_RESOLUTION_MEDIUM_THREAD_STOP_ACTIVE_FALSE`

회장 판정: repo 임시토글/보류 기각, **PR #247 한해 OWNER-approved admin squash merge 1회 승인**(`gh pr merge 247 --squash --admin`·체크 무시 override 아님·이미 통과한 체크 기반 repo 정책상 막힌 merge 실행만 OWNER 1회 예외·일반 admin override 운용 확대 아님).
- 최종 pre-admin-merge 게이트 1회 **PASS**(head 6fc945b9·마지막 commit==6fc945b9 이후 추가 0·OPEN·MERGEABLE·diff 8개·HIGH unresolved 0·CI 11/11).
- 실행: `gh pr merge 247 --squash --admin` → **거부**: *"Repository rule violations found — A conversation must be resolved before this pull request can be merged."*
- 원인(1회 진단): main ruleset 에 **required conversation resolution** 존재. PR #247 전체 thread 4개 중 **unresolved=1** = **medium / `teams/content/qc/qc_verify.py:78` / gemini-code-assist** "regex 가 trailing comment 미고려"(=**medium-3**). 이 medium-3 은 코드(`_parse_allowed_paths` trailing comment 처리·따옴표 우선 추출)로 **이미 해소**됐고 packet 에서 medium evidence 수용됨 — thread 상태만 미갱신(stale unresolved).
- ★회장은 **HIGH 2개만** evidence-based resolve 명시 승인 → 이 medium thread 는 ANU **임의 resolve 안 함** STOP. admin merge 도 conversation resolution 으로 미실행.
- 불변식: merge 미실행·PR #247 OPEN·origin/main 38ee0555 미advance·canonical 불변·admin override 사용 1회 시도(거부됨, merge 0)·repo 설정 변경 0·ruleset 변경 0·matrix/Activation 미착수·P0-B FROZEN·scope-guard false-positive 축 보존·수동 .done 0.

### 회장 결정 필요 (택1) — ANU 추가 승인 없이 미실행
1. **medium thread(content qc:78, medium-3) evidence-based resolve 승인** → 그 후 `--squash --admin` 1회 재실행(이 medium 은 코드 해소·packet 수용됨, HIGH 와 동일 논리). **권장**.
2. 회장 직접 GitHub UI 에서 thread resolve + merge.
3. 보류.

---

## 후속3: medium-3 resolve + admin merge 재시도 → medium-4(outdated/unresolved) 잔존으로 또 STOP (2026-06-23)
**상태명**: `PR247_ADMIN_MERGE_BLOCKED_MEDIUM4_OUTDATED_UNRESOLVED_STOP_ACTIVE_FALSE`

회장 판정: medium-3 evidence-based resolve 후 admin squash merge 1회 재시도 승인(코드 수정/push 없음·stale unresolved thread 정리·중단조건 "medium-3 외 unresolved thread 발견되면 STOP").
- medium-3 thread(content qc:78, PRRT_…Le6ij) evidence reply(3458491636) + resolve → **resolved=true**.
- 최종 pre-merge gate 1회: ANU 가 "전체 unresolved=0" 으로 PASS 판정 → `gh pr merge 247 --squash --admin` 재시도 → **또 거부**: *"A conversation must be resolved …"*.
- ★**ANU 판정 오류 발견**: thread 4번째 `…Le6im` 가 **isOutdated=True / isResolved=False**. ANU 가 "unresolved = not resolved AND **not outdated**" 로 필터해 이 thread 를 제외 → 오판. **GitHub conversation resolution merge gate 는 `isResolved=False` 기준(outdated 무관)** 으로 막는다(실증). 정정: pre-merge "unresolved" 판정은 `isResolved==false` 전수(outdated 포함).
- 4번째 thread 정체: **medium-4** — content qc origLine 152, gemini-code-assist "`fp.read_text()` unhandled exception(IsADirectoryError/PermissionError) → try-except + directory 처리". **코드 이미 해소**(head 6fc945b9 에 `if fp.is_dir(): FAIL` + `try/except read_text`), `test_medium4_directory_not_crash` 회귀 PASS, packet 에서 medium 2개 evidence 수용됨. thread 는 outdated=True(코드 변경으로 GitHub 자동 outdated)지만 resolved=False.
- 회장 중단조건 "medium-3 외 unresolved thread 발견되면 STOP" 직접 해당 → **STOP**. ANU medium-4 임의 resolve 안 함.
- 불변식: merge 미실행·PR OPEN·origin/main 38ee0555 미advance·canonical 불변·admin override 시도(거부, merge 0)·repo/ruleset 변경 0·matrix/Activation 미착수·P0-B FROZEN·scope-guard false-positive 축 보존·수동 .done 0·코드 수정/push 0.

### 회장 결정 필요 (택1) — ANU 추가 승인 없이 미실행
1. **medium-4 thread(content qc origLine 152) evidence-based resolve 승인** → 그 후 `--squash --admin` 1회 재실행. medium-4 는 코드 해소+회귀 PASS+packet 수용+thread outdated 라 HIGH/medium-3 와 동일(오히려 더 명백한 stale) 논리. **권장**(이게 마지막 unresolved thread — resolve 시 conversation resolution 충족 예상).
2. 회장 직접 GitHub UI 에서 medium-4 resolve + merge.
3. 보류.
