# task-2662 — ANU_V3_1_CODEX_MICRO_REFINEMENT_LOOP_CORE_PHASE_1

- Level: Lv.4 (v3.1 Phase 1 Core 모듈 신규 · 신규 utils + schemas + tests + PR 생성 허용 · auto-merge 0 · production write/dev bot dispatch 자동 실행 0)
- 담당: dev2 오딘 (★ ANU 추천 · task-2657/2658/2659/2660/2661 chain 모두 다른 봇 · 신규 v3.1 영역 적합 · 본 chain audit 대상 0)
- base: origin/main 최신 (HEAD `2752182a` · 본 PR #148 merge 직후)
- 단일소스 spec: 본 task md + ANU v3 master spec section 5 (line 484-760)
- chair_authorization_id: **`CHAIR-AUTH-V3-1-CODEX-MICRO-LOOP-20260525-JJONGS-START-001`** (★ 회장 verbatim 1회성 발행 · 임의 생성 0)

## 배경

ANU v3.1 ANU-Codex Micro Refinement Loop = ANU v3 master spec 명시 phase. 현재 구현률 0% (★ ANU 평가 33.8% 종합 중 v3.1 = 0% gap 핵심). Codex/Gemini finding 또는 task spec gap 발생 시 회장 복붙 없이 ANU 자동 refinement → re-lint → GO_READY OR HOLD_FOR_CHAIR 수렴 강제.

본 task = **Phase 1 Core 모듈만**. production write / dev bot 자동 dispatch 0. 문서/계약/fixture/test 계층의 micro refinement 자동화 core.

## 회장 verbatim 결정

- 우선 범위: v3.1 Phase 1 Micro Refinement Loop Core
- production write 또는 dev bot dispatch 자동 실행 0
- 문서/계약/fixture/test 계층 micro refinement 자동화 core loop 구현만

## 허용 9 (회장 verbatim 1:1)

1. 신규 모듈 생성:
   - `utils/anu_codex_micro_refinement_loop.py`
   - `utils/codex_cc_decision_loop.py` (또는 동등 파일)
2. schema / fixture / test 추가
3. GO_READY packet 생성 로직
4. HOLD_FOR_CHAIR packet 생성 로직
5. Codex finding input → refinement target 변환
6. round 기록 + final verdict 산출
7. regression 작성
8. result / report / done marker 작성
9. PR 생성까지 허용

## 필수 구현 10 (회장 verbatim 1:1)

1. `micro_refinement_target` schema 처리 (★ ANU v3 master spec section 5.5)
2. `micro_refinement_result` schema 처리 (★ section 5.6)
3. **GO_READY packet 생성** (★ section 5.7)
4. **HOLD_FOR_CHAIR packet 생성** (★ section 5.8)
5. **safety_gates 처리 (8종)**:
   - `critical_7`
   - `security_high_or_critical`
   - `permission_expansion`
   - `github_write_required`
   - `dev_bot_reactivation_required`
   - `real_write_required`
   - `forbidden_write_target`
   - `scope_expansion`
6. **safe micro refinement 에는 hard cap 0** (★ round 반복 무제한 허용 · 단 safety_gates 통과 시)
7. Critical7 / 권한 확장 / 보안 / 범위 확장 감지 시 **즉시** HOLD_FOR_CHAIR
8. **changed_files는 allowed_write_paths 내부로 제한** (★ 강제 enforce · 위반 시 HOLD)
9. Codex `PASS` 또는 `PASS_WITH_RECOMMENDATIONS` 도달 시 GO_READY
10. evidence path + round history 기록

## 금지 14 (회장 verbatim 1:1)

1. dev bot 자동 dispatch
2. branch 생성 후 무승인 push
3. GitHub write 자동 실행
4. merge
5. auto-merge
6. production mutation
7. real write mode
8. OWNER PAT 조작
9. credential 변경
10. Axis 1/2/3 runtime 변경
11. live settings.json 변경
12. dispatch.py 변경
13. HARNESS_ENFORCED 전체 선언
14. ANU-Work 실전 업무 투입 선언

## 필수 regression 10 (회장 verbatim 1:1)

1. safe document refinement → **GO_READY**
2. Codex `PASS_WITH_RECOMMENDATIONS` → **GO_READY**
3. Critical7 finding → **HOLD_FOR_CHAIR**
4. permission expansion → **HOLD_FOR_CHAIR**
5. GitHub write required → **HOLD_FOR_CHAIR**
6. `forbidden_write_target` touch → **HOLD_FOR_CHAIR**
7. scope expansion → **HOLD_FOR_CHAIR**
8. `allowed_write_paths` 밖 변경 시 → **HOLD_FOR_CHAIR**
9. repeated safe refinement round allowed (★ hard cap 0 검증)
10. GO_READY packet contains `chair_command`

## 완료 상태 (회장 verbatim)

- 성공: **`ANU_V3_1_CODEX_MICRO_REFINEMENT_LOOP_CORE_PR_READY`**
- 실패: **`ANU_V3_1_CODEX_MICRO_REFINEMENT_LOOP_HOLD_FOR_CHAIR`**

## 보고 필수 9 (회장 verbatim 1:1)

1. PR 번호
2. changed_files
3. 구현 모듈
4. schema / fixture / test 목록
5. regression 결과 (10/10 개별)
6. **GO_READY packet 예시** (★ 실 사용 가능 형식)
7. **HOLD_FOR_CHAIR packet 예시** (★ 8 safety_gates 어느 trigger 명시)
8. forbidden_action_count (target 0)
9. auto-merge = 0

## expected_files (~8)

- `utils/anu_codex_micro_refinement_loop.py` (★ 신규 · Core 모듈)
- `utils/codex_cc_decision_loop.py` (★ 신규 또는 동등 파일)
- `schemas/anu_v3_1_micro_refinement_target.json` (★ 신규)
- `schemas/anu_v3_1_micro_refinement_result.json` (★ 신규)
- `schemas/anu_v3_1_go_ready_packet.json` (★ 신규)
- `schemas/anu_v3_1_hold_for_chair_packet.json` (★ 신규)
- `tests/anu_codex_micro_refinement_loop/__init__.py`
- `tests/anu_codex_micro_refinement_loop/test_regression_10.py`
- `memory/events/task-2662.done`
- `memory/events/task-2662.anu-v3-1-codex-micro-refinement-loop-core-result-260525.json`
- `memory/reports/task-2662.md`

## allowed_write_paths (회장 verbatim 필수 구현 8)

```yaml
allowed_write_paths:
  - "utils/anu_codex_micro_refinement_loop.py"
  - "utils/codex_cc_decision_loop.py"
  - "schemas/anu_v3_1_*.json"
  - "tests/anu_codex_micro_refinement_loop/**"
  - "memory/tasks/task-2662.md"
  - "memory/reports/task-2662.md"
  - "memory/events/task-2662.*"
```

## allowed_resources

```yaml
allowed_resources:
  paths:
    - "utils/anu_codex_micro_refinement_loop.py"
    - "utils/codex_cc_decision_loop.py"
    - "schemas/anu_v3_1_*.json"
    - "tests/anu_codex_micro_refinement_loop/**"
    - "memory/system/.callback_ledger.jsonl"
    - "memory/.callback_inbox/**"
    - "memory/tasks/task-2662.md"
    - "memory/reports/task-2662.md"
    - "memory/events/task-2662.done"
    - "memory/events/task-2662.anu-v3-1-codex-micro-refinement-loop-core-result-260525.json"
    - "INDEX.md"
  read_only_reference:
    - "/home/jay/.cokacdir/workspace/autoset/ANU_v3_master_development_direction_final_260517_v2_5_callback_control.md (★ section 5 spec)"
    - "/home/jay/.cokacdir/workspace/autoset/anu_batch_hold_adjudication_auto_remediation_v2_5_callback_control.md (★ Critical7 분류 참조)"
    - "utils/anu_callback_registrar.py (★ 패턴 참조 · 변경 0)"
    - "dispatch/normal_fallback_callback_helper.py (★ 패턴 참조 · 변경 0)"
  forbidden_paths:
    - "/home/jay/.claude/settings.json"
    - "/home/jay/.claude/settings.local.json"
    - "/home/jay/.claude/hooks/**"
    - "/usr/local/bin/cokacdir"
    - ".github/**"
    - "hooks/**"
    - "dispatch.py"
    - "dispatch/__init__.py"
    - "dispatch/normal_fallback_callback_helper.py"
    - "scripts/finish-task.sh"
    - "scripts/replacement_pr_runner.py"
    - "utils/replacement_pr_runner.py"
    - "utils/anu_callback_registrar.py"
    - "utils/anu_callback_fallback.py"
    - "utils/completion_callback_fallback_cancel.py"
    - "utils/canonical_workspace_resolver.py"
    - "utils/worktree_resolver.py"
    - "utils/callback_collector_helper_integration.py"
    - "utils/lifecycle_reconciliation_manager.py"
    - "utils/merge_ready_states.py"
    - "utils/ci_watch_handoff_audit.py"
    - "utils/**axis_1**"
    - "utils/**axis_2**"
    - "utils/axis_3_canary_scale_aware_guard/**"
    - "utils/anu_spawn_visibility_guard/**"
    - "memory/tasks/task-2641*"
    - "memory/tasks/task-2642*"
    - "memory/tasks/task-2643*"
    - "memory/tasks/task-2644*"
    - "memory/tasks/task-2645*"
    - "memory/tasks/task-2646*"
    - "memory/tasks/task-2647*"
    - "memory/tasks/task-2648*"
    - "memory/tasks/task-2649*"
    - "memory/tasks/task-2650*"
    - "memory/tasks/task-2651*"
    - "memory/tasks/task-2652*"
    - "memory/tasks/task-2653*"
    - "memory/tasks/task-2654*"
    - "memory/tasks/task-2655*"
    - "memory/tasks/task-2656*"
    - "memory/tasks/task-2657*"
    - "memory/tasks/task-2658*"
    - "memory/tasks/task-2659*"
    - "memory/tasks/task-2660*"
    - "memory/tasks/task-2661*"
    - "**/.env*"
    - "**/credentials*"
  commands:
    - "python3 -m py_compile"
    - "python3 -m json.tool"
    - "python3 -m pytest"
    - "python3 -c"
    - "ls"
    - "cat"
    - "stat"
    - "git status"
    - "git diff"
    - "git log"
    - "git checkout"
    - "git branch"
    - "git add"
    - "git commit"
    - "git push"
    - "git worktree"
    - "gh pr create"
    - "gh pr view"
    - "sha256sum"
    - "wc"
    - "printf"
    - "grep"
    - "find"
    - "tail"
    - "cokacdir --cron"
    - "cokacdir --cron-history"
    - "cokacdir --cron-list"
    - "cokacdir --currenttime"
    - "touch"
    - "mkdir"
  merge_policy: "v3_1_codex_micro_refinement_loop_core_pr_only_no_auto_merge"
  ttl_hours: 72
```

## frozen anchors

- ANCHOR-1: "Phase 1 Core 모듈만 · production write 0 · dev bot 자동 dispatch 0 · real write mode 0"
- ANCHOR-2: "safety_gates 8종 (critical_7 / security_high_or_critical / permission_expansion / github_write_required / dev_bot_reactivation_required / real_write_required / forbidden_write_target / scope_expansion) 어느 하나라도 trigger → 즉시 HOLD_FOR_CHAIR"
- ANCHOR-3: "safe micro refinement 에는 hard cap 0 · 단 8 safety_gates 통과 시에만 round 반복 허용"
- ANCHOR-4: "changed_files allowed_write_paths 내부 강제 · 위반 시 HOLD_FOR_CHAIR · enforce_check 필수"
- ANCHOR-5: "GO_READY packet 은 chair_command 포함 · HOLD_FOR_CHAIR packet 은 trigger gate 명시"
- ANCHOR-6: "Axis 1/2/3 runtime · dispatch.py · live settings.json · live cokacdir · hooks/* · 본 PR #148 merged 모듈들 변경 0"
- ANCHOR-7: "ANU-Work 실전 업무 투입 선언 0 · HARNESS_ENFORCED 전체 선언 0"
- ANCHOR-8: "BOT App token 부재 시 (ghs_ 없음 / OWNER PAT만) push/PR 불가 → ANU_V3_1_CODEX_MICRO_REFINEMENT_LOOP_HOLD_FOR_CHAIR + 회장 결정 대기"

## finalize 프로토콜

1. base = origin/main 최신 fetch (HEAD `2752182a`)
2. 별도 worktree task-2662-dev2
3. dev2 오딘 봇 작업
4. utils/anu_codex_micro_refinement_loop.py + utils/codex_cc_decision_loop.py 신규
5. schemas/anu_v3_1_*.json 4종 신규
6. tests/anu_codex_micro_refinement_loop/test_regression_10.py + 10 fixture all PASS
7. safety_gates 8종 enforce 검증
8. allowed_write_paths enforce 검증
9. GO_READY + HOLD_FOR_CHAIR packet 실 예시 생성
10. commit + push (★ Phase 1 PR 범위)
11. gh pr create (★ auto-merge label 절대 금지)
12. result marker + report + .done 발행
13. ANU normal callback cron (helper · ★ ANU key c119085addb0f8b7 강제 · self-key 0 · UTF-8 ≤3900 bytes · envelope only · ★ 본 PR #148 merge 이후 absolute timestamp 적용된 finish-task.sh 사용 가능)

## 회장 보고 형식 (verbatim)

성공: **`ANU_V3_1_CODEX_MICRO_REFINEMENT_LOOP_CORE_PR_READY`**
실패: **`ANU_V3_1_CODEX_MICRO_REFINEMENT_LOOP_HOLD_FOR_CHAIR`**

끝
