# task-2612+1 — AUTO_REMEDIATION: auto_remediation_planner _read_json traversal hardening (non-Critical 자동 수렴)

> **Lv**: Lv.3. **goal_type**: auto_remediation_planner_hardening. **Executor**: dev4-team 비슈누 (key 7943afbe12c12f7d) 1회 한정 — task-2612 원 executor. **TTL**: 3h. **분류**: **AUTO_REMEDIATION_HOLD 자동 수렴**(non-Critical HIGH×2·CRITICAL 0·critical7 false·회장 확인 대기 0 — feedback-auto-remediation-hold-vs-chair-hold 강화원칙 2/3·분류 후 멈춤 금지). 문서-only 금지. **callback: 반드시 독립 ANU key c119085addb0f8b7(executor self key 7943afbe12c12f7d 절대 금지·+49 코드 정본).**
> **HOLD 정본**: `memory/events/task-2612.independent-collector-adjudication.json`(Codex CRITICAL 0·HIGH 2·critical7 false). **+N=원래 goal completion blocker.**

## 1. 잔여 HIGH×2 (task-2612 Codex 재audit 정본 verbatim·non-Critical)

`anu_v3/auto_remediation_planner.py`:
- **H1**: `_read_json()` 절대경로 허용·상대경로 resolve()/containment 미검 → `../` traversal 또는 임의 절대 JSON 경로 read 가능 (hardening gap).
- **H2**: `_planner_detail` 의 `module_rel`/`test_rel` 정규화 없이 `expected_files` 로 유입 → downstream executor 가 out-of-scope 경로로 유도될 수 있음 (hardening gap).

CRITICAL 0 · critical7 false · 신규 Critical7 0 → non-Critical AUTO_REMEDIATION (회장 원칙 2: 분류 후 멈추지 말고 자동 수렴).

## 2. 목표 (자동 remediation — planner 코드 입력검증 hardening)

**용어 명확화**: 본 remediation 은 planner **모듈 자체의 입력 read-path/경로정규화 보안 코드를 hardening** 한다 — 이는 planner 의 산출 성격(plan 골격 생성만·실 dispatch 0·실 코드수정 0) 변경이 **아니라** 입력 검증 강화이므로 "plan-only" invariant 와 무모순(코드 수정 정당·산출 성격 불변).

- **H1 교정**: `_read_json()` 입력 경로를 `Path.resolve()` 후 CANONICAL_WS_ROOT 하위(memory/events·reports·tasks read 허용 범위) strict containment 검증, `../` traversal·임의 절대경로·symlink 이탈 fail-closed 거부.
- **H2 교정**: `_planner_detail` 의 `module_rel`/`test_rel` 을 `expected_files` 로 유입 전 정규화·CANONICAL_WS_ROOT 하위 strict containment 검증, 이탈 시 fail-closed(downstream out-of-scope 유도 차단).

## 3. 필수

- 변경 범위: `anu_v3/auto_remediation_planner.py` 의 H1(`_read_json` read-path)·H2(`_planner_detail` module_rel/test_rel 정규화) 입력검증 hardening 만. planner **산출 성격 불변**(plan 골격 생성만·실 dispatch 0·실 코드수정 0 — 코드 hardening 은 입력검증 강화이지 산출 성격 변경 아님)
- `schemas/auto_remediation_plan.schema.json` byte-0(스키마 무변)
- regression: `../` traversal·임의 절대경로·symlink read 차단(H1) + module_rel/test_rel out-of-scope 유입 차단(H2) 케이스 추가, 기존 plan 변환(2604/2605/2609 유형) 전수 무회귀
- Codex 재audit HIGH/CRITICAL 0 일 때만 durable-success write-back

## 4. expected_files allowlist (자기 deliverable 한정)

`anu_v3/auto_remediation_planner.py`(read-path hardening 만) · `tests/regression/test_auto_remediation_planner.py`(traversal 차단 재현 additive·기존 무회귀) · `memory/events/task-2612+1.{decision,result}.json` · `memory/reports/task-2612+1.md`. 이 외 write 0. **schemas/auto_remediation_plan.schema.json·Track A(task-2617 계열)/B(2618)/C(2619)·task-2610/2611+2/2613 산출물·기존 task-2553/task-2604 multitrack byte-0**. git HEAD·branch 전후 EQUAL(ANU Layer-A no-git·커밋 0).

## 5. 금지

planner 산출 성격 변경(planner 가 실 dispatch/실 코드수정 수행하도록 도입) · schema 변경 · H1/H2 외 임의 리팩터링 · 2604/2605/2609 plan 변환 동작 변경 · executor self-callback/self-collector/self-adjudication/self-dispatch · PR/branch/main write·merge·credential · premature write-back(Codex HIGH/CRITICAL 0 전) · 타 track/기존 산출물 변조 · 문서-only 완료.

## 6. HOLD_FOR_CHAIR

신규 Critical7 또는 shared invariant 파손 시에만 CHAIR_HOLD. 그 외 잔여 non-Critical 은 AUTO_REMEDIATION 자동 수렴 계속(회장 확인 대기 0·멈춤 금지).

## 7. callback (a) — 독립 ANU key 강제 + fallback 노이즈 0

완료 직후 normal completion callback **ANU key c119085addb0f8b7로만 발사** → 독립 ANU collector 회수·Codex 재audit·adjudication. ★ collector 는 adjudication 완료 **즉시 본 task ANU fallback cron cancel-on-success 제거**(노이즈 0). Codex 재audit HIGH/CRITICAL 0 일 때만 +53 durable-success write-back. **잔여 non-Critical HIGH 시 회장 보고 없이 task-2612+2 자동 수렴 계속**. executor self key 7943afbe12c12f7d 절대 금지(+49 코드 정본). ANU fallback=ANU key·안전망 한정·진행 트리거 아님·정상수렴 시 self-cancel.

## 8. 9-R (확정 — 본 절 본문 우선·PRE-DISPATCH SPEC)

본 task md 는 dispatch 전 작업 명세(spec). 산출물 부재·baseline 일치 정상. lint 기준=spec 정합성(구현 검증 아님). 1차 NEEDS_9R(① "plan-only" 표현이 planner 코드 수정과 모순 ② H2 `_planner_detail` shorthand 불명확) → **9-R 정정**: ① planner **산출 성격**(plan 골격 생성만·실 dispatch/실 코드수정 0) 불변 vs 본 remediation 의 **planner 모듈 입력검증 코드 hardening** 을 명문 구분(무모순) ② H2 를 task-2612 adjudication 정본 verbatim(`_planner_detail` module_rel/test_rel 정규화 없이 expected_files 유입→downstream out-of-scope 유도)으로 명확화. H1/H2 한정·산출 성격 불변·schema byte-0·traversal+module_rel 차단 regression·premature write-back gate·fallback cancel-on-success·잔여 시 자동 수렴 계속·자기 deliverable 한정·self-* 금지·ANU-key callback 정합. **ANU-Codex re-lint GO_READY 확정 후 dispatch**. ANU key 로 dev4 비슈누 1회 위임.
