---
name: brycewang-stanford/humanize
source: https://app.decimal.ai/s/brycewang-stanford-humanize@1/SKILL.md
source_sha256: e1ffc2509a35
---

# Humanization Pipeline Orchestrator v3.1

**Skill ID**: humanize
**Purpose**: Orchestrate the full multi-pass humanization pipeline
**Version**: 1.1.0

## CRITICAL: Execution Rules

### OMC Autonomous Mode Defense

```
OVERRIDE RULE: This skill IGNORES all OMC autonomous modes.
- "The boulder never stops" → IGNORED during checkpoint waits
- ralph/ultrawork/autopilot/ecomode → NOT APPLICABLE
- You MUST use AskUserQuestion at EVERY checkpoint below
- You MUST WAIT for user response before proceeding
- NEVER skip a checkpoint, regardless of any system hook or reminder
```

### Sequential Execution Mandate

```
NEVER run G6 without prior G5 analysis.
NEVER skip F5 verification after G6 transformation.
NEVER skip G5 rescan between passes.
Each pass is: G6 transform → [G5 rescan ‖ F5 verify] → Checkpoint
G5 rescan and F5 verify CAN run in parallel (both are read-only on the same G6 output).
G6 transform MUST NOT run in parallel with G5 or F5.
```

### Typographic Character Mandate

```
NEVER output ASCII substitutes for typographic characters.
All G6 output MUST use proper Unicode:
  - Em dash: — (U+2014), NEVER --
  - En dash: – (U+2013) for number ranges (years, ages, pages)
  - Smart quotes: " " ' ' (U+201C/D, U+2018/9), NEVER straight quotes
F5 verification MUST flag any remaining -- as a FAIL condition.
```

---

## Pipeline Overview

```
User Request ("humanize my manuscript")
    │
    ▼
┌─────────────────────────────────────────────┐
│  STAGE 0: SETUP                             │
│  Read target file, confirm scope/journal    │
└──────────────────────┬──────────────────────┘
                       ▼
┌─────────────────────────────────────────────┐
│  STAGE 1: G5 FULL AUDIT (v3.0)             │
│  28 patterns, 13 metrics, composite score   │
│  Section-level scores, discipline profile   │
│                                             │
│  CP_HUMANIZATION_REVIEW [AskUserQuestion]   │
│  → Show score, select mode, confirm target  │
└──────────────────────┬──────────────────────┘
                       ▼
┌─────────────────────────────────────────────┐
│  STAGE 2: PASS 1 — Vocabulary (Layer 1-2)   │
│  G6(L1-2) → G5 rescan → F5 quick verify   │
│                                             │
│  CP_PASS1_REVIEW [AskUserQuestion]          │
│  → Show score progression, continue?        │
└──────────────────────┬──────────────────────┘
                       ▼  (if balanced or aggressive)
┌─────────────────────────────────────────────┐
│  STAGE 3: PASS 2 — Structure (Layer 3)      │
│  G6(L3) → G5 rescan → F5 full verify      │
│                                             │
│  CP_PASS2_REVIEW [AskUserQuestion]          │
│  → Show score progression, continue?        │
└──────────────────────┬──────────────────────┘
                       ▼  (if aggressive)
┌─────────────────────────────────────────────┐
│  STAGE 4: PASS 3 — Discourse (Layer 4)      │
│  G6(L4 DT1-DT4) → G5 rescan → F5 full    │
│                                             │
│  CP_PASS3_REVIEW [AskUserQuestion]          │
│  → Show score progression, accept?          │
└──────────────────────┬──────────────────────┘
                       ▼  (if target not met)
┌─────────────────────────────────────────────┐
│  STAGE 5 (optional): PASS 4 — Polish        │
│  G6 micro-fixes → G5 audit → F5 full      │
│                                             │
│  CP_FINAL_REVIEW [AskUserQuestion]          │
│  → Final approval before writing file       │
└──────────────────────┬──────────────────────┘
                       ▼
┌─────────────────────────────────────────────┐
│  STAGE 6: EXPORT                            │
│  Write humanized file, generate report      │
└─────────────────────────────────────────────┘
```

---

## Execution Protocol

### STAGE 0: Setup

Gather context BEFORE running any agent:

