Topology #4 — drafter → critique (reviewers) → peer_review → chair.
One member drafts an initial response; reviewers critique it; then all members do a peer-review pass seeing each other's critiques; the chair synthesizes.
Usage
council =
CouncilEx.Councils.PeerReview.new(
as: MyApp.ReviewCouncil,
drafter: {:author, MyApp.Members.Author, [provider: :openai, model: "gpt-4o-mini"]},
reviewers: [
{:rev1, MyApp.Members.Reviewer, [provider: :openai, model: "gpt-4o-mini"]},
{:rev2, MyApp.Members.Reviewer, [provider: :openai, model: "gpt-4o-mini"]}
],
chair: {MyApp.Members.Editor, [provider: :openai, model: "gpt-4o"]}
)