Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/design.md
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,7 @@ A mod in the plugin compacts a session at the end of a turn once its free contex
|---|---|---|
| `steward` | Drives one multi-agent effort from its top bead. | model-invoked, so `muster` can load it. Its description says to use it only when invoked by name, or when `muster` hands an effort to the seat it runs in. |
| `worker` | Executes one bead as a berth in an effort. The steward starts it with `sign-on`, posts its brief, then types `/boatyard:worker <topic>` into its berth. | slash only |
| `muster` | Turns a body of work into an effort a steward can drive cold, then hands it to a steward. A seat a person works in takes the effort over itself, by loading `steward`. A seat with a standing role, such as one that answers in its project's channel, launches a separate steward with `sign-on`. | model-invoked, so an agent told to start an effort can run it from its own seat. Its description says to use it only when invoked by name. |
| `muster` | Turns a body of work into an effort a steward can drive cold, then hands it to a steward. A seat a person works in takes the effort over itself, by loading `steward`. A seat with a standing role, such as one that answers in its project's channel, hands the steward's start back to the seat that asked it, which starts the steward on its own host. Acting on its own judgement, or on a person's direct ask, it launches a separate steward with `sign-on`. | model-invoked, so an agent told to start an effort can run it from its own seat. Its description says to use it only when invoked by name. |
| `tally` | A read-only roll-up of every live effort and what each needs from a human. | model-invoked, so plain questions reach it. Its description says "boatyard" and "effort". |

An effort is its top bead and everything that bead depends on, followed transitively across trackers. The top bead states the outcome the effort delivers, and parent links put nothing in an effort. `muster` adopts or files the top bead rather than creating an epic to anchor the effort. It files the work as observable outcomes, each wired to the outcomes it needs, and the graph ends where the effort's outcome is observed. Each release, each deployment to each host, and any other project's deploy the evidence relies on is a bead in the effort, and a bead that is true only after a release or deployment sits downstream of it. A release belongs to the product and may carry several efforts' work, so `muster` joins the product's open release bead or has one filed, names no tag, and never invents a release for one effort. Where the release runs through a formula that cannot be poured yet, a plain bead stands in. An epic is an "and" over the outcomes it depends on. The steward is started with the top bead, and the effort's slug, index line and berth are keyed on it. The effort ends when someone who has seen the evidence for its outcome closes the top bead.
Expand Down
24 changes: 18 additions & 6 deletions skills/muster/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: muster
description: Turns a body of work, usually beads that already exist and possibly spread across several projects, into one boatyard effort that a steward can drive cold, then hands it to a steward: a person's own seat takes the effort over, and a seat with a standing role starts one with sign-on. Builds and wires the bead graph, shapes other projects' slices over commy with whoever answers in each project's channel, and checks the graph can be driven before the launch. Use only when invoked by name, as `/boatyard:muster` or an explicit instruction to muster an effort.
description: Turns a body of work, usually beads that already exist and possibly spread across several projects, into one boatyard effort that a steward can drive cold, then hands it to a steward: a person's own seat takes the effort over, a seat with a standing role that another seat asked hands the steward's start back to that seat, and a seat with a standing role acting for itself starts one with sign-on. Builds and wires the bead graph, shapes other projects' slices over commy with whoever answers in each project's channel, and checks the graph can be driven before the launch. Use only when invoked by name, as `/boatyard:muster` or an explicit instruction to muster an effort.
argument-hint: <beads, a label or a query naming the work>
---

Expand Down Expand Up @@ -106,7 +106,8 @@ For a graph that is not trivial, give **one** throwaway subagent an adversarial
Who becomes the steward depends on the role your seat already holds. Decide it from that role, and don't ask the person.

- **A seat a person works in takes the effort over itself,** in the berth where the person talked it through. No second steward starts.
- **A seat with a standing role,** such as one that answers in its project's channel, keeps that role, so it starts a separate steward.
- **A seat with a standing role hands the start back** when another seat asked it to muster, as *Hand the start back* says. A standing role is one such as answering in a project's channel. The asking seat starts the steward on its own host, so the work runs where it was asked for.
- **A seat with a standing role acting on its own judgement starts a separate steward** where it runs. A person asking it directly counts as its own judgement.

You create none of the effort's commy topics and no line in the project's `boatyard` index. The steward opens its topics and registers the effort in the index when it binds, and it names its own berth.

Expand All @@ -116,6 +117,17 @@ Sign off first, as *Sign off* says, because the preparation ends here. Then load

**Start the steward fresh, whatever `current_identity` says.** Your seat may have bound its commy identity while you prepared, and the steward's wake ritual would read that as a compaction and skip its reachable half. So do the reachable half of the wake ritual, then the reconstruct half.

### Hand the start back

Reply to the asking seat where it asked, with the top bead, the project it lives in, and the line that starts its steward:

```bash
sign-on --as independent --cwd <its checkout of this project> --label <effort> \
"/boatyard:steward <top-bead>"
```

The asking seat fills in its own checkout of the project, because a path holds on one host only. You start no steward yourself, and you do not wait for the asking seat to start it.

### Start a separate steward

Start the steward with one call, from the project where the top bead lives. Your seat keeps its place in the terminal layout, so the steward opens apart from it:
Expand All @@ -129,14 +141,14 @@ The steward's berth is independent of yours, so closing your seat leaves the ste

If `sign-on` fails, report its message. Where the message says your seat is in no multiplexer, because no backend is named or your seat is in no pane, give the human the line `/boatyard:steward <top-bead>` to start by hand, and say which project the top bead lives in. Where it opened a berth and then got stuck, its message names that berth, so pass the name on for the human to read and close.

**You do not close your own seat.** A seat with a standing role that musters an effort has to outlive the preparation. Sign off, and whatever role you had before carries on.
**You do not close your own seat.** A seat with a standing role that musters an effort, whether it started the steward or handed the start back, has to outlive the preparation. Sign off, and whatever role you had before carries on.

## Sign off

Handing the effort to a steward ends the preparation. A seat that started a separate steward does not stay to watch it or to rework the graph, because the steward owns the effort from the moment it runs.
Handing the effort to a steward ends the preparation. A seat that started a separate steward, or handed its start back, does not stay to watch it or to rework the graph, because the steward owns the effort from the moment it runs.

1. **Record the preparation** as your host asks of finished work, such as a journal entry: the effort, the top bead, the beads including foreign ones, the splits and edges you made, and the steward's berth.
2. **Say plainly that preparation is finished.** Name the top bead and the steward's berth. A seat that takes the effort over then loads the steward skill. Any other seat stops.
1. **Record the preparation** as your host asks of finished work, such as a journal entry: the effort, the top bead, the beads including foreign ones, the splits and edges you made, and the steward's berth or the seat you handed its start to.
2. **Say plainly that preparation is finished.** Name the top bead and the steward's berth, or the seat you handed the start to. A seat that takes the effort over then loads the steward skill. Any other seat stops.

If you could not start the steward and handed the human its line instead, still record and sign off. The graph is the preparation's deliverable, and only the start is left to the human.

Expand Down