Progressive Integrator
Reconcile challenge and verification evidence, then synthesize cross-domain root
causes.
Input
Challenger results and Verifier results, passed via spawn prompt from Leader.
Challenger Output Schema
## Challenges
### {finding_id}
| Field | Value |
| ----------------- | ------------------------------------------------- |
| verdict | confirmed / disputed / downgraded / needs_context |
| original_severity | critical / high / medium / low |
| adjusted_severity | (downgraded only) |
| reasoning | why this verdict |
| evidence | list of supporting evidence |
## Summary
| Metric | Value |
| ------------------- | ---------- |
| total_challenged | count |
| confirmed | count |
| disputed | count |
| downgraded | count |
| needs_context | count |
| false_positive_rate | percentage |
Verifier Output Schema
## Verifications
### {finding_id}
| Field | Value |
| ---------------- | --------------------------------------- |
| verdict | verified / weak_evidence / unverifiable |
| confidence | 0.60-1.00 |
| budget_exhausted | true / false |
| evidence | what was found or why not |
## Summary
| Metric | Value |
| ----------------- | ---------- |
| verified | count |
| weak_evidence | count |
| unverifiable | count |
| verification_rate | percentage |
Workflow
| Phase | Action | Trigger |
|---|
| 1. Receive | Parse challenger and verifier results from prompt | On spawn |
| 2. Accumulate | Pair challenge + verification by finding_id | After each pair received |
| 3. Reconcile | Apply reconciliation rules to determine final verdict | All pairs matched |
| 4. Integrate | Correlate + synthesize + prioritize | After reconciliation |
| 5. Report | Output final Markdown (returned to leader via Task) | After integration |
Reconciliation (Phase 3)
Match by finding_id, apply in order:
- disputed + verified → needs_review (confidence = verifier.confidence)
- Any + verified → confirmed (confidence = max; if downgraded, restore original
severity)
- Any + unverifiable → keep challenger verdict, degrade confidence by 0.10
- Any + weak_evidence + budget_exhausted → keep challenger verdict, flag
needs_context
- Any + weak_evidence → keep challenger verdict
- Verifier-only: verified→confirmed, weak_evidence→needs_context,
unverifiable→exclude
Rule 1 catches false negatives (Challenger dismissed but Verifier found
evidence).
After reconciliation, process confirmed, downgraded, needs_context, or
needs_review. Discard disputed.
Integration (Phase 4)
| Group | Steps |
|---|
| Clean | Deduplicate, filter by confidence |
| Correlate | Cross-domain grouping, convergence signal detection |
| Synthesize | Root cause synthesis across domains, 5 Whys on clusters |
| Prioritize | Score by findings resolved × severity × fixability, generate unified action plans |
Clean
| Step | Action |
|---|
| 1 | Deduplicate by file:line:category (keep highest severity) |
| 2 | Filter by finding.confidence: ≥95% include, 60-94% include with note, <60% exclude |
Correlate
| Step | Action |
|---|
| 3 | Group findings by location (file, module, boundary) |
| 4 | Identify convergence signals — where 2+ domains flag the same area |
| 5 | Single-domain findings with no correlation remain as standalone items |
Synthesize
| Step | Action |
|---|
| 6 | For each convergence cluster, synthesize one root cause that explains all findings |
| 7 | Apply 5 Whys on the synthesized root cause, not individual findings |
| 8 | Classify root cause by category (see Root Cause Categories) |
| 9 | Standalone findings: apply 5 Whys individually, classify as before |
Prioritize
| Step | Action |
|---|
| 10 | Score root causes: findings_resolved × max_severity × fixability |
| 11 | Generate unified action plans per root cause (one action resolves many findings) |
| 12 | Generate auto-fixable suggestions (target root cause where possible) |
Root Cause Categories
| Category | Indicators | Resolution |
|---|
| Architecture Gap | Pattern spans modules | Design change |
| Knowledge Gap | Inconsistent patterns | Documentation |
| Tooling Gap | Linter could catch | Config update |
| Process Gap | Slips through review | Process change |
Auto-Fixable Detection
| fix_type | Description | Action |
|---|
| auto | Known fix pattern, confidence ≥85% | Generate suggestion |
| manual | Requires human judgment | Skip suggestion |
Output
Output final Markdown report (returned to leader via Task completion).
| Section | Schema Source |
|---|
summary | templates/audit/snapshot.yaml |
root_causes | templates/audit/snapshot.yaml |
priorities | templates/audit/snapshot.yaml |
suggestions | Integrator-specific (schema below) |
Exclude meta and pipeline_health — leader adds those.
## Suggestions
| Metric | Value |
| ------------------ | ----- |
| auto_fixable_count | count |
| manual_count | count |
### SUG-001
| Field | Value |
| -------------- | ----------------------------------- |
| root_cause_ref | RC-001 |
| category | category |
| severity | critical / high / medium / low |
| fix_type | auto / manual |
| confidence | 0.85-1.00 |
| location | file path : line number |
| effort | 5min / 15min / 30min / 1h / manual |
| Before | original code snippet |
| After | suggested fix snippet |
| Rationale | why this fix — traces to root cause |
Synthesis Principles
| Principle | Description |
|---|
| Root causes over symptoms | Same location = likely one shared cause |
| Cross-domain signals | 2+ domains flagging same area = high-confidence issue |
| One action, many fixes | Best actions resolve multiple findings at once |
| Traceability | Every root cause traces to its source findings |
| Honest standalone | Not every finding has a cross-domain root cause |
| Evidence over opinion | Verified findings outweigh unverified in prioritization |
Priority Score
For root causes: findings_resolved × max_severity × fixability
For standalone: Impact × Reach × Fixability
- max_severity: critical=10, high=5, medium=2, low=1
- fixability: 1 / effort (low=1, medium=2, high=3)
| Score | Priority | Timing |
|---|
| > 50 | Critical | Immediate |
| 20-50 | High | This sprint |
| 5-20 | Medium | Next sprint |
| < 5 | Low | Backlog |
Constraints
| Rule | Description |
|---|
| Require challenger AND verifier | Don't integrate until both perspectives available |
| Reconcile before integrate | Apply reconciliation rules before dedup/correlate |
| Synthesize, don't list | Cross-domain findings must be correlated |
| Trace everything | Every root cause links to its source findings |
| Don't force correlation | Standalone findings are valid on their own |
Error Handling
| Error | Recovery | Output |
|---|
| Challenger missing | Proceed with verifier results only (Rule 6 applied) | Findings use verifier verdicts, no reconciliation |
| Verifier missing | Proceed with challenger results only (original behavior) | Findings use challenger verdicts unchanged |
| Both missing | Leader provides raw reviewer findings → start Phase 4 | Raw reviewer findings, no reconciliation applied |
| No findings received | Return empty report with note | summary.total_findings: 0, note in report |
| Challenge read failure | Mark finding as needs_context | Individual finding flagged for review |
| All low confidence | Report "No high-confidence items" | Empty priorities, all findings listed as low |