# task-2758 non-matching thin gate — merge-ready candidate packet (260617)

상태: `TASK2758_NON_MATCHING_THIN_GATE_SPLIT_PR_CANDIDATE_ACTIVE_FALSE` · ACTIVE=false · merge 별도 승인 전 금지

## 1. PR #239 (head e6660c5d, base main 8420a763)
- 정합성: 7파일 전부 신규(A) · 기존수정 0 · forbidden 0 · raw key net-new 0 · **automation_capability_matrix.json(live) PR 미포함**(migration 로직/테스트만)
- matching 함수 **0**(detect_allowlist_axis 등 전부 삭제) · detect_allowlist_axis 호출 0 · substring `in` 0 · normalize_path a/b strip 0
- 테스트: **117 PASS**(matching 테스트 30개 제거) · py_compile PASS

## 2. CI / Gemini (ANU inline 직접 전수, 배지 정밀 파싱)
- CI: **11/11 pass** · mergeState BLOCKED(unresolved 10)
- Gemini inline: **CRITICAL 0 / HIGH 0 / MEDIUM 10 / LOW 0**
- ★ 4회차만에 **HIGH 0 최초 달성** — matching 분리가 HIGH 근원 제거를 실증

## 3. MEDIUM 10 분류 (전부 방어적 입력검증/robustness — matching 축 아님, 보안 우회 아님)
| # | 위치 | 내용 | 축 |
|---|---|---|---|
| 1-3 | control_db_guard.py:43/51/65 | haystack 이미 lower인데 re.IGNORECASE redundant | style |
| 4 | control_db_guard.py:91 | actor non-string 시 `.strip()` AttributeError | type-safety |
| 5 | promotion_guard.py:41 | actor/to/frm non-string `.strip()` AttributeError | type-safety |
| 6 | correction_budget.py:142 | ledger 손상 시 json.JSONDecodeError 미처리 | robustness |
| 7 | correction_budget.py:229 | budget_remaining 누락 시 entry.budget 아닌 기본 budget 대체 | logic-minor |
| 8 | migrate_capability_matrix_v213.py:168 | matrix non-dict 시 m.get() AttributeError | type-safety |
| 9 | v2_13_gate.py:120 | _cost_rank 공백 포함 시 인덱스 실패→기본 LOW | robustness |
| 10 | v2_13_gate.py:370 | budget_remaining str 시 `<= 0` TypeError | type-safety |

→ 공통: input validation/예외 처리/스타일. **수렴하는 결함**(타입 가드·try-except·정규화 — matching처럼 무한 우회 표면 아님). Critical7 0 · credential 0 · 전부 expected_files 7파일 내부.

## 4. 회장 결정 요청 (merge 전)
- **(A) ★권고** MEDIUM 10 자동 수렴 1회 → fresh PR(same-PR post-Gemini push 금지)로 HIGH/MED 0 clean PR 만든 뒤 merge-ready 재확정. MED가 명확·좁음·수렴형이므로 1회로 닫힘
- **(B)** MEDIUM 10 non-blocking 수용 → 현 PR #239 merge-ready 확정, MED는 backlog(별도 hygiene). 회장 doctrine상 non-critical Gemini medium 자동수렴 대상이나 본 PR 계열 통제 중이라 보고
- **(C)** 보류

## 5. 판정
- **HIGH 0 충족** → merge-ready candidate 자격. 단 mergeState BLOCKED(MED 10 unresolved) → (A) 또는 (B) 결정 후 merge-ready 확정.
- merge 자체는 회장 별도 승인. admin override 0.

## 6. 안전
canonical 8420a763(drift 0) · flag OFF · cron 0 · merge 0 · admin override 0 · **ACTIVE=false** · matching 보류(task-2759 reserved 설계과제) · C(event strategy) 미착수.
