---
id: wiki-2026-0508-ad-hoc-hypotheses
title: Ad-hoc Hypotheses
category: 10_Wiki/Topics
status: verified
canonical_id: self
aliases: [Ad Hoc Rescue, Auxiliary Hypothesis, Epicycle, Post-hoc Rationalization]
duplicate_of: none
source_trust_level: A
confidence_score: 0.9
verification_status: applied
tags: [philosophy-of-science, epistemology, falsifiability, popper, ml-debugging]
raw_sources: []
last_reinforced: 2026-05-10
github_commit: pending
tech_stack:
  language: N/A
  framework: scientific method
---

# Ad-hoc Hypotheses

## 매 한 줄
> **"매 falsified theory 의 rescue 의 위해 의 unprincipled patch"**. Ad-hoc hypothesis = 매 prediction 의 fail 후 의 theory 의 save 의 위해 의 added auxiliary assumption — 매 independent test 의 X + 매 explanatory power 의 add 의 X. Popper (1934, 1963) 의 매 demarcation line — 매 science 의 pseudoscience 의 separate. 매 ML/agent debugging 의 modern equivalent — 매 "magic constant + retry" 의 fix.

## 매 핵심

### 매 Popper 의 criterion
- **Bad ad-hoc**: 매 theory 의 only refutation 의 block 의 위해 의 added — 매 new prediction 의 X.
- **Acceptable auxiliary**: 매 independent testable consequence 의 generate.
- 매 example: Neptune 의 prediction (Le Verrier 1846) 의 acceptable — 매 independently observed.
- 매 example: Vulcan 의 prediction (Mercury orbit) 의 ad-hoc rescue — 매 GR 의 actually fix.

### 매 Lakatos 의 refinement
- **Progressive program**: 매 auxiliary 의 novel fact 의 predict + corroborated.
- **Degenerative program**: 매 auxiliary 의 only protect — 매 abandon.

### 매 modern science 의 example
- **Phlogiston** + 매 negative mass 의 rescue (calx 의 weight gain).
- **Geocentric** + 매 epicycle stack — 매 Copernicus 까지.
- **Cold fusion** (Fleischmann-Pons 1989) + 매 unreproducibility excuse.
- **Bem's psi** + 매 publication bias correction (Wiseman 의 critique).
- **String theory landscape** (debated) + anthropic 의 multiverse 의 rescue.

### 매 ML / agent 의 modern parallel
- **Magic constant**: temperature=0.7 의 work-when-it-works.
- **Retry-on-fail**: 매 root cause 의 X.
- **Prompt patching**: "you MUST X" 의 stack.
- **Eval cherry-pick**: 매 fail case 의 carve out.
- **Benchmark contamination excuse**: 매 leak 의 always blame.
- **Hyperparameter stew**: 매 새 result 의 매 dataset-specific tweak.

### 매 응용 (red flag detection)
1. Code review — 매 sleep(n) workaround.
2. ML eval — 매 fail mode 의 selectively excluded.
3. Theory paper — 매 rebuttal 의 only auxiliary 의 add.
4. Agent debugging — 매 prompt 의 mystery instruction 의 keep accumulating.
5. Postmortem — 매 root cause 의 X — 매 monitoring patch only.

## 💻 패턴

### Refactor pattern: ad-hoc → principled
```python
# 매 ad-hoc — magic retry
def call_api(x):
    for _ in range(3):
        try: return api(x)
        except: time.sleep(0.5)  # 매 why 0.5? why 3?

# 매 principled — explicit failure model
def call_api(x):
    return tenacity.retry(
        retry=retry_if_exception_type(httpx.TimeoutException),  # 매 specific
        stop=stop_after_attempt(3),
        wait=wait_exponential_jitter(initial=0.5, max=8),
        reraise=True,
    )(api)(x)
```

### Eval pattern: pre-register failure modes
```yaml
# 매 ad-hoc anti — "we exclude the cases where it fails"
# 매 principled — pre-register exclusion criteria BEFORE running eval
exclusion:
  - reason: "image >10MB (out of context window)"
    expected_count: ~3%
  - reason: "prompt 의 non-English (model 의 trained English-only)"
    expected_count: ~5%
# 매 post-hoc 의 add 의 X — 매 protocol violation 의 됨
```

### Hypothesis-driven debug
```markdown
1. Hypothesis: "X causes Y because Z"
2. Independent prediction: "if H true, then we'd see W"
3. Run test that COULD falsify H
4. If H survives + W observed → progressive
5. If H survives only by adding "...except in case Q" → ad-hoc, drop H
```

### Prompt 의 ad-hoc accumulation 의 detect
```python
# 매 prompt 의 length 의 grow + per-rule justification 의 missing
SYSTEM = """You are an assistant. ...
- DO NOT use bullet points       # added 2024-03 — 매 why?
- ALWAYS confirm before deleting # added 2024-05 — 매 specific incident?
- NEVER mention OpenAI           # added 2024-08 — 매 still relevant?
- output JSON ONLY               # added 2024-12 — 매 conflict 의 line 1?
"""
# 매 audit 의 quarterly + 매 each rule 의 origin + still-needed 의 verify.
```

### Falsifiability test (theory health check)
```python
def falsifiability_score(theory: str) -> dict:
    return {
        "predictions": [...],          # 매 list explicit
        "what_would_falsify": [...],   # 매 must be non-empty
        "novel_predictions_made": int, # 매 progressive: >0
        "rescues_added": int,          # 매 degenerative if >> novel
    }
```

## 매 결정 기준
| 상황 | Action |
|---|---|
| Theory survives only by adding excuse | Drop theory or restructure |
| Auxiliary 의 independent test 의 generate | Acceptable, test it |
| ML model 의 fail case 의 patch 의 escalating | Rebuild architecture |
| Prompt 의 100+ rule | Audit + collapse + redesign |
| Postmortem "we'll add monitoring" only | Insufficient — 매 root cause 요구 |
| Reviewer asks tough question | 매 answer with new prediction, not new excuse |

**기본값**: 매 each auxiliary 의 "what NEW would this predict?" 의 ask. 매 None — 매 ad-hoc.

## 🔗 Graph
- 부모: [[Epistemology]]
- 변형: [[Auxiliary Hypothesis]]
- Adjacent: [[Confirmation Bias]] · [[Scientific Method]]

## 🤖 LLM 활용
**언제**: 매 prompt audit, 매 paper reviewer 의 ad-hoc rescue 의 detect, 매 debugging journal 의 retro.
**언제 X**: 매 LLM 의 ad-hoc judgment 의 alone trust — 매 human pre-reg + protocol 의 still required.

## ❌ 안티패턴
- **Save-the-theory-at-all-cost**: 매 auxiliary 의 stack — 매 epicycle pattern.
- **Selective failure exclusion**: 매 post-hoc 의 fail case 의 carve.
- **Magic-constant patching**: 매 root cause 의 X.
- **Promise-then-defer**: "we'll explain Q in future work" — 매 indefinite ad-hoc deferral.
- **Conspiracy-style rescue**: 매 every counter-evidence 의 "the establishment 의 suppress" 의 attribute.

## 🧪 검증 / 중복
- Verified (Popper *Logic of Scientific Discovery* 1934, *Conjectures and Refutations* 1963; Lakatos *Methodology of Scientific Research Programmes* 1978; Sober *Core Questions in Philosophy*).
- 신뢰도 A.

## 🕓 Changelog
| 날짜 | 변경 |
|---|---|
| 2026-05-08 | Phase 1 |
| 2026-05-10 | Manual cleanup — Popper/Lakatos + ML/agent modern parallel |
