| name | rn-harness-contract |
| description | Phase 4 — Generator and Evaluator negotiate completion criteria before any code is written. |
| allowed-tools | ["Read","Write","Edit","Bash","Glob","Grep"] |
rn-harness-contract — Phase 4: 계약 협상
Generator와 Evaluator가 빌드 전 완료 기준에 합의한다.
Trigger
오케스트레이터에서 Phase 4로 호출됨.
Input
docs/harness/plans/YYYY-MM-DD-prd.md (PRD)
docs/harness/plans/YYYY-MM-DD-design.md (디자인)
docs/harness/specs/YYYY-MM-DD-research.md (시장 조사)
Process
Step 1: Generator가 계약안 작성
PRD의 유저 스토리와 디자인 스펙을 기반으로 15~30개의 검증 가능한 기준을 작성:
## Contract Proposal
### 1. 회원가입
- **Test**: 이메일/비밀번호 입력 → 가입 버튼 탭
- **Expected**: 유효성 검사 통과 → 홈 화면 이동 → 유저 데이터 저장
- **Evidence**: typecheck pass + 코드 확인
- **Type**: code
### 2. 로그인 후 홈 피드
- **Test**: 로그인 → 홈 탭 → 데이터 로드
- **Expected**: 로딩 스피너 → 데이터 표시 → 스크롤 가능
- **Evidence**: typecheck pass + 코드 확인
- **Type**: code
### 3. 프로필 수정
- **Test**: 프로필 화면 → 이름 수정 → 저장
- **Expected**: 수정 후 반영, 에러 시 Toast 표시
- **Evidence**: typecheck pass + 코드 확인
- **Type**: code
Step 2: Review (mode-dependent)
Default mode (1-pass):
- Generator writes the contract with mandatory criteria included
- Self-review for completeness and specificity
- Mark as AGREED immediately
- Saves tokens by skipping multi-round negotiation
Strict mode (--strict):
- Evaluator reviews each criterion (specific enough? verifiable? edge cases?)
- Generator revises based on feedback
- Iterate until
## Review section says "AGREED"
필수 기준 (MANDATORY)
모든 계약에 반드시 포함:
Anti-Stub 기준
- AS-1: 핵심 기능이 실제 동작 (setTimeout/mock 아님)
- AS-2: 엔드투엔드 데이터 흐름 (생성 → 저장 → 새로고침 → 존재 확인)
- AS-3: 에러 핸들링 (잘못된 입력 시 적절한 에러 표시)
테스트 기준
- T-1: 테스트 러너 설치 (
npm test exit 0)
- T-2: 핵심 비즈니스 로직 유닛 테스트 존재
코드 품질 기준
- CQ-1:
npm run typecheck 에러 0개
- CQ-2:
npm run lint 에러 0개
- CQ-3:
any 타입 사용 0개
FSD 아키텍처 기준
- FSD-1: 레이어 계층 준수 (app → widgets → features → entities → shared)
- FSD-2: 동일 레이어 간 직접 참조 없음
- FSD-3: barrel export (index.ts) 완전성
모바일 UX 기준
- UX-1: 모든 화면 SafeAreaView 사용
- UX-2: 로딩/에러/빈 상태 처리
- UX-3: 터치 타겟 44x44 이상
- UX-4: NativeWind className만 사용 (inline style 금지)
Output
docs/harness/contract.md:
# Build Contract
## Status: AGREED
## Criteria
### Functional
1. [기준 1]
2. [기준 2]
...
### Anti-Stub
AS-1: ...
AS-2: ...
AS-3: ...
### Test
T-1: ...
T-2: ...
### Code Quality
CQ-1: ...
CQ-2: ...
CQ-3: ...
### FSD Architecture
FSD-1: ...
FSD-2: ...
FSD-3: ...
### Mobile UX
UX-1: ...
UX-2: ...
UX-3: ...
UX-4: ...
## Review
AGREED — [날짜]
## Negotiation History
### Round 1 — Generator Proposal
[원본]
### Round 2 — Evaluator Review
[피드백]
### Round 3 — Final Agreement
[합의]
State Update
current_phase: generator
next_role: rn-harness-generator
current_round: 1
HARD GATES
- Anti-Stub 기준 (AS-1~3) 반드시 포함
- 테스트 기준 (T-1~2) 반드시 포함
- 코드 품질 기준 (CQ-1~3) 반드시 포함
- FSD 기준 (FSD-1~3) 반드시 포함
- 모바일 UX 기준 (UX-1~4) 반드시 포함
- "AGREED" 없으면 빌드 진행 금지