What's New in v1.3.0
Contract Task Descriptions
Planning agent now generates "contract" task descriptions — specific enough that workers execute without exploring the codebase.
Before (vague):
```
- E2-T1 Implement AppCacheScanner
```
After (contract):
```
- E2-T1 Create `Sources/App/Scanners/AppCacheScanner.swift` implementing
`ScannerProtocol` (`Sources/App/Protocols/ScannerProtocol.swift`).
Scan `~/Library/Caches/`. Register in `ScannerRegistry.allScanners`
(`Sources/App/ScannerRegistry.swift`). Return `[ScanResult]` sorted by size.
```
Phase 0 — Explore First
build_planning_prompt() now begins with an explicit exploration phase:
- Find protocol/interface files
- Read 1–2 existing implementations
- Find registries and factory files
- Note naming conventions
Planning agent does this once, so each worker runs without repeating the discovery.
Verified DOC-INDEX Sections
Step B now requires the planning agent to read each section before mapping — confirming it contains the actual interface definition, not just a reference to it.
Token Impact
| Stage | Before | After |
|---|---|---|
| Planning (runs 1x) | Same | ~30% more (exploration) |
| Worker (runs per task) | High (exploration) | ~80% less (contract) |
| Net for 10 tasks | baseline | ~70% fewer total tokens |
Files Changed
ralph.py—build_planning_prompt(): Phase 0 + contract format + Step B verificationSKILL.md— Step 2: pre-work exploration + contract examples; Step 3: verification rule