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
| Part | What it gives |
|---|---|
| repository | the repository the place is a worktree of |
| kind | the stages the work goes through, each with its prompt and its deliverable (Kinds and stages) |
| brief | the text the first stage’s agent starts from |
| name | the 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).
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.