Skip to content

0.3.0

Latest

Choose a tag to compare

@github-actions github-actions released this 21 Jul 08:58

Release Notes

Added

  • The read surface is now one verb. Bare sloop or sloop show prints a
    dashboard: daemon status, scheduler state, and recent activity.
    sloop show <REF> resolves ticket IDs, ticket names, run IDs and aliases,
    unique run-id prefixes, and project IDs; an exact reference always wins.
    Anything else becomes a case-insensitive ticket pattern over IDs and
    names — a substring by default, an unanchored regular expression when the
    text contains regex metacharacters — rendered as a ticket list.
    -n/--limit N or the shorthand -N caps list rows. --follow streams
    the shown scope's events; ticket and run followers exit when the subject
    settles, and --follow --quiet returns only the outcome for scripting.
    Exit codes are stable: 0 for success or a merged subject, 1 for
    another terminal outcome or a daemon error, 2 for usage errors.
    sloop show --help documents the whole resolution ladder. Pattern
    resolution happens in the daemon: the show verb accepts patterns, the
    events verb gained an optional scope, and the list verb gained an
    optional limit, all additive within protocol version 1.
  • sloop template <kind> prints fully commented canonical templates for
    the config, flow, project, and ticket files, so a working example is
    always one command away.
  • sloop show <TICKET> now lists the ticket's runs, newest attempt first:
    alias, outcome, wall-clock span, and a strip of the run's flow stages
    marked ok, FAIL, .. (running), or - (not reached). A ticket that
    has never run prints runs: none.
  • sloop show <RUN> now shows the run's timeline, a per-stage table (state,
    attempts including on_fail retries, duration, exit code, and verdict
    source), and a derived reason for any non-merged terminal run — for
    example stage `test` failed (exit 1) after agent completed with commits. The reason comes from the stored stage and evidence rows, never
    from an agent's own claim about its work. Stage names come from the run's
    admitted flow snapshot, so a run reports the stages it actually had even
    after the flow file changes.
  • The show response gained value.runs on tickets and value.stages,
    value.attempt, value.agent_exit_code, and the timeline fields on runs,
    all additive within protocol version 1.
  • sloop logs gained --stage <NAME>, --tail <N>, and --follow.
    --stage selects one flow stage by the name the flow gives it, including
    the agent stage, and rejects a name the run's flow does not define instead
    of returning an empty page. --tail keeps the last N entries; --follow
    streams new entries until the run settles. The three combine, so
    sloop logs <RUN> --stage test --tail 50 answers "why did the test stage
    fail" in one command. Filtering happens in the daemon: the logs verb
    gained stage, tail, and after arguments and a terminal response
    field, all additive within protocol version 1.

Changed

  • The default flow's review stage is now a real gate. It previously
    inherited verdict: exit and passed whenever the reviewer process exited
    zero, so every fresh sloop init deployment silently approved all work.
    The shipped stage now uses verdict: reported, and the review prompt
    requires the reviewer to call sloop verdict pass|fail --reason exactly
    once; the command, not the prose, decides the stage.
  • Compact sloop --help now lists only the everyday operator commands
    (init, template, daemon, post, show, logs). Everything else,
    including the worker verb brief, remains available and documented under
    sloop --help --all.
  • sloop show <RUN> labels the agent stage's exit as agent exit: rather
    than a bare exit:, which could read as "the whole run passed" on a run
    whose later stage failed. The JSON exit_code field is unchanged.
  • Ticket lists — the dashboard, pattern results, and the deprecated list
    alias — order tickets by registration time, newest first, instead of
    oldest first, so recently posted and currently running work leads the
    output. State does not affect the order. Tickets registered in the same
    millisecond fall back to their id's numeric ordinal, newest first.
  • sloop post now reports every problem with a ticket file in a single
    invalid_arguments error, one per line under the file path, instead of
    stopping at the first one. A file whose frontmatter cannot be parsed at
    all still fails fast with the parse error, and a file with exactly one
    problem reads as it always has.

Deprecated

  • status, list, watch, and wait remain accepted as hidden
    deprecated aliases of sloop show. They no longer appear in normal help,
    and each invocation writes a note to stderr naming its replacement:
    status and list point to sloop show, watch to sloop show --follow (its optional scope and tail still work), and wait to
    sloop show --follow --quiet (its run and timeout still work). The
    aliases will be removed in a future release.

Fixed

  • sloop reindex now recognizes patch-equivalent merges. A run branch
    whose commits were squashed or rebased onto the default branch is
    detected with git cherry and indexed as merged; previously only true
    ancestor merges counted, and reindex flipped squash-merged tickets to
    needs_review.

Install sloop 0.3.0

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/hamish-mackie/sloop/releases/download/v0.3.0/sloop-installer.sh | sh

Install prebuilt binaries via Homebrew

brew install sloop

Download sloop 0.3.0

File Platform Checksum
sloop-aarch64-apple-darwin.tar.gz Apple Silicon macOS checksum
sloop-x86_64-apple-darwin.tar.gz Intel macOS checksum
sloop-aarch64-unknown-linux-musl.tar.gz ARM64 MUSL Linux checksum
sloop-x86_64-unknown-linux-musl.tar.gz x64 MUSL Linux checksum

Verifying GitHub Artifact Attestations

The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:

gh attestation verify <file-path of downloaded artifact> --repo hamish-mackie/sloop

You can also download the attestation from GitHub and verify against that directly:

gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>