Scenario Runner · deterministic · manual advance

Pick a question. Watch the ledger answer it.

Choose how many agents join, which files they want, and whether they hand work to each other, then step through what Rally records at each moment.

Sample agents Real Rally rules
How this runner works

One engine computes every run from your choices alone, with no randomness, so the same choices always give the same result. It produces the agents, their worktrees, their file claims, and an ordered list of Rally facts. The room shown after each fact is computed from those facts, not drawn by hand. Every fact goes to the room. A targeted handoff can also be queued for the receiver's session with rally inject when Rally manages that session. Other agents see it when they next read the room.

Rules were read from Rally source at commit 89be57d. Modeled from source at 89be57d. The installed binary predates rally setup, rally routes, and the parent lease split, so those events are Observed in source and tests, not in a live session.

Observed
read from Rally source at the pinned commit
Modeled
invented for the scenario as an instance of a cited rule
Derived
counted from the modeled events; no measurement
Unknown
no matched measurement exists
Adjust the scenario
Agents Preset counts. 20 is a preset for this page, not a Rally limit.
File assignment
Execution layout
Collaboration
Injection target applies to receivers in a handoff chain
rallyd changes only the cache access path

Watch for: Two presence facts, one room, two claims on distinct paths that both proceed.

Shared checkout · branch main · one filesystem

