Expand description
The [roles] fixer fallback chain, shared by every node that asks a fixer.
Four nodes turn a fixer into a seat: the review loop’s fix rounds (and the
operator-selected fix), the gate-fix round, land’s fix rounds and the
rebase conflict round. Each of them runs a plain forward for over
attempts and moves to the next entry only when the call advances
(crate::agent::output_advances, the same decision point the other
chained roles use); this module holds what they would otherwise each
write and drift on: the order, the seat of each entry, and what a
handover looks like in the record.
Sticky within a run, never persisted. Once a fallback agent answered a
fixer node, later calls in the same run start from it, so its session
carries across rounds instead of the first agent being re-asked (and its
quota re-billed) every round. The memory is the run’s own
RunState::handovers: the last handover on a FIX_NODES node whose
to is on the chain. The report and the behaviour therefore read one
record, and nothing is written to the config. A call runs from the start to
the end of the chain, forward only: entries before the start are not
asked again, so the chain’s last failure ends the call as it always did.
A fallback agent always gets a fresh SeatState (seat_for), never
the previous agent’s seat renamed: its session id is minted from the agent
too, because the previous agent’s uuid is already taken by the CLI.
Constants§
- FIX_
NODES - The nodes whose handovers
attemptsreads as “who fixes now”. Every consumer records its handovers under exactly one of these, so the two sides cannot disagree: a name here that nobody records would send every round back to the first agent and bill its quota again.
Functions§
- attempts
- The agents to ask, in order, each with the seat key it sits in.
- failure_
of - How a call that did not satisfy the chain failed, and a short reason, for
the handover record (
land/rebasecall the CLI directly). - seat_
for - Fetch or create the seat
keyforagent. The same agent continues its conversation; another agent takes a fresh seat whose session id is minted from the agent as well, soagent::has_sessionis false and the full context is sent again.