Skip to content

borg 0.5.0

Choose a tag to compare

@debe debe released this 28 Oct 18:58
· 3 commits to main since this release

The first release on crates.io (0.4.0, 0.3.0 and 0.2.0 were never published: 0.4.0's notes are
part of this section, and those of 0.3.0 and 0.2.0 below are history). borg keeps the shared memory:
lessons from corrections, checked against the work and shared with a team. The hive and playbooks are gone; sessions talk to each other instead, on any
harness and across machines, and steering is part of that channel. Every crate is 0.5.0 and pins the
others =0.5.0. The release steps are in CONTRIBUTING.md.

Added

  • borg --version, borg -V and borg version print borg <version>; borg-mesh and borg-web take
    --version and -V too (borg-web no longer starts its server on an unknown --version).
  • Messages between sessions: borg tell <to> "<text>", borg ask <to> "<question>" and borg inbox.
    A session on any harness, or the engineer's terminal, writes to a drone (as borg top names it), a
    session (<session>@<node> across machines), all or the engineer. The recipient sees each message
    once, at its next prompt or tool call, as peer data with the command that replies. Messages are
    redacted, limited to one per sender and recipient every 10 minutes, kept 7 days and synced with the
    team collective. Stats count msg_sent, msg_delivered and msg_dropped; borg web shows them.
  • borg listen wakes an idle session when a message arrives for it, until borg listen --off or the
    session's end. On Claude Code the stop asks the model to run borg listen --wait in the background;
    the omp and opencode adapters keep borg listen --stream running and send each wake in as a new turn;
    on codex a detached borg listen --queue queues one with codex queue. A wake names the senders and
    the count, never the text. Nothing wakes a session during the engineer's own turn; on codex, the
    Interrupt hook the hive used now ends that hold at once on an Esc. borg top shows a WAKE
    column.

Changed

  • borg tell, borg ask, borg pause and borg resume local reach this machine's sessions;
    collective (or all) the whole collective; a name prefers a session on this machine. local is
    written local@<node>, never syncs and counts only on a line of that node; collective and all
    are written all, as before. A drone or session prefix that matches here and on a member's machine
    names the one here; a member's session is reached when nothing here matches, by <session>@<node>,
    or as the sender a reply answers. A borg resume local warns when a collective pause sent from here
    still holds on the members' machines. borg top, borg inbox and borg web name the recipient
    local or collective, and the borg skill asks this machine's sessions first.
  • Steering is now messages: borg pause <to> [note] and borg resume <to> [note], and borg no to a
    drone on another machine sends a veto message. Every harness shows them at the next prompt or tool
    call, not only Claude Code. One from another machine counts only when the mesh admits its sender as
    an admin or steer member. The rate limit never holds them back. borg steer is removed: use
    borg pause, borg resume, or borg tell for an instruction. Stats keep steer_issued,
    steer_delivered, steer_dropped and pause_refused.
  • The mesh protocol is borg/mesh/13. A member built from 0.3.0 sources (borg/mesh/12) still syncs
    everything except messages; older members do not sync, and borg doctor names them.
  • The documentation was checked against the code: the README, the command, configuration, harness,
    team and statistics references, the adapter READMEs and the borg skill describe messages, pause and
    borg listen, and the mesh figures no longer show the old steering.
  • Releases are made locally with scripts/release.sh X.Y.Z, as in libpetri: it runs the gate,
    publishes the crates to crates.io, then tags and creates a draft GitHub release. A pushed tag no
    longer publishes anything; the release workflow only builds the tarballs, attaches them and
    publishes the draft.

Removed

  • The hive: borg hive and borg debug hive, interactive drones, and goals with their boards, claims,
    verify tasks, oracles, integration, contracts and plans. The Hive tab of borg web, the goal sections
    of borg top, and the BORG_HIVE*, BORG_GROUP_REFLECT and BORG_REWORK_REFLECT variables go with
    it. Messages between sessions replace it. Plain sessions, lessons, borg no and team sync
    work as before. borg install removes the Claude Code SessionStart hook only the hive used. An old
    store's hive/ directory is no longer read; borg doctor names it and the command that removes it.
  • Playbooks are removed: no playbook was ever promoted, and lessons already cover mistakes of procedure.
    A clean session no longer proposes a playbook edit, no prompt shows one, and borg queen asks no
    playbook question. The Playbooks tab of borg web, /api/playbooks, the playbook_* statistics and
    BORG_PLAYBOOKS go with them. An old store's playbooks.jsonl, playbooks-reflected.txt and
    playbooks-plain.txt are no longer read or synced, and an old queued playbook question is skipped;
    borg doctor names the files and the command that removes them. The mesh protocol stays borg/mesh/13: a session still steps
    through the playbooks' log and keeps nothing an older member offers there.