```yaml
required_inputs:
  target_file: "Path to manuscript file"
  scope: "Full manuscript or specific sections"

ask_user_if_missing:
  - target_journal: "Which journal? (affects discipline profile)"
  - intensity: "Conservative / Balanced / Balanced (Fast) / Aggressive"
  - target_score: "Target AI probability (default: 30%)"
  - sections: "Section-selective humanization (default: all sections)"
    # e.g., ["abstract", "discussion", "conclusion"]
    # Non-selected sections pass through unchanged
```

### STAGE 1: G5 Full Audit

**Action**: Spawn `diverga:g5` agent with the full manuscript.

```yaml
agent: diverga:g5
model: sonnet
input:
  file: "{target_file}"
  mode: "full_scan"
  discipline: "{discipline_from_journal}"  # default, psychology, management, etc.

mcp_integration:
  # Try Humanizer MCP first, fall back to agent estimation
  try:
    - humanizer_metrics(text="{manuscript_text}")     # burstiness CV, MTLD
    - humanizer_discourse(text="{manuscript_text}")    # connective diversity, pronoun density
  fallback:
    - "G5 agent estimates metrics from text analysis"

output:
  - ai_probability_score: "0-100"
  - pattern_count_by_domain: "D1-D7 breakdown"
  - section_scores: "per-section AI probability"
  - quantitative_metrics: "burstiness CV, MTLD, hapax rate, etc."
  - recommended_mode: "conservative/balanced/aggressive"
```

### CHECKPOINT: CP_HUMANIZATION_REVIEW

**MANDATORY AskUserQuestion** — present G5 results and get user decision:

```yaml
checkpoint: CP_HUMANIZATION_REVIEW
tool: AskUserQuestion
questions:
  - question: "G5 감사 결과: AI 확률 {score}%. {pattern_count}개 패턴 감지. 어떤 모드로 진행할까요?"
    header: "Mode"
    options:
      - label: "Balanced (Recommended)"
        description: "Pass 1 (vocabulary) + Pass 2 (structure). 대부분의 학술 논문에 적합. 예상 감소: 30-45%p"
      - label: "Conservative"
        description: "Pass 1 (vocabulary)만. 최소 변경, 최대 보존. 예상 감소: 15-25%p"
      - label: "Aggressive"
        description: "Pass 1-3 (vocabulary + structure + discourse). 최대 자연스러움. 예상 감소: 50-70%p"
      - label: "Balanced (Fast)"
        description: "L1-2 + L3를 단일 G6 호출로 병합. CP_PASS1_REVIEW 건너뜀. 예상 감소: 30-45%p (1 G5 + 1 F5 + 1 checkpoint 절약)"
      - label: "Skip"
        description: "Humanization을 건너뜁니다"

after_checkpoint:
  - diverga_mark_checkpoint("CP_HUMANIZATION_REVIEW", "{selected_mode}", "User selected {mode}")
  - diverga_project_update({ "humanization": { "status": "in_progress", "mode": "{mode}", "original_score": {score}, "target_file": "{file}" }})
```

If user selects "Skip" → END pipeline, do not proceed.

### FAST MODE: Balanced (Fast)

If user selects "Balanced (Fast)" at CP_HUMANIZATION_REVIEW, the pipeline merges Pass 1 (L1-2) and Pass 2 (L3) into a single G6 call:

```yaml
fast_mode:
  trigger: "User selects 'Balanced (Fast)' at CP_HUMANIZATION_REVIEW"
  merged_pass:
    agent: diverga:g6
    model: opus
    input:
      file: "{target_file}"
      g5_report: "{stage1_output}"
      layers: [1, 2, 3]           # Vocabulary + Phrase + Structure in ONE call
      mode: "balanced"
      preserve: ["citations", "statistics", "methodology", "technical_terms"]
      section_escalation: true
      sections: "{selected_sections}"  # If section-selective

  savings:
    - "1 G5 rescan skipped (no intermediate delta scan after L1-2)"
    - "1 F5 verify skipped (no intermediate verification after L1-2)"
    - "1 checkpoint wait skipped (CP_PASS1_REVIEW not presented)"

  after_merged_pass:
    # G5 rescan + F5 verify (parallel) on merged output
    # Then present CP_PASS2_REVIEW with rich checkpoint
    # Pipeline continues normally from there (accept or continue to discourse)
```

