---
slug: "Rally"
name: "Rally"
type: "Coordination"
layer: "Society"
ref: "Rally#9ee7"
sema_id: "sema:Rally#mh:SHA-256:9ee797cd797df62b9883ead618c35eb8d8a5e86c171630cdc8f8ecc6066d6a89"
tags: ["Society","Coordination"]
updated: 2026-11-11
mindscape: "bootstrap"
index_url: https://mindscape.pages.dev/bootstrap/index.json
url: https://mindscape.pages.dev/bootstrap/Rally/
related: ["AcceptSpec","Criteria","Select","Protocol","Outcome","Nucleate"]
---

# Rally

Enable ad-hoc multi-party coordination

Layer: Society · Category: Coordination

## Mechanism

Ad-hoc group-formation [Protocol](https://mindscape.pages.dev/bootstrap/Protocol.md). An initiator broadcasts RALLY with group requirements encoded as an [AcceptSpec](https://mindscape.pages.dev/bootstrap/AcceptSpec.md), participant [Criteria](https://mindscape.pages.dev/bootstrap/Criteria.md), `deadline`, `min_participants`, and `max_participants`. Responders submit tentative ENLIST messages. Before `deadline`, the initiator closes ENLIST intake, executes [Select](https://mindscape.pages.dev/bootstrap/Select.md) over the responders using the participant criteria with `limit = max_participants`, sends MUSTER to those selected, and collects confirmations. Confirmation closes when every selected responder has replied or at `deadline`; only selected responders who confirm by then count toward `min_participants`. Rally then yields one [Outcome](https://mindscape.pages.dev/bootstrap/Outcome.md) whose `outcome_id` identifies this Rally run. If fewer than `min_participants` confirmed, `outcome.value` records `{status: dissolved, confirmed_participants}` and no `context_id`. Otherwise the initiator mints a fresh `context_id`; `outcome.value` records `{status: formed, confirmed_participants, context_id}`, and every confirmed participant receives that same `context_id`.

## Invariants

- `2 <= min_participants <= max_participants <= 10000`.
- Exactly one [Outcome](https://mindscape.pages.dev/bootstrap/Outcome.md) is yielded per Rally run, and its `outcome_id` identifies that run.
- `outcome.value.confirmed_participants` contains exactly the responders selected under [Criteria](https://mindscape.pages.dev/bootstrap/Criteria.md) who confirmed before MUSTER confirmation closed.
- `outcome.value.status` is `formed` if and only if at least `min_participants` selected responders confirmed before confirmation closed.
- A formed [Outcome](https://mindscape.pages.dev/bootstrap/Outcome.md) carries exactly one `context_id`, fresh to that Rally run and shared with every confirmed participant; a dissolved outcome carries none.

## Preconditions

- Broadcast channel available
- Initiator can mint and communicate a shared group context identifier

## Postconditions

- A formed or dissolved [Outcome](https://mindscape.pages.dev/bootstrap/Outcome.md) is yielded

## Failure modes

- Flaking: Responders ENLIST tentatively but selected responders fail to confirm at MUSTER before `deadline`.
- Under-quorum: Fewer than `min_participants` selected responders confirm before MUSTER confirmation closes, so no group forms.

## Parameters

- `deadline` (Duration, (0s, unbounded)): Duration from Rally start by which ENLIST intake, selection, and MUSTER confirmation complete
- `max_participants` (PositiveInteger, [min_participants, 10000]): Most responders that may be selected and confirmed
- `min_participants` (PositiveInteger, [2, max_participants]): Fewest selected responders who must confirm at MUSTER for group formation

## Builds on

- [AcceptSpec](https://mindscape.pages.dev/bootstrap/AcceptSpec.md) (Infrastructure; Accepts)
- [Criteria](https://mindscape.pages.dev/bootstrap/Criteria.md) (Infrastructure; Accepts)
- [Select](https://mindscape.pages.dev/bootstrap/Select.md) (Infrastructure; Composes with)
- [Protocol](https://mindscape.pages.dev/bootstrap/Protocol.md) (Infrastructure; References)
- [Outcome](https://mindscape.pages.dev/bootstrap/Outcome.md) (Infrastructure; Yields)

## Used by

- [Nucleate](https://mindscape.pages.dev/bootstrap/Nucleate.md) (Society; References)

## Identity

- Sema ID: `sema:Rally#mh:SHA-256:9ee797cd797df62b9883ead618c35eb8d8a5e86c171630cdc8f8ecc6066d6a89`
- Ref: `Rally#9ee7`
- Supersedes:
  - `sema:Rally#mh:SHA-256:8d0401a21776e9a4d44b60bd1c7a8d7af1c9d275c3d209ef12432c892f435cec`
  - `sema:Rally#mh:SHA-256:c284735a8954e84a3b4ce89a685b304490cac103dc3abaf14f9d7a035a3e2dc5`
  - `sema:Rally#mh:SHA-256:48a037eb8da9aa05db6d44c4827ed1a243eb07ff0be810b8b8792b05e0419430`
  - `sema:Rally#mh:SHA-256:f2d67002a3d5ca0f6e0e61343ba41b800d3211249f3ab513984af2699df7d8d5`

## Links

- [Pattern page](https://mindscape.pages.dev/bootstrap/Rally/)
- [View in the interactive graph](https://mindscape.pages.dev/bootstrap/#Rally)
- [JSON](https://mindscape.pages.dev/bootstrap/Rally.json)
- [Index of all patterns](https://mindscape.pages.dev/bootstrap/index.json)
