Verify long reasoning chains by combining outcome and process verification through active learning. OPV achieves 83.1 F1 on verification—crucial when both final answers and reasoning paths must be validated with minimal annotation.
Scanned 9/9/2026
Install to Claude Code
npx -y skills add ADu2021/skillXiv --skill opv-process-verifier --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Opv Process Verifier?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/adu2021-opv-process-verifier)More formats (shields.io, HTML) on the badges page.
---
name: opv-process-verifier
title: "OPV: Outcome-based Process Verifier for Efficient Long Chain-of-Thought Verification"
version: 0.0.2
engine: skillxiv-v0.0.2-claude-opus-4.6
license: MIT
url: https://arxiv.org/abs/2512.10756
keywords: [verification, chain-of-thought, process rewards, reinforcement learning, reasoning validation]
description: "Verify long reasoning chains by combining outcome and process verification through active learning. OPV achieves 83.1 F1 on verification—crucial when both final answers and reasoning paths must be validated with minimal annotation."
---
## Overview
OPV bridges outcome and process verification by summarizing long CoT chains before process verification. Iterative active learning progressively improves verification capability while minimizing annotation costs through targeted uncertainty sampling.
## When to Use
- Verifying long chain-of-thought reasoning
- Limited annotation budget
- Need to check both answers and reasoning quality
- Mathematical and logical problem solving
- Iterative improvement of verification models
## When NOT to Use
- Single-statement verification
- Abundant annotation resources
- Short reasoning chains
## Core Technique
Outcome + process hybrid verification with active learning:
```python
# OPV: Outcome-Process Verification
class OutcomeProcessVerifier:
def __init__(self):
self.outcome_model = OutcomeVerifier()
self.process_model = ProcessVerifier()
self.active_learner = ActiveLearner()
def verify_long_cot(self, problem, cot_chain):
"""Hybrid verification for long reasoning."""
# Stage 1: Outcome verification (fast)
outcome_valid = self.outcome_model.verify(problem, cot_chain[-1])
# Stage 2: Summarize long CoT
summary = self.summarize_cot(cot_chain)
# Stage 3: Process verification on summary
process_valid = self.process_model.verify(
problem,
summary
)
# Combined verdict
is_valid = outcome_valid and process_valid
return is_valid
def summarize_cot(self, cot_chain):
"""Compress long reasoning for process verification."""
# Extract key reasoning steps
important_steps = []
for step in cot_chain:
if self.is_important_step(step):
important_steps.append(step)
# Create summary maintaining logical flow
summary = self.create_logical_summary(important_steps)
return summary
def iterative_active_learning(self, unlabeled_cots, expert_budget=100):
"""Progressively improve verification with targeted labels."""
labeled_data = []
for iteration in range(10):
# Current model predicts on unlabeled
predictions = self.predict_on_batch(unlabeled_cots)
# Find uncertain cases
uncertain_indices = self.active_learner.select_uncertain(
predictions,
budget=expert_budget
)
# Get expert annotations for uncertain cases
expert_labels = self.get_expert_labels(
[unlabeled_cots[i] for i in uncertain_indices]
)
# Add to labeled set
for idx, label in zip(uncertain_indices, expert_labels):
labeled_data.append((unlabeled_cots[idx], label))
# Retrain models
self.retrain_on_labeled_data(labeled_data)
# Remove from unlabeled
unlabeled_cots = [
cot for i, cot in enumerate(unlabeled_cots)
if i not in uncertain_indices
]
return labeled_data
def train_with_verifiable_rewards(self, model, problems):
"""RLVR: RL with verifiable rewards."""
for problem in problems:
# Generate reasoning with model
reasoning = model.generate_cot(problem)
# Verify reasoning
is_valid = self.verify_long_cot(problem, reasoning)
# Reward: verification success
reward = 1.0 if is_valid else 0.0
# RL update
model.update_with_reward(reasoning, reward)
```
## Key Results
- 83.1 F1 on verification benchmark
- Improves downstream reasoning (55.2% → 73.3% on AIME)
- Efficient active learning reduces annotation needs
## References
- Original paper: https://arxiv.org/abs/2512.10756
- Focus: Verification of long reasoning chains
- Domain: Chain-of-thought evaluation, reinforcement learning
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!