# Natural Language Intake spec (Track C · read-only/code-free 설계) — 260522

회장 결정(2026-05-22, Track C): 회장의 **자연어 지시 → 구조화 task contract** 자동 생성 schema 를 설계한다. **본 단계는 설계(code-free)만** — 코드 구현 절대 금지(회장 명시). Track A/B 와 파일 충돌 금지.

목적: 회장이 매번 expected_files/forbidden_paths/risk/callback/merge policy 를 손으로 명시하지 않아도, 자연어 지시에서 ANU 가 task contract 를 결정적으로 도출 → dispatch. 단 **acceptance criteria 는 owner-provided 원칙** 유지(자동 발명 금지).

기반: 작업 레벨 시스템 · dispatch 완결성 4규칙 · Critical7 · callback 표준화 · [[system_merge_ready_executor_spec_260522]].

---

## 1. intake 파이프라인 (설계)

```
parse_nl_directive(nl_text, context) -> task_contract
```
4단계 (전부 결정적·추정 시 CHAIR_CLARIFICATION):
1. **classify intent** → Work vs Core routing (아래 §2)
2. **extract scope** → expected_files / forbidden_paths 후보 도출 (기존 코드/구조 기반, 불확실 시 후보+confidence)
3. **assess risk** → 작업 레벨(Lv.0~4) + risk tier + parallel 가능 여부
4. **build contract** → callback policy + merge policy + acceptance criteria placeholder(owner-provided) + chair escalation 매핑

---

## 2. Work / Core routing

- **Work routing**: 산출물이 production/서비스/콘텐츠인 일반 작업 → dev/design/marketing 등 실행 팀. acceptance criteria = owner 제공 필수.
- **Core routing**: 거버넌스/자동화 인프라(classifier·executor·dispatch·callback 등) → decoupled module + frozen fixture + regression 원칙 강제, merge 실행 0 기본.
- routing 모호 시 → CHAIR_CLARIFICATION (추정 dispatch 금지).

---

## 3. task_contract schema (intake 출력)

```json
{
  "schema": "nl_intake.task_contract.v1",
  "source_nl": "",
  "intent": "WORK | CORE",
  "routing": { "team": "", "rationale": "" },
  "task_id": "task-NNNN",
  "level": "Lv.N",
  "risk_tier": "LOW | MEDIUM | HIGH | CRITICAL",
  "expected_files": [], "expected_files_confidence": 0.0,
  "forbidden_paths": [],
  "parallelizable": true, "depends_on": [],
  "acceptance_criteria": { "owner_provided": true, "items": [], "status": "PENDING_OWNER" },
  "callback_policy": { "normal_callback": true, "fallback_safetynet": true, "owner_key": "ANU" },
  "merge_policy": { "auto_merge_eligible": false, "requires_chair_approval": true },
  "chair_escalation": { "triggers": ["CRITICAL7","CREDENTIAL_EXPANSION","OUT_OF_SCOPE","ADMIN_OVERRIDE","SMOKE_FAILURE","REPLACEMENT_PR_FAILURE"] },
  "confidence": 0.0,
  "needs_chair_clarification": false,
  "clarification_questions": []
}
```

## 4. 핵심 원칙
- **acceptance criteria owner-provided**: intake 가 성공 기준을 자동 발명하지 않는다. owner 제공 전까지 status=PENDING_OWNER (검증 시나리오 필수 규칙 준수).
- **chair escalation classifier 반영**: merge-ready classifier 의 CHAIR_REQUIRED 트리거와 동일 집합을 contract 에 박아 하류 일관성 확보.
- **추정 금지**: scope/routing/risk 불확실 시 needs_chair_clarification=true + 구체 질문. 임의 dispatch 0.
- **dependency 불확실 병렬 금지**: depends_on 미확정이면 parallelizable=false.

## 5. Track A/B 와의 경계
- C 산출 = `memory/specs/` 문서 1개(본 파일). Track A(utils/tests) · Track B(executor dryrun spec) 와 **파일 overlap 0**.
- 코드 구현(parser/verifier py)은 **본 단계 금지** — 회장 명시. 설계 schema 만.

**금지(Track C)**: 코드 구현 · push/PR/merge · Track A/B 파일 수정 · acceptance criteria 자동 발명 · 추정 dispatch.
