# task-2503 Phase 1 amendment 진행 요약 (헤르메스/아누 경유)

발효: 2026-05-08T11:32 회장 amendment
보고: 2026-05-08T12:45 dev3-team 다그다 → Hermes/Anu 통합

## Phase 1 deliverables (12 완료조건 매핑)

| # | Phase 1 조건 | 상태 |
|---|---|---|
| 1 | schema YAML 7 필드 | ✅ memory/specs/merge-topology-gate-schema.yml |
| 2 | classifier 9 룰 (pure function, dispatch import 0건) | ✅ utils/merge_topology_gate.py — `grep "import dispatch"` = 0 |
| 3 | ~~dispatch.py hook~~ → Phase 2 task-2504 분리 | 🚫 미수행 (amendment 준수) |
| 3' | dry-run CLI helper | ✅ `python utils/merge_topology_gate.py --dry-run --task-file <path>` 동작 (BLOCK/ALLOW/LIMITED/REQUIRE 출력 + dry_run=true 필드 audit 기록) |
| 4 | audit jsonl schema + 빈 파일 + dry_run=true 필드 | ✅ audit_log()에 dry_run 파라미터 추가, 9 필드 + 옵션 dry_run 필드 |
| 5 | 회귀 테스트 ALL PASS (dispatch 미경유) | ✅ 28/28 PASS (schema 7 + classifier 11 + audit_format 10) |
| 6 | 자기참조 PASS evidence 박제 | ✅ memory/events/task-2503.self-reference-pass — decision=ALLOW, reason_codes=[], dep mocked merged (task-2502 sha=46c16bee) |
| 7 | CI 11/11 SUCCESS | ⏳ 신규 PR 생성 후 확인 (현재 로컬 테스트만 통과) |
| 8 | Gemini fresh evidence | ⏳ 신규 PR 후 |
| 9 | PR #52/#49/#50/#51 보존 | ✅ 본 작업 미접촉 |
| 10 | task-2497/2498/2494 흐름 방해 0건 | ✅ memory/events/task-249{4,7,8} 미접촉 |
| 11 | dispatch.py 미수정 (Phase 1 한정) | ⚠️ **위반 commit 존재** — fc49a9fd가 dispatch/__init__.py 57줄 수정 + dispatch_integration test 115줄 추가 (Phase 1 amendment 이전 작업) |
| 12 | task-2504 후보 evidence | ✅ memory/events/task-2504-candidate.dispatch-integration-spec |

## Phase 1 신규 추가/수정 파일 (이번 재개 amendment에서)

- `utils/merge_topology_gate.py` — dry_run 파라미터 추가 + `_dry_run_from_task_file()` + `main()` argparse CLI (line 671~813 추가)
- `tests/regression/test_merge_topology_gate_audit_format_2503.py` — **신규** 10건 (audit jsonl 9 필드 + dry_run + append-only + dispatch import 부재 검증)
- `memory/events/task-2503.self-reference-pass` — Phase 1 amendment_compliance 메타 갱신, decision=ALLOW 명시
- `memory/events/task-2504-candidate.dispatch-integration-spec` — **신규** Phase 2 후속 spec
- `memory/heartbeats/task-2503.heartbeat` — 갱신

## ★ Phase 2 침범 — 사전 commit 별도 보고 (amendment 6번 항목)

**기존 commit fc49a9fd** (`[task-2503] 다그다: Merge Topology Gate code enforcement for dispatch`)에 Phase 2 영역 변경이 포함됨.

| 파일 | 라인 | Phase | 처리 |
|---|---|---|---|
| `dispatch/__init__.py` | +50/-7 (`--override-merge-topology-gate` argparse + main() merge-topology-gate hook block) | **Phase 2** | Phase 1 PR에서 제외 필요 |
| `tests/regression/test_merge_topology_gate_dispatch_integration_2503.py` | +115 (dispatch import + hook 검증) | **Phase 2** | Phase 1 PR에서 제외 필요, task-2504 발행 시 재명명 권장 |

**처리 옵션** (회장 결정 대기):
- A. origin/main에서 새 Phase 1 branch 생성 후 Phase 1 expected_files만 cherry-pick (가장 깨끗)
- B. 현재 branch에서 git revert로 두 파일 변경 제거 후 Phase 2 branch에 별도 보존
- C. fc49a9fd commit을 Phase 2 task-2504 base로 활용

**branch reset / cherry-pick 미수행**: amendment 문구 "(branch reset 또는 cherry-pick 제외)" 해석 보수적 적용 → 현재 commit은 변경 없이 유지, 위 옵션은 회장 명시 결정 후 실행.

## 회장 §7 절대 금지 위반 0건 재확인

- ✅ auto cherry-pick 구현 미수행
- ✅ auto_merge 실행부 미혼합
- ✅ PR #52/#49/#50/#51 미수정
- ✅ task-2497/2498/2494 재실행 흐름 미방해
- ✅ dashboard / report_parser 미침범

## 자기참조 검증 (amendment 핵심)

```
$ python -c "from utils.merge_topology_gate import classify, parse_topology_metadata; ..."
metadata_keys: ['cherry_pick_allowed', 'dependency', 'expected_files', 'merge_queue_position', 'parallel_policy', 'risk_area', 'stale_recheck_required']
validate_errors: []
decision: ALLOW
reason_codes: []
overlap_score: 0.0
conflicting_tasks: []
SELF-REFERENCE PASS: ALLOW
```

박제: `memory/events/task-2503.self-reference-pass` (`amendment_compliance: phase-1-only-2026-05-08T11:32`)

## 다음 단계

1. 회장 결정: Phase 2 commit 처리 옵션 (A/B/C)
2. Phase 1 PR 생성 (옵션 A 권장 — clean diff)
3. CI 11/11 + Gemini fresh evidence 확보
4. 머지 후 task-2504 발행 여부 결정 (회장 §Phase 2 명시 승인 필요)
