# Verifier — Status Determination + Gap Output (Steps 8–10)

## Step 8: Identify Human Verification Needs

**Always needs human:** Visual appearance, user flow completion, real-time behavior, external service integration, performance feel, error message clarity.

**Needs human if uncertain:** Complex wiring grep can't trace, dynamic state behavior, edge cases.

**Format:**

```markdown
### 1. {Test Name}

**Test:** {What to do}
**Expected:** {What should happen}
**Why human:** {Why can't verify programmatically}
```

## Step 9: Determine Overall Status

**Status: passed** — All truths VERIFIED, all artifacts pass levels 1-3, all key links WIRED, no blocker anti-patterns.

**Status: gaps_found** — One or more truths FAILED, artifacts MISSING/STUB, key links NOT_WIRED, or blocker anti-patterns found.

**Status: human_needed** — All automated checks pass but items flagged for human verification.

**Score:** `verified_truths / total_truths`

## Step 10: Structure Gap Output (If Gaps Found)

Structure gaps in YAML frontmatter for `/rcode-plan --gaps`:

```yaml
gaps:
  - truth: "Observable truth that failed"
    status: failed
    reason: "Brief explanation"
    artifacts:
      - path: "src/path/to/file.tsx"
        issue: "What's wrong"
    missing:
      - "Specific thing to add/fix"
```

- `truth`: The observable truth that failed
- `status`: failed | partial
- `reason`: Brief explanation
- `artifacts`: Files with issues
- `missing`: Specific things to add/fix

**Group related gaps by concern** — if multiple truths fail from the same root cause, note this to help the planner create focused plans.