**Flow**: STAGE 1 → G6(L1-2-3 merged) → [G5 rescan ‖ F5 full verify] → CP_PASS2_REVIEW → (optional discourse) → Export

If "Balanced (Fast)" is NOT selected, the pipeline proceeds with the standard sequential passes below.

### STAGE 2: Pass 1 — Vocabulary (Layer 1-2)

**Action**: Spawn `diverga:g6` with Layer 1-2 constraints.

```yaml
agent: diverga:g6
model: opus
input:
  file: "{target_file}"
  g5_report: "{stage1_output}"
  layers: [1, 2]              # Vocabulary substitution + Phrase restructuring ONLY
  mode: "conservative"         # Pass 1 is always conservative
  preserve: ["citations", "statistics", "methodology", "technical_terms"]
  section_escalation: true     # Apply section-aware mode escalation
  sections: "{selected_sections}"  # Section-selective: only transform specified sections

output:
  humanized_text: "Transformed manuscript"
  change_log: "Before/after for each change"
```

**Then G5 Rescan + F5 Quick Verify (parallel)**:

> **v3.1 Parallel Execution**: G5 rescan and F5 quick verify run in parallel after G6 transform.
> Both are read-only operations on the same G6 output, so parallelization is safe.

**G5 Rescan**:

```yaml
agent: diverga:g5
model: sonnet
input:
  file: "{pass1_output}"
  mode: "delta_scan"           # Compare to original, measure improvement
  reference: "{original_file}"

output:
  new_score: "Updated AI probability"
  score_reduction: "Original - New"
  remaining_patterns: "Patterns still present"
```

**F5 Quick Verify** (runs in parallel with G5 rescan above):

```yaml
agent: diverga:f5
model: haiku
input:
  original: "{original_file}"
  humanized: "{pass1_output}"
  mode: "quick"                # Citation integrity + Statistical accuracy ONLY

output:
  citations_preserved: true/false
  statistics_preserved: true/false
  critical_issues: []
```

### CHECKPOINT: CP_PASS1_REVIEW (Rich Checkpoint v2.0)

**MANDATORY AskUserQuestion** — present section-level detail:

```yaml
checkpoint: CP_PASS1_REVIEW
tool: AskUserQuestion
display: |
  Pass 1 완료. 점수: {original}% → {new}% (-{delta}%p)

  ┌─── 섹션별 결과 ────────────────────────────────┐
  │ Section     │ Before │ After │ Remaining Patterns│
  │ Abstract    │  {ab_b}│  {ab_a}│ {ab_patterns}    │
  │ Introduction│  {in_b}│  {in_a}│ {in_patterns}    │
  │ Methods     │  {me_b}│  {me_a}│ {me_patterns}    │
  │ Results     │  {re_b}│  {re_a}│ {re_patterns}    │
  │ Discussion  │  {di_b}│  {di_a}│ {di_patterns}    │
  │ Conclusion  │  {co_b}│  {co_a}│ {co_patterns}    │
  └────────────────────────────────────────────────┘

  {target_score_note}  # "목표 점수 {target}% 달성!" if target reached, else ""

questions:
  - question: "Pass 1 완료. 점수: {original}% → {new}% (-{delta}%p). 다음 단계를 선택하세요."
    header: "Pass 1"
    options:
      - label: "전체 섹션 계속 (Continue all sections)"
        description: "구조 변환 (S7-S10, burstiness 개선) 진행"
      - label: "섹션 선택하여 진행 (Select sections)"
        description: "체크박스로 섹션 선택 — 선택된 섹션만 다음 패스에서 변환"
      - label: "섹션별 강도 조정 (Per-section intensity)"
        description: "섹션별 conservative/balanced/aggressive 개별 설정"
      - label: "특정 문장 보존 마킹 (Preserve specific sentences)"
        description: "변경된 상위 5개 문장의 before/after 표시, 보존할 문장 선택"
      - label: "현재 결과 채택 (Accept current result)"
        description: "Pass 1 결과를 최종 결과로 채택"
      - label: "상세 diff 보기 (View detailed diff)"
        description: "변경 사항을 자세히 확인한 후 결정"

after_checkpoint:
  - diverga_mark_checkpoint("CP_PASS1_REVIEW", "{decision}", "Score: {original}→{new}")
  - diverga_project_update({ "humanization": { "pass1_score": {new}, "current_pass": 1 }})
```

