---
name: validate-hypothesis
description: "Validate design hypotheses via code experiments, codebase analysis, and external research."
allowed-tools: Bash(echo *), Bash(rp1 *)
metadata:
  category: investigation
  is_workflow: false
  version: 1.0.0
  tags:
    - feature
    - validation
    - design
  created: 2025-11-29
  updated: 2026-02-26
  author: cloud-on-prem/rp1
  arguments:
    - name: FEATURE_ID
      type: string
      required: true
      description: "Feature identifier whose hypotheses to validate (kebab-case)"
  sub_agents:
    - "rp1-dev:hypothesis-tester"
---

# Hypothesis Validator

Invokes **hypothesis-tester** agent to validate design assumptions.

## Prerequisites
- `{workRoot}/features/{FEATURE_ID}/hypotheses.md` MUST exist
- Created by the feature-architect agent during the design phase when high-risk assumptions are identified

## Execution

### Step 1: Invoke Agent

{% dispatch_agent "rp1-dev:hypothesis-tester" %}
FEATURE_ID: {FEATURE_ID}
Validate all PENDING hypotheses for this feature.
{% enddispatch_agent %}

Agent actions: load hypotheses.md -> parse PENDING -> validate via experiment/analysis/research -> document findings w/ evidence -> update status CONFIRMED|REJECTED -> cleanup temp artifacts -> report summary

### Step 2: Handle Rejected Hypotheses

Parse agent output. If JSON block w/ `type: "rejected_hypotheses"`:

```json
{
  "type": "rejected_hypotheses",
  "hypotheses": [...],
  "hypotheses_path": "..."
}
```

For each rejected:

{% ask_user "{id} REJECTED: {statement}. Evidence: {evidence_summary}. Domain knowledge confirms valid?", options: "Accept rejection", "Override - I confirm valid" %}

**If "Override"**:
1. Edit hypotheses.md:
   - Status: `REJECTED` -> `CONFIRMED_BY_USER`
   - Append: `**User Override**: User confirmed validity based on domain knowledge.`

**If "Accept rejection"**: No change (status remains REJECTED)

### Step 3: Report Result

Display validation summary. Note any user overrides.
