# task-2611+2 — C7_OWNER_PAT vs C7_CREDENTIAL precedence 정합 (AUTO_REMEDIATION·SAFE)

- **분류**: AUTO_REMEDIATION_HOLD 자동 수렴 (SAFE·non-Critical·회장 강화원칙 2). 회장 확인 대기 0.
- **Executor**: dev2-team 오딘 (key fedf78d1d09509f5) 1회 한정.
- **spec sha256**: `2f15e50d…e4738` 일치 확인.
- **proof 정본**: Track B task-2618 precedence-proof-packet.json · fix-and-regression-candidates.json (read-only consume).

## 1. 잔여 HIGH 와 Track B 결론

`config/critical7_rules.yaml` C7_CREDENTIAL keyword `access token` 의 substring 매치가
rule 순서상 C7_OWNER_PAT(idx6)보다 먼저 평가되어, `owner personal access token` /
`owner access token` 이 owner_pat 대신 **credential** family 로 라벨됨 (label mismatch).

Track B proof 확정:
- detection coverage 약화 = **DISPROVEN (SAFE)** — 전 케이스 CHAIR_HOLD·is_critical7 불변.
- escalation route 영향 = **DISPROVEN** — route 불변(CHAIR_HOLD).
- 기록 `critical7_priority_unchanged` 변형 = PROVEN(부분) — rule 순서 속성만.

→ 운영 안전성(Critical7 탐지·escalation) 무영향, label 정밀도/기록 일관성만 영향
→ §6 HOLD 조건(신규 Critical7·shared invariant 파손·coverage/route 실제 약화) 미해당
→ **SAFE non-Critical → AUTO_REMEDIATION 자동 수렴**.

## 2. 적용한 fix (Track B FIX-B owner-scoped 제안 정합)

`config/critical7_rules.yaml` 에 **owner-scoped 신규 rule `C7_OWNER_PAT_PRIORITY`
(family=owner_pat)** 를 C7_CREDENTIAL 앞에 추가 (additive only):

- keywords: `owner personal access token`, `owner access token`
- regex: `(?i)\bowner\b[\w \-]{0,20}\baccess[ _-]?tokens?\b`

**blanket reorder 를 택하지 않은 이유**: 기존 C7_OWNER_PAT 전체를 앞으로 옮기면
그 broad regex `\bpersonal[ _-]?access[ _-]?tokens?\b` 가 owner 접두 없는 bare
`personal access token` 까지 owner_pat 으로 광역화 → selftest `f-pat-words`
(expected credential) FAIL = **REG-2(HIGH)/REG-6(MEDIUM) 회귀**. 이를 §5 term
약화 없이 막는 유일한 SAFE 경로가 owner-접두 필수 신규 rule 의 선행 평가다.
classifier.py 는 first-match-wins 이므로 yaml rule 추가만으로 충족 — **classifier.py
미수정**(sha 불변).

## 3. 검증 결과

| 입력 | pre-fix | post-fix | 판정 |
|---|---|---|---|
| `owner personal access token` (p1) | C7_CREDENTIAL/credential | C7_OWNER_PAT_PRIORITY/owner_pat | FIXED |
| `owner access token` (p2) | C7_CREDENTIAL/credential | C7_OWNER_PAT_PRIORITY/owner_pat | FIXED (REG-5 해소) |
| `personal access token` (owner 무접두, p5) | credential | credential | PRESERVED (REG-2/6) |
| `used OWNER PAT` (p3) | owner_pat | owner_pat | preserved (REG-1) |
| `ghp_…` token (f-cred) | credential | credential | preserved (REG-3) |

(가독성을 위한 표가 응답 형식에서 금지되어 본 보고서 파일 내에만 포함)

- builtin selftest: **17/17 PASS** (f-pat-words→credential, f-pat→owner_pat 무회귀).
- codex_high selftest: **PASS** (REG-4 — batch_verdict=CHAIR_HOLD 불변).
- weakening guard: **PASS** — 7 family 전원 present (REG-7).
- regression: `tests/regression/test_critical7_classifier.py` 10/10 + dependent
  `test_anu_codex_bounded_loop_2592.py` 44/44 = **54/54 PASS** (무회귀).
- 8/8 probe: **CHAIR_HOLD·is_critical7=true 불변** (REG-8 — coverage 무약화·route 불변).

## 4. 불변식

- git HEAD `20456b5f…b41bfb` 전후 EQUAL · branch 불변 · **commits 0** (ANU Layer-A no-git).
- critical7_rules.yaml: `80bdf24…` → `c931d2b…` (additive 강화·기존 term 삭제 0).
- critical7_classifier.py / codex_high_classifier.py sha **UNCHANGED**(미수정).
- 7 family 구조·약화가드·detection coverage·escalation route 무약화(SAFE 방향만).
- Track A(2617)/B(2618)/C(2619)·codex_high_classification_rules.yaml·task-2553/2604
  multitrack·task-2610~2619 산출물 **byte-0**(자기 deliverable 한정). Track A/C scope 미혼합.
- self callback/collector/adjudication/dispatch **0** · premature write-back **0**.

## 5. 후속 (authoritative = 독립 ANU only)

normal completion callback 을 **독립 ANU key `c119085addb0f8b7`** 로만 발사 →
독립 ANU collector 회수·Codex 재audit·adjudication. adjudication 완료 즉시
본 task ANU fallback safety-net cron 을 cancel-on-success 제거(노이즈 0).
Codex 재audit HIGH/CRITICAL 0 일 때만 +53 durable-success write-back.
executor self key `fedf78d1d09509f5` callback/collector/adjudication/dispatch 절대 금지(+49 코드 정본).
본 result/report 는 executor self-chain·**NON-AUTHORITATIVE**.

## 6. HOLD_FOR_CHAIR 여부

신규 Critical7 0 · shared invariant 파손 0 · detection coverage 약화 0 ·
escalation route 변경 0 → §6 HOLD 조건 미해당 → **AUTO_REMEDIATION 자동 수렴 (적용 완료)**.