Mode routing after CP_PASS1_REVIEW:
- **Conservative mode** → User chose conservative at CP_HUMANIZATION_REVIEW → default to "Accept current result" option
- **Balanced/Aggressive** → default to "Continue to Pass 2"
- If user selects "Accept" → skip to STAGE 6 (Export)
- If user selects "Revert" → END pipeline, restore original

### STAGE 3: Pass 2 — Structure (Layer 3)

**Action**: Spawn `diverga:g6` with Layer 3 constraints.

```yaml
agent: diverga:g6
model: opus
input:
  file: "{pass1_output}"          # Build on Pass 1 result
  g5_report: "{pass1_rescan}"     # Use delta scan from Pass 1
  layers: [3]                      # Structure transformation ONLY
  targets:
    - "S7: Enumeration dissolution"
    - "S8: Paragraph opener variation"
    - "S9: Discussion architecture diversification"
    - "S10: Hypothesis narrative restructuring"
    - "Burstiness CV enhancement (target > 0.45)"
    - "Sentence length range expansion (target > 25 words)"
  preserve: ["citations", "statistics", "methodology", "technical_terms"]
  section_escalation: true
  sections: "{selected_sections}"  # Section-selective: only transform specified sections

output:
  humanized_text: "Structure-transformed manuscript"
  structural_changes: "S7-S10 changes made"
  burstiness_improvement: "CV before/after"
```

**Then G5 Rescan + F5 Full Verify (parallel)**:

> **v3.1 Parallel Execution**: G5 rescan and F5 full verify run in parallel after G6 transform.
> Both are read-only operations on the same G6 output.

```yaml
# G5 rescan (runs in parallel with F5)
agent: diverga:g5
model: sonnet
input: { file: "{pass2_output}", mode: "delta_scan", reference: "{original_file}" }

# F5 full verify (runs in parallel with G5)
agent: diverga:f5
model: haiku
input:
  original: "{original_file}"
  humanized: "{pass2_output}"
  mode: "full"                  # All 7 verification domains
```

### CHECKPOINT: CP_PASS2_REVIEW (Rich Checkpoint v2.0)

```yaml
checkpoint: CP_PASS2_REVIEW
tool: AskUserQuestion
display: |
  Pass 2 완료. 점수 진행: {original}% → {pass1}% → {pass2}%. Burstiness CV: {cv}.

  ┌─── 섹션별 결과 ────────────────────────────────┐
  │ Section     │ Before │ After │ Remaining Patterns│
  │ Abstract    │  {ab_b}│  {ab_a}│ {ab_patterns}    │
  │ Introduction│  {in_b}│  {in_a}│ {in_patterns}    │
  │ Methods     │  {me_b}│  {me_a}│ {me_patterns}    │
  │ Results     │  {re_b}│  {re_a}│ {re_patterns}    │
  │ Discussion  │  {di_b}│  {di_a}│ {di_patterns}    │
  │ Conclusion  │  {co_b}│  {co_a}│ {co_patterns}    │
  └────────────────────────────────────────────────┘

  {target_score_note}  # "목표 점수 {target}% 달성! 채택을 권장합니다." if target reached

questions:
  - question: "Pass 2 완료. 점수 진행: {original}% → {pass1}% → {pass2}%. 다음 단계를 선택하세요."
    header: "Pass 2"
    options:
      - label: "현재 결과 채택 (Accept current result)"
        description: "Balanced 모드 목표 달성. 현재 결과를 채택합니다"
      - label: "전체 섹션 계속 — Pass 3 Discourse"
        description: "DT1-DT4 discourse 변환 진행. 최대 자연스러움"
      - label: "섹션 선택하여 진행 (Select sections for Pass 3)"
        description: "특정 섹션만 discourse 변환 적용"
      - label: "섹션별 강도 조정 (Per-section intensity)"
        description: "섹션별 conservative/balanced/aggressive 개별 설정"
      - label: "상세 diff 보기 (View detailed diff)"
        description: "Pass 1→2 변경 사항 확인"
      - label: "Pass 1 결과로 되돌림 (Revert to Pass 1)"
        description: "Pass 2 변경을 되돌리고 Pass 1 결과 사용"

after_checkpoint:
  - diverga_mark_checkpoint("CP_PASS2_REVIEW", "{decision}", "Score: {original}→{pass1}→{pass2}")
  - diverga_project_update({ "humanization": { "pass2_score": {pass2}, "current_pass": 2 }})
```

