workflow(), each engine declares its provider and model family, and
a team whose reviewer shares the writer’s family is refused when the team
is built. Before the reviewers run, the runtime checks again on the
recorded answers: the family the writer’s engine reported must differ from
each reviewer’s, and an answer whose family can’t be read fails the panel
too. A model’s accept is still not a person shipping the change.
In Obversa
The writer is a Claude seat and the reviewer is a Codex seat, and the review stage names where a rejection goes:examples/teams/writer-reviewer-pair.ts (excerpt)
write, which runs again with them. In a
graph form, the review loop’s requireDiversity asks for the same thing
across its review seats.
Review panel
One reviewer is a second opinion. Several reviewers with a threshold are a panel, and How many reviewers have to accept? says how the count works.Next steps
- A writer and a reviewer: the pair on its own, with a real run.
- Evals in an agent workflow: a judge from another family as one kind of eval.