Skip to content

Releases: MohammedAlkindi/switchyard

Release list

v0.5.0

Choose a tag to compare

@MohammedAlkindi MohammedAlkindi released this 23 Oct 18:31

Added

  • fleet validate (and --all, --json): run a repo-configured validate
    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 list now shows a VALIDATED column (passed / failed / stale /
    —), and its --json output — and therefore the read-only MCP tools —
    carries validation and validatedAt per agent, with no change to the MCP
    tool surface.
  • fleet merge enforces the gate when validate is 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. preMerge is unchanged and still runs at merge
    time — validate is the recorded, skippable gate; preMerge the 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. --once prints a single frame for scripts and CI logs.
  • fleet check results (human, --json, and MCP) now include agentFiles:
    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.json key validate, validated like the other hook commands
    and covered by the shipped JSON schema.

Fixed

  • Shell completions now list init and undo, 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 with fleet 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 let fleet merge proceed, 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 undo recovers from live branch/worktree state instead of losing the
    rollback path.

Notes

  • The state file gains an optional per-agent validation object; the schema
    version stays 1 and files written by older versions load unchanged.
    fleet doctor --fix rebuilds drop the record (it is re-derivable by
    re-running fleet validate), consistent with rebuilds re-deriving
    baseBranch and createdAt.
  • 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

Choose a tag to compare

@MohammedAlkindi MohammedAlkindi released this 22 Jul 11:12

Added

  • fleet init --check: verify the four onboarding artifacts without writing anything — read-only, lock-free, exit 1 on drift, --json for scripts. Wire it into CI so the agent-facing convention cannot silently rot after an upgrade. Broken AGENTS.md markers are reported as broken rather 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.json wired to the config schema, the Claude Code skill into .claude/skills/switchyard/, and an agent-neutral protocol block into AGENTS.md (created if absent). Idempotent — re-run after upgrading to refresh the agent-facing docs. --force overwrites an existing .fleetrc.json; --json prints the result.

Changed

  • The shipped skill now installs itself. 0.3.0 shipped it in the tarball and documented a manual cp into .claude/skills/, which meant the convention usually never reached the agents that needed it. fleet init installs it, and re-running refreshes it.
  • Agents other than Claude Code can now learn the convention. The AGENTS.md block 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 init overwrites is split on ownership. .fleetrc.json is your file and is never replaced without --force; the skill and the AGENTS.md block are package-managed and refreshed every run. In AGENTS.md only 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 (still version: 1) — fleet init adds 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).