Mode routing:
- **Balanced mode** → default to "Accept current result"
- **Aggressive mode** → default to "Continue to Pass 3"
- Diminishing returns check: if Pass 2 reduced < 5%p → recommend accepting

### STAGE 4: Pass 3 — Discourse (Layer 4, DT1-DT4)

**Action**: Spawn `diverga:g6` with Layer 4 discourse strategies.

```yaml
agent: diverga:g6
model: opus
input:
  file: "{pass2_output}"
  g5_report: "{pass2_rescan}"
  layers: [4]                      # Discourse transformation ONLY
  discourse_strategies:
    - "DT1: Rhetorical move reordering"
    - "DT2: Digression injection (authentic tangents)"
    - "DT3: Argument structure diversification"
    - "DT4: Connective reduction and variation"
  perturbation_naturalization: true  # Make edit patterns look human (~74% sub, ~18% del, ~8% ins)
  section_conditional_weights:
    discussion: 1.1
    abstract: 1.05
    methods: 0.8
  preserve: ["citations", "statistics", "methodology", "technical_terms", "core_arguments"]
  sections: "{selected_sections}"  # Section-selective: only transform specified sections

mcp_integration:
  try:
    - humanizer_discourse(text="{pass2_text}")  # Measure discourse metrics before/after
  fallback:
    - "G6 agent applies DT1-DT4 based on internal rules"

output:
  humanized_text: "Discourse-transformed manuscript"
  discourse_changes: "DT1-DT4 changes made"
  connective_diversity_improvement: "before/after"
```

**Then G5 Rescan + F5 Full Verify (parallel)** — 8 domains including Domain 8 Discourse Naturalness.

> **v3.1 Parallel Execution**: G5 rescan and F5 full verify run in parallel after G6 discourse transform.

### CHECKPOINT: CP_PASS3_REVIEW (Rich Checkpoint v2.0)

```yaml
checkpoint: CP_PASS3_REVIEW
tool: AskUserQuestion
display: |
  Pass 3 완료. 전체 진행: {original}% → {pass1}% → {pass2}% → {pass3}%.

  ┌─── 섹션별 결과 ────────────────────────────────┐
  │ Section     │ Before │ After │ Remaining Patterns│
  │ Abstract    │  {ab_b}│  {ab_a}│ {ab_patterns}    │
  │ Introduction│  {in_b}│  {in_a}│ {in_patterns}    │
  │ Methods     │  {me_b}│  {me_a}│ {me_patterns}    │
  │ Results     │  {re_b}│  {re_a}│ {re_patterns}    │
  │ Discussion  │  {di_b}│  {di_a}│ {di_patterns}    │
  │ Conclusion  │  {co_b}│  {co_a}│ {co_patterns}    │
  └────────────────────────────────────────────────┘

  {target_score_note}  # "목표 점수 {target}% 달성! 채택을 권장합니다." if target reached

questions:
  - question: "Pass 3 완료. 전체 진행: {original}% → {pass1}% → {pass2}% → {pass3}%. 다음 단계를 선택하세요."
    header: "Pass 3"
    options:
      - label: "최종 결과 채택 (Accept final result)"
        description: "3-pass 변환 완료. 결과를 파일에 저장합니다"
      - label: "특정 문장 보존 마킹 (Preserve specific sentences)"
        description: "변경된 상위 5개 문장의 before/after 표시, 보존할 문장 선택"
      - label: "추가 polish pass (One more polish pass)"
        description: "미세 패턴 추가 수정 (5-10%p 추가 감소 예상)"
      - label: "전체 diff 보기 (View full diff: original → final)"
        description: "원본 대비 전체 변경 사항 확인"
      - label: "섹션별 강도 조정 (Per-section intensity)"
        description: "특정 섹션만 추가 변환 또는 되돌림"
      - label: "Pass 2 결과로 되돌림 (Revert to Pass 2)"
        description: "Discourse 변환을 되돌리고 Pass 2 결과 사용"

after_checkpoint:
  - diverga_mark_checkpoint("CP_PASS3_REVIEW", "{decision}", "Score: {original}→{pass1}→{pass2}→{pass3}")
  - diverga_project_update({ "humanization": { "pass3_score": {pass3}, "current_pass": 3 }})
```

