/exp-eval
Convert completed experiment results into wiki knowledge updates.
Review LLM acts as an impartial judge (following cross-model-review), independently evaluating how experimental results affect the target claim.
Four verdict paths: supported → claim↑ + idea validated / partially_supported → supplementary experiments /
not_supported → claim↓ + idea failed / inconclusive → debug.
Auto-updates claims confidence and evidence, ideas status, and graph edges.
Inputs
experiment: slug from wiki/experiments/ (status must be completed)
--auto (optional): automatic mode — do not pause for user confirmation before wiki updates (used when called by /research)
Outputs
wiki/claims/{slug}.md — updated confidence, status, evidence list
wiki/ideas/{slug}.md — updated status (validated/failed), pilot_result, failure_reason
wiki/experiments/{slug}.md — ## Claim updates section filled in
wiki/graph/edges.jsonl — new supports/invalidates edges added
wiki/graph/context_brief.md — rebuilt
wiki/graph/open_questions.md — rebuilt
wiki/log.md — appended log entry
- VERDICT_REPORT (printed to terminal) — verdict result, wiki change summary, next step suggestions
Wiki Interaction
Reads
wiki/experiments/{slug}.md — experiment results: outcome, key_result, metrics, full Results section
wiki/claims/{target-claim}.md — target claim current state: status, confidence, evidence list
wiki/ideas/{linked-idea}.md — linked idea current state
wiki/experiments/*.md — other experiments on the same claim (aggregate assessment)
wiki/graph/context_brief.md — global context
.claude/skills/shared-references/cross-model-review.md — reviewer independence principle
Writes
wiki/claims/{target-claim}.md — update status, confidence, evidence, date_updated
wiki/ideas/{linked-idea}.md — update status, pilot_result, failure_reason, date_resolved
wiki/experiments/{slug}.md — fill in ## Claim updates section
wiki/graph/edges.jsonl — add supports or invalidates edges
wiki/graph/context_brief.md — rebuild
wiki/graph/open_questions.md — rebuild
wiki/log.md — append operation log
Graph edges created
supports: experiment → claim (experiment supports the claim) — verdict = supported or partially_supported
invalidates: experiment → claim (experiment refutes the claim) — verdict = not_supported
Workflow
Precondition:
- Confirm working directory is the wiki project root (directory containing
wiki/, raw/, tools/)
- Confirm experiment status ==
completed (incomplete experiments cannot be evaluated)
Step 1: Load Context
Read experiment page wiki/experiments/{slug}.md:
- outcome (succeeded/failed/inconclusive)
- key_result
- target_claim slug
- linked_idea slug
- metrics and full Results section
- hypothesis
Read target claim wiki/claims/{target-claim}.md:
- Current status and confidence
- Existing evidence list
- Conditions and scope
Read linked idea wiki/ideas/{linked-idea}.md (if it exists):
- Current status
- Hypothesis
Load other experiments on the same claim:
- Glob:
wiki/experiments/*.md, filter target_claim == same claim
- Summarize existing experiment results (for aggregate claim confidence assessment)
Read global context:
wiki/graph/context_brief.md
Read cross-model-review.md: confirm Review LLM independence principle
Step 2: Review LLM Verdict (Cross-Model Verdict)
Follow cross-model-review.md: do not send Claude's pre-judgment to Review LLM.
mcp__llm-review__chat:
system: "You are an impartial scientific judge evaluating whether experimental
results support or refute a research claim. Be rigorous and objective.
Consider: statistical significance, effect size, experimental validity,
potential confounds, and whether the results generalize beyond the
specific setup tested."
message: |
## Claim Under Test
Title: {claim title}
Statement: {claim statement from ## Statement section}
Current status: {status}
Current confidence: {confidence}
Conditions: {conditions and scope}
## Experiment
Title: {experiment title}
Hypothesis: {hypothesis}
Setup: {model, dataset, hardware, framework}
Metrics: {metrics list}
## Results
{full Results section from experiment page}
## Key Finding
{key_result}
## Other Experiments on This Claim
{summary of other experiments' outcomes on the same claim, if any}
## Your Task
Provide your verdict:
1. **Verdict**: One of: supported / partially_supported / not_supported / inconclusive
2. **Confidence adjustment**: Suggest new confidence value (0.0-1.0) with reasoning
3. **Evidence strength**: weak / moderate / strong
4. **Key reasoning**: 2-3 sentences explaining your verdict
5. **Concerns**: Any methodological concerns or limitations
6. **Suggested next steps**: What would strengthen or clarify this result?
Record Review LLM's verdict.
Step 3: Claude Synthesis
Form Claude's independent verdict (after reading Review LLM's verdict, Claude also analyzes independently):
- Based on experimental results, claim context, and aggregate evidence from other experiments
- Form Claude's own verdict and confidence suggestion
Synthesize both verdicts (follow cross-model-review.md composing rules):
- Both agree (same verdict): use that verdict, average the confidence, high certainty
- Both disagree:
- Explicitly flag the disagreement
- Take the more conservative verdict (supported > partially_supported > not_supported)
- Use the lower confidence value
- Detail the disagreement reason in the report
- Fatal findings take priority: if either party finds a methodological issue (data leakage, unfair comparison), that finding takes precedence
Determine final verdict: verdict + new_confidence + evidence_strength
Step 4: Update Wiki Based on Verdict
If --auto is not set: display verdict and planned changes first, wait for user confirmation.
Path A: SUPPORTED (experiment supports claim)
Update claim:
- confidence: ↑ adjust to new value (typically +0.1~0.3)
- status: adjust based on new confidence
- confidence >= 0.7 →
supported
- confidence 0.4–0.7 →
weakly_supported
- evidence: append new entry
{source: experiment-slug, type: supports, strength: strong/moderate, detail: key_result}
- date_updated: today's date
Update idea (if it exists and status is in_progress/tested):
- If all linked claims are supported/weakly_supported:
- status:
validated
- pilot_result: key_result summary
- date_resolved: today's date
Add graph edge:
python3 tools/research_wiki.py add-edge wiki/ \
--from "experiments/{slug}" --to "claims/{target-claim}" \
--type supports --evidence "{key_result}"
Suggest next steps: /paper-plan or continue ablation/robustness experiments
Path B: PARTIALLY_SUPPORTED (partial support)
Update claim:
- confidence: minor adjustment (+0.05~0.15)
- evidence: append
{type: supports, strength: weak, detail: ...}
- date_updated: today's date
Add graph edge:
python3 tools/research_wiki.py add-edge wiki/ \
--from "experiments/{slug}" --to "claims/{target-claim}" \
--type supports --evidence "Partially supported: {limitation}"
Suggest supplementary experiments:
- Specify what evidence is missing
- Suggest using
/exp-design to design supplementary experiments
- If Review LLM-flagged concerns are addressable by experiment, suggest concrete experiment direction
Idea status unchanged: keep in_progress, wait for more evidence
Path C: NOT_SUPPORTED (experiment does not support claim)
Update claim:
- confidence: ↓ significantly lower (typically -0.2~0.4)
- status: if confidence < 0.3 →
challenged
- evidence: append
{type: invalidates, strength: strong/moderate, detail: ...}
- date_updated: today's date
Update idea (if it exists):
- status:
failed
- failure_reason: specific reason for failure (extracted from experiment results and Review LLM analysis)
- date_resolved: today's date
- Note: failure_reason is anti-repetition memory — must be written clearly, explaining why it failed
Add graph edge:
python3 tools/research_wiki.py add-edge wiki/ \
--from "experiments/{slug}" --to "claims/{target-claim}" \
--type invalidates --evidence "{failure_reason}"
Suggest next steps:
- Analyze the failure reason
- Consider pivoting (new idea addressing the same gap while avoiding the known failure)
- Suggest
/ideate to generate alternatives
Path D: INCONCLUSIVE (results are uncertain)
Do not modify claim status/confidence: insufficient evidence to make a judgment
Update experiment page: outcome is already inconclusive (set by /exp-run)
Suggest debugging:
- Data issue? Implementation bug? Wrong metric?
- Too much variance? More seeds needed?
- Experiment setup not aligned with claim?
Idea status unchanged: keep current status
All Paths (common steps)
Fill in ## Claim updates section of the experiment page:
## Claim updates
- **Verdict**: {supported/partially_supported/not_supported/inconclusive}
- **Claim**: [[{target-claim}]] confidence {old} → {new}
- **Judge agreement**: {Claude and Review LLM agreed / disagreed on ...}
- **Date**: YYYY-MM-DD
Update index.md (if claim status changed)
Rebuild derived data:
python3 tools/research_wiki.py rebuild-context-brief wiki/
python3 tools/research_wiki.py rebuild-open-questions wiki/
Append log:
python3 tools/research_wiki.py log wiki/ \
"exp-eval | {slug} → {target-claim} | verdict: {verdict} | confidence: {old}→{new}"
Print VERDICT_REPORT to terminal:
# Verdict Report: {experiment title}
## Verdict: {SUPPORTED / PARTIALLY_SUPPORTED / NOT_SUPPORTED / INCONCLUSIVE}
## Judge Assessment
| | Claude | Review LLM | Final |
|---|-------|------|-------|
| Verdict | {verdict} | {verdict} | {verdict} |
| Confidence | {value} | {value} | {value} |
| Evidence strength | {strength} | {strength} | {strength} |
## Key Reasoning
{2-3 sentences from Review LLM + Claude synthesis}
## Wiki Changes
| Entity | Field | Before | After |
|--------|-------|--------|-------|
| claims/{slug} | confidence | {old} | {new} |
| claims/{slug} | status | {old} | {new} |
| ideas/{slug} | status | {old} | {new} |
## Graph Edges Added
- experiments/{slug} → claims/{target} (supports/invalidates)
## Concerns
{methodological concerns from Review LLM}
## Next Steps
- {path-specific suggestions}
## Wiki Growth
| Metric | Before | After | Delta |
|--------|--------|-------|-------|
| Claims updated | — | — | {N} |
| Edges | {before} | {after} | +{delta} |
| Maturity | {level} | {level} | {unchanged/upgraded} |
(Data from comparing `python3 tools/research_wiki.py maturity wiki/ --json` calls at the start of Step 1 and end of Step 4.)
Constraints
- Only process completed experiments: experiments with status != completed are refused; prompt user to use /exp-run first
- Reviewer independence: strictly follow cross-model-review.md — do not send Claude's pre-judgment to Review LLM
- Confidence range 0.0–1.0: updated confidence must not exceed this range
- failure_reason must be specific: the not_supported path's failure_reason cannot be vague (e.g. "experiment failed") — must state the concrete reason
- Do not delete claims: even when not_supported, only challenge or lower confidence; do not delete the claim page. In extreme cases (multiple consistent refutations, confidence → 0), set status to deprecated rather than deleting
- Graph edges via tools/research_wiki.py: do not manually edit edges.jsonl
- Conservative principle: when Claude and Review LLM verdicts disagree, use the more conservative verdict
- Idea status advances only forward: proposed → in_progress → tested → validated/failed, irreversible
- Assess claim using all experiments: consider not just the current experiment but also other experiments on the same claim
Error Handling
- Experiment not found: prompt user to check slug, list candidates in wiki/experiments/ with status=completed
- Experiment not completed: report status, suggest running
/exp-run {slug} or /exp-run {slug} --check
- Target claim does not exist: create new claim page (status: proposed, confidence: 0.3), note "auto-created by exp-eval"
- Linked idea does not exist: skip idea update, only update claim, note in report
- Review LLM unavailable: fall back to Claude single-model verdict, note "single-model verdict, cross-model verification unavailable" in report, suggest user confirm later
- Claim was modified by another experiment: read the latest state, make adjustments based on current confidence (do not overwrite other experiments' contributions)
- Results data missing: if the experiment page's Results section is empty, prompt user to run
/exp-run {slug} --check first
Dependencies
Tools(via Bash)
python3 tools/research_wiki.py add-edge wiki/ ... — add graph edge
python3 tools/research_wiki.py rebuild-context-brief wiki/ — rebuild query_pack
python3 tools/research_wiki.py rebuild-open-questions wiki/ — rebuild gap_map
python3 tools/research_wiki.py log wiki/ "<message>" — append log
MCP Servers
mcp__llm-review__chat — Step 2 Review LLM independent verdict
Claude Code Native
Read — read wiki pages
Glob — find other experiments on the same claim
Edit — update wiki pages
Shared References
.claude/skills/shared-references/cross-model-review.md — Review LLM independence principle (required reading)
Called by
/research Stage 4 (verdict and iteration stage)
- User directly
1---2name: exp-eval3description: Experiment verdict gate — Review LLM independently judges results → 4 verdict paths → auto-update claims confidence, ideas status, graph edges4---56# /exp-eval78> Convert completed experiment results into wiki knowledge updates.9> Review LLM acts as an impartial judge (following cross-model-review), independently evaluating how experimental results affect the target claim.10> Four verdict paths: supported → claim↑ + idea validated / partially_supported → supplementary experiments /11> not_supported → claim↓ + idea failed / inconclusive → debug.12> Auto-updates claims confidence and evidence, ideas status, and graph edges.1314## Inputs1516- `experiment`: slug from wiki/experiments/ (status must be `completed`)17- `--auto` (optional): automatic mode — do not pause for user confirmation before wiki updates (used when called by /research)1819## Outputs2021- `wiki/claims/{slug}.md` — updated confidence, status, evidence list22- `wiki/ideas/{slug}.md` — updated status (validated/failed), pilot_result, failure_reason23- `wiki/experiments/{slug}.md` — `## Claim updates` section filled in24- `wiki/graph/edges.jsonl` — new supports/invalidates edges added25- `wiki/graph/context_brief.md` — rebuilt26- `wiki/graph/open_questions.md` — rebuilt27- `wiki/log.md` — appended log entry28- **VERDICT_REPORT** (printed to terminal) — verdict result, wiki change summary, next step suggestions2930## Wiki Interaction3132### Reads33- `wiki/experiments/{slug}.md` — experiment results: outcome, key_result, metrics, full Results section34- `wiki/claims/{target-claim}.md` — target claim current state: status, confidence, evidence list35- `wiki/ideas/{linked-idea}.md` — linked idea current state36- `wiki/experiments/*.md` — other experiments on the same claim (aggregate assessment)37- `wiki/graph/context_brief.md` — global context38- `.claude/skills/shared-references/cross-model-review.md` — reviewer independence principle3940### Writes41- `wiki/claims/{target-claim}.md` — update status, confidence, evidence, date_updated42- `wiki/ideas/{linked-idea}.md` — update status, pilot_result, failure_reason, date_resolved43- `wiki/experiments/{slug}.md` — fill in `## Claim updates` section44- `wiki/graph/edges.jsonl` — add supports or invalidates edges45- `wiki/graph/context_brief.md` — rebuild46- `wiki/graph/open_questions.md` — rebuild47- `wiki/log.md` — append operation log4849### Graph edges created50- `supports`: experiment → claim (experiment supports the claim) — verdict = supported or partially_supported51- `invalidates`: experiment → claim (experiment refutes the claim) — verdict = not_supported5253## Workflow5455**Precondition**:561. Confirm working directory is the wiki project root (directory containing `wiki/`, `raw/`, `tools/`)572. Confirm experiment status == `completed` (incomplete experiments cannot be evaluated)5859### Step 1: Load Context60611. **Read experiment page** `wiki/experiments/{slug}.md`:62 - outcome (succeeded/failed/inconclusive)63 - key_result64 - target_claim slug65 - linked_idea slug66 - metrics and full Results section67 - hypothesis68692. **Read target claim** `wiki/claims/{target-claim}.md`:70 - Current status and confidence71 - Existing evidence list72 - Conditions and scope73743. **Read linked idea** `wiki/ideas/{linked-idea}.md` (if it exists):75 - Current status76 - Hypothesis77784. **Load other experiments on the same claim**:79 - Glob: `wiki/experiments/*.md`, filter target_claim == same claim80 - Summarize existing experiment results (for aggregate claim confidence assessment)81825. **Read global context**:83 - `wiki/graph/context_brief.md`84856. **Read cross-model-review.md**: confirm Review LLM independence principle8687### Step 2: Review LLM Verdict (Cross-Model Verdict)8889**Follow cross-model-review.md**: do not send Claude's pre-judgment to Review LLM.9091```92mcp__llm-review__chat:93 system: "You are an impartial scientific judge evaluating whether experimental94 results support or refute a research claim. Be rigorous and objective.95 Consider: statistical significance, effect size, experimental validity,96 potential confounds, and whether the results generalize beyond the97 specific setup tested."98 message: |99 ## Claim Under Test100 Title: {claim title}101 Statement: {claim statement from ## Statement section}102 Current status: {status}103 Current confidence: {confidence}104 Conditions: {conditions and scope}105106 ## Experiment107 Title: {experiment title}108 Hypothesis: {hypothesis}109 Setup: {model, dataset, hardware, framework}110 Metrics: {metrics list}111112 ## Results113 {full Results section from experiment page}114115 ## Key Finding116 {key_result}117118 ## Other Experiments on This Claim119 {summary of other experiments' outcomes on the same claim, if any}120121 ## Your Task122 Provide your verdict:123 1. **Verdict**: One of: supported / partially_supported / not_supported / inconclusive124 2. **Confidence adjustment**: Suggest new confidence value (0.0-1.0) with reasoning125 3. **Evidence strength**: weak / moderate / strong126 4. **Key reasoning**: 2-3 sentences explaining your verdict127 5. **Concerns**: Any methodological concerns or limitations128 6. **Suggested next steps**: What would strengthen or clarify this result?129```130131Record Review LLM's verdict.132133### Step 3: Claude Synthesis1341351. **Form Claude's independent verdict** (after reading Review LLM's verdict, Claude also analyzes independently):136 - Based on experimental results, claim context, and aggregate evidence from other experiments137 - Form Claude's own verdict and confidence suggestion1381392. **Synthesize both verdicts** (follow cross-model-review.md composing rules):140 - **Both agree** (same verdict): use that verdict, average the confidence, high certainty141 - **Both disagree**:142 - Explicitly flag the disagreement143 - Take the more conservative verdict (supported > partially_supported > not_supported)144 - Use the lower confidence value145 - Detail the disagreement reason in the report146 - **Fatal findings take priority**: if either party finds a methodological issue (data leakage, unfair comparison), that finding takes precedence1471483. **Determine final verdict**: verdict + new_confidence + evidence_strength149150### Step 4: Update Wiki Based on Verdict151152**If `--auto` is not set**: display verdict and planned changes first, wait for user confirmation.153154#### Path A: SUPPORTED (experiment supports claim)1551561. **Update claim**:157 - confidence: ↑ adjust to new value (typically +0.1~0.3)158 - status: adjust based on new confidence159 - confidence >= 0.7 → `supported`160 - confidence 0.4–0.7 → `weakly_supported`161 - evidence: append new entry `{source: experiment-slug, type: supports, strength: strong/moderate, detail: key_result}`162 - date_updated: today's date1631642. **Update idea** (if it exists and status is in_progress/tested):165 - If all linked claims are supported/weakly_supported:166 - status: `validated`167 - pilot_result: key_result summary168 - date_resolved: today's date1691703. **Add graph edge**:171 ```bash172 python3 tools/research_wiki.py add-edge wiki/ \173 --from "experiments/{slug}" --to "claims/{target-claim}" \174 --type supports --evidence "{key_result}"175 ```1761774. **Suggest next steps**: `/paper-plan` or continue ablation/robustness experiments178179#### Path B: PARTIALLY_SUPPORTED (partial support)1801811. **Update claim**:182 - confidence: minor adjustment (+0.05~0.15)183 - evidence: append `{type: supports, strength: weak, detail: ...}`184 - date_updated: today's date1851862. **Add graph edge**:187 ```bash188 python3 tools/research_wiki.py add-edge wiki/ \189 --from "experiments/{slug}" --to "claims/{target-claim}" \190 --type supports --evidence "Partially supported: {limitation}"191 ```1921933. **Suggest supplementary experiments**:194 - Specify what evidence is missing195 - Suggest using `/exp-design` to design supplementary experiments196 - If Review LLM-flagged concerns are addressable by experiment, suggest concrete experiment direction1971984. **Idea status unchanged**: keep in_progress, wait for more evidence199200#### Path C: NOT_SUPPORTED (experiment does not support claim)2012021. **Update claim**:203 - confidence: ↓ significantly lower (typically -0.2~0.4)204 - status: if confidence < 0.3 → `challenged`205 - evidence: append `{type: invalidates, strength: strong/moderate, detail: ...}`206 - date_updated: today's date2072082. **Update idea** (if it exists):209 - status: `failed`210 - failure_reason: specific reason for failure (extracted from experiment results and Review LLM analysis)211 - date_resolved: today's date212 - Note: failure_reason is anti-repetition memory — must be written clearly, explaining why it failed2132143. **Add graph edge**:215 ```bash216 python3 tools/research_wiki.py add-edge wiki/ \217 --from "experiments/{slug}" --to "claims/{target-claim}" \218 --type invalidates --evidence "{failure_reason}"219 ```2202214. **Suggest next steps**:222 - Analyze the failure reason223 - Consider pivoting (new idea addressing the same gap while avoiding the known failure)224 - Suggest `/ideate` to generate alternatives225226#### Path D: INCONCLUSIVE (results are uncertain)2272281. **Do not modify claim status/confidence**: insufficient evidence to make a judgment2292302. **Update experiment page**: outcome is already inconclusive (set by /exp-run)2312323. **Suggest debugging**:233 - Data issue? Implementation bug? Wrong metric?234 - Too much variance? More seeds needed?235 - Experiment setup not aligned with claim?2362374. **Idea status unchanged**: keep current status238239#### All Paths (common steps)2402411. **Fill in `## Claim updates` section of the experiment page**:242 ```markdown243 ## Claim updates244 - **Verdict**: {supported/partially_supported/not_supported/inconclusive}245 - **Claim**: [[{target-claim}]] confidence {old} → {new}246 - **Judge agreement**: {Claude and Review LLM agreed / disagreed on ...}247 - **Date**: YYYY-MM-DD248 ```2492502. **Update index.md** (if claim status changed)2512523. **Rebuild derived data**:253 ```bash254 python3 tools/research_wiki.py rebuild-context-brief wiki/255 python3 tools/research_wiki.py rebuild-open-questions wiki/256 ```2572584. **Append log**:259 ```bash260 python3 tools/research_wiki.py log wiki/ \261 "exp-eval | {slug} → {target-claim} | verdict: {verdict} | confidence: {old}→{new}"262 ```2632645. **Print VERDICT_REPORT to terminal**:265 ```markdown266 # Verdict Report: {experiment title}267268 ## Verdict: {SUPPORTED / PARTIALLY_SUPPORTED / NOT_SUPPORTED / INCONCLUSIVE}269270 ## Judge Assessment271 | | Claude | Review LLM | Final |272 |---|-------|------|-------|273 | Verdict | {verdict} | {verdict} | {verdict} |274 | Confidence | {value} | {value} | {value} |275 | Evidence strength | {strength} | {strength} | {strength} |276277 ## Key Reasoning278 {2-3 sentences from Review LLM + Claude synthesis}279280 ## Wiki Changes281 | Entity | Field | Before | After |282 |--------|-------|--------|-------|283 | claims/{slug} | confidence | {old} | {new} |284 | claims/{slug} | status | {old} | {new} |285 | ideas/{slug} | status | {old} | {new} |286287 ## Graph Edges Added288 - experiments/{slug} → claims/{target} (supports/invalidates)289290 ## Concerns291 {methodological concerns from Review LLM}292293 ## Next Steps294 - {path-specific suggestions}295296 ## Wiki Growth297 | Metric | Before | After | Delta |298 |--------|--------|-------|-------|299 | Claims updated | — | — | {N} |300 | Edges | {before} | {after} | +{delta} |301 | Maturity | {level} | {level} | {unchanged/upgraded} |302 (Data from comparing `python3 tools/research_wiki.py maturity wiki/ --json` calls at the start of Step 1 and end of Step 4.)303 ```304305## Constraints306307- **Only process completed experiments**: experiments with status != completed are refused; prompt user to use /exp-run first308- **Reviewer independence**: strictly follow cross-model-review.md — do not send Claude's pre-judgment to Review LLM309- **Confidence range 0.0–1.0**: updated confidence must not exceed this range310- **failure_reason must be specific**: the not_supported path's failure_reason cannot be vague (e.g. "experiment failed") — must state the concrete reason311- **Do not delete claims**: even when not_supported, only challenge or lower confidence; do not delete the claim page. In extreme cases (multiple consistent refutations, confidence → 0), set status to deprecated rather than deleting312- **Graph edges via tools/research_wiki.py**: do not manually edit edges.jsonl313- **Conservative principle**: when Claude and Review LLM verdicts disagree, use the more conservative verdict314- **Idea status advances only forward**: proposed → in_progress → tested → validated/failed, irreversible315- **Assess claim using all experiments**: consider not just the current experiment but also other experiments on the same claim316317## Error Handling318319- **Experiment not found**: prompt user to check slug, list candidates in wiki/experiments/ with status=completed320- **Experiment not completed**: report status, suggest running `/exp-run {slug}` or `/exp-run {slug} --check`321- **Target claim does not exist**: create new claim page (status: proposed, confidence: 0.3), note "auto-created by exp-eval"322- **Linked idea does not exist**: skip idea update, only update claim, note in report323- **Review LLM unavailable**: fall back to Claude single-model verdict, note "single-model verdict, cross-model verification unavailable" in report, suggest user confirm later324- **Claim was modified by another experiment**: read the latest state, make adjustments based on current confidence (do not overwrite other experiments' contributions)325- **Results data missing**: if the experiment page's Results section is empty, prompt user to run `/exp-run {slug} --check` first326327## Dependencies328329### Tools(via Bash)330- `python3 tools/research_wiki.py add-edge wiki/ ...` — add graph edge331- `python3 tools/research_wiki.py rebuild-context-brief wiki/` — rebuild query_pack332- `python3 tools/research_wiki.py rebuild-open-questions wiki/` — rebuild gap_map333- `python3 tools/research_wiki.py log wiki/ "<message>"` — append log334335### MCP Servers336- `mcp__llm-review__chat` — Step 2 Review LLM independent verdict337338### Claude Code Native339- `Read` — read wiki pages340- `Glob` — find other experiments on the same claim341- `Edit` — update wiki pages342343### Shared References344- `.claude/skills/shared-references/cross-model-review.md` — Review LLM independence principle (required reading)345346### Called by347- `/research` Stage 4 (verdict and iteration stage)348- User directly