# v2.13 gate matching 축 4회차 재발 — 별도 설계 리뷰 packet (260617)

상태: `PR238_R4_MATCHING_AXIS_4TH_RECURRENCE_PR_DISCARDED_DESIGN_REVIEW_REQUIRED_ACTIVE_FALSE` · ACTIVE=false · merge 금지

## 1. 회장 사전 지시 발동
회장 r4 승인 시: "r4 후 matching 축 HIGH/CRITICAL 재발 시 더 이상 미세수정/동일 PR 계열 수렴 승인 안 함, **PR 폐기 후 별도 설계 리뷰 전환**." → PR #238 matching 축 HIGH 2 재발로 조건 충족 → **PR #238 close, 동일 PR 계열(task-2757 r시리즈) 수렴 중단**.

## 2. matching 축 4회차 결함 연대기 (패턴 = 텍스트 매칭의 본질적 우회 표면)
| 회차 | PR | 결함 | 미세패치 |
|---|---|---|---|
| r1 | #235 | `fp in haystack` case-sensitive | → case-insensitive |
| r2 | #236 | substring `in` 매칭 false pos/neg | → touched_files + glob |
| r3 | #237 | normalize_path `a/`·`b/` over-strip = Goal Expansion Bypass (CRITICAL) ※ANU 명세 결함 | → diff헤더 전용 strip |
| r4 | #238 | op matching `_phrase_in_tokens` split(" ") → `--delete-branch=main`·`--delete-branch;` 구두점 결합 시 bypass | **중단** |

★ 공통 근본: **diff/tool_calls 텍스트를 ad-hoc 토큰/substring/phrase로 매칭**하는 접근이 매 회차 새 우회 표면(경계·접두사·구두점 결합)을 노출. 미세패치 = whack-a-mole.

## 3. 근본 원인 분석
forbidden op/path 판정을 **비정형 텍스트(diff 문자열·tool_calls 평탄화)에 대한 패턴 매칭**으로 수행 → 입력이 적대적으로 변형 가능(구두점 결합, prefix 위장, 경계 회피)할 때마다 우회. 텍스트 표면이 무한하므로 패턴 보강은 수렴하지 않음.

## 4. 설계 대안 (회장 결정 요청)
### (가) Gemini 제안 = lookaround 통합 regex (국소 수정)
- `_is_word_form_op`/`_phrase_in_tokens` 제거, 단일 regex: `(?<![\w-])` + escape(op) + `(?![\w-])`. 단어형·비단어형·구두점 결합 모두 경계 강제.
- 장점: 7파일 내부 1함수 교체, 즉시 적용. 단점: **여전히 텍스트 매칭** — 5회차 우회 표면 가능성(따옴표/인코딩/줄바꿈 등). 회장 "동일 PR 계열 수렴 중단" 취지와 충돌 가능.

### (나) ★ 구조 대안 = 구조화 입력 기반 판정 (설계 전환)
- op/path 판정을 **비정형 텍스트가 아니라 구조화된 입력**으로 받음: tool_calls를 평탄화 문자열이 아닌 **파싱된 args 배열**로, diff를 **git이 파싱한 file list(name-status)**로 받아 판정.
- forbidden op = 실제 실행될 argv 토큰에 대한 set 매칭(텍스트 추측 제거). forbidden path = git name-only 경로에 대한 glob.
- 장점: 적대적 텍스트 변형 표면 제거(근본). 단점: 호출부(detect_allowlist_axis 입력 계약) 변경 → 7파일 경계 넘을 수 있음(별도 승인 범위).

### (다) 범위 재정의
- matching을 thin gate의 **best-effort 신호**로 격하하고, 실제 강제는 기존 CI guard(taskctl-state-guard·hidden-path-audit 등 이미 PASS)에 위임. v2.13 gate는 분류/보고만.

## 5. 권고 & 결정 요청
- ANU 권고: matching 축이 4회 우회 표면을 노출한 = **텍스트 매칭 접근의 구조적 한계**. (가) 국소 regex는 5회차 위험이 남으므로, **(나) 구조화 입력** 또는 **(다) 범위 격하**가 근본. 단 (나)는 호출부 계약 변경(7파일 경계·별도 승인), (다)는 gate 책임 재정의.
- 회장 결정: (가)/(나)/(다) 중 택1 또는 **task-2757 matching 컴포넌트 보류**하고 나머지 thin gate(rollback floor·budget·promotion·control_db·migrate·schema, 이미 HIGH 0)만 별도 분리 merge 검토.
- ★ 동일 PR 계열(r5) 미세수정은 회장 명시 금지 — 이 packet 결정 전 신규 dispatch 0.

## 6. 안전 (현재)
PR #238 close · branch task/task-2757+3 보존(설계 참조) · canonical 8420a763(drift 0) · flag OFF · cron 0 · merge 0 · admin override 0 · **ACTIVE=false** · C(event strategy) 미착수.