Live roomprojection after the current fact
Live peers
0
Held claims
none
Open handoffs
none
Queued wakes
none
Routes
none
Risks
none
Durable historyfacts appended 0 · event 0 of 8

    Ready

    Press Next event to begin.

    Modeled event Observed rule

    0 of 8 events

    Deterministic countsDerived
    claims accepted
    0 of 2 at end
    claims refused at append
    0 of 0 at end
    agents that chose to wait (modeled choice)
    0 of 0 at end
    handoffs opened
    0 of 0 at end
    handoffs still open
    0 of 0 at end
    receipts authored
    0 of 0 at end
    handoffs queued with rally inject (managed)
    0 of 0 at end
    handoffs waiting to be read (unmanaged)
    0 of 0 at end
    routes proven ready
    0 of 0 at end
    worktrees provisioned
    0 of 2 at end
    risk facts
    0 of 0 at end
    rooms
    0 of 1 at end

    Counts come from the events above. No coordination score exists. Waits are a modeled cooperative choice, not something Rally enforces. Time and token savings are Unknown until a matched measurement exists.

    Store accessObserved rule

    running rallyd socket (.rally/rallyd.sock) to facts.db, one writer

    automatic activation needed an approved setup plan (rally setup --component coordinator --apply); an operator's explicit rally daemon start stays available

    Canonical record: .rally/log JSONL ledger. This toggle never changes the events or the counts.

    rallyd never decides, schedules, launches, or executes work. It owns the disposable cache and serializes access to it.

    What this run cannot tell youUnknown
    • Whether the work each agent did is correct. Rally records and advises; it never executes or judges.
    • Token and end-to-end time compared with no coordination. No matched measurement exists.
    • Whether real agents honor an advisory finding. Every wait in this model is a cooperative choice (the Guided Story's p_honor = 1, its most generous assumption). Rally would not have stopped a write.
    • Whether a route would be blocked. This model shows only the success path; a failed transport or backend check (route state blocked) is not simulated.
    • Whether the installed rally binary on a given machine includes rally setup and rally routes. The installed binary on the authoring machine predates rally setup and rally routes.
    Inspect every agent and every fact
    AgentToolWorktreeFileSession kind
    SeqKindActorStatusFact
    Accuracy matrix for the runner: every rule it applies, cited at 89be57d
    RuleStatementSource at 89be57d
    one-roomAll linked worktrees in one clone resolve one Rally room through the git common directory.RALLY.md:326-327; crates/rally-cli/src/run_worktree.rs:7-9
    worktree-defaultrally run provisions a per-agent linked worktree by default and fails closed if it cannot create one. Shared checkout is a deliberate opt-out (--shared or --no-worktree).crates/rally-cli/src/run_worktree.rs:4-34,81-131
    shared-hazardIn a shared checkout, Rally checks and claims make overlap visible but do not provide filesystem isolation. A commit by one agent lands on the branch the others are on.crates/rally-cli/src/run_worktree.rs:3-6; session observation 2026-09-12 (shared-branch-hazard risk facts)
    narrow-parallelDistinct narrow claims proceed in parallel.NORTH_STAR.md:32-33 (one owner per path; work is never blocked); crates/rally-cli/src/store.rs:5391-5411
    overlap-refusedFor agents claiming the same path, one claim is accepted and later overlapping claims are refused at append time. This refuses the coordination record, not an operating system file write.crates/rally-cli/src/store.rs:5391-5411; docs/TURN-LOOP.md:66-69
    worktree-isolationSeparate worktrees keep simultaneous edits out of one checkout, but they do not guarantee a conflict-free Git integration when agents change the same lines.crates/rally-cli/src/run_worktree.rs:4-21 (isolation); Git merge semantics, not a Rally guarantee
    handoff-receiptA handoff is not accepted until the receiver authors an eligible receipt, resolve, or artifact. Receipt is not task completion or verification.crates/rally-cli/src/store.rs:7413-7470,7431-7433
    managed-injectrally inject <session> --handoff <event-id> queues a recorded handoff for the receiver's session when the receiver is a live session Rally manages; it may reach the terminal, and reached_target and queued say which. The delivery is a pane write, not proof the receiver read it. Acceptance still requires target-authored evidence.re-checked: README.md:211 (rally inject); crates/rally-cli/src/backends.rs:1226 (a successful write is recorded as sent_unverified)
    unmanaged-wakeA handoff to a receiver Rally does not manage is recorded, not pushed. The receiver sees it when it next reads the room or its inbox, or when a host hook reads for it.re-checked: docs/COMMAND-SEMANTICS.md:110 (rally inbox); earlier: crates/rally-cli/tests/referenced_handoff_targeting.rs:1336-1355 (ledger_only, delivered false, at 89be57d)
    ack-deadline--ack-within 10m records a reply deadline. When the sender next runs rally next after the deadline with no receiver answer, the handoff is listed as overdue and one no-response risk fact is written. There is no timer; nothing happens until the sender runs rally next.re-checked: docs/ACK-DEADLINE-ESCALATION.md:35-39,43
    daemonrallyd owns the disposable facts.db cache and serializes access over a Unix socket. The JSONL ledger stays canonical. rallyd never decides, schedules, launches, or executes work. Without it, each process opens the cache directly (fail open).RALLY.md:320-330,420-452
    presence-writePresence is a fact an agent writes about itself. Reading the room is a separate, pull-based act.crates/rally-cli/src/store.rs:527,601,631; docs/COMMAND-SEMANTICS.md:28-29
    leasesA single-file claim carries a 30 minute lease renewed by the owner's own activity; coarser scopes 120 minutes.crates/rally-cli/src/decay.rs:39-47,90-113
    namingrally run auto-numbers managed sessions: claude-01 with tool claude_code:01 is documented; codex-01 with tool codex:01 follows the same pattern and is inferred. The name is self-asserted and unsigned.RALLY.md:47-49,264-266; docs/HANDOFFS-AND-LAUNCHING-AGENTS.md:27 (pattern)
    advisory-checkrally check before-write is read-only and advisory unless --strict, which exits 4 on a stop finding.crates/rally-cli/src/check.rs:53-91; RALLY.md:37-40
    route-statesA route is one projection row per session binding. States: polling_only (a squad with presence but no managed transport), blocked (transport or backend check failed), testing_required (transport ok, no fresh receiver proof), ready (transport ok and proof succeeded).crates/rally-cli/src/runtime_routes.rs:206-232,214-227,426
    transport-challengerally routes --probe issues a transport-only challenge: a random RALLY_ROUTE_DELIVERY token whose digest is ledgered while the raw token rides only the live injection. The route is ready only when the exact receiver echoes the raw token as evidence, with the nonce and lead epoch. Proof expires after 300 seconds. Polling the ledger cannot produce the token.crates/rally-cli/src/runtime_routes.rs:69,196-199,293-310; crates/rally-cli/src/lib.rs:9247-9256,9797-9805; tests/runtime/test_route_probe_transport.py:190-193
    sent-unverifiedA successful backend write is at most sent_unverified. Screen-echo verification was removed; only a receiver-authored fact upgrades it. Route readiness never means task or build success.crates/rally-cli/src/backends.rs (3ee2925); crates/rally-cli/src/runtime_routes.rs:310
    parent-leaseAn exported session id without RALLY_MANAGED_SESSION_MODE mints a stable parent lease, sess:parent:<id>#live, shared by that session's child processes. It supports claims and referenced handoffs, has no transport claim, and inject to it reports delivery_path ledger_only, delivered false.crates/rally-cli/src/session_identity.rs:108-141,441-453,509-549; crates/rally-cli/tests/referenced_handoff_targeting.rs:1294-1380; docs/HANDOFFS-AND-LAUNCHING-AGENTS.md:16-42
    approved-setupAutomatic coordinator (rallyd) activation requires an approved runtime setup plan: rally setup --component coordinator --apply, confirmed by the user or an explicit --approve-plan <plan_id>. Without it the CLI reports permission_required and does not start the daemon. rallyd itself still only records, serves, and derives.crates/rally-cli/src/runtime_setup.rs:131-147,447-451,557-579; crates/rally-cli/src/lib.rs:10717-10723; docs/ANY-AGENT-ONBOARDING.md:47-49; docs/SETUP-AND-ROUTING.md:28-30

    Installed binary on the authoring machine: rally 0.2.7+ad9c910. Modeled from source at 89be57d. The installed binary predates rally setup, rally routes, and the parent lease split, so those events are Observed in source and tests, not in a live session.