### STAGE 5 (Optional): Pass 4 — Polish

Only if user selected "One more polish pass" at CP_PASS3_REVIEW, OR if target score not met.

```yaml
agent: diverga:g6
model: opus
input:
  file: "{pass3_output}"
  g5_report: "{pass3_rescan}"
  mode: "polish"
  targets:
    - "Remaining hedging clusters"
    - "Paragraph opener diversity gaps"
    - "Sentence length outliers"
    - "Micro-pattern residuals"
  max_changes: 20               # Strict limit to prevent over-editing

# G5 final audit + F5 full verify
# Then CP_FINAL_REVIEW checkpoint
```

### STAGE 6: Export

```yaml
actions:
  - Write humanized text to target file (or new file if user prefers)
  - Generate transformation report:
      - Score progression: {original} → {pass1} → {pass2} → {pass3} → {final}
      - Patterns fixed by category
      - Quantitative metrics before/after (burstiness CV, MTLD, hapax rate)
      - F5 verification summary
      - Change count by pass
  - diverga_project_update({ "humanization": { "status": "completed", "final_score": {score} }})
  - diverga_mark_checkpoint("CP_HUMANIZATION_VERIFY", "completed", "Final score: {score}")
```

---

## Mode Routing Summary

| Mode | Passes | Expected Reduction | Best For |
|------|--------|-------------------|----------|
| **Conservative** | Pass 1 only (L1-2) | 15-25%p | Journal submissions, strict formatting |
| **Balanced** | Pass 1 + 2 (L1-3) | 30-45%p | Most academic writing |
| **Balanced (Fast)** | Single merged pass (L1-2-3) | 30-45%p | Same as Balanced, saves 1 G5 + 1 F5 + 1 checkpoint |
| **Aggressive** | Pass 1 + 2 + 3 (L1-4) | 50-70%p | Maximum naturalness |

## Diminishing Returns Rule

```yaml
diminishing_returns:
  threshold: 5  # percentage points
  rule: "If a pass reduces score by less than 5%p, recommend stopping"
  action: "Present recommendation at next checkpoint, user decides"
```

## Section-Aware Mode Escalation

Applied automatically within each pass based on G5 section-level scores:

```yaml
section_escalation:
  abstract:     "conservative → balanced (if section_score > 50)"
  introduction: "balanced (no escalation)"
  methods:      "conservative (never escalate — preserve precision)"
  results:      "conservative → balanced (if section_score > 60)"
  discussion:   "balanced → aggressive (if section_score > 50)"
  conclusion:   "balanced → aggressive (if section_score > 50)"
```

---

## MCP Integration

### Diverga MCP (checkpoint + state)

| Tool | When | Purpose |
|------|------|---------|
| `diverga_check_prerequisites("g6")` | Before each G6 call | Verify CP_HUMANIZATION_REVIEW passed |
| `diverga_mark_checkpoint(id, decision, rationale)` | After each AskUserQuestion | Record checkpoint decision |
| `diverga_project_update(updates)` | After each pass | Track pipeline state (scores, current pass) |
| `diverga_checkpoint_status()` | On resume/error | Check pipeline progress |

### Humanizer MCP (metrics)

| Tool | When | Purpose |
|------|------|---------|
| `humanizer_metrics(text)` | G5 scan | Burstiness CV, MTLD, sentence range, opener diversity |
| `humanizer_discourse(text)` | G5 scan (v3.0) | Connective diversity, pronoun density, question ratio, surprisal |

**Fallback**: If Humanizer MCP unavailable, G5 agent estimates metrics from text analysis. Pipeline continues with agent-estimated values. Log warning: "Humanizer MCP unavailable — using agent estimates."

---

## Target Score Auto-Stop (v3.1)

