proserpina 0.3.0

Multi-agent critique and cross-examination pipeline for documents requiring intellectual rigor — provider-agnostic interaction-graph engine with pluggable LLM backends
Documentation
# The Interaction Graph: `InteractionGraph`, `Topology`

```rust
pub enum Topology {
    Parallel { critics: Vec<AgentId> },
    Rounds   { critics: Vec<AgentId>, max_rounds: usize },
}

pub enum InteractionGraph {
    Parallel { critics: Vec<AgentId> },
    Rounds   { critics: Vec<AgentId>, max_rounds: usize },
}

impl Topology {
    pub fn parallel(critics: Vec<AgentId>) -> Self;
    pub fn rounds(critics: Vec<AgentId>, max_rounds: usize) -> Self;
}

impl From<Topology> for InteractionGraph { /* ... */ }
```

A `Topology` is a declarative template; lowerer it into an
`InteractionGraph` with `.into()`. `parallel` is a degenerate single-round
graph; `rounds` adds inter-critic edges with convergence early-stop (a round
producing zero rebuttals stops the run). See [The Interaction Graph](../concepts/graph.md)
for the routing rules.

Future topologies (`moderated`) are new constructors over the same core, not
special cases.