Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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

  1. flume starts the stage’s agent.
  2. It waits until the agent accepts input. An agent still starting is slow, never failed.
  3. It sends the prompt.
  4. 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.
  5. When it does not, flume sends the prompt once more and reads again.
  6. When the second sending is not taken either, flume reports the stage as never started.
Start the agent Accepts input slow is not failed Send the prompt Read the transcript No transcript yet unknown, watched Began the prompt is taken Never started reported not taken: sent once more, then read again not taken twice
flume believes the transcript, never the pane. A prompt the transcript lacks is sent once more, a start it cannot yet read is watched, and only a second sending not taken 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).