| 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" ์์ผ๋ฉด ๋น๋ ์งํ ๊ธ์ง