# task-2618 — Track B: C7_OWNER_PAT vs C7_CREDENTIAL precedence PROOF PACKET

> 회장 결정 2026-05-19 Track B · read-only proof only · 실제 수정 별도 회장 승인
> Executor: dev3-team 다그다 (key 0b94683120a691cf, 1회) · spec sha256 일치 (`2698f1dc…523bd`)
> ts: 2026-05-19 14:01 KST · **결론: HOLD_FOR_CHAIR · auto-apply 0**

## 1. 한 줄 요약

`C7_CREDENTIAL` 의 광의 keyword `access token` 이 first-match 평가에서 `C7_OWNER_PAT`
보다 먼저 매치되어, owner-PAT 표현 일부가 `owner_pat` 대신 `credential` family 로
**라벨**된다. **escalation route 는 불변(둘 다 CHAIR_HOLD), 탐지 coverage 약화 없음
(SAFE-direction).** 단 어떤 precedence 수정안도 기록된 frozen invariant
`critical7_priority_unchanged` 를 건드리므로 회장 §6 에 따라 **자동 적용 절대 0,
HOLD_FOR_CHAIR**.

## 2. Q1 — 현 동작 (코드 위치 · 실데이터)

- 매칭 엔진: `anu_v3/critical7_classifier.py:231-248` — `for rule in self.rules: if hits: return` = **first-match-wins**, `self.rules` 는 yaml 선언 순서 그대로(`:89`).
- yaml rule 순서: `C7_SECURITY, C7_CREDENTIAL(idx1), … , C7_OWNER_PAT(idx6)`.
- 충돌 term: `config/critical7_rules.yaml:73` `C7_CREDENTIAL` keyword `access token` (substring 매치, `:178`). → `owner personal access token` 의 부분문자열 `access token` 이 idx1 에서 먼저 return → idx6 `C7_OWNER_PAT` 도달 불가.
- 실 classifier 8 probe 재현:
  - `p1 "owner personal access token"` → **C7_CREDENTIAL / credential** (mismatch)
  - `p2 "owner access token"` → **C7_CREDENTIAL / credential** (mismatch)
  - `p3 "used OWNER PAT"` → C7_OWNER_PAT / owner_pat (pinned selftest f-pat 계약 보존)
  - `p5 "personal access token"`(owner 無) → credential (정합)
  - `p6/p8 owner pat/owner token` → owner_pat (정상)

## 3. Q2 — precedence 변경이 frozen invariant 를 약화시키는가

| 항목 | 판정 | 근거 |
|---|---|---|
| 탐지 coverage 약화 | **DISPROVEN** | 가상 reorder(R1, `/tmp` 사본·실 yaml 무변조) 후 8/8 probe `verdict=CHAIR_HOLD`·`is_critical7=true` 불변, Critical7 escape 0, weakening guard(7 family presence) 무손상 |
| 기록 frozen invariant `critical7_priority_unchanged` | **PROVEN(부분)** | 어떤 rule 재배열도 `task-2611+1.result.json#invariants.critical7_priority_unchanged: true` 를 false 로 변형 = 기록된 frozen 속성 변경. task-2611+1 adjudication caution 과 일치 |

종합: 탐지력은 약화 아님(SAFE) ↔ 기록 frozen invariant(rule 순서) 변형에는 해당.
회장 §6 의 "약화 가능 판명" 범주 → **자동 적용 0, HOLD_FOR_CHAIR.**

## 4. Q3 — family label mismatch 가 escalation route 를 바꾸는가

**DISPROVEN.** route 결정처:
`critical7_classifier.py:189-248`(invariant/severity/매치여부) 및
`codex_high_classifier.py:183-189`(`if c7.verdict==CHAIR_HOLD: route=CHAIR_HOLD`)
모두 **verdict 로만 라우팅, family 무관**. credential 라벨군·owner_pat 라벨군
8/8 전부 동일 `CHAIR_HOLD`. `CHAIR_HOLD ↔ AUTO_REMEDIATION_HOLD` 분기 0건.
영향 범위는 telemetry `critical7_rules_hit` rule id 와 다운스트림 remediation
owner/playbook 라벨 정밀도뿐 — escalation route 자체는 불변. 은폐 incident 0.

## 5. 수정 후보 (제안만 · 적용 0)

- **FIX-A** rule reorder(C7_OWNER_PAT → C7_CREDENTIAL 앞): p1 교정, 최소 변경. 단 priority invariant 변형 + p5 over-label side-effect + p2 잔존.
- **FIX-B** C7_OWNER_PAT 강화 regex 추가(§5 강화 허용) + reorder: p1·p2 완전 교정. priority invariant 변형 동반.
- **FIX-C** classifier.py owner_pat 우선 훅(yaml 순서 byte 불변): 단 python 수정=본 task 금지 범위, 의미상 우선순위는 여전히 변동.
- **FIX-D** C7_CREDENTIAL negative-lookahead: rule 순서 불변이나 'access token' term 약화 위험(§5 충돌) — 비권장.

전 후보 `requires_chair=true`. SAFE 보존 관점 FIX-B 우월하나 모두 회장 승인 필수.

## 6. regression 후보 (제안만)

핵심: **REG-2** selftest `f-pat-words "leaked personal access token" → expected
credential` 가 reorder 류 FIX 에서 owner_pat 로 깨질 수 있음(selftest FAIL 위험,
HIGH). **REG-6** p5 over-label 정밀도 역회귀(MEDIUM). REG-1(f-pat owner_pat
앵커)·REG-3(f-cred)·REG-7(weakening guard)·REG-8(escalation route 불변)·
REG-9(priority invariant 기록 갱신) 동반 검증 필요. 전체 9종은
`task-2618.fix-and-regression-candidates.json` 참조.

## 7. 불변식 / 컴플라이언스

- git HEAD pre==post `20456b5f…41bfb`, commits 0, branch 불변.
- 실 `critical7_rules.yaml`/`critical7_classifier.py`/`codex_high_classifier.py`
  sha256 = task-2611+1 기록값과 **EQUAL (무변조)**. reorder 는 `/tmp` 사본+`--rules` override 로만.
- Track A(2617)/task-2553·2604·2610~2617 산출물 byte-0. Track C(2619) write 0.
- 자동 remediation dispatch 0 · executor self-callback/collector/adjudication/dispatch 0.
- 신규 Critical7 0 · shared invariant breach 0 · doc-only 아님(proof json+fixture 실행기반).
- **+53/+54/+55/Track E·durable-success write-back BLOCKED (자동 진행 0).**

## 8. 권한·authoritative

본 산출물은 executor self-chain = **NON-AUTHORITATIVE**. authoritative
검증/Codex 재audit/adjudication = 독립 ANU collector(key `c119085addb0f8b7`)
전담. 실제 precedence 수정은 본 proof 보고 후 **회장 별도 승인**. normal
completion callback 은 독립 ANU key 로만 발사(executor self key
`0b94683120a691cf` callback/collector/adjudication/dispatch = 0, +49 코드 정본).
