# task-2616 — ANU v3 CLI OUTPUT-PATH GUARD: 전수 read-only scan + 실행기반 remediation 설계안 (회장 승인·SCAN/DESIGN ONLY)

> **Lv**: Lv.4. **goal_type**: cli_output_path_guard_scan_and_design. **Executor**: dev1-team 헤르메스 (key c38fb9955616e24d) 1회 한정 — task-2610 batch_hold_adjudicator 원 executor(CLI 패턴 직접 인지). **TTL**: 3h. **상태**: 회장 결정 2026-05-19 — **read-only 전수 scan + 실행기반 설계안까지만 승인**. 실제 코드수정/dispatch/remediation 적용 0(별도 승인). 문서-only 금지. **callback: 반드시 독립 ANU key c119085addb0f8b7(executor self key c38fb9955616e24d 절대 금지·+49 코드 정본).**
> **배경**: task-2610(_main --output)·task-2613+1(main --out) 동일 클래스 Critical7(무검증 arbitrary fs write) 연속 적발 = 시스템 패턴. proof packet `memory/events/task-2613+1.critical7-proof-packet_260519.json` · safetynet adjudication `memory/events/task-2610.independent-anu-safetynet-adjudication_260519T1306.json`. **+N 아님 — 독립 task.**

## 1. 목표 (회장 verbatim)

ANU v3 CLI entrypoint 전수 read-only scan 및 공통 guard 실행기반 remediation 설계안 작성. 실제 remediation은 아직 승인하지 않는다 — scan 결과·bounded scope 보고 후 별도 승인.

## 2. scan 범위 (회장 verbatim)

- `anu_v3` 전체
- argparse/click/typer 등 CLI entrypoint
- `--out` / `--output` / `output_file` / `report_path` 등 파일 출력 인자
- `Path(...).write_text/write_bytes/open/json.dump` 등 파일 write sink
- stdout-only 안전 경로와 파일 write 경로 구분
- task-2610·task-2612·task-2613·task-2615 포함 여부 명시
- critical7_classifier 계열 포함 여부 명시

## 3. 산출물 (회장 verbatim — md 단독 금지·실행 산출물)

`scripts/scan_anu_v3_cli_output_sinks_2616.py`(read-only scan 실 entrypoint) · `memory/events/task-2616.scan-result.json` · `memory/fixtures/task-2616.detected-pattern.json`(검출 패턴 fixture) · `memory/events/task-2616.regression-candidates.json`(재현 가능 regression 후보 목록) · `memory/events/task-2616.remediation-scope-proposal.json`(remediation scope proposal) · `memory/reports/task-2616.remediation-design.md`(설계안·단 md 단독 완료 금지·상기 json/script 가 정본) · `memory/events/task-2616.{decision,result}.json`. 이 외 write 0. scan 대상 코드 **read-only·byte-0·수정 0**.

## 4. 공통 guard 설계 필수 (회장 verbatim — 설계안에 반영, 본 task 는 설계만·구현 0)

- 공통 guard = **import-only 순수 Python 모듈**. guard 자체에 argparse/main/CLI 절대 금지(자기참조 결함 회피)
- output path policy yaml/json: CANONICAL_WS_ROOT(/home/jay/workspace) 기준 허용 root · memory/events·memory/reports 등 허용 경로 명시 · task-id prefix 제한
- absolute path · `../` traversal · symlink · hardlink · workspace 이탈 · overwrite 위험 = **fail-closed**
- **`Path.resolve()` strict prefix 만으로 충분하다고 가정 금지** — symlink/TOCTOU 위험 방어 설계 포함(검증·write atomic 경계, O_NOFOLLOW 급 명세)
- 기본 출력 stdout 유지 · 파일 출력은 guard 통과 시에만 허용

## 5. scan 후 보고 항목 (회장 verbatim — 실제 remediation 미승인)

검출 모듈/라인/인자명/write sink · Critical7 여부 · 공통 guard 적용 대상 · 각 모듈별 expected_files/allowed artifact path · 수정 예상 파일 목록 · 회귀 테스트 목록 · 기존 2610/2613+1 remediation 과 충돌 여부 · task-2611+1 label precedence 와 scope 혼합 여부.

## 6. 금지 (회장 verbatim)

실제 코드 수정 · remediation 적용 · 추가 dispatch · scan 대상 코드 write/변조 · 공통 guard 구현(설계만) · task-2611+1 label precedence scope 혼합(별도 트랙 유지) · +53/+54/+55/Track E 트리거 · Critical7 전건 durable-success write-back · PR/branch/main write·merge·credential · executor self-callback/self-collector/self-adjudication/self-dispatch · 문서-only 완료(scan script+json+fixture 필수) · 기존 task-2553/task-2604 multitrack/task-2610~2615 산출물 byte-0 위반.

## 7. task-2611+1 label precedence (회장 verbatim — 별도 트랙)

`C7_OWNER_PAT vs C7_CREDENTIAL` precedence 는 단순 라벨 문제 아님 — Critical7 governance 영향. 본 task 와 scope 혼합 금지. proof packet 먼저 제출하고 frozen invariant 및 Critical7 우선순위 약화 없음 입증 전 자동 적용 금지(별도 트랙).

## 8. HOLD_FOR_CHAIR / 동결 (회장 verbatim)

shared invariant 파손 또는 Critical7(신규) = 전체 CHAIR_HOLD. 동결 유지: +53/+54/+55/Track E 금지 · Critical7 전건 write-back 금지 · 추가 dispatch/write/수정 금지. 본 단계는 read-only scan + 실행기반 설계 산출물까지만. 완료 판정 = py/yaml/json/schema/test/fixture/runtime guard 기준(md 단독 금지).

## 9. callback (a) — 독립 ANU key 강제

완료 직후 normal completion callback **ANU key c119085addb0f8b7로만 발사** → 독립 ANU collector 회수·검증·Codex·adjudication. executor self key c38fb9955616e24d callback/collector/adjudication/dispatch 절대 금지(+49 코드 정본·위반 시 CallbackRegistrationBlocked/SELF_COLLECTOR_FORBIDDEN). 본 task = scan/설계 산출만 — 신규 Critical7 발견 시 CHAIR_HOLD. 실제 remediation 은 scan 보고 후 회장 별도 승인. ANU fallback=ANU key·안전망 한정·진행 트리거 아님.

## 10. 9-R (확정 — 본 절 본문 우선)

**ANU-Codex lint = GO_READY (HIGH/CRITICAL 0)** — scope scan+design only(실제 코드수정·guard 구현·remediation 적용 0)·산출물 실행기반(scan script+result json+fixture+scope proposal·md 단독 금지)·scan 대상 byte-0 read-only·공통 guard 설계조건(import-only·symlink/TOCTOU 방어·fail-closed·Path.resolve strict-prefix 불충분 명시) 포착·task-2611+1 별도 트랙 미혼합·동결(+53/+54/+55/Track E·Critical7 write-back 0)·ANU-only callback·non-md 완료 판정·shared invariant byte-0 전부 반영. re-lint 불요. ANU key 로 dev1 헤르메스 1회 위임.
