Prompt delivery
A stage begins when its agent has its prompt. flume starts the agent,
waits until it accepts input, sends the prompt, and then reads the
agent’s transcript to see that the prompt arrived. A prompt shown typed
in a pane proves nothing, and text left in a pane for a hand to submit
is never a stage’s state (teams.15).
A fresh agent for each stage
Every stage starts a fresh agent, once the place’s previous agent has
ended (teams.2). flume never starts an agent over one still running
in the place, since a start typed into a running agent’s pane lands as
text in its conversation.
A fresh agent carries nothing from the stage before it except what the place holds: the commits, the files, and the deliverable the stage before it left. Each stage’s prompt names what the stage starts from.
The agent starts in a herdr pane, or as a command flume prints for the operator to run.
Taken, or sent again
- flume starts the stage’s agent.
- It waits until the agent accepts input. An agent still starting is slow, never failed.
- It sends the prompt.
- It reads the agent’s transcript. When the transcript holds the prompt within a short time, the prompt is taken, and the stage has begun.
- When it does not, flume sends the prompt once more and reads again.
- When the second sending is not taken either, flume reports the stage as never started.
The transcript is the agent’s own record of what it was given. herdr reads the pane’s screen, and a screen shows what was typed into the pane, whether or not the agent received it. So flume confirms a prompt in the transcript and nowhere else.
A start flume cannot read is unknown: no transcript yet, as when the
agent is still starting on a loaded host. flume watches it until the
transcript tells. A working agent whose transcript holds its prompt is
a stage that began, however long the start took (teams.15).
A tell
A tell is more text for a place’s agent: the operator’s answer to what
it needs, or a caller’s note. flume tell reaches the agent as a
prompt or not at all (teams.11).
- An agent that is not up is reported, and the tell fails with nothing typed.
- An agent waiting on a question in its pane is reported the same way, since text typed into a question’s dialog never reaches the agent. flume reads two things before it types: herdr’s state for the pane, and the agent’s own record that it asked a question still unanswered.
- A tell that goes through is confirmed in the transcript, as a stage’s prompt is.
Ending an agent
flume stop ends a place’s agent. It fails, rather than report
success, when the agent did not exit, and it ends a working agent only
with --force (teams.2). flume itself ends a stage’s agent that
delivered, before the next stage starts
(A stage ends on its deliverable).