--- name: humanize description: | Humanization Pipeline Orchestrator v3.1 - Multi-pass 4-layer transformation pipeline Orchestrates G5 (Auditor), G6 (Humanizer), F5 (Verifier) in sequential passes Enforces checkpoints between every pass with mandatory AskUserQuestion Supports conservative (L1-2), balanced (L1-3), balanced-fast (L1-3 merged), aggressive (L1-4) modes Rich Checkpoint v2.0: section-level scores, selective humanization, target auto-stop G5+F5 parallel execution, section-selective humanization Triggers: humanize, humanize my draft, humanize manuscript, make natural, remove AI patterns Korean triggers: 휴먼화, 자연스럽게, AI 패턴 제거 version: "12.0.1" --- # 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