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

A launch and its place

A launch is one start of work. It names a repository, a kind, a brief and a name, and flume makes one place for it on the host flume runs on. Every stage of the launch’s work happens in that place, and the place lasts until the work lands or the launch is dropped.

What a launch names

PartWhat it gives
repositorythe repository the place is a worktree of
kindthe stages the work goes through, each with its prompt and its deliverable (Kinds and stages)
briefthe text the first stage’s agent starts from
namethe place’s name, in its folder and its branch

The caller gives all four (Who launches). millpond’s send gives an item’s brief, headwater’s fix key a release’s, sounding a question, and the operator’s /launch their own words.

The place

flume makes the place: a worktree of the repository at <repository>/places/<kind>--<name>, on a new branch <kind>/<name>. A fix named bump-parser is worked at places/fix--bump-parser on fix/bump-parser. The kind leads both, so the places of one kind sit together in the folder and their branches share a prefix.

  • One launch, one place. flume refuses a launch whose place or branch already exists, and never adopts a worktree or a branch it did not make (teams.3). A place holds one launch’s work and nothing of any other.
  • The agents work inside it. Each stage’s agent reads, writes and commits in the place, on its branch. flume makes the place and removes it; no agent does either.
  • Its work leaves through sluice. The place’s branch reaches its target, the branch the work lands on, only by a submission to sluice (sluice’s book).

Made ready

A worktree fresh from git holds the repository’s files and nothing else: no dependencies installed, no toolchain fetched, no generated files. flume makes the place ready by the repository’s own declaration of what a worktree needs. It reads the declaration sluice reads, and runs the toolchain the repository declares and then its runner’s setup, in the place (plan.17).

  • The steps run with a clean environment, never the caller’s, since a caller’s shell may belong to another checkout.
  • flume runs them whenever it makes the place, and again whenever it starts a stage in a place it finds already made.
  • A repository that declares nothing has nothing run. flume names no script of the repository’s and assumes no tool of its own choosing: the declaration says what runs.
  • A step that fails is recorded with the place, with the step and its words, and status shows them (Status and live state).
the launch the place the first stage flume launch repository kind brief name places/<kind>--<name> a worktree, on the branch <kind>/<name> made ready 1 the declared toolchain 2 the runner's setup in the place, a clean environment The first stage's agent starts in the place, from the brief
A launch becomes one place. flume makes the worktree and runs what the repository declares a worktree needs before any agent starts in it.

One host

flume runs on one host and launches there. Its places are worktrees on that host, each stage’s agent runs there, and flume status reports the places of that host alone.