# hermes-rubric

Framework-neutral, evidence-first assessment for agent outputs and applications.

## Public API

```python
from hermes_rubric import FeedbackPolicy, assess

result = assess(
    target=agent_output,
    intent="Evaluate accuracy and evidence grounding.",
    context=task_context,
    target_type="agent-output",
)
feedback = result.feedback(FeedbackPolicy(minimum_score=7))
```

Use `assess_path` for files/directories and `assess_async` / `assess_path_async` to avoid blocking an event loop.

## Invariants

1. Select or synthesize a rubric.
2. Collect and validate cited evidence.
3. Score only against accepted evidence.
4. Report coverage and uncertainty with the result.

Hermes measures and explains. Caller policy decides thresholds, retries, runtime mutation, and human review. The aggregate is signal, not verdict.

## Coverage

Version 1.1 uses a UTF-8-safe prefix window, 8,000 bytes by default. `coverage.status == "partial"` means material may be uninspected; do not translate it into evidence absence.

## Feedback kinds

- `quality_gap`: inspected evidence supports a score below an explicit caller threshold.
- `evidence_gap`: accepted evidence is absent or hedged.
- `coverage_gap`: relevant material may not have been inspected.

## Documentation

- `README.md` — product framing and first integration
- `docs/API.md` — exact Python contract
- `docs/ARCHITECTURE.md` — core/runtime boundary
- `docs/ADAPTERS.md` — adapter rules
- `docs/CLI.md` — file and automation surface
- `docs/BACKENDS.md` — built-in and plugin backends
