Repository navigation
Releases: MohammedAlkindi/switchyard
Releases · MohammedAlkindi/switchyard
Release list
v0.5.0
Added
fleet validate(and--all,--json): run a repo-configuredvalidate
command inside an agent's worktree and record the outcome on the agent's
state entry, pinned to the exact commit and command. Staleness is derived,
never stored — a record only ever means "this commit got this result from
this command". Dirty worktrees are refused: a record certifies a commit.fleet listnow shows aVALIDATEDcolumn (passed/failed/stale/
—), and its--jsonoutput — and therefore the read-only MCP tools —
carriesvalidationandvalidatedAtper agent, with no change to the MCP
tool surface.fleet mergeenforces the gate whenvalidateis configured: a passing
record at the agent's tip is trusted (the command is not re-run), a failing
record at the tip refuses immediately, and a missing or stale record is run
and recorded on the spot.preMergeis unchanged and still runs at merge
time —validateis the recorded, skippable gate;preMergethe always-run
hook.fleet dashboard(and--once,--interval): one live pane composing the
agent table (validation column included), per-agent touched-file counts, a
validation tally, and the full collision report with merge-simulation
verdicts.--onceprints a single frame for scripts and CI logs.fleet checkresults (human,--json, and MCP) now includeagentFiles:
how many files each agent touched vs its base, computed for any fleet size —
including a single agent, which previously short-circuited before gathering
anything.- New
.fleetrc.jsonkeyvalidate, validated like the other hook commands
and covered by the shipped JSON schema.
Fixed
- Shell completions now list
initandundo, which were missing from the
generated scripts. - State and undo records can no longer direct Git operations at worktrees
outside.fleet/worktrees/<agent>(including lookalike paths, symlinks, and
Windows junctions). Unsafe state is refused before mutation and can be
rebuilt safely withfleet doctor --fix. - State and undo records must also keep the documented
fleet/<agent>branch
identity. A corrupted record can no longer redirect merge, validation, or
branch-deletion operations to an unrelated branch. - Validation now re-checks worktree cleanliness after the configured command.
Commands that leave tracked or untracked changes no longer create a record
or letfleet mergeproceed, regardless of their exit code; commands that
commit their changes and finish clean remain supported. - Stale-lock recovery diagnostics now go to stderr, preserving the single
parseable stdout payload promised by mutating commands with--json. - Successful merges now persist undo metadata before post-merge cleanup. If
worktree removal, branch deletion, or the state write is interrupted,
fleet undorecovers from live branch/worktree state instead of losing the
rollback path.
Notes
- The state file gains an optional per-agent
validationobject; the schema
version stays 1 and files written by older versions load unchanged.
fleet doctor --fixrebuilds drop the record (it is re-derivable by
re-runningfleet validate), consistent with rebuilds re-deriving
baseBranchandcreatedAt. - The MCP surface is still read-only: validation state flows out through the
existing tools; nothing new is invokable by an agent.
v0.4.0
Added
fleet init --check: verify the four onboarding artifacts without writing anything — read-only, lock-free, exit 1 on drift,--jsonfor scripts. Wire it into CI so the agent-facing convention cannot silently rot after an upgrade. BrokenAGENTS.mdmarkers are reported asbrokenrather than thrown, so one damaged file still yields a full report.fleet sync --all: catch every registered agent up with its base in one sweep. Each agent gets the exact single-agent treatment (same dirty checks, same abort-on-conflict contract), but failures are collected and reported instead of thrown, so one dirty worktree or conflicting merge never strands the rest of the fleet. Exits 1 if any agent failed.fleet init: brings a repository into the fleet workflow in one command. Writes.fleet/into.git/info/exclude, a starter.fleetrc.jsonwired to the config schema, the Claude Code skill into.claude/skills/switchyard/, and an agent-neutral protocol block intoAGENTS.md(created if absent). Idempotent — re-run after upgrading to refresh the agent-facing docs.--forceoverwrites an existing.fleetrc.json;--jsonprints the result.
Changed
- The shipped skill now installs itself. 0.3.0 shipped it in the tarball and documented a manual
cpinto.claude/skills/, which meant the convention usually never reached the agents that needed it.fleet initinstalls it, and re-running refreshes it. - Agents other than Claude Code can now learn the convention. The
AGENTS.mdblock carries the short version for anything that reads that file — Codex, Cursor, and others — where previously only a Claude Code skill existed.
Notes
- What
fleet initoverwrites is split on ownership..fleetrc.jsonis your file and is never replaced without--force; the skill and theAGENTS.mdblock are package-managed and refreshed every run. InAGENTS.mdonly the region between<!-- switchyard:begin -->and<!-- switchyard:end -->is rewritten. Broken markers are an error, not a guess. - No new runtime dependencies, and no change to
state.json(stillversion: 1) —fleet initadds no persisted fleet state of its own. - The MCP surface is unchanged and still read-only.
- Switchyard has a website: switchyardhq.vercel.app (the
public/directory of this repo; not part of the npm package).