# Hermes Surface Attribution Runbook

## Purpose

Hermes deployments often contain multiple subsystem families operating together:

* LLM providers
* messaging adapters
* orchestration engines
* runtime backends
* memory systems
* control and governance layers

When an incident occurs, investigators must first determine **which subsystem family owns the failure** before deeper root-cause analysis can begin.

The Surface Attribution evaluation track exists to validate that behavior.

---

## Attribution Workflow

Hermes investigations should follow a consistent attribution process:

### Step 1: Identify the failing surface

Determine which subsystem family is most likely responsible for the observed failure.

Examples:

| Symptom                        | Likely Surface |
| ------------------------------ | -------------- |
| Provider API failures          | Provider       |
| Session routing failures       | Runtime        |
| Workflow execution failures    | Orchestration  |
| Context retrieval failures     | Memory         |
| Approval / audit failures      | Control        |
| Adapter communication failures | Messaging      |

---

### Step 2: Compare against historical analogs

Once a surface family is identified, compare the incident against previously validated Hermes RCA scenarios.

The analog registry contains curated mappings across all Hermes RCA evaluation tracks.

Goals:

* reduce attribution drift
* improve consistency
* encourage evidence-based classification
* detect recurring failure patterns

---

### Step 3: Generate a diagnostic follow-up

Investigations should not stop at attribution.

A valid attribution result should produce a targeted diagnostic question requesting additional evidence.

Examples:

* Can you provide the adapter response body?
* Can you capture the request headers?
* Can you inspect the runtime state snapshot?
* Can you compare the adapter catalog against the configured routing table?

Diagnostic questions should be:

* actionable
* evidence-seeking
* surface-specific

---

## Scenario 050: Surface Sprawl / Unknown Adapter

### Goal

Validate attribution behavior when an adapter is not directly recognized.

### Evaluation Criteria

An investigation is expected to:

1. Identify the correct subsystem family
2. Select the closest historical analog
3. Produce a useful diagnostic follow-up

### Failure Modes

Common attribution failures include:

* assigning ownership to the wrong subsystem
* selecting an unrelated analog scenario
* generating generic follow-up questions
* requesting evidence unrelated to the suspected surface

---

## Adapter Tuple Corpus

The attribution corpus contains deterministic adapter combinations spanning:

* messaging
* provider
* runtime
* orchestration
* memory
* control

The corpus is used to validate attribution consistency across a broad set of Hermes deployment configurations.

Current coverage:

* 23 attribution tuples

---

## Analog Registry

The analog registry provides curated mappings across Hermes RCA Parts 1–4.

Each analog contains:

* scenario identifier
* subsystem family
* expected attribution target
* diagnostic guidance

The registry is intentionally deterministic and offline-runnable.

---

## Benchmarking

### Run offline validation

```bash
uv run python -m tests.synthetic.hermes_rca.run_suite --offline-only
```

### Generate benchmark snapshots

```bash
uv run python -m tests.synthetic.hermes_rca.run_suite --offline-only --write-history
```

### Generate benchmark reports

```bash
uv run python -m tests.synthetic.hermes_rca.benchmark_report
```

---

## Meta Evaluation

The surface attribution meta-suite validates attribution behavior across the adapter corpus.

Run:

```bash
uv run pytest tests/e2e/hermes/meta/test_surface_sprawl.py -q
```

Current corpus coverage:

* 23 adapter tuples

The expected pass threshold is at least 80% of registered tuples.

---

## Design Principles

Surface attribution evaluation is designed to be:

* deterministic
* provider-independent
* offline-runnable
* CI-friendly
* extensible as new Hermes surfaces are added

The evaluation framework intentionally separates attribution quality from root-cause quality so that ownership classification can be measured independently from deeper RCA reasoning.
