# task md 템플릿 default — 자동 finalize chain 박제

> **task-2529 (2026-05-10)**
> 회장 §명시 — 모든 code task md 템플릿은 자동 finalize chain을 default로 포함한다.
> opt-out 명시가 없는 한 봇은 본 default 그대로 동작한다.

## 0. 본질

`memory/tasks/task-NNNN.md`를 발행할 때 별도 명시 없이 다음 default가 적용된다.
회장이 매번 "PR 만들고 머지해" 라고 말하지 않아도 된다.

## 1. default 8단계 (template 보강 — 회장 §3)

```
- commit
- push
- PR
- CI / Gemini
- auto_gemini_triage
- bot identity merge
- smoke
- reconcile
```

이 8단계는 task md template의 "완료 조건" 섹션 default로 박제된다. 본 8단계는
`scripts/safe_cron_dispatch.py`가 cron 발사 직전 자동 삽입하는 12단계 footer의 핵심 골격과
일치한다 (footer는 더 세분화된 12단계).

## 2. opt-out 4 필드 (회장 §2)

task md 어디에도 다음 4 필드 중 하나가 명시되어 있으면 자동 finalize chain은 진입하지 않는다.

```yaml
# 옵션 A: PR 미생성 — 수동/외부 finalize 흐름
finalize_policy: no_pr

# 옵션 B: 코드 변경 0 — 읽기/조회만
read_only: true

# 옵션 C: 분석/리포트만 — 코드 변경 0
analysis_only: true

# 옵션 D: 보고서 작성만 — 코드 변경 0
report_only: true
```

명시 위치는 task md 본문 아무 곳이나 가능하지만 **frontmatter 또는 첫 50줄 내** 권장
(검색 효율 + 가독성).

## 3. 표준 task md 템플릿 (default 박제)

```markdown
# task-NNNN — <한 줄 요약>

- 작업 유형: **<유형>**
- 작업 레벨: **Lv.<n>**
- 우선순위: **<priority>**
- Track: **<track>**
- parallel_policy: **<serial_only|parallel_ok>**
- 일시: 2026-05-DD
- 회장 결정: 2026-05-DD — <맥락 한 줄>

## ⚠️ 본질
<1~3줄. 회장 §명시 그대로 인용 가능>

## dependency
- <task-XXXX.merged>

## Merge Topology Gate metadata
```yaml
expected_files:
  - <path>
risk_area: "<...>"
parallel_policy: "<...>"
merge_queue_position: <n>
```

## 완료 조건 (default — opt-out 없으면 자동 finalize chain 진입)

1. ✅ commit (관련 파일만, 의미 있는 메시지)
2. ✅ push (task 전용 브랜치)
3. ✅ PR 생성 (gh pr create)
4. ✅ CI / Gemini 리뷰 통과
5. ✅ auto_gemini_triage 응답 (high/critical 코드 수용)
6. ✅ bot identity merge (GH_TOKEN=$BOT_GITHUB_TOKEN)
7. ✅ post_merge_smoke PASS
8. ✅ reconcile (lifecycle_reconciliation_manager --apply)

## 자동 finalize 14단계 (본 task 자체에도 적용)
1~14단계 (회장 §finalize 14단계 표준).

## 보고 형식
성공 시 (한 줄):
```
task-NNNN AUTO_FINALIZE_PASS — mergeCommit <sha>, mergedBy=app/jeon-jonghyuk-taskctl-bot, Critical 7종 0건.
```
```

## 4. read_only / analysis_only / report_only 템플릿

코드 변경이 없는 task의 경우 default 8단계를 명시적으로 끈다:

```markdown
# task-NNNN — <audit / report 요약>

- 작업 유형: **read_only audit** / **analysis_only** / **report_only**
- read_only: true   # 또는 analysis_only: true / report_only: true
- 일시: 2026-05-DD

## 본질
<코드 변경 0. 결과는 memory/reports/task-NNNN.md만 추가>

## 완료 조건
1. ✅ memory/reports/task-NNNN.md 작성
2. ✅ 결과 보고 (한 줄)
   — 자동 finalize chain은 본 task에 적용되지 않음 (read_only opt-out)
```

## 5. 회장 §금지

- ❌ default 8단계를 빼놓고도 opt-out 명시 안 하기 (모호한 task md 금지)
- ❌ template 무단 변경 (본 spec과 정합 유지 필수)
- ❌ "회장이 직접 PR 만들어줘" 같은 수동 finalize 강제 — opt-out 4 필드 외에는 자동

## 6. 참조

- 정책 본체: `memory/specs/auto-finalize-chain-default.md`
- 구현체: `scripts/safe_cron_dispatch.py` (auto_inject_finalize_footer)
- lifecycle 박제: `utils/lifecycle_reconciliation_manager.py` (CODE_DONE_BUT_NO_COMMIT 외 3종)
- 회귀: `tests/regression/test_auto_finalize_chain_default_2529.py`
