---
name: agent-result-relay
description: Rules for orchestrators handling sub-agent results without lossy re-summarization. Activates when receiving agent output, relaying research results, passing data between agents, or combining agent findings. Prevents the failure mode where 'not found' becomes 'doesn't exist' and counts get dropped.
enabled: false
source: github:Jamie-BitFlight/claude_skills
imported-from: github:Jamie-BitFlight/claude_skills
---

# Agent Result Relay

Rules for how orchestrators MUST handle sub-agent results to prevent information corruption in the relay chain.

## The Problem

When an orchestrator receives results from a sub-agent, three failure modes commonly corrupt information:

**Failure 1: Lossy Re-Summarization**

```text
Agent output:  "Found 7 items with details. 3 sources returned HTTP 403."
Orchestrator:  "Research complete. Found some items, the rest don't exist."
                                                    ^^^ CORRUPTED
```

**Failure 2: Count Dropping**

```text
Agent output:  "Analyzed 15 files: 12 pass validation, 2 have warnings, 1 has errors."
Orchestrator:  "Most files pass validation."
                ^^^ COUNTS LOST
```

**Failure 3: Status Escalation**

```text
Agent output:  "Unable to access 3 URLs (connection timeout)."
Orchestrator:  "3 URLs are not available."
               ^^^ "UNABLE TO ACCESS" ≠ "NOT AVAILABLE"
```

## Relay Rules

### Rule 1: Preserve Exact Counts

When an agent reports numbers, the orchestrator MUST relay those exact numbers.

| Agent Says | Orchestrator MUST Say | Orchestrator MUST NOT Say |
|------------|----------------------|--------------------------|
| "7 of 10 found" | "7 of 10 found" | "most found" |
| "3 errors, 2 warnings" | "3 errors, 2 warnings" | "several issues" |
| "12 files analyzed" | "12 files analyzed" | "files were analyzed" |
| "0 results" | "0 results found" | "nothing relevant" |

### Rule 2: Preserve Failure Reasons

When an agent reports failures, the orchestrator MUST relay the specific reason.

| Agent Says | Orchestrator MUST Say | Orchestrator MUST NOT Say |
|------------|----------------------|--------------------------|
| "HTTP 403 Forbidden" | "access denied (HTTP 403)" | "not available" |
| "Connection timeout" | "connection timed out" | "doesn't exist" |
| "File not found at path X" | "file not found at X" | "no such file" |
| "Rate limited, try later" | "rate limited" | "unavailable" |
| "3 sources not accessible" | "3 sources not accessible" | "3 sources don't exist" |

### Rule 3: Reference Files Instead of Re-Summarizing

When an agent wrote detailed results to a file, the orchestrator MUST reference the file rather than re-summarizing it.

**Required pattern**:

```text
Research complete. 7 of 10 items documented. 3 sources were inaccessible (connection timeout).
Full results: ./research-output.md
```

**Prohibited pattern**:

```text
Research complete. Here's a summary of the summary:
- Item 1 was about X
- Item 2 was about Y
[lossy re-interpretation of agent's already-summarized output]
```

### Rule 4: Relay Structure, Not Interpretation

When an agent returns structured output (STATUS, SUMMARY, ARTIFACTS, etc.), the orchestrator MUST preserve that structure.

**Agent returns**:

```text
STATUS: DONE
SUMMARY: Validated 15 plugins. 12 pass, 2 warnings, 1 critical error.
ARTIFACTS:
  - Report: ./validation-report.md
  - Critical: plugin-X has invalid manifest
WARNINGS:
  - plugin-Y: description exceeds 200 chars
  - plugin-Z: missing homepage field
```

**Orchestrator MUST relay**:

```text
Plugin validation complete. 12 of 15 pass, 2 warnings, 1 critical error.
Critical: plugin-X has invalid manifest.
Full report: ./validation-report.md
```

**Orchestrator MUST NOT relay**:

```text
Validation done. Most plugins are fine, a couple have minor issues.
```

### Rule 5: Distinguish Agent Conclusions from Agent Observations

When an agent reports both observations and conclusions, the orchestrator MUST clearly distinguish between them.

**Agent reports**:

```text
Observation: The config file does not contain a "timeout" field.
Conclusion: Using default timeout of 30s.
```

**Orchestrator relays**:

```text
Config has no "timeout" field; agent reports default of 30s will be used.
```

**Not**:

```text
Timeout is 30 seconds.
```

The distinction matters because the observation (no field) is verifiable, while the conclusion (default 30s) is the agent's interpretation.

## When to Summarize vs When to Relay

The orchestrator MAY summarize agent output ONLY when:

1. The user explicitly asked for a summary ("give me a quick overview")
2. Multiple agents returned results and the user needs a combined view
3. The agent output exceeds what the user needs for their immediate decision

Even when summarizing is appropriate, the orchestrator MUST:

- Preserve all counts
- Preserve all failure reasons
- Reference the full output file
- Not upgrade absence to nonexistence
- Include the "What Was NOT Found" category

## Checklist for Orchestrators

Before relaying agent results, verify:

- [ ] All numbers from agent output are preserved in relay
- [ ] All failure reasons are preserved (not generalized)
- [ ] File references are included if agent wrote output files
- [ ] "Not found" has not been upgraded to "doesn't exist"
- [ ] "Inaccessible" has not been upgraded to "unavailable" or "nonexistent"
- [ ] Structured sections (STATUS, ARTIFACTS, WARNINGS) are preserved
- [ ] Agent observations are distinguished from agent conclusions