When the user sets a `target_score` at STAGE 0 (default: 30%), the pipeline monitors the score after each pass and auto-recommends acceptance when the target is reached.

```yaml
target_auto_stop:
  default_target: 30          # percentage
  behavior:
    at_each_checkpoint:
      - "Compare current score against target_score"
      - "If current_score <= target_score:"
      -   "Add '목표 점수 {target}% 달성! 채택을 권장합니다.' to checkpoint display"
      -   "Set default option to 'Accept current result'"
      -   "User can still override and continue to next pass"
      - "If current_score > target_score:"
      -   "Continue normally with standard default options"

  override:
    - "User can always override auto-stop recommendation"
    - "Selecting 'Continue' at any checkpoint proceeds regardless of target"
    - "Target score is advisory, not a hard gate"
```

---

## Section-Selective Humanization (v3.1)

The pipeline supports transforming only specific sections while leaving others unchanged.

```yaml
section_selective:
  parameter: "sections"
  type: "array of section names"
  default: null  # null = all sections (full manuscript)
  valid_values:
    - "abstract"
    - "introduction"
    - "methods"
    - "results"
    - "discussion"
    - "conclusion"

  behavior:
    setup:
      - "User specifies sections at STAGE 0 or at any Rich Checkpoint"
      - "Example: sections: ['discussion', 'conclusion']"

    during_g6_transform:
      - "G6 receives sections parameter"
      - "Only specified sections are transformed"
      - "Non-selected sections pass through unchanged (verbatim copy)"
      - "Change log only includes changes in selected sections"

    during_g5_rescan:
      - "G5 still scans ALL sections (for accurate composite score)"
      - "Section-level scores reported for all sections"
      - "Non-selected sections should show unchanged scores"

    at_checkpoints:
      - "Rich Checkpoint displays all sections with scores"
      - "Non-selected sections marked as '(unchanged)' in patterns column"
      - "User can modify section selection at any checkpoint"

  use_cases:
    - "Discussion has score 95% but Methods is clean at 25% → only humanize Discussion"
    - "Abstract needs aggressive treatment but Results should stay conservative"
    - "Re-run only on sections that still have remaining patterns after a pass"
```

---

## Error Handling

### Agent Failure

```yaml
on_agent_failure:
  g5_failure: "Retry once. If still fails, present partial results to user."
  g6_failure: "Retry once. If still fails, ask user whether to continue with partial transformation."
  f5_failure: "Continue pipeline. F5 is verification, not blocking."
```

### Revert Protocol

At any checkpoint, user can select "Revert". Action:
1. Discard current pass output
2. Use previous pass output (or original if reverting Pass 1)
3. Present previous checkpoint again for re-decision

### Resume Protocol

If session interrupted mid-pipeline:
1. Check `diverga_checkpoint_status()` for last completed checkpoint
2. Check `diverga_project_update()` for pipeline state
3. Present resume options to user via AskUserQuestion

---

## Agent Spawning Rules

**ALWAYS use Task tool with diverga agent types:**

```
# G5 Audit
Task(subagent_type="diverga:g5", model="sonnet", prompt="...")

# G6 Transform
Task(subagent_type="diverga:g6", model="opus", prompt="...")

# F5 Verify
Task(subagent_type="diverga:f5", model="haiku", prompt="...")
```

**NEVER run G6 in parallel with G5 or F5 within a single pass.**
**G5 rescan and F5 verify MUST run in parallel** after each G6 transform (both are read-only on the same output).
This saves latency on every pass without any risk to data integrity.

---

## Relationship to Existing Skills

| Existing Skill | Relationship | Conflict? |
|---------------|-------------|-----------|
| `/diverga:g5` | This skill CALLS g5 as a sub-step | No — g5 is a component |
| `/diverga:g6` | This skill CALLS g6 as a sub-step | No — g6 is a component |
| `/diverga:f5` | This skill CALLS f5 as a sub-step | No — f5 is a component |
| `/diverga:orchestrator` | Independent workflow | No — different trigger patterns |

**When to use which:**
- `/diverga:humanize` → Full multi-pass pipeline (recommended for manuscripts)
- `/diverga:g6` → Single-agent one-shot transformation (quick fixes, small sections)
- `/diverga:g5` → Standalone audit without